Computing for multi-codec tools
Through adaptive resolution change (ARC) technology, the video encoding and decoding process is optimized, and the low efficiency and high latency problems of videos of different sizes or resolutions are solved, seamless switching and adaptive adjustment are achieved, and video encoding and decoding efficiency and user experience are improved.
Patent Information
- Application Number
- CN202411906127.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-30
- Filing Date
- 2020-10-22
- Publication Date
- 2025-06-06
AI Technical Summary
When existing video encoding and decoding technologies deal with videos and images of different sizes or resolutions, there are problems of low efficiency, waste of resources and increased latency, especially in network bandwidth changes and multi-party video conferencing. The existing technology is difficult to achieve seamless switching and adapt to resolution changes.
Adaptive resolution change (ARC) technology is used to optimize the encoding and decoding process of video blocks through affine Merge candidates, cross-component linear model (CCLM), angle intra prediction and video block segmentation, and combine rules to avoid log2(X) operations and divide by zero, and signal to inform surrounding limiting information at the video unit level.
It improves the efficiency and quality of video encoding and decoding, reduces resource waste and delay, realizes seamless switching and adaptive adjustments between videos of different resolutions, and improves user experience.
Smart Images

Figure CN120111249A_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with application date of October 22, 2020, application number 202080074432.0, and invention name “Computation for Multi-Codec Tools”. Technical Field
[0002] This patent document relates to video encoding and decoding. Background Art
[0003] Despite advances in video compression, digital video remains the largest bandwidth consumer on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, bandwidth requirements for digital video usage are expected to continue to grow. Summary of the invention
[0004] Devices, systems and methods related to digital video coding and decoding, and more particularly to video and image coding and decoding in which a current picture and a reference picture have different sizes or resolutions.
[0005] In one example aspect, a video processing method is disclosed. The method includes: for a conversion between a current video block of a video and a codec representation of the video, selectively making a determination of an affine merge candidate according to a rule; and performing the conversion according to the determination; wherein the rule specifies how to calculate the affine merge candidate without using a log2(X) operation, where X is equal to or less than zero; and wherein the affine merge candidate is a motion candidate derived from a neighboring affine codec video block.
[0006] In another example aspect, another video processing method is disclosed. The method includes: for a conversion between a current video block of a video containing multiple color components and a codec representation of the video, making a cross-component linear model (CCLM) determination according to a rule; and performing the conversion according to the determination; wherein the rule specifies how to calculate an affine merge candidate without using a log2(X) operation, where X is equal to or less than zero; and wherein the CCLM includes predicting chrominance samples based on reconstructed adjacent luminance samples according to a linear model.
[0007] In another example aspect, another video processing method is disclosed. The method includes: for a conversion between a current video block of a video picture of a video containing multiple color components and a codec representation of the video, making a determination of an angular intra-frame prediction of the current video block according to a rule; and performing the conversion according to the determination; wherein the rule specifies a computational step for the determination, wherein division by zero is avoided; and wherein the angular intra-frame prediction includes predicting the current video block from one or more samples in the video picture at one or more angles.
[0008] In another example aspect, another video processing method is disclosed. The method includes: according to a rule, segmenting a current video block of a video into a plurality of partitions according to a pattern in which at least one partition is along an angular line; and performing a conversion between the current video block and a codec representation of the video, wherein a prediction of the current video block is determined from a weighted average of predictions, wherein the weights of the weighted average are determined by the pattern; wherein the rule provides that the pattern indicates that characteristics of the partitions corresponding to distances of the partitions and / or angles of angular lines depend on size characteristics of the current video block or codec characteristics of the current video block.
[0009] In another example aspect, another video processing method is disclosed. The method includes: performing conversion between a video containing one or more video regions and a codec representation of the video according to a rule, wherein the rule specifies a condition under which the video region is processed as an intra-codec region in the codec representation.
[0010] In another example aspect, another video processing method is disclosed. The method includes performing conversion between a video including one or more video pictures and a codec representation of the video, wherein the codec representation conforms to a format rule, wherein the format rule specifies the use of syntax elements for sub-picture signaling.
[0011] In yet another representative aspect, the above method is implemented in the form of processor executable code and stored in a computer readable program medium.
[0012] In yet another representative aspect, a device is disclosed, which is configured or operable to perform the above method. The device may include a processor programmed to implement the method.
[0013] In yet another representative aspect, a video decoder device can implement the method as described herein.
[0014] The above-described aspects, as well as other aspects and features of the disclosed technology are described in more detail in the drawings, the description and the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 It shows that a 16x16 block is divided into 16 4x4 regions.
[0016] Figures 2A-2C An example of a specific location in a video block is shown.
[0017] Figure 3 is a block diagram of an example implementation of a hardware platform for video processing.
[0018] Figure 4 is a flow chart of an example method of video processing.
[0019] Figure 5 An example of surround clipping in VVC is shown.
[0020] Figure 6 is a block diagram of an example implementation of a video codec system.
[0021] Figure 7 is a block diagram of an example implementation of a video encoder.
[0022] Figure 8 is a block diagram of an example implementation of a video decoder.
[0023] Figures 9A-9H Various tables illustrating embodiments of the disclosed technology are shown.
[0024] Figures 10A-10F It is a flowchart of various video processing methods. DETAILED DESCRIPTION
[0025] Embodiments of the disclosed technology can be applied to existing video codec standards (e.g., HEVC, H.265) and future standards to improve compression performance. In this document, section headings are used to improve the readability of the description and do not in any way limit the discussion or embodiments (and / or implementations) to the corresponding section.
[0026] 1. Brief Introduction
[0027] This article is about video codec technology. Specifically, it is about adaptive resolution conversion in video codec. It can be applied to existing video / image codec standards, such as HEVC, and also to a pending standard (Versatile Video Codec). It is also applicable to future video codec standards or video codecs.
[0028] 2. Video Codec Discussion
[0029] Video codec standards have evolved primarily through the development of the well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations worked together to produce H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Codec (AVC), and H.265 / HEVC[1] standards. Starting with H.262, video codec standards are based on a hybrid video codec structure that utilizes temporal prediction plus transform codec. In order to explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and introduced them into a reference software called the "Joint Exploration Model" (JEM)[3][4]. In April 2018, a Joint Video Experts Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established to work on the Versatile Video Codec (VVC) standard with the goal of reducing bitrate by 50% compared to HEVC.
[0030] AVC and HEVC do not have the ability to change resolution without having to introduce IDR or intra random access point (IRAP) pictures; this capability can be called adaptive resolution change (ARC). There are use cases or application scenarios that can benefit from the ARC feature, including:
[0031] - Rate Adaptation in Video Telephony and Conferencing: To adapt the codec video to changing network conditions, when network conditions get worse and available bandwidth becomes lower, the codec can adapt by encoding a smaller resolution picture. Currently, picture resolution changes can only be made after an IRAP picture; this has several problems. An IRAP picture of reasonable quality will be much larger than an inter-codec picture and will be correspondingly more complex to decode: this wastes time and resources. This is problematic if the decoder requests a resolution change for load reasons. It can also break low-latency buffer conditions, forcing the audio to resynchronize and the end-to-end latency of the stream will increase, at least temporarily. This can result in a poor experience for the user.
[0032] -Changes in active speakers in multi-party video conferences: For multi-party video conferences, the active speaker is usually displayed at a larger video size than the videos of other conference participants. When the active speaker changes, the picture resolution of each participant may also need to be adjusted. When such changes occur frequently in the active speakers, the need for ARC becomes particularly important.
[0033] - Fast start in streaming: For streaming applications, typically the application will buffer up to a certain length of decoded pictures before starting display. Starting the bitstream at a smaller resolution will allow the application to have enough pictures in the buffer to start displaying faster.
[0034] Adaptive stream switching in streaming: The Dynamic Adaptive Streaming over HTTP (DASH) specification includes a feature called @mediaStreamStructureId. This enables switching between different representations at open GOP random access points with non-decodable leading pictures (e.g., CRA pictures with associated RASL pictures in HEVC). When two different representations of the same video have different bitrates but the same spatial resolution, and they have the same @mediaStreamStructureId value, switching between the two representations can be performed on CRA pictures with associated RASL pictures, and the RASL pictures associated with the CRA pictures at the switch can be decoded with acceptable quality, thus achieving seamless switching. Using ARC, the @mediaStreamStructureId feature can also be used to switch between DASH representations with different spatial resolutions.
[0035] ARC is also known as Dynamic Resolution Switching.
[0036] ARC can also be viewed as a special case of Reference Picture Resampling (RPR), such as H.263 Annex P.
[0037] 2.1 Reference Picture Resampling in H.263 Annex P
[0038] This mode describes an algorithm that warps a reference picture before it is used for prediction. It may be useful for resampling reference pictures that have a different source format than the picture being predicted. By warping the shape, size, and position of the reference picture, it can also be used for global motion estimation or rotational motion estimation. The syntax includes the warping parameters to be used as well as the resampling algorithm. The simplest level of operation of the reference picture resampling mode is an implicit factor of 4 resampling, since only FIR filters need to be used for the upsampling and downsampling processes. In this case, when the size of the new picture (indicated in the picture header) is different from the size of the previous picture, no additional signaling overhead is required since its usage is understood.
[0039] ARC’s contribution to VVC
[0040] Several contributions were made to ARC, as follows:
[0041] JVET-M0135, JVET-M0259, JVET-N0048, JVET-N0052, JVET-N0118, JVET-N0279.
[0042] ARC in JVET-O2001-v14
[0043] ARC, also known as RPR (reference picture resampling), was incorporated into JVET-O2001-v14.
[0044] For RPR in JVET-O2001-v14, TMVP is disabled if the colocated picture has a different resolution than the current picture. In addition, BDOF and DMVR are disabled when the reference picture has a different resolution than the current picture.
[0045] To handle normal MC when the resolution of the reference picture is different from the current picture, the interpolation section is defined as follows (section numbers refer to the current VVC standard, and italic text indicates differences from previous versions):
[0046] 8.5.6.3.1 Overview
[0047] The inputs to this process are:
[0048] – luma position (xSb, ySb), which specifies the top left sample of the current codec subblock relative to the top left luma sample of the current picture,
[0049] – The variable sbWidth specifies the width of the current codec sub-block,
[0050] – The variable sbHeight specifies the height of the current codec sub-block.
[0051] – motion vector offset mvOffset,
[0052] – the refined motion vector refMvLX,
[0053] – the selected reference picture sample array refPicLX,
[0054] – Half-sample interpolation filter index hpelIfIdx,
[0055] – bidirectional optical flow flag bdofFlag,
[0056] – The variable cIdx specifies the color component index of the current block.
[0057] The output of this process is:
[0058] – The (sbWidth+brdExtSize)x(sbHeight+brdExtSize) array of predicted sample values predSamplesLX. The predicted block boundary extension size brdExtSize is derived as follows:
[0059] brdExtSize = (bdofFlag || (inter_affine_flag[xSb][ySb] &&
[0060] sps_affine_prof_enabled_flag))? 2:0 (8-752)
[0061] The variable fRefWidth is set equal to the PicOutputWidthL of the reference picture in luma samples.
[0062] The variable fRefHeight is set equal to the PicOutputHeightL of the reference picture in luma samples.
[0063] The motion vector mvLX is set equal to (refMvLX-mvOffset).
[0064] – If cIdx is equal to 0, the following applies:
[0065] –The scaling factor and its fixed-point representation are defined as:
[0066] hori_scale_fp = ((fRefWidth<<14)+(PicOutputWidthL
[0067] >> 1 ) ) / PicOutputWidthL (8-753)
[0068] vert_scale_fp = ((fRefHeight<<14)+(PicOutputHeightL
[0069] >> 1 ) ) / PicOutputHeightL (8-754)
[0070] – Let (xIntL, yIntL) be the luma position given in full sample units and (xFracL, yFracL) be the offset given in 1 / 16 sample units. These variables are used only in this section to specify fractional sample positions within the reference sample array refPicLX.
[0071] – The upper left coordinate of the limit block used for reference sample filling (xSbInt L ,ySbInt L ) is set equal to (xSb+(mvLX[0]>>4), ySb+(mvLX[1]>>4)).
[0072] – For each luma sample position (x L =0..sbWidth-1+brdExtSize,y L =0..sbHeight-1+brdExtSize), the corresponding predicted brightness sample value predSamplesLX[x L ][y L ] is exported as follows:
[0073] –Let (refxSb L , refySb L ) and (refx L , refy L ) is the luminance position pointed to by the motion vector (refMvLX[0], refMvLX[1]) given in 1 / 16 luminance units. The variable refxSb L , refx L , refySb L and refy L The export is as follows:
[0074] sbX L = ( ( xSb << 4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
[0075] refx L =((Sign(refxSb)*((Abs(refxSb)+128)>>8)
[0076] + x L * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-756)
[0077] sb L = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
[0078] refy L=((Sign(refySb)*((Abs(refySb)+128)>>8)+yL*
[0079] ( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-758)
[0080] – Variable xInt L ,yInt L , xFrac L and yFrac L The export is as follows:
[0081] xInt L = refx L >> 4 (8-759)
[0082] yInt L = refy L >> 4 (8-760)
[0083] xFrac L = refx L & 15 (8-761)
[0084] yFrac L = refy L & 15 (8-762)
[0085] – If bdofFlag is equal to true (TRUE) or (sps_affine_prof_enabled_flag is equal to TRUE and inter_affine_flag[xSb][ySb] is equal to TRUE), and one or more of the following conditions are true, then (xInt L +(xFrac L >>3)-1), yInt L +(yFrac L >>3)-1) and refPicLX are input, and the predicted luminance sample value predSamplesLX[x L ][y L ].
[0086] –x L is equal to 0.
[0087] –x L Equal to sbWidth+1.
[0088] –y L is equal to 0.
[0089] –y L Equal to sbHeight+1.
[0090] – Otherwise, replace (xIntL-(brdExtSize>0?1:0), yIntL-(brdExtSize>0?1:0)) with
[0091] (xFracL, yFracL), (xSbInt L ,ySbInt L ), refPicLX, hpelIfIdx, sbWidth, sbHeight and (xSb, ySb) are taken as input, and the predicted luminance sample value predSamplesLX[xL][yL] is derived by calling the luminance sample 8-tap interpolation filter process specified in Section 8.5.6.3.2.
[0092] – Otherwise (cIdx is not equal to 0) the following applies:
[0093] – Let (xIntC, yIntC) be the chroma position given in full sample units, and (xFracC, yFracC) be the unspecified offset in 1 / 32 sample units. These variables are used only in this clause to specify general fractional sample positions within the reference sample array refPicLX.
[0094] – The upper left coordinates (xSbIntC, ySbIntC) of the reference sample fill block are set equal to ((xSb / SubWidthC)+(mvLX[0]>>5), (ySb / SubHeightC)+
[0095] (mvLX[1]>>5)).
[0096] – For each chroma sample position (xC = 0..sbWidth-1, yC = 0..sbHeight-1) in the predicted chroma sample array predSamplesLX, the corresponding predicted chroma sample value predSamplesLX[xC][yC] is derived as follows:
[0097] –Let (refxSb C , refySb C ) and (refx C , refy C ) is the chroma position pointed to by the motion vector (mvLX[0], mvLX[1]) given by 1 / 32 sample units, and the variable refxSb C , refySb C , refx Cand refy C The export is as follows:
[0098] sbX C =((xSb / SubWidthC<<5)+mvLX[0])*hori_scale_fp(8-763)
[0099] refx C =((Sign(refxSb C )*((Abs(refxSb C )+256)>>9)+xC*((hori_scale_fp+8)>>4))+16)>>5 (8-764)
[0100] sb C =((ySb / SubHeightC<<5)+mvLX[1])*vert_scale_fp(8-765)
[0101] refy C =((Sign(refySb C )*((Abs(refySb C )+256)>>9)+yC*((vert_scale_fp+8)>>4))+16)>>5 (8-766)
[0102] – Variable xInt C ,yInt C , xFrac C and yFrac C The export is as follows:
[0103] xInt C =refx C >>5 (8-767)
[0104] yInt C =refy C >>5 (8-768)
[0105] xFrac C =refy C &31 (8-769)
[0106] yFrac C =refy C &31 (8-770)
[0107] – Derives the predicted sample values predSamplesLX[xC][yC] by calling the process specified in clause 8.5.6.3.4, taking (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight and refPicLX as input.
[0108] Luminance sample interpolation filtering process
[0109] The inputs to this process are:
[0110] – Luminance position of all sample points (xInt L ,yInt L ),
[0111] – Luminance position in fractional sample units (xFrac L ,yFrac L ),
[0112] – Luminance position of all sample points (xSbInt L ,ySbInt L ), which specifies the upper left sample of the limit block for reference sample filling relative to the upper left luma sample of the reference picture,
[0113] – Luminance reference sample array refPicLX L ,
[0114] – Half-sample interpolation filter index hpelIfIdx,
[0115] – variable sbWidth, which specifies the width of the current sub-block,
[0116] – The variable sbHeight specifies the height of the current sub-block,
[0117] - luma position (xSb, ySb), which specifies the top left sample of the current sub-block relative to the top left luma sample of the current picture,
[0118] The output of this process is the predicted luminance sample value predSampleLX L。
[0119] The variables shift1, shift2 and shift3 are derived as follows:
[0120] – The variable shift1 is set equal to Min(4, BitDepth Y -8), the variable shift2 is set equal to 6 and the variable shift3 is set equal to Max(2, 14-BitDepth Y ).
[0121] – 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.
[0122] Equal to xFrac L or yFrac L The luma interpolation filter coefficient f for each 1 / 16 fractional sample position p L [p], derived as follows:
[0123] – If MotionModelIdc[xSb][ySb] is greater than 0, and both sbWidth and sbHeight are equal to 4,
[0124] Then the brightness interpolation filter coefficient f L [p] 8-12 is specified in Table 8-12.
[0125] – Otherwise, the brightness interpolation filter coefficient f L [p] As specified in Table 8-11, depending on hpelIfIdx.
[0126] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:
[0127] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0128] xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3)(8-771)
[0129] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)(8-772)
[0130] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0131]
[0132] yInt i= Clip3(0, picH-1, yInt L +i-3) (8-774)
[0133] The brightness position of the full sample unit is further modified as follows, for i = 0..7:
[0134] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) (8-775)
[0135] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) (8-776)
[0136] Predicted brightness sample value predSampleLX L The export is as follows:
[0137] – If xFrac L and yFrac L If both are equal to 0, then predSampleLX L The value of is derived as follows:
[0138] predSampleLX L =refPicLX L [xInt 3 ][yInt 3 ]< <shift3 (8-777)
[0139] – Otherwise, if xFrac L is not equal to 0 and yFrac L equal to 0, predSampleLX L The value of is derived as follows:
[0140]
[0141] – Otherwise, if xFrac L is equal to 0 and yFrac L If not equal to 0, predSampleLX L The value of is derived as follows:
[0142]
[0143] – Otherwise, like xFrac Lis not equal to 0 and yFrac L If not equal to 0, predSampleLX L The value of is derived as follows:
[0144] – The sample array temp[n] (n=0..7) is derived as follows:
[0145]
[0146] –Predicted brightness sample value predSampleLX L The export is as follows:
[0147]
[0148] Table 8-11 – Luma interpolation filter coefficients f for each 1 / 16 fractional sample position p L Specification of [p]
[0149]
[0150] Table 8-12 – Luma interpolation filter coefficients f for each 1 / 16 fractional sample position p for affine motion mode L Specification of [p]
[0151]
[0152] Luminance integer sample extraction process
[0153] The inputs to this process are:
[0154] – Luminance position of all sample points (xInt L ,yInt L ),
[0155] – Luminance reference sample array refPicLX L,
[0156] The output of this process is the predicted luminance sample value predSampleLX L。
[0157] The variable shift is set equal to Max(2,14-BitDepth Y ).
[0158] 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.
[0159] The brightness position (xInt, yInt) of all sample points is derived as follows:
[0160]
[0161] yInt=Clip3(0,picH-1,yInt L )(8-783)
[0162] Predicted brightness sample value predSampleLX L The export is as follows:
[0163] predSampleLX L = refPicLX L [ xInt ][ yInt ] << shift3 (8-784)
[0164] Chroma Sample Interpolation Process
[0165] The inputs to this process are:
[0166] – Chroma position in full sample units (xInt C ,yInt C ),
[0167] – Chroma position in 1 / 32 fractional sample units (xFrac C ,yFrac C ),
[0168] - chroma position in full sample units (xSbIntC, ySbIntC), which specifies the top left sample of the bounding block used for reference sample filling relative to the top left chroma sample of the reference picture,
[0169] – The variable sbWidth specifies the width of the current sub-block,
[0170] – The variable sbHeight specifies the height of the current sub-block,
[0171] – Chroma reference sample array refPicLX C .
[0172] The output of this process is the predicted chrominance sample value predSampleLX C。
[0173] The variables shift1, shift2 and shift3 are derived as follows:
[0174] – The variable shift1 is set equal to Min(4, BitDepth C -8), the variable shift2 is set equal to 6 and the variable shift3 is set equal to Max(2, 14-BitDepth C ).
[0175] –Variable picW C is set equal to pic_width_in_luma_samples / SubWidthC and the variable picH C Set equal to pic_height_in_luma_samples / SubHeightC.
[0176] Equal to xFrac C or yFrac C The chroma interpolation filter coefficient f for each 1 / 32 fractional sample position p C [p], as specified in Table 8-13.
[0177] The variable xOffset is set equal to (sps_ref_wraparound_offset_minus1+1)*MinCbSizeY) / SubWidthC.
[0178] Chroma position in full sample units (xInt i ,yInt i ) is derived as follows, for i = 0..3:
[0179] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0180] xInt i =Clip3(SubPicLeftBoundaryPos / SubWidthC,SubPicRightBoundaryPos / SubWi
[0181] dthC,xInt L +i)(8-785)
[0182] yInt i =Clip3(SubPicTopBoundaryPos / SubHeightC,SubPicBotBoundaryPos / SubHeig
[0183] htC,yInt L +i)(8-786)
[0184] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0185] xInt i =Clip3(0,picWC -1,
[0186] sps_ref_wraparound_enabled_flag? ClipH(xOffset,picW C , xInt C +i-1):
[0187] xInt C +i-1)(8-787)
[0188] yInt i =Clip3(0,picH C -1,yInt C +i-1)
[0189] (8-788)
[0190] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0191] xInt i = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (8-789)
[0192] yInt i =Clip3(ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (8-790)
[0193] Predicted chroma sample value predSampleLX C The export is as follows:
[0194] – If xFrac C and yFrac C If both are equal to 0, then predSampleLX C The value of is derived as follows:
[0195] predSampleLX C = refPicLX C [xInt 1 ][ yInt 1 ] << shift3 (8-791)
[0196] – Otherwise, if xFrac C is not equal to 0 and yFracC If equal to 0, predSampleLX C The value of is derived as follows:
[0197]
[0198] – Otherwise, if xFrac C is equal to 0 and yFrac C If not equal to 0, predSampleLX C The value of is derived as follows:
[0199]
[0200] – Otherwise, if xFrac C is not equal to 0 and yFrac C If not equal to 0, predSampleLX C The value of is derived as follows:
[0201] – The sample array temp[n] (n=0..3) is derived as follows:
[0202]
[0203] –Predicted chroma sample value predSampleLX C The export is as follows:
[0204] predSampleLX C =(f C [yFrac C ][0]*temp[0]+
[0205] f C [yFrac C ][1]*temp[1]+
[0206] f C [yFrac C ][2]*temp[2]+
[0207] (8-795)
[0208] f C [yFrac C ][3]*temp[3])>>shift2
[0209] Table 8-13 – Chroma interpolation filter coefficients f for each 1 / 32 fractional sample position p C Specification of [p]
[0210]
[0211]
[0212] 2.4 Wrap-around clipping in VVC
[0213] To handle Figure 5 The ERP or PERP picture format shown proposes surround clipping of JVET-L0231.
[0214] In JVET-P2001-v9, surround clipping is specified as And the horizontal position will depend on whether the surround clipping is applied for clipping. In JVET-P2001-v9, it is specified as follows:
[0215] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:
[0216] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0217] xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3)(8-754)
[0218] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3) (8-755)
[0219] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0220]
[0221] yInt i = Clip3(0, picH-1, yInt L +i-3) (8-757)
[0222] 2.5 CCLM in VVC
[0223] Parameters are derived for cross-component linear model (CCLM) prediction in VVC as specified in JVET-P2001-v9: 8.4.5.2.13 Specification of INTRA_LT_CCLM, INTRA_L_CCLM and INTRA_T_CCLM intra prediction modes
[0224] …
[0225] 7. The variables a, b, and k are derived as follows:
[0226] – If numSampL is equal to 0, and numSampT is equal to 0, then the following applies:
[0227] k=0 (8-211)
[0228] a=0 (8-212)
[0229] b=1 << (BitDepth-1) (8-213)
[0230] – Otherwise, the following applies:
[0231] diff=maxY-minY(8-214)
[0232] – If diff is not equal to 0, the following applies:
[0233] diffC=maxC-minC(8-215)
[0234] x = Floor (Log2 (diff)) (8-216)
[0235] normDiff=((diff<<4)>>x)&15 (8-217)
[0236] x+=(normDiff!=0)? 1:0 (8-218)
[0237] y=Floor(Log2(Abs(diffC)))+1 (8-219)
[0238] a=(diffC*(divSigTable[normDiff]|8)+2 y-1 )>>y (8-220)
[0239] k=((3+xy)<1)? 1:3+xy (8-221)
[0240] a=((3+xy)<1)? Sign(a)*15:a (8-222)
[0241] b=minC-((a*minY)>>k) (8-223)
[0242] The divSigTable[] is defined as follows:
[0243] divSigTable[]={0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0} (8-224)
[0244] – Otherwise (diff equals 0), the following applies:
[0245] k=0(8-225)
[0246] a=0(8-226)
[0247] b=minC(8-227)
[0248] …
[0249] 2.6 Angle Prediction in VVC
[0250] The angle prediction in VVC is specified in JVET-P2001-v9 as:
[0251] 8.4.5.2.12 Specification of INTRA_ANGULAR2..INTRA_ANGULAR66 intra prediction modes The input to this process is:
[0252] – Intra prediction mode predModeIntra,
[0253] – variable refIdx, which specifies the intra prediction reference row index,
[0254] – the variable nTbW, which specifies the transform block width,
[0255] – the variable nTbH, which specifies the transform block height,
[0256] – variable refW, which specifies the reference sample width,
[0257] – variable refH, which specifies the reference sample height,
[0258] – variable nCbW, which specifies the codec block width,
[0259] – variable nCbH, which specifies the codec block height,
[0260] – the variable refFilterFlag, which specifies the value of the reference filter flag,
[0261] – the variable cIdx, which specifies the color component of the current block,
[0262] – Neighboring sample points p[x][y], where x=-1-refIdx, y=-1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx.
[0263] The output of this process is the prediction samples predSamples[x][y], where x = 0..nTbW-1, y = 0..nTbH–1.
[0264] The variable nTbS is set equal to (Log2(nTbW)+Log2(nTbH))>>1.
[0265] The variable filterFlag is exported as follows:
[0266] – If one or more of the following conditions are true, filterFlag is set equal to 0.
[0267] –refFilterFlag is equal to 1;
[0268] –refIdx is not equal to 0;
[0269] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT;
[0270] – Otherwise, the following applies:
[0271] – The variable minDistVerHor is set equal to Min(Abs(predModeIntra-50), Abs(predModeIntra-18)).
[0272] – The variable intraHorVerDistThres[nTbS] is defined in Table 8-7.
[0273] –The variable filterFlag is exported as follows:
[0274] – If minDistVerHor is greater than intraHorVerDistThres[nTbS] and refFilterFlag is equal to 0, filterFlag is set equal to 1.
[0275] – Otherwise, filterFlag is set equal to 0.
[0276] Table 8-7 – Specification of intraHorVerDistThres[nTbS] for various transform block sizes nTbS
[0277]
[0278] Table 8-8 specifies the mapping table between predModeIntra and angle parameter intraPredAngle
[0279] Table 8-8 – Specification of intraPredAngle
[0280]
[0281] The inverse angle parameter invAngle is derived based on intraPredAngle as follows:
[0282]
[0283] …
[0284] 2.7 Sample extraction for inter-frame prediction in VVC
[0285] 8.5.6.3.2 Luma Sample Interpolation Filtering Process
[0286] …
[0287] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:
[0288] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0289] xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3)
[0290] (8-754)
[0291] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)
[0292] (8-755)
[0293] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0294] xInt i=Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?
[0295] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)
[0296] yInt i = Clip3(0, picH-1, yInt L +i-3)
[0297] The brightness position of the full sample unit is further modified as follows, for i = 0..7:
[0298] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )
[0299] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )
[0300] Predicted brightness sample value predSampleLX L The export is as follows:
[0301] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,
[0302] Then predSampleLX L The value of is derived as follows:
[0303] predSampleLX L =refPicLX L [xInt 3 ][yInt 3 ]< <shift3
[0304] …
[0305] 8.5.6.3.4 Chroma Sample Interpolation Process
[0306] …
[0307] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0308] xInt i = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (8-774)
[0309] yInt i =Clip3(ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (8-775)
[0310] 2.8 Sub-images
[0311] In VVC, the concept of sub-picture is introduced. A sub-picture is a rectangular area of one or more strips in a picture. For a video sequence, multiple sub-pictures can be used. And all pictures are divided into the same number of sub-pictures, which are defined in SPS.
[0312] The relevant syntax elements and semantics are defined as follows: 7.3.2.3 Sequence Parameter Set RBSP Syntax
[0313]
[0314]
[0315] subpics_present_flag equal to 1 specifies that sub-picture parameters are present in the SPS RBSP syntax. subpics_present_flag equal to 0 specifies that sub-picture parameters are not present in the SPS RBSP syntax.
[0316] NOTE 2 – When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the sub-pictures of the input bitstream of the sub-bitstream extraction process, it may be necessary to set the value of subpics_present_flag equal to 1 in the RBSP of the SPS.
[0317] sps_num_subpics_minus1 plus 1 specifies the number of sub-pictures. sps_num_subpics_minus1 should be in the range of 0 to 254. If not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.
[0318] subpic_ctu_top_left_x[i] specifies the horizontal position (in CtbSizeY) of the top left CTU of the i-th subpicture. The length of the syntax element is Ceil(Log2(pic_width_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.
[0319] subpic_ctu_top_left_y[i] specifies the vertical position (in units of CtbSizeY) of the top left CTU of the i-th sub-picture. The length of the syntax element is Ceil(Log2(pic_height_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.
[0320] subpic_width_minus1[i] plus 1 specifies the width of the i-th sub-picture (in units of CtbSizeY). The length of the syntax element is Ceil(Log2(pic_width_max_in_luma_samples / CtbSizeY)) bits. When not present, the value of subpic_width_minus1[i] is inferred to be equal to Ceil(pic_width_max_in_luma_samples / CtbSizeY)-1.
[0321] subpic_height_minus1[i] plus 1 specifies the height of the i-th sub-picture (in units of CtbSizeY). The length of the syntax element is Ceil(Log2(pic_height_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_height_minus1[i] is inferred to be equal to Ceil(pic_height_max_in_luma_samples / CtbSizeY)-1.
[0322] subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th subpicture of each codec picture in the CLVS is treated as a picture in the decoding process that does not include loop filtering operations. subpic_treated_as_pic_flag[i] equal to 0 specifies that the i-th subpicture of each codec picture in the CLVS is not treated as a picture in the decoding process that does not include loop filtering operations. If not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to 0.
[0323] loop_filter_across_subpic_enabled_flag[i] equal to 1 specifies that loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. loop_filter_across_subpic_enabled_flag[i] equal to 0 specifies that loop filtering operations are not performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. If not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1.
[0324] It is a requirement for bitstream conformance to apply the following constraints:
[0325] - For any two sub-pictures subpicA and subpicB, when the sub-picture index of subpicA is less than the sub-picture index of subpicB, any codec slice NAL unit of subpicA shall precede any codec slice NAL unit of subpicB in decoding order.
[0326] - The shape of the sub-pictures shall be such that each sub-picture, when decoded, has its complete left border and complete top border, including the picture border or including the border of the previously decoded sub-picture.
[0327] sps_subpic_id_present_flag equal to 1 specifies that sub-picture ID mapping is present in the SPS. sps_subpic_id_present_flag equal to 0 specifies that sub-picture ID mapping is not present in the SPS.
[0328] sps_subpic_id_signalling_present_flag equal to 1 specifies that sub-picture ID mapping is signaled in the SPS. sps_subpic_id_signaling_present_flag equal to 0 specifies that sub-picture ID mapping is not signaled in the SPS. If not present, the value of sps_subpic_id_signalling_present_flag is inferred to be equal to 0.
[0329] sps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element sps_subpic_id[i]. The value of sps_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive.
[0330] sps_subpic_id[i] specifies the sub-picture ID of the i-th sub-picture. The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1+1 bits. When not present and when sps_subpic_id_present_flag is equal to 0, the value of sps_subpic_id[i] is inferred to be equal to i for each i from 0 to sps_num_subpics_minus1 (inclusive).
[0331] 7.3.2.4 Picture parameter set RBSP syntax
[0332]
[0333]
[0334]
[0335] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When subpics_present_flag is equal to 0, single_slice_per_subpic_flag shall be equal to 0. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1.
[0336] 7.3.7.1 Generic Strip Header Syntax
[0337]
[0338] slice_subpic_id specifies the sub-picture identifier of the sub-picture containing the slice. If slice_subpic_id exists, the value of the variable SubPicIdx will be derived such that SubpicIdList[SubPicIdx] is equal to slice_subpic_id; otherwise (slice_subpic_id does not exist), the variable SubPicIdx will be derived to be equal to 0. The length of slice_subpic_id (in bits) is derived as follows:
[0339] - If sps_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to sps_subpic_id_len_minus1+1.
[0340] - Otherwise, if ph_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to ph_subpic_id_len_minus1+1.
[0341] - Otherwise, if pps_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to pps_subpic_id_len_minus1+1.
[0342] Otherwise, the length of slice_subpic_id is equal to Ceil(Log2(sps_num_subpics_minus1+1)).
[0343] 3. Technical problems solved by the technical solution disclosed in this article
[0344] When RPR is applied to VVC, RPR (ARC) may have the following problems:
[0345] 1. Using RPR, the interpolation filters may be different for adjacent samples in a block, which is undesirable in SIMD (Single Instruction Multiple Data) implementation.
[0346] 2. RPR is not considered in the boundary area.
[0347] 3. The wraparound offset (sps_ref_wraparound_offset_minus1) is signaled at the sequence level, but the dimensions of the picture may be different due to RPR in the sequence.
[0348] 4. Abs(diffC) may be equal to 0 in Log2(Abs(diffC)) of the parameters that derive CCLM.
[0349] 5. intraPredAngle may be 0, which makes invAngle meaningless.
[0350] 6. The highlight clipping operation described in Section 2.7 (denoted as "integer sample clipping operation") may destroy the motion compensation of RPR.
[0351] 7. In the current VVC, intra (I) slices are defined as slices that are decoded using only intra prediction. However, due to the recent adoption of IBC and palette mode codecs as additional prediction modes in addition to intra and inter prediction, for I slices, IBC / palette mode can also be applied in addition to intra prediction. This definition needs to be revised accordingly.
[0352] 8. The indication of subpics is defined in VVC, where subpics_present_flag is signaled first, followed by sps_num_subpics_minus1. However, we note that even if the subpicture present flag is true, the signaled sps_num_subpics_minus1 can still be equal to 0, which means that there is only one subpicture in a picture, that is, the subpicture is equal to the picture; and when the subpicture present flag is false, sps_num_subpics_minus1 is also inferred to be 0. Therefore, it is unreasonable to define the range of sps_num_subpics_minus1 as 0 to 254 (including 0 and 254) when signaling.
[0353] 4. List of Examples and Techniques
[0354] The following list should be considered as an example to explain the general concept. These items should not be interpreted narrowly. In addition, these items can be combined in any way.
[0355] A motion vector is represented by (mv_x, mv_y), where mv_x is the horizontal component and mv_y is the vertical component.
[0356] RPR related
[0357] 1. When the resolution of the reference picture is different from that of the current picture, the same horizontal and / or vertical interpolation filter can be used to generate prediction values for a set of samples (at least two samples) of the current block.
[0358] a. In one example, the group may include all samples in the region of the block.
[0359] i. For example, the block can be divided into S MxN rectangles that do not overlap each other. Each MxN rectangle is a group. Figure 1 In the example shown, a 16x16 block can be divided into 16 4x4 rectangles, each rectangle being a group.
[0360] ii. For example, a row with N samples is a group. N is an integer not greater than the block width. In one example, N is 4 or 8 or the block width.
[0361] iii. For example, a column with N samples is a group. N is an integer not greater than the block height. In one example, N is 4 or 8 or the height of the block.
[0362] iv. M and / or N may be predefined or dynamically derived, for example based on block dimension / codec information, or signaling.
[0363] b. In one example, samples in a group may have the same MV (denoted as shared MV).
[0364] c. In one example, samples in a group may have MVs with the same horizontal component (denoted as shared horizontal component).
[0365] d. In one example, samples in a group may have MVs with the same vertical component (denoted as shared vertical component).
[0366] e. In one example, samples in a group may have MVs with the same fractional part of the horizontal component (denoted as a shared fractional horizontal component).
[0367] i. For example, assuming that the MV of the first sample point is (MV1x, MV1y) and the MV of the second sample point is (MV2x, MV2y), then MV1x & (2 M -1) is equal to MV2x&(2 M -1), where M represents the MV precision. For example, M=4.
[0368] f. In one example, samples in a group may have MVs with the same fractional part of the vertical component (denoted as shared fractional vertical component).
[0369] i. For example, assuming that the MV of the first sample point is (MV1x, MV1y) and the MV of the second sample point is (MV2x, MV2y), then MV1y&(2 M -1) is equal to MV2y&(2 M -1), where M represents the MV precision. For example, M=4.
[0370] g. In one example, for the samples in the group to be predicted, the resolution of the current picture and the reference picture (e.g., (refxL, refyL) derived in 8.5.6.3.1 of JVET-O2001-v14) can be first derived using MV b Then, MV b can be further modified (eg, rounded / truncated / clipped) to MV' to meet requirements such as those mentioned above, and MV' will be used to derive the predicted sample of the sample.
[0371] i. In one example, MV' has the same b The same integer part, and the fractional part of MV' are set to share fractional horizontal and / or vertical components.
[0372] ii. In one example, MV' is set to have a shared fractional horizontal and / or vertical component and is closest to MV b one.
[0373] h. The shared motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) can be set to the motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of a specific sample in the group.
[0374] i. For example, a particular sample point can be located at a corner of a rectangular group, such as Figure 2A "A", "B", "C" shown
[0375] and "D".
[0376] ii. For example, a particular sample point can be located at the center of a rectangular group, such as Figure 2A "E", "F", "G" shown
[0377] and "H".
[0378] iii. For example, a particular sample point may be located at the end of a row or column group, e.g. Figure 2B and 2C "A" shown
[0379] and "D".
[0380] iv. For example, a particular sample point may be located in the middle of a row or column group, e.g. Figure 2B and 2C "B" shown
[0381] and "C".
[0382] v. In one example, the motion vector of a particular sample point can be the MV mentioned in item g. b .
[0383] i. The shared motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) may be set to a motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of a virtual sample located at a different position compared to all samples in the group.
[0384] i. In one example, the virtual sample point is not in the group, but it is located in a region covering all the samples in the group.
[0385] 1) Optionally, the virtual sample point is located outside the region covering all the sample points in the group, for example, near the lower right position of the region.
[0386] ii. In one example, the MVs of virtual samples are derived in the same way as real samples, but at different locations.
[0387] iii. Figures 2A-2C The “V” in FIG. 1 shows an example of three virtual sample points.
[0388] j. The shared MV (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) can be set as a function of the MV (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of multiple samples and / or virtual samples.
[0389] i. For example, a shared MV (and / or a shared horizontal component and / or a shared vertical component and / or a shared fractional horizontal component and / or a shared fractional vertical component) can be set to all or part of the samples in the group, or Figure 2A Sample points in
[0390] "E", "F", "G", "H", or Figure 2A Sample point "E", "H", or Figure 2A Sample points in
[0391] "A", "B", "C", "D", or Figure 2A Sample points "A", "D", or Figure 2B Sample points in
[0392] "B", "C", or Figure 2B Sample points "A", "D", or Figure 2C Sample point "B", "C", or Figure 2C The average value of the MVs (and / or shared horizontal components and / or shared vertical components and / or shared fractional horizontal components and / or shared fractional vertical components) of the sample points “A” and “D” in .
[0393] 2. It is proposed that when the resolution of the reference picture is different from that of the current picture, only integer MVs are allowed to perform the motion compensation process to derive the prediction block of the current block.
[0394] a. In one example, the decoded motion vector for the sample to be predicted is rounded to an integer MV before being used.
[0395] 3. The motion vector used in the motion compensation process for samples in the current block (e.g., the shared MV / shared horizontal or vertical or fractional component / MV' mentioned in the above item) can be stored in the decoded picture buffer and used for motion vector prediction of subsequent blocks in the current / different picture.
[0396] a. Optionally, the motion vector used in the motion compensation process for samples in the current block (e.g., the shared MV / shared horizontal or vertical or fractional component / MV' mentioned in the above item) may not be allowed to be used for motion vector prediction of subsequent blocks in the current / different picture.
[0397] i. In one example, the decoded motion vector (eg, MV in the above item) b ) can be used for motion vector prediction of subsequent blocks in the current / different picture.
[0398] b. In one example, the motion vectors in the motion compensation process for the samples in the current block may be used in the filtering process (eg, deblocking filter / SAO / ALF).
[0399] i. Optionally, the decoded motion vector (e.g., MV in the above item) can be used in the filtering process. b ).
[0400] 4. It is proposed to select the interpolation filter used to derive the prediction block of the current block in the motion compensation process depending on whether the resolution of the reference picture is different from the resolution of the current picture.
[0401] a. In one example, when the resolution of the reference picture is different from the resolution of the current picture, the interpolation filter has fewer taps.
[0402] i. In one example, when the resolution of the reference picture is different from the resolution of the current picture, a bilinear filter is applied.
[0403] ii. In one example, when the resolution of the reference picture is different from the resolution of the current picture, a 4-tap filter or a 6-tap filter is applied.
[0404] 5. It is proposed to apply a two-step prediction block generation process when the resolution of the reference picture is different from the resolution of the current picture.
[0405] a. In the first step, a virtual reference block is generated by upsampling or downsampling an area in the reference picture, depending on the width and / or height of the current picture and the reference picture.
[0406] b. In the second step, prediction samples are generated from the virtual reference block by applying interpolation filtering, regardless of the width and / or height of the current picture and the reference picture.
[0407] 6. It is proposed that the upper left coordinates (xSbInt) of the limit block for reference sample filling defined in 8.5.6.3.1 of JVET-O2001-v14 are derived depending on the width and / or height of the current picture and the reference picture. L ,ySbInt L ) calculation.
[0408] a. In one example, the brightness position of the full sample point unit is modified as follows:
[0409] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),
[0410] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),
[0411] 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.
[0412] b. In one example, the chromaticity position of the full sample point unit is modified as follows:
[0413] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti),
[0414] yInti=Clip3(ySbIntC -Dy,ySbInt C +sbHeight+Uy,yInti),
[0415] 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.
[0416] 7. Propose whether and / or how to use the limit blocks for reference sample filling defined in 8.5.6.3.1 of JVET-O2001-v14 (e.g., (xSbInt L ,ySbInt L ))The limiting MV may depend on the use of DMVR.
[0417] a. In one example, only when DMVR is applied, according to the limit block for reference sample filling (e.g., defined in 8.5.6.3.1 (xSbInt L ,ySbInt L )) to limit the MV.
[0418] i. For example, operations 8-775 and 8-776 in the luma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when DMVR is used for the current block.
[0419] ii. For example, operations 8-789 and 8-790 in the chroma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when DMVR is used for the current block.
[0420] b. Optionally, in addition, the above method can also be applied to the limiting of chroma samples.
[0421] 8. Propose whether and / or how to use the limit blocks used for reference sample filling (as defined in 8.5.6.3.1 of JVET-O2001-v14 (xSbInt L ,ySbInt L ))The clipping MV depends on whether picture wrapping is used (eg, sps_ref_wraparound_enabled_flag is equal to 0 or 1).
[0422] a. In one example, only when picture wrapping is not used, the reference sample point filling is based on the limit block (e.g., defined in 8.5.6.3.1 (xSbInt L ,ySbInt L )) to limit the MV.
[0423] i. For example, operations 8-775 and 8-776 in the luma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when picture wrapping is not used.
[0424] ii. For example, operations 8-789 and 8-790 in the chroma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when picture wrapping is not used.
[0425] b. Optionally, in addition, the above method can also be applied to the limiting of chroma samples.
[0426] c. In one example, the brightness position of the full sample unit is modified as follows:
[0427] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),
[0428] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),
[0429] Dx and / or Dy and / or Ux and / or Uy may depend on whether picture wrapping is used.
[0430] d. In one example, the chromaticity position of the full sample point unit is modified as follows:
[0431] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti)
[0432] yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti)
[0433] Dx and / or Dy and / or Ux and / or Uy may depend on whether picture wrapping is used.
[0434] 9. Whether / how to apply a filtering process (eg, a deblocking filter) may depend on whether the reference pictures have a different resolution.
[0435] a. In one example, the boundary strength setting in the deblocking filter may also take into account the resolution difference in addition to the motion vector difference.
[0436] b. In one example, the boundary strength setting in the deblocking filter can be based on the scaled motion vector difference of the resolution difference.
[0437] c. In one example, if the resolution of at least one reference picture of block A is different from (or smaller than or larger than) the resolution of at least one reference picture of block B, the strength of the deblocking filter is increased.
[0438] d. In one example, if the resolution of at least one reference picture of block A is different from (or smaller than or larger than) the resolution of at least one reference picture of block B, the strength of the deblocking filter is reduced.
[0439] e. In one example, if the resolution of at least one reference picture of block A and / or block B is different from (or smaller than or larger than) the resolution of the current block, the strength of the deblocking filter is increased.
[0440] f. In one example, if the resolution of at least one reference picture of block A and / or block B is different from (or smaller than or larger than) the resolution of the current block, the strength of the deblocking filter is reduced.
[0441] 10. Instead of storing / using the motion vector of the block based on the same reference picture resolution as the current picture, it is proposed to use the real motion vector that takes into account the resolution difference.
[0442] a. Optionally, furthermore, when using motion vectors to generate prediction blocks, it is not necessary to calculate the resolution of the current picture and the reference picture (e.g., as derived in 8.5.6.3.1 of JVET-O2001-v14 (refx L ,refy L ))Further change the motion vector.
[0443] 11. In one example, when sub-pictures exist, the reference picture must have the same resolution as the current picture.
[0444] a. Optionally, when the reference picture has a different resolution than the current picture, there must be no sub-picture in the current picture.
[0445] 12. In one example, sub-pictures may be defined separately for pictures with different resolutions.
[0446] 13. In one example, if the reference picture has a different resolution than the current picture, the corresponding sub-picture in the reference picture may be derived by scaling and / or offsetting a sub-picture of the current picture.
[0447] 14. It is proposed that all or part of the information associated with surround clipping can be signaled in video units (e.g., at picture / view / slice / tile / sub-picture / CTU row level, etc.) rather than in sequence level.
[0448] a. In one example, the information can be signaled in PPS, APS, picture header, slice header, etc.
[0449] b. For example, a syntax element (eg named pps_ref_wraparound_offset_minus1) may be signaled in the first PPS to indicate the offset used to calculate the horizontal wraparound position.
[0450] i. In one example, pps_ref_wraparound_offset_minus1 may be signaled, and
[0451] pps_ref_wraparound_offset_minus1 plus 1 specifies the offset used to calculate the horizontal wrapping position in units of MinCbSizeY luma samples, where MinCbSizeY represents the minimum Cb size of the luma block.
[0452] ii. The range of pps_ref_wraparound_offset_minus1 may depend on pic_width_in_luma_samples in the first PPS. For example, the value of pps_ref_wraparound_offset_minus1 shall be in the range of (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)-1 (including (CtbSizeY / MinCbSizeY)+1 and (pic_width_in_luma_samples / MinCbSizeY)
[0453] -1), where pic_width_in_luma_samples is in the first PPS.
[0454] iii. In one example, the syntax elements may be encoded using a fixed-length / truncated unary / unary / truncated binary / K-th order EG (eg, K=0) binarization method.
[0455] c. For example, a syntax element (eg, named pps_ref_wraparound_enabled_flag) may be signaled in the first PPS to indicate whether horizontal wraparound motion compensation is applied in inter prediction.
[0456] i. In one example, pps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. pps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied.
[0457] ii. Optionally, in addition, syntax elements may be signaled conditionally.
[0458] 1) In one example, whether pps_ref_wraparound_offset_minus1 is signaled may depend on pps_ref_wraparound_enabled_flag.
[0459] a) For example, only when pps_ref_wraparound_enabled_flag is equal to 1, pps_ref_wraparound_offset_minus1 is signaled.
[0460] d. In one example, a first syntax element may be signaled in a first video unit (e.g., signaled in an SPS), and a second syntax element may be signaled in a second video unit (e.g., signaled in a PPS, APS, picture header, slice header, etc.). The first syntax element and the second syntax element may have the same function on surrounding clipping, but at different levels.
[0461] i. The second video unit can refer to the first video unit.
[0462] ii. For example, sps_ref_wraparound_offset_minus1 may be signaled in the SPS, and pps_ref_wraparound_offset_minus1 may be signaled in the PPS.
[0463] iii. For example, sps_ref_wraparound_enabled_flag may be signaled in SPS, and pps_ref_wraparound_enabled_flag may be signaled in PPS.
[0464] vi. In one example, in a conforming bitstream, the first syntax element should be identical to the second syntax element.
[0465] 1) For example, in a conforming bitstream, sps_ref_wraparound_enabled_flag shall be equal to pps_ref_wraparound_enabled_flag.
[0466] v. In one example, the second syntax element may depend on the first syntax element.
[0467] 1) For example, if sps_ref_wraparound_enabled_flag is 0, then pps_ref_wraparound_enabled_flag must be 0.
[0468] 2) For example, if sps_ref_wraparound_enabled_flag is 1, pps_ref_wraparound_enabled_flag can be 0 or 1.
[0469] vi. In one example, if both syntax elements are present, the first syntax element is ignored and the second syntax element performs a function.
[0470] vii. In one example, if both syntax elements are present, the second syntax element is ignored and the first syntax element performs the function.
[0471] e. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0472] f. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0473] g. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0474] h. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0475] i. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0476] j. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0477] k. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0478] 1. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.
[0479] 15. It is proposed that Log2(X) equations where X is equal to or less than 0 should be avoided to derive affine merge candidates.
[0480] a. For example, the process can be conditioned on whether X is greater than 0.
[0481] b. For example, the process can be conditioned on whether X is equal to 0.
[0482] c. For example, calculate Log2(Height)-Log2(Width) instead of Log2(Height / Width).
[0483] d. The example specification based on JVET-P2001-v9 is modified as follows:
[0484] 8.5.5.6 Derivation process of constructed affine control point motion vector Merge candidate
[0485] …
[0486] 6. If availableFlagCorner[0] is equal to TRUE and availableFlagCorner[2] is equal to TRUE, then the following applies:
[0487] – For X replaced by 0 or 1, the following applies:
[0488] –The variable availableFlagLX is exported as follows:
[0489] – If all of the following conditions are TRUE, availableFlagLX is set equal to TRUE:
[0490] –predFlagLXCorner[0] is equal to 1
[0491] –predFlagLXCorner[2] is equal to 1
[0492] –refIdxLXCorner[0] is equal to refIdxLXCorner[2]
[0493] – Otherwise, availableFlagLX is set equal to FALSE.
[0494] – If availableFlagLX is equal to TRUE, the following applies:
[0495] – The second control point motion vector cpMvLXCorner[1] is derived as follows:
[0496] cpMvLXCorner[1][0]=(cpMvLXCorner[0][0]<<7)+
[0497] ((cpMvLXCorner[2][1]-cpMvLXCorner[0][1])(8-625)
[0498] <<(7+ Log2(cbHeight)-Log2(cbWidth)
[0499] [[Log2(cbHeight / cbWidth)]]))
[0500] cpMvLXCorner[1][1]=(cpMvLXCorner[0][1]<<7)+
[0501] ((cpMvLXCorner[2][0]-cpMvLXCorner[0][0]) (8-626)
[0502] <<(7+ Log2(cbHeight)-
[0503] Log2(cbWidth) [[Log2(cbHeight / cbWidth)]]))
[0504] – Take mvX set equal to cpMvLXCorner[1], rightShift set equal to 7, and leftShift set equal to 0 as input and round cpMvLXCorner[1]
[0505] As output, the motion vector rounding process specified in clause 8.5.2.14 is invoked.
[0506] – Make the following allocations:
[0507] predFlagLXConst6 = 1 (8-627)
[0508] refIdxLXConst6 = refIdxLXCorner[ 0 ] (8-628)
[0509] cpMvLXConst6[ 0 ] = cpMvLXCorner[ 0 ] (8-629)
[0510] cpMvLXConst6[ 1 ] = cpMvLXCorner[ 1 ] (8-630)
[0511] cpMvLXConst6[0][0]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[0][0])(8-631)
[0512] cpMvLXConst6[0][1]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[0][1])(8-632)
[0513] cpMvLXConst6[1][0]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[1][0])(8-633)
[0514] cpMvLXConst6[1][1]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[1][1])(8-634)
[0515] – The bidirectional prediction weight index bcwIdxConst6 is set equal to bcwIdxCorner[0].
[0516] –Variables availableFlagConst6 and motionModelIdcConst6 are exported as follows:
[0517] – If availableFlagL0 or availableFlagL1 is equal to 1, availableFlagConst6 is set equal to TRUE and motionModelIdcConst6 is set equal to 1.
[0518] Otherwise, availableFlagConst6 is set equal to FALSE and motionModelIdcConst6 is set equal to 0.
[0519] 16. It is suggested that in the process of deriving parameters in the cross-component linear model (CCLM), Log2(X) equations where X is equal to or less than 0 should be avoided.
[0520] a. For example, the process can be conditioned on whether X is greater than 0.
[0521] b. For example, the process can be conditioned on whether X is equal to 0.
[0522] c. The example specification based on JVET-P2001-v9 is modified as follows:
[0523] 8.4.5.2.13 Specification of INTRA_LT_CCLM, INTRA_L_CCLM and INTRA_T_CCLM intra prediction modes
[0524] …
[0525] 7. The variables a, b, and k are derived as follows:
[0526] – If numSampL is equal to 0, and numSampT is equal to 0, then the following applies:
[0527] k=0 (8-211)
[0528] a=0 (8-212)
[0529] b=1<<(BitDepth-1) (8-213)
[0530] – Otherwise, the following applies:
[0531] diff=maxY-minY (8-214)
[0532] – If diff is not equal to 0, the following applies:
[0533] diffC=maxC-minC(8-215)
[0534] x = Floor (Log2 (diff)) (8-216)
[0535] normDiff=((diff<<4)>>x)&15 (8-217)
[0536] x+=(normDiff!=0)? 1:0 (8-218)
[0537] y= diffC>0? Floor(Log2(Abs(diffC)))+1 :0 (8-219)
[0538] a=(diffC*(divSigTable[normDiff]|8)+2 y-1 )>>y (8-220)
[0539] k=((3+xy)<1)? 1:3+xy (8-221)
[0540] a=((3+xy)<1)? Sign(a)*15:a (8-222)
[0541] b=minC-((a*minY)>>k) (8-223)
[0542] The divSigTable[] is defined as follows:
[0543] divSigTable[]={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0} (8-224)
[0544] – Otherwise (diff equals 0) the following applies:
[0545] k = 0 (8-225)
[0546] a = 0 (8-226)
[0547] b = minC (8-227)
[0548] …
[0549] d. More example specification modifications based on JVET-P2001-v9 are shown below:
[0550] iy=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0:
[0551] ii.y=diffC==0?0:Floor(Log2(Abs(diffC)))+1:
[0552] iii.y=Ceil(Log2(Abs(diffC)+1)))
[0553] 17. It is proposed that division by zero should be avoided during angular intra prediction.
[0554] e. For example, the derivation of invAngle can be conditional on whether intraPredAngle is equal to 0.
[0555] f. The example specification based on JVET-P2001-v9 is modified as follows:
[0556] 8.4.5.2.12 Specification of INTRA_ANGULAR2..INTRA_ANGULAR66 intra prediction modes The input to this process is:
[0557] – Intra prediction mode predModeIntra,
[0558] – variable refIdx, which specifies the intra prediction reference row index,
[0559] – the variable nTbW, which specifies the transform block width,
[0560] – the variable nTbH, which specifies the transform block height,
[0561] – variable refW, which specifies the reference sample width,
[0562] – variable refH, which specifies the reference sample height,
[0563] – variable nCbW, which specifies the codec block width,
[0564] – variable nCbH, which specifies the codec block height,
[0565] – the variable refFilterFlag, which specifies the value of the reference filter flag,
[0566] – the variable cIdx, which specifies the color component of the current block,
[0567] – Neighboring sample points p[x][y], where x=-1-refIdx, y=-1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx.
[0568] The output of this process is the prediction samples predSamples[x][y], where x = 0..nTbW-1, y = 0..nTbH-1. The variable nTbS is set equal to (Log2(nTbW)+Log2(nTbH))>>1.
[0569] The variable filterFlag is exported as follows:
[0570] – If one or more of the following conditions are true, filterFlag is set equal to 0.
[0571] –refFilterFlag is equal to 1;
[0572] –refIdx is not equal to 0;
[0573] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT;
[0574] – Otherwise, the following applies:
[0575] – The variable minDistVerHor is set equal to Min(Abs(predModeIntra-50), Abs(predModeIntra-18)).
[0576] – The variable intraHorVerDistThres[nTbS] is defined in Table 8-7.
[0577] –The variable filterFlag is exported as follows:
[0578] – If minDistVerHor is greater than intraHorVerDistThres[nTbS] and refFilterFlag is equal to 0, filterFlag is set equal to 1.
[0579] – Otherwise, filterFlag is set equal to 0.
[0580] Table 8-7 – Specification of intraHorVerDistThres[nTbS] for various transform block sizes nTbS
[0581]
[0582] Table 8-8 specifies the mapping table between predModeIntra and angle parameter intraPredAngle
[0583] Table 8-8 – Specification of intraPredAngle
[0584]
[0585] The inverse angle parameter invAngle is derived based on intraPredAngle as follows:
[0586]
[0587] …
[0588] 18. Whether and / or how to apply integer sample limiting operations to luma and / or chroma samples may depend on the width and / or height of the reference picture (or its consistency window or its scaling window), and the width and / or height of the current picture (or its consistency window or its scaling window).
[0589] a. In one example, the integer sample clipping operation is applied only when the width and / or height of the reference picture (or its consistency window or its scaling window) is equal to the width and / or height of the current picture (or its consistency window or its scaling window).
[0590] i. Optionally, in addition, if the width or height of the reference picture (or its consistency window or its scaling window) is not equal to the width or height of the current picture (or its consistency window or its scaling window), the integer sample point limiting operation is skipped.
[0591] b. Optionally, whether and / or how integer sample limiting operations are applied to luma and / or chroma samples may depend on the horizontal and / or vertical scaling factors between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).
[0592] i. In one example, the integer sample clipping operation is applied only when the horizontal and / or vertical scaling factor of the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window) is equal to 1.
[0593] ii. Optionally, if the horizontal or vertical scaling factor is not equal to 1, the integer sample clipping operation is skipped.
[0594] c. In one example, the integer sample clipping operation in the horizontal direction is conditioned on the width of the reference picture (or its consistency window or its scaling window) and the width of the current picture (or its consistency window or its scaling window).
[0595] i. In one example, the integer sample clipping operation in the horizontal direction is conditioned on the horizontal scaling factor between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).
[0596] d. In one example, the integer sample clipping operation in the vertical direction is conditioned on the height of the reference picture (or its consistency window or its scaling window) and the height of the current picture (or its consistency window or its scaling window).
[0597] i. In one example, the integer sample clipping operation in the vertical direction is conditioned on the vertical scaling factor between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).
[0598] e. The example specification based on JVET-P2001-v9 is modified as follows:
[0599] 8.5.6.3.2 Luma Sample Interpolation Filtering Process
[0600] …
[0601] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:
[0602] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0603] xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3)
[0604] (8-754)
[0605] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)
[0606] (8-755)
[0607] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0608] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?
[0609] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)
[0610] yInt i= Clip3(0, picH-1, yInt L +i-3)
[0611] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), the luma position in full sample units is further modified as follows, for i=0..7:
[0612] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )
[0613] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )
[0614] Predicted brightness sample value predSampleLX L The export is as follows:
[0615] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,
[0616] Then predSampleLX L The value of is derived as follows:
[0617] predSampleLX L =refPicLX L [xInt 3 ][yInt 3 ]< <shift3
[0618] …
[0619] 8.5.6.3.4 Chroma sample interpolation process
[0620] …
[0621] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), the chroma position (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0622] xInti = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (8-774)
[0623] yInt i =Clip3(ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (8-775)
[0624] …
[0625] f. Another example specification based on JVET-P2001-v9 is modified as follows:
[0626] 8.5.6.3.2 Luma Sample Interpolation Filtering Process
[0627] …
[0628] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:
[0629] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:
[0630] xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3)
[0631] (8-754)
[0632] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)
[0633] (8-755)
[0634] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:
[0635] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?
[0636] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)
[0637] yInt i = Clip3(0, picH-1, yInt L +i-3)
[0638] The brightness position of the full sample unit is further modified as follows, for i = 0..7:
[0639] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then
[0640] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )
[0641] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then
[0642] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )
[0643] Predicted brightness sample value predSampleLX L The export is as follows:
[0644] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,
[0645] Then predSampleLX L The value of is derived as follows:
[0646] predSampleLX L =refPicLX L [xInt 3 ][yInt 3 ]< <shift3
[0647] …
[0648] 8.5.6.3.4 Chroma sample interpolation process
[0649] …
[0650] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0651] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then
[0652] xInt i = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (8-774)
[0653] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then
[0654] yInt i =Clip3(ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (8-775)
[0655] …
[0656] g. In one example, whether to apply the integer sample clipping operation may depend on the width and / or height of the reference pictures (or their consistency windows or their scaling windows) of the two reference lists, and the width and / or height of the current picture (or its consistency window or its scaling window).
[0657] i. In one example, the integer sample clipping operation is applied only when the width and / or height of all reference pictures (e.g., from reference list 0 or from reference list 1, or from both) used by the current block (or its consistency window or its scaling window) is equal to the width and / or height of the current picture (or its consistency window or its scaling window).
[0658] 1) Alternatively, in addition, if the width or height of any reference picture (e.g., from reference list 0 or from reference list 1) used by the current block (or its consistency window or its scaling window) is not equal to the width or height of the current picture (or its consistency window or its scaling window), the integer sample limit operation will be skipped.
[0659] h. The example specification based on JVET-P2001-v14 is modified as follows:
[0660] 8.5.6.3.2 Luma Sample Interpolation Filtering Process
[0661] The inputs to this process are:
[0662] – Luminance position of all sample points (xInt L ,yInt L ),
[0663] …
[0664] If RefPicIsScaled[0][refIdxL0] is equal to 0 and RefPicIsScaled[1][refIdxL1] etc. At 0, Then the brightness position of all sample points is further modified as follows, for i = 0..7:
[0665] xInt i = Clip3( xSbInt L - 3, xSbInt L + sbWidth + 4, xInt i ) (959)
[0666] yInt i = Clip3( ySbInt L - 3, ySbInt L + sbHeight + 4, yInt i ) (960)
[0667] Predicted brightness sample value predSampleLX L The export is as follows:
[0668] …
[0669] 8.5.6.3.4 Chroma sample interpolation process
[0670] The inputs to this process are:
[0671] – Chroma position in full sample units (xInt C ,yInt C ),
[0672] …
[0673] If RefPicIsScaled[0][refIdxL0] is equal to 0 and RefPicIsScaled[1][refIdxL1] etc. At 0, Then the chromaticity position of all sample points (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0674] xInti = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (975)
[0675] yInt i = Clip3( ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (976)
[0676] Predicted chroma sample value predSampleLX C The export is as follows:
[0677] …
[0678] i. In one example, whether to apply integer sample clipping operation may depend on whether to apply DMVR.
[0679] j. The example specification based on JVET-P2001-v14 is modified as follows:
[0680] 8.5.6.3.2 Luma Sample Interpolation Filtering Process
[0681] The inputs to this process are:
[0682] – Luminance position of all sample points (xInt L ,yInt L ),
[0683] …
[0684] If dmvrFlag is equal to 1, the luma position of the full sample unit is further modified as follows, for i = 0..7:
[0685] xInt i = Clip3( xSbInt L - 3, xSbInt L + sbWidth + 4, xInt i ) (959)
[0686] yInt i = Clip3( ySbInt L - 3, ySbInt L + sbHeight + 4, yInt i ) (960)
[0687] Predicted brightness sample value predSampleLX L The export is as follows:
[0688] …
[0689] 8.5.6.3.4 Chroma sample interpolation process
[0690] The inputs to this process are:
[0691] – Chroma position in full sample units (xInt C ,yInt C ),
[0692] …
[0693] If dmvrFlag is equal to 1, the chroma position (xInt i ,yInt i ) is further modified as follows, for i=0..3:
[0694] xInt i = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInt i ) (975)
[0695] yInt i = Clip3( ySbIntC - 1, ySbIntC + sbHeight + 2, yInt i ) (976)
[0696] Predicted chroma sample value predSampleLX C The export is as follows:
[0697] …
[0698] 19. Whether and / or how integer sample clipping operations are applied on luma and / or chroma samples may depend on whether codec tool X is applied. (eg, X is decoder-side motion vector refinement (DMVR)).
[0699] a. In one example, integer sample clipping is only applied when codec tool X is applied.
[0700] b. In one example, the integer sample clipping operation is applied only when codec tool X is not applied.
[0701] GEO-related
[0702] 20. Which angles / distances are allowed in GEO may depend on decoding information (eg, relevant syntax elements, block dimensions).
[0703] a. In one example, which angle / distance can be made in GEO depends on the block dimension.
[0704] i. In one example, one set of angles / distances may be used for block dimension A (eg, A may indicate a block that is taller than it is wide), while another set of angles / distances may be used for block dimension B (eg, B may indicate a block that is not taller than it is wide).
[0705] b. In one example, how to map the GEO mode index to the angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).
[0706] c. In one example, how to map the decoded / signaled GEO mode index to the GEO mode index used to derive the GEO angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).
[0707] d. In one example, how to map the decoded / signaled GEO mode index to the GEO angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).
[0708] e. The example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is changed as follows, where the newly added text starts with Underline Bold Deleted text is indicated by square brackets [[ ]].
[0709] 8.5.7 Decoding process of GEO inter-frame blocks
[0710] 8.5.7.1 Overview
[0711] This process is called when decoding a codec unit where MergeGeoFlag[xCb][yCb] is equal to 1.
[0712] The inputs to this process are:
[0713] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,
[0714] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,
[0715] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,
[0716] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,
[0717] – Chroma motion vectors mvCA and mvCB,
[0718] – reference indexes refIdxA and refIdxB,
[0719] –Prediction list flags predListFlagA and predListFlagB.
[0720] The output of this process is:
[0721] – Luminance prediction sample array (cbWidth) x (cbHeight) predSamples L ,
[0722] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,
[0723] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .
[0724] Let predSamplesLA L and predSamplesLB L predSamplesLA is an array of (cbWidth) x (cbHeight) of predicted luminance sample values Cb ,predSamplesLB Cb , and let predSamplesLA Cr and predSamplesLB Cr An array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predicted chroma sample values.
[0725] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:
[0726] 1. For each of N in A and B, the following applies:
[0727] – Derives the ordered two-dimensional array refPicLN of luma samples by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input Land two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.
[0728] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .
[0729] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .
[0730] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr, variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .
[0731] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.
[0732] 3. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input , set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx[xCb][yCb] specified in Table 36[[].
[0733] 4. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.
[0734] 5. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb, variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0735] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0736] 7. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.
[0737] Table 36 – Specification of angleIdx and distanceIdx values based on merge_geo_partition_idx value.
[0738] Fig.9A and 9B Table 36 is shown.
[0739] i. Another example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes should be as follows: 8.5.6 Decoding of GEO inter-frame blocks
[0740] 8.5.7.1 Overview
[0741] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.
[0742] The inputs to this process are:
[0743] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,
[0744] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,
[0745] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,
[0746] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,
[0747] – Chroma motion vectors mvCA and mvCB,
[0748] – reference indexes refIdxA and refIdxB,
[0749] –Prediction list flags predListFlagA and predListFlagB.
[0750] The output of this process is:
[0751] – Luminance prediction sample array (cbWidth) x (cbHeight) predSamples L ,
[0752] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,
[0753] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .
[0754] Let predSamplesLA L and predSamplesLBL is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.
[0755] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:
[0756] 2. For N to be each of A and B, then the following applies:
[0757] – Derives the ordered two-dimensional array refPicLN of luma samples by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input L and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.
[0758] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .
[0759] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .
[0760] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cr Set equal to refPicLN Cr , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .
[0761] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.
[0762] 3. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input , set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx[xCb][yCb] specified in Table 36[[].
[0763] 4. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.
[0764] 5. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0765] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][yC ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0766] 7. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.
[0767] Table 36 – Specification of angleIdx and distanceIdx values based on merge_geo_partition_idx value.
[0768] Fig. 9C and 9D An example of this embodiment of Table 36 is shown.
[0769] f. Another example specification change based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is as follows:
[0770] 8.5.7 Decoding process of GEO inter-frame blocks
[0771] 8.5.7.1 Overview
[0772] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.
[0773] The inputs to this process are:
[0774] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,
[0775] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,
[0776] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,
[0777] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,
[0778] – Chroma motion vectors mvCA and mvCB,
[0779] – reference indexes refIdxA and refIdxB,
[0780] –Prediction list flags predListFlagA and predListFlagB.
[0781] The output of this process is:
[0782] – Luminance prediction sample array (cbWidth) x (cbHeight) predSamples L ,
[0783] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,
[0784] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .
[0785] Let predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.
[0786] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:
[0787] 3. For N to be each of A and B, then the following applies:
[0788] – Invoke the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input, deriving an ordered two-dimensional array refPicLN of luma samples.L and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.
[0789] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .
[0790] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .
[0791] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr, variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .
[0792] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.
[0793] 3. According to the value of merge_geo_parition_idx[xCb][yCb] and the codec block width as specified in Table xx cbWidth and codec block height cbHeight, set the value of merge_geo_parition_idx'[xCb][yCb].
[0794] 4. Set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx'[xCb][yCb] specified in Table 36.
[0795] 5. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.
[0796] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb, variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0797] 7. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0798] 8. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.
[0799] Fig.9E This embodiment of Table xx - a mapping table of geo_partition_idx' values based on geo_partition_idx values is shown.
[0800] Fig.9FThis embodiment of Table 36 - Specification of angleIdx and distanceIdx values based on merge_geo_partition_idx value is shown.
[0801] g. Another example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is changed as follows: 8.5.7 Decoding process of GEO inter-frame blocks
[0802] 8.5.7.1 Overview
[0803] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.
[0804] The inputs to this process are:
[0805] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,
[0806] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,
[0807] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,
[0808] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,
[0809] – Chroma motion vectors mvCA and mvCB,
[0810] – reference indexes refIdxA and refIdxB,
[0811] –Prediction list flags predListFlagA and predListFlagB.
[0812] The output of this process is:
[0813] – Luminance prediction sample array (cbWidth) x (cbHeight) predSamples L ,
[0814] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,
[0815] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .
[0816] Let predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr An array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predicted chroma sample values.
[0817] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:
[0818] 4. For N to be each of A and B, the following applies:
[0819] – Invoke the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input, deriving an ordered two-dimensional array refPicLN of luma samples. L and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.
[0820] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L, variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .
[0821] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .
[0822] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cr Set equal to refPicLN Cr , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .
[0823] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.
[0824] 3. According to the value of merge_geo_parition_idx[xCb][yCb] and the codec block as specified in Table xx The width cbWidth and the codec block height cbHeight set the value of merge_geo_parition_idx'[xCb][yCb].
[0825] 4. Set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx'[xCb][yCb] specified in Table 36.
[0826] 5. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.
[0827] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0828] 7. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Crand predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.
[0829] 8. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.
[0830] Figure 9G An example of Table xx - a mapping table of geo_partition_idx' values based on geo_partition_idx values is shown.
[0831] Figure 9H Table 36 - Specification of angleIdx and distanceIdx values based on merge_geo_partition_idx value is shown.
[0832] Advanced Syntax
[0833] Definition of intra-frame slices / pictures
[0834] 21. Instead of defining an intra (I) slice (or picture) as a slice decoded using only intra prediction, it is proposed to define an intra slice as a slice (or picture) decoded not using inter prediction.
[0835] a. Alternatively, it is proposed to define an intra slice as a slice that is decoded without reference to any picture (not the picture containing the slice).
[0836] b. Alternatively, it is proposed to define intra slices as slices decoded using intra prediction or intra block copy (IBC) prediction or palette prediction mode.
[0837] 22. It is proposed to define intra pictures as pictures that are not decoded using inter-frame prediction.
[0838] c. Alternatively, it is proposed to define an intra picture as a picture that is decoded without reference to any picture (not the picture containing the slice).
[0839] d. Alternatively, it is proposed to define an intra picture as a picture decoded using intra prediction or intra block copy (IBC) prediction or palette prediction mode.
[0840] Range of the number of sub-pictures to be signaled
[0841] 23. The consistency bitstream shall satisfy the following requirements: When sub-pictures exist, the number of sub-pictures shall be no less than 2.
[0842] a. Alternatively, additionally, the signaled sps_num_subpics_minus1 should be in the range of 1 to N (eg, N=254).
[0843] b. Alternatively, in addition, the signaled sps_num_subpics_minus1 is replaced by sps_num_subpics_minus2, where sps_num_subpics_minus2 plus 2 specifies the number of sub-pictures.
[0844] i. Alternatively, additionally, the value of sps_num_subpics_minus2 should be in the range of 0 to (N-1) (eg, N=254).
[0845] 24. Replace syntax elements that depend on the sub-picture presence flag (eg, subpics_present_flag) (eg, whether the syntax element or the semantics of the syntax element is signaled) by checking whether sps_num_subpics_minus1 is equal to 0.
[0846] Figure 3 300 is a block diagram of a video processing device 300. Device 300 may be used to implement one or more methods described herein. Device 300 may be embodied in a smartphone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. Device 300 may include one or more processors 302, one or more memories 304, and video processing hardware 306. (Multiple) processors 302 may be configured to implement one or more methods described in this document. Memory (multiple memories) 304 may be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 306 may be used to implement some of the techniques described herein in hardware circuits. In some embodiments, hardware 306 may be part of (one or more) processors 302 (e.g., a graphics processor) in part or in whole.
[0847] Figure 6 is a block diagram illustrating an exemplary video coding system 100 that may utilize the techniques of this disclosure.
[0848] like Figure 6 As shown, the video codec system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may be referred to as a video encoding device. The destination device 120 may decode the encoded video data generated by the source device 110, which may be referred to as a video decoding device.
[0849] Source device 110 may include a video source 112 , a video codec 114 , and an input / output (I / O) interface 116 .
[0850] The video source 112 may include sources such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of these sources. The video data may include one or more pictures. The video codec 114 encodes the video data from the video source 112 to generate a bit stream. The bit stream may include a bit sequence that forms a codec representation of the video data. The bit stream may include a codec picture and related data. The codec picture is a codec representation of the picture. Related data may include a sequence parameter set, a picture parameter set, and other grammatical structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be directly sent to the destination device 120 via the network 130a via the I / O interface 116. The encoded video data may also be stored on a storage medium / server 130b for access by the destination device 120.
[0851] Destination device 120 may include an I / O interface 126 , a video decoder 124 , and a display device 122 .
[0852] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to the user. The display device 122 may be integrated with the destination device 120, or may be external to the destination device 120 configured to interface with an external display device.
[0853] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as the current High Efficiency Video Coding (HEVC) standard, the VVM standard, and other current and / or future standards.
[0854] Figure 7 is a block diagram showing an example of a video encoder 200, which may be Figure 6 The video encoder 114 in the system 100 is shown.
[0855] Video encoder 200 may be configured to perform any or all of the techniques of this disclosure. Figure 7 In the example of , video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0856] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205 and an intra-frame prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213 and an entropy coding unit 214.
[0857] In other examples, the video encoder 200 may include more, fewer, or different functional components. In an example, the prediction unit may include an intra-block copy (IBC) unit. The IBC unit may perform prediction in IBC mode, where at least one reference picture is a picture where the current video block is located.
[0858] Furthermore, some components (such as the motion estimation unit 204 and the motion compensation unit 205) may be highly integrated, but for the purpose of explanation, they are described in detail in the following sections. Figure 7 In the example, they are represented separately.
[0859] The partitioning unit 201 may partition the current picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.
[0860] The mode selection unit 203 may select one of the coding modes (intra or inter) based on the error result, for example, and provide the resulting intra or inter coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combined intra-frame inter-frame (CIIP) mode in which the prediction is based on an inter-frame prediction signal and an intra-frame prediction signal. In the case of inter-frame prediction, the mode selection unit 203 may also select a resolution for the motion vector of the block (e.g., sub-pixel or integer pixel precision).
[0861] To perform inter-frame prediction on the current video block, the motion estimation unit 204 may generate motion information of the current video block by comparing the current video block with one or more reference frames from the buffer 213. The motion compensation unit 205 may determine a predicted video block of the current video block based on motion information and decoded samples of a picture (different from the picture associated with the current video block) (e.g., a reference picture) from the buffer 213.
[0862] For example, motion estimation unit 204 and motion compensation unit 205 may perform different operations on the current video block depending on whether the current video block is in an I slice, a P slice, or a B slice.
[0863] In some examples, the motion estimation unit 204 may perform unidirectional prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 or list 1. Then, the motion estimation unit 204 may generate a reference index indicating a reference picture in list 0 or list 1 containing the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, the prediction direction indicator, and the motion vector as motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.
[0864] In other examples, the motion estimation unit 204 may perform bidirectional prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0, and may also search for another reference video block of the current video in the reference pictures of list 1. Then, the motion estimation unit 204 may generate a reference index indicating a reference picture in list 0 or list 1 containing the reference video block and a motion vector indicating a spatial displacement between the reference video block and the current video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current video block based on the reference video block indicated by the motion information of the current video block.
[0865] In some examples, motion estimation unit 204 does not output a full set of motion information for the current video (e.g., to entropy coding unit 214). Instead, motion estimation unit 204 may reference motion information of another video block to signal motion information for the current video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of an adjacent video block.
[0866] In one example, motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block that indicates to video decoder 300 that the current video block has the same motion information as another video block.
[0867] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0868] As described above, the video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge mode signaling.
[0869] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements.
[0870] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the prediction video block(s) of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.
[0871] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform a subtraction operation.
[0872] Transform processing unit 208 may generate one or more transform coefficient video blocks for a current video block by applying one or more transforms to the residual video block associated with the current video block.
[0873] After transform processing unit 208 generates a transform coefficient video block associated with the current video block, quantization unit 209 may quantize the transform coefficient video block associated with the current video block based on a quantization parameter (QP) value associated with the current video block.
[0874] The inverse quantization unit 210 and the inverse transform unit 211 may apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 may add the reconstructed residual video block to the corresponding samples of one or more prediction video blocks generated by the prediction unit to generate a reconstructed video block associated with the current block to be stored in the buffer 213.
[0875] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce video block artifacts in the video block.
[0876] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives the data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.
[0877] Figure 8 It shows that it can be Figure 6 1 is a block diagram of an example of a video decoder 300 of the video decoder 114 in the system 100 shown. The video decoder 300 may be configured to perform any or all of the techniques of the present disclosure. Figure 8 In the example of , video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0878] exist Figure 8 In the example of FIG. 3 , the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, and a reconstruction unit 306 and a buffer 307. In some examples, the video decoder 300 may perform the encoding pass generally described with respect to the video codec 200 ( Figure 7 )The opposite decoding pass.
[0879] The entropy decoding unit 301 may retrieve an encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 may decode the entropy-encoded video data, and the motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list indexes, and other motion information from the entropy-decoded video data. For example, the motion compensation unit 302 may determine this information by performing AMVP and Merge modes.
[0880] Motion compensation unit 302 may use the motion vectors and / or MVDs received in the bitstream to identify predicted video blocks in reference pictures in buffer 307 .
[0881] The motion compensation unit 302 generates a motion compensated block, possibly performing interpolation based on an interpolation filter. An identifier of an interpolation filter used for motion estimation with sub-pixel precision may be included in the syntax element.
[0882] The motion compensation unit 302 may calculate interpolated values of sub-integer pixels of the reference block using the interpolation filter used by the video codec 200 during video block encoding. The motion compensation unit 302 may determine the interpolation filter used by the video codec 200 according to the received syntax information, and use the interpolation filter to generate a prediction block.
[0883] The motion compensation unit 302 may use some syntax information to determine the size of blocks used to encode (multiple) frames and / or (multiple) slices of the encoded video sequence, partitioning information describing how each macroblock of a picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-frame coded block, and other information for decoding the encoded video sequence.
[0884] The intra prediction unit 303 may form a prediction block from spatially neighboring blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 304 inversely quantizes (ie, dequantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 305 applies an inverse transform.
[0885] The reconstruction unit 306 may add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If necessary, a deblocking filter may also be applied to filter the decoded block to remove blocking artifacts. The decoded video block is then stored in a buffer 307, which provides reference blocks for subsequent motion compensation and also produces decoded video for presentation on a display device.
[0886] In some embodiments, the following solutions may be implemented as preferred solutions.
[0887] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 1).
[0888] 1. A video processing method (eg, Figure 4 The method 400 shown includes: for a conversion between a current block of a video and a coded representation of the video, determining (402) that a current picture containing the current block and a reference picture used for the conversion have different resolutions, and performing (404) the conversion based on the determination so that a horizontal or vertical interpolation filter is used to generate a predicted value for a sample group of the current block.
[0889] 2. The method according to solution 1, wherein the sample group corresponds to all samples of the current block.
[0890] 3. The method according to solution 1, wherein the sample group corresponds to some samples of the current block.
[0891] 4. The method according to solution 3, wherein the sample point group corresponds to all sample points of a certain area in the current block.
[0892] 5. The method according to any of solutions 1-4, wherein the sample groups are selected to have the same motion vector (MV) used during conversion.
[0893] 6. The method according to any one of solutions 1-4, wherein the sample point groups have the same horizontal motion vector component.
[0894] 7. The method according to any one of solutions 1-4, wherein the sample point groups have the same vertical motion vector component.
[0895] 8. The method according to any one of solutions 1-4, wherein the sample groups have the same fractional horizontal motion vector component part.
[0896] 9. The method according to any one of solutions 1-4, wherein the sample groups have the same fractional vertical motion vector component part.
[0897] 10. A method according to any one of solutions 1-9, wherein, during conversion, the motion vector of a specific sample point is derived by modifying the value of the motion vector derived based on the resolution of the current picture and the resolution of the reference picture through a modification step (including truncation, limiting or rounding).
[0898] 11. A method according to any of solutions 1-7, wherein during conversion, the motion vector of a particular sample is set equal to the value of a shared motion vector shared by all samples in a sample group.
[0899] 12. A method according to any of solutions 1-9, wherein the sample group shares a shared motion vector during conversion, and wherein the shared motion vector is derived from the motion vector of one or more samples in the sample group.
[0900] 13. The method according to solution 11, wherein the shared motion vector is further derived from the virtual samples.
[0901] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 6).
[0902] 14. A video processing method, comprising: for a conversion between a current block of a video and a codec representation of the video, determining that the resolutions of a current picture containing the current block and a reference picture used for the conversion are different, and performing the conversion based on the determination so that a predicted value of a sample point group of the current block is generated as an interpolated version of a virtual reference block, the interpolated version of the virtual reference block being generated by changing a sampling rate of an area in a reference picture, wherein the sampling rate change depends on the height or width of the current picture or the reference picture.
[0903] 15. The method of solution 14, wherein the interpolated version is generated using an interpolation filter whose coefficients do not depend on the height or width of the current picture or the reference picture.
[0904] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 6).
[0905] 16. A video processing method, comprising: for a conversion between a current block of a video and a codec representation of the video, determining that the resolutions of a current picture containing the current block and a reference picture used for the conversion are different, and based on the determination, based on a scheme that depends on the height or width of the current picture or the reference picture, deriving the upper left coordinate of a limiting block used for reference sample point filling, and performing the conversion using the derived upper left coordinate of the bounding box.
[0906] 17. The method of solution 16, wherein the solution includes calculating the luma samples at integer sample positions as:
[0907] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),
[0908] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),
[0909] Where Dx and / or Dy and / or Ux and / or Uy depend on the width and / or height of the current picture or the reference picture, and where (xSbInt L ,ySbInt L ) is the upper left coordinate.
[0910] 18. The method of solution 16, wherein the solution includes calculating the chrominance samples at integer sample positions as:
[0911] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti)
[0912] yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti)
[0913] Where Dx and / or Dy and / or Ux and / or Uy depend on the width and / or height of the current picture or the reference picture, and where (xSbInt L ,ySbInt L ) is the upper left coordinate.
[0914] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 7).
[0915] 19. A video processing method, comprising: for conversion between a current block in a current picture of a video and a codec representation of the video, based on the use of decoder-side motion vector refinement (DMVR) during the conversion of the current block, determining a clipping operation applied to motion vector calculation according to a clipping block used for reference sample filling; and performing the conversion based on the clipping operation.
[0916] 20. The method of solution 19, wherein enabling a conventional clipping operation is determined due to DMVR being used for the current block.
[0917] 21. A method according to any of solutions 19-20, wherein the current block is a chroma block.
[0918] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 8).
[0919] 22. A video processing method, comprising: for conversion between a current block in a current picture of a video and a codec representation of the video, based on the use of picture wrapping in the conversion, determining a limiting operation applied to motion vector calculation according to a limiting block used for reference sample point filling; and performing the conversion based on the limiting operation.
[0920] 23. The method of solution 22, wherein enabling the conventional clipping operation is determined only when picture wrapping is disabled for the current block.
[0921] 24. A method according to any of solutions 22-23, wherein the current block is a chroma block.
[0922] 25. A method according to any of solutions 22-23, wherein a clipping operation is used to calculate the luma samples as:
[0923] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),
[0924] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),
[0925] where Dx and / or Dy and / or Ux and / or Uy depend on the use of picture wrapping, and where (xSbInt L ,ySbInt L ) indicates a limit block.
[0926] 26. A method according to any of solutions 1-25, wherein the conversion includes encoding the video into a codec representation.
[0927] 27. A method according to any one of solutions 1-25, wherein the conversion includes decoding a codec representation to generate pixel values of a video.
[0928] 28. A video decoding device, comprising a processor, wherein the processor is configured to implement one or more of the methods described in solutions 1-27.
[0929] 29. A video encoding and decoding device, comprising a processor, wherein the processor is configured to implement one or more of the methods described in solutions 1-27.
[0930] 30. A computer program product having computer codes stored thereon, which, when executed by a processor, cause the processor to implement the method of any one of solutions 1-27.
[0931] 31. A method, apparatus or system as herein described.
[0932] Some preferred embodiments can implement the following technical solutions:
[0933] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 15).
[0934] 1. A video processing method (eg, Fig. 10AThe method 1000 shown includes: for a conversion between a current video block of a video and a codec representation of the video, selectively making a determination of an affine Merge candidate according to a rule (1002); and performing (1004) the conversion according to the determination; wherein the rule specifies how to calculate the affine Merge candidate without using a log2(X) operation, where X is equal to or less than zero; and wherein the affine Merge candidate is a motion candidate derived from an adjacent affine codec video block.
[0935] 2. The method according to claim 1, wherein the rule stipulates that an affine merge candidate is determined when X is greater than 0.
[0936] The method according to claim 1 , wherein the rule stipulates that an affine merge candidate is determined when X is not equal to 0.
[0937] 4. The method of claim 1, wherein the rule provides for determining Log2(Height / Width) without performing a division of Height and Width, wherein Height is the height of the current video block and Width is the width of the current video block.
[0938] 5. The method of claim 4, wherein the rule provides for determining Log2(Height / Width) as Log2(Height)-Log2(Width).
[0939] 6. The method according to any one of claims 1 to 5, wherein the affine merge candidate is derived by calculating Log2(Width)-Log2(Height) or Log2(Height)-Log2(Width).
[0940] The following solution can be implemented with additional techniques from the items listed in the previous section (e.g., item 16).
[0941] 7. A video processing method (eg, Fig. 10B The method 1010 shown includes: for conversion between a current video block of a video containing multiple color components and a codec representation of the video, making a cross-component linear model (CCLM) determination (1012) according to a rule; and performing (1014) the conversion according to the determination; wherein the rule specifies how to calculate an affine merge candidate without using a log2(X) operation, where X is equal to or less than zero; and wherein the CCLM includes predicting chrominance samples based on reconstructed adjacent luminance samples according to a linear model.
[0942] 8. The method of claim 7, wherein X represents the absolute value of the difference between the maximum chroma sample value and the minimum chroma sample value of the current video block, and wherein the rule dictates that 0 is used instead of log2(X) in the CCLM calculation.
[0943] 9. A method according to any one of claims 7-8, wherein the rule provides that the variable y used to calculate the slope parameter of the linear model is evaluated as:
[0944] y=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0;
[0945] Where diffC is equal to X and represents the difference between the maximum chroma sample value and the minimum chroma sample value of the current video block, floor is a floor function, and Abs is an absolute value function.
[0946] 10. The method of claim 7, wherein the rule provides for determining CCLM when X is greater than 0.
[0947] 11. The method of claim 7, wherein the rule provides for determining CCLM when X is not equal to 0.
[0948] 12. The method of any one of claims 7, 10-11, wherein X represents the difference between the maximum chroma sample value and the minimum chroma sample value of the current video block, and wherein the rule stipulates that 0 is used instead of log2(X) in the CCLM calculation.
[0949] 13. A method according to any one of claims 7 to 9, wherein the rule provides that the variable y used to calculate the slope parameter of the linear model is evaluated as:
[0950] y=diffC==0?0:Floor(Log2(Abs(diffC)))+1;
[0951] Where diffC is equal to X and represents the difference between the maximum chroma sample value and the minimum chroma sample value of the current video block, floor is a floor function, and Abs is an absolute value function.
[0952] 14. A method according to any one of claims 7 to 9, wherein the rule provides that the variable y used to calculate the slope parameter of the linear model is evaluated as:
[0953] y=Ceil(Log2(Abs(diffC)+1)));
[0954] Where diffC is equal to X and represents the difference between the maximum chroma sample value and the minimum chroma sample value of the current video block, and Ceil is a ceiling function.
[0955] The following solution can be implemented with additional techniques from the items listed in the previous section (e.g., item 17).
[0956] 15. A video processing method (eg, Fig. 10C The method 1020 shown includes: for a conversion between a current video block of a video picture of a video containing multiple color components and a codec representation of the video, making a determination (1022) of an angular intra-frame prediction for the current video block according to a rule; and performing (1024) the conversion according to the determination; wherein the rule specifies a computational step for the determination, wherein division by zero is avoided; and wherein the angular intra-frame prediction includes predicting the current video block from one or more samples in the video picture at one or more angles.
[0957] 16. The method of claim 15, wherein the rule provides for conditionally calculating a variable invAngle based on whether the prediction angle is zero, wherein invAngle is used to determine the prediction for the current video block.
[0958] 17. The method of claim 15, wherein the rule provides for calculating the variable invAngle as:
[0959]
[0960] where intraPredAngle corresponds to an angle in the one or more angles, and Round is a rounding function.
[0961] 18. The method of claim 15, wherein the rule provides that when intraPredAngle is not equal to 0, the variable invAngle is calculated as:
[0962]
[0963] where intraPredAngle corresponds to an angle in the one or more angles, and Round is a rounding function.
[0964] The following solution can be implemented with additional techniques from the items listed in the previous section (eg, item 20).
[0965] 19. A video processing method (eg, Fig. 10DThe method 1030 shown comprises: according to a rule, partitioning (1032) a current video block of a video into a plurality of partitions according to a pattern in which at least one partition is along an angular line; and performing (1034) a conversion between the current video block and a codec representation of the video, wherein a prediction of the current video block is determined from a weighted average of the predictions, wherein the weights of the weighted average are determined by the pattern; wherein the rule provides that the pattern indicates that characteristics of the partitions corresponding to the distance of the partitions and / or the angle of the angular line depend on size characteristics of the current video block or codec characteristics of the current video block.
[0966] 20. The method of claim 19, wherein the rule specifies that, depending on the dimensional property, the angle or distance belongs to a set of possible values.
[0967] 21. The method according to any one of claims 19-20, wherein the size characteristic is a first size characteristic when the width of the current video block is greater than the height; or the size characteristic is a second size characteristic when the height of the current video block is greater than the width; or the size characteristic is a third size characteristic when the current video block has a square shape.
[0968] 22. The method of claim 19, wherein the rule provides that including a first syntax element indicating a mode in the codec representation is dependent on a second syntax element associated with the current video block.
[0969] 23. The method of claim 19, wherein the rules specify a mapping between patterns and angles and / or distances.
[0970] 24. A method according to any one of claims 19 to 22, wherein the rule specifies that the mapping between patterns and indices to angles and / or distances is based on size characteristics or codec characteristics.
[0971] 25. A method according to any one of claims 19 to 22, wherein the rules specify that the mapping between modes and angles and / or distances is based on size characteristics or codec characteristics.
[0972] The following solution can be implemented with additional techniques from the items listed in the previous section (e.g., items 21, 22).
[0973] 26. A video processing method (e.g., Fig.10E The method 1040 shown includes: performing (1042) a conversion between a video containing one or more video regions and a codec representation of the video according to a rule, wherein the rule specifies a condition under which the video region is processed as an intra-frame codec region in the codec representation.
[0974] 27. A method according to claim 26, wherein the rule provides that in case the video region is decodable from the codec representation without using inter prediction, the video region is treated as an intra-coded region.
[0975] 28. The method of claim 26, wherein the rule provides that, in case the video region is decodable from the codec representation without using any other pictures than the picture of the video region, the video region is treated as an intra-codec region.
[0976] 29. A method according to claim 26, wherein the rule stipulates that when a video area is decoded from a codec representation using intra prediction, intra block copy prediction, or a palette prediction mode, the video area is treated as an intra codec area. In intra prediction, the video area is represented by a residual of intra prediction; in intra block copy prediction, the video area is represented by samples in the same picture; in palette mode, the video area is represented by a palette of representative sample values.
[0977] 30. The method according to any of claims 26-29, wherein the video region corresponds to a video slice.
[0978] 31. The method according to any one of claims 26-29, wherein the video region corresponds to a video picture.
[0979] The following solution can be implemented with additional techniques from the items listed in the previous section (e.g., items 23, 24).
[0980] 32. A video processing method (e.g., Fig.10F The method 1050 shown includes: performing (1052) a conversion between a video containing one or more video pictures and a codec representation of the video, wherein the codec representation complies with a format rule, wherein the format rule specifies the use of syntax elements for sub-picture signaling.
[0981] 33. A method according to claim 32, wherein the format rule stipulates that each video picture with sub-pictures has at least two sub-pictures.
[0982] 34. The method of claim 32, wherein the format rule specifies that the syntax element signals the number of sub-pictures minus 1 and takes a value in the range of 1 to N, where N is an integer.
[0983] 35. The method of claim 32, wherein the format rule specifies that the syntax element signals the number of sub-pictures minus 2 and takes a value in the range of 0 to N-1, where N is an integer.
[0984] 36. A method according to claim 34 or 35, wherein N=254.
[0985] 37. A method according to any one of claims 32 to 36, wherein the format rule provides that a syntax element indicating whether the number of sub-pictures is not greater than 1 is used to determine whether one or more additional syntax elements related to sub-picture signaling are included in the codec representation.
[0986] 38. The method of claim 37, wherein the syntax element has a value of (number of sub-pictures - 1).
[0987] 39. The method of any one of claims 1-38, wherein converting comprises encoding the video into a codec representation.
[0988] 40. The method of any one of claims 1-38, wherein converting comprises decoding the codec representation to generate pixel values of the video.
[0989] 41. A video decoding device, comprising a processor configured to implement one or more methods of claims 1-40.
[0990] 42. A video encoding apparatus comprising a processor configured to implement the method of one or more of claims 1-40.
[0991] 43. A computer program product storing computer code which, when executed by a processor, causes the processor to implement the method of any one of claims 1 to 40.
[0992] 44. A computer readable medium having stored thereon code which, when executed by a processor, causes the processor to implement the method of any one of claims 1 to 40.
[0993] 45. A computer readable medium storing a bitstream representation generated according to any one of claims 1-40.
[0994] 46. A method, apparatus or system as described herein.
[0995] In the above solution, performing the conversion includes using the result of a previous decision step to obtain the conversion result during the encoding or decoding operation.
[0996] The disclosed and other solutions, examples, embodiments, modules and functional operations described herein can be implemented in digital electronic circuits, or in computer software, firmware or hardware, including the structures disclosed herein and their structural equivalents, or a combination of one or more thereof. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium, for execution by a data processing device or for controlling the operation of the data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material composition that affects a machine-readable propagation signal, or a combination of one or more thereof. The term "data processing device" covers all devices, equipment and machines for processing data, including, for example, a programmable processor, a computer or multiple processors or computers. In addition to hardware, the device may also include code that creates an execution environment for a computer program, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device.
[0997] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language (including compiled or interpreted languages) and may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files storing one or more modules, subroutines, or portions of code). A computer program may be deployed for execution on one or more computers located at one site or distributed across multiple sites and interconnected by a communications network.
[0998] The processes and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be performed by, and the apparatus may be implemented as, special purpose logic circuits, for example, FPGAs (field programmable gate arrays) or ASICs (application specific integrated circuits).
[0999] For example, processors suitable for executing computer programs include general and special purpose microprocessors, and any one or more of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor that executes instructions and one or more storage devices that store instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or be operatively coupled to one or more mass storage devices to receive data from them or transfer data to one or more mass storage devices, or both. However, a computer does not necessarily have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, dedicated logic circuits.
[1000] Although this patent document contains many details, they should not be interpreted as limitations on any subject matter or the scope of the claims, but rather as descriptions of features of specific embodiments of specific technologies. Certain features described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment can also be implemented separately in multiple embodiments, or in any suitable subcombination. In addition, although the above-mentioned features may be described as working in certain combinations, or even initially required to be so, in some cases, one or more features in the claim combination can be removed from the combination, and the combination of claims can be directed to subcombinations or variations of subcombinations.
[1001] Likewise, although operations are described in a particular order in the drawings, this should not be understood as requiring that such operations be performed in the particular order or order shown, or that all illustrated operations be performed, in order to achieve the desired results. In addition, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[1002] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.
Claims
1. A method for processing video data, include: For conversion between a first video block of a video that is a chroma block and a bitstream of the video, determining to apply a cross-component linear model (CCLM) to the first video block, wherein the cross-component linear model comprises predicting chroma samples based on reconstructed neighboring luma samples according to a linear model; deriving the parameters of the cross-component linear model, and performing the conversion based on the derived parameters; Wherein, when X is equal to or less than zero, the derivation of the parameter avoids log2(X) operation.
2. The method of claim 1, wherein X represents the absolute value of a difference between two chrominance values associated with the first video block, and for the derivation of the parameter, 0 is used instead of a log2(X) operation.
3. The method of claim 1 , wherein the variable y used to determine the slope parameter of the cross-component linear model is evaluated as: y=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0; Wherein diffC represents the difference between two chrominance values associated with the first video block, Floor is a floor function, Abs is an absolute value function, and Where X is equal to Abs(diffC).
4. The method according to claim 1, further comprising: include: For a conversion between a second video block of a current picture of the video and the bitstream of the video, determining to apply a codec tool to the second video block, wherein in the codec tool, predicted samples of the second video block are derived from reconstructed samples of the current picture at one or more angles; as well as performing said conversion based on said predicted samples, The variable invAngle is conditionally calculated based on whether the predicted angle of the one or more angles is zero, and the variable invAngle is used to determine the predicted sample point of the second video block. The method according to claim 4 , wherein when the predicted angle is equal to 0, the variable invAngle is equal to 0.
6. The method of claim 4, wherein when the predicted angle is not equal to 0, the variable invAngle is calculated as: where intraPredAngle corresponds to the predicted angle, and Round is the rounding function.
7. The method of claim 4, wherein the variable invAngle is calculated as: Wherein invAngle is used to determine the predicted sample point of the second video block, intraPredAngle corresponds to the predicted angle of the one or more angles, and Round is a rounding function.
8. The method according to claim 1, further comprising: include: For a conversion between a third video block of the video and the bitstream of the video, determining a motion vector of a control point of the third video block based on an affine pattern, and performing said converting based on said motion vector, Wherein, in the affine mode, Log2(cbWidth)-Log2(cbHeight) or Log2(cbHeight)-Log2(cbWidth) is calculated in the derivation process of the second control point motion vector, where cbHeight is the height of the third video block and cbWidth is the width of the third video block.
9. The method of claim 8, wherein the second control point motion vector of the affine pattern is derived as: cpMvLXCorner[1][0]=(cpMvLXCorner[0][0]<<7)+ ((cpMvLXCorner[2][1]-cpMvLXCorner[0][1]) <<(7+Log2(cbWidth)-Log2(cbHeight))) cpMvLXCorner[1][1]=(cpMvLXCorner[0][1]<<7)+ ((cpMvLXCorner[2][0]-cpMvLXCorner[0][0]) <<(7+Log2(cbWidth)-Log2(cbHeight))), Wherein, cpMvLXCorner[1][0] indicates the horizontal direction value of the second control point motion vector, cpMvLXCorner[0][0] indicates the horizontal direction value of the first control point motion vector, cpMvLXCorner[2][0] indicates the horizontal direction value of the third control point motion vector, cpMvLXCorner[1][1] indicates the vertical direction value of the second control point motion vector, cpMvLXCorner[0][1] indicates the vertical direction value of the first control point motion vector, and cpMvLXCorner[2][1] indicates the vertical direction value of the third control point motion vector.
10. The method of claim 1, wherein the converting comprises encoding the video into the bitstream.
11. The method of claim 1, wherein the converting comprises decoding the video from the bitstream.
12. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: For conversion between a first video block of a video that is a chroma block and a bitstream of the video, determining to apply a cross-component linear model (CCLM) to the first video block, wherein the cross-component linear model comprises predicting chroma samples based on reconstructed neighboring luma samples according to a linear model; deriving the parameters of the cross-component linear model, and performing the conversion based on the derived parameters; in, In the case where X is equal to or less than zero, a log2(X) operation is avoided for the derivation of the parameters.
13. The device of claim 12, wherein X represents an absolute value of a difference between two chroma values associated with the first video block, and for the derivation of the parameter, 0 is used instead of a log2(X) operation.
14. The apparatus of claim 12, wherein the variable y used to determine the slope parameter of the cross-component linear model is evaluated as: y=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0; Wherein diffC represents the difference between two chrominance values associated with the first video block, Floor is a floor function, Abs is an absolute value function, and Where X is equal to Abs(diffC).
15. A non-transitory computer-readable storage medium storing instructions that cause a processor to: For conversion between a first video block of a video that is a chroma block and a bitstream of the video, determining to apply a cross-component linear model (CCLM) to the first video block, wherein the cross-component linear model comprises predicting chroma samples based on reconstructed neighboring luma samples according to a linear model; deriving the parameters of the cross-component linear model, and performing the conversion based on the derived parameters; in, In the case where X is equal to or less than zero, a log2(X) operation is avoided for the derivation of the parameters.
16. The non-transitory computer-readable storage medium of claim 15, wherein X represents an absolute value of a difference between two chroma values associated with the first video block, and for the derivation of the parameter, 0 is used instead of a log2(X) operation.
17. The non-transitory computer-readable storage medium of claim 15, wherein a variable y used to determine a slope parameter of the cross-component linear model is evaluated as: y=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0; Wherein diffC represents the difference between two chrominance values associated with the first video block, Floor is a floor function, Abs is an absolute value function, and Where X is equal to Abs(diffC).
18. A non-transitory computer-readable recording medium storing a bit stream of a video generated by a method executed by a video processing device, wherein the method include: For a first video block of the video that is a chroma block, determining to apply a cross-component linear model (CCLM) to the first video block, wherein the cross-component linear model comprises predicting chroma samples based on reconstructed neighboring luma samples according to a linear model; deriving the parameters of the cross-component linear model, and generating the bitstream based on the derived parameters; Wherein, when X is equal to or less than zero, the derivation of the parameter avoids log2(X) operation.
19. The non-transitory computer-readable recording medium of claim 18, wherein X represents an absolute value of a difference between two chroma values associated with the first video block, and for the derivation of the parameter, 0 is used instead of a log2(X) operation.
20. The non-transitory computer readable recording medium of claim 19, wherein a variable y used to determine a slope parameter of the cross-component linear model is evaluated as: y=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0; Wherein diffC represents the difference between two chrominance values associated with the first video block, Floor is a floor function, Abs is an absolute value function, and Where X is equal to Abs(diffC).
21. A method for storing a bit stream of a video, include: For a first video block of the video that is a chroma block, determining to apply a cross-component linear model (CCLM) to the first video block, wherein the cross-component linear model comprises predicting chroma samples based on reconstructed neighboring luma samples according to a linear model; deriving the parameters of the cross-component linear model, generating the bitstream based on the derived parameters; as well as storing the bitstream in a non-transitory computer-readable recording medium; Wherein, when X is equal to or less than zero, the derivation of the parameter avoids log2(X) operation.
22. A method of processing video data, include: For conversion between a current block of a current picture of a video and a bitstream of the video, determining, based on at least one syntax element, use of a surround clipping operation applied to a reference picture to determine a prediction block for the current block; performing said converting based on said determining; wherein the surrounding clipping operation is used to reselect samples in the reference picture if the samples are outside the reference picture, and The at least one syntax element comprises a first syntax element included in a picture parameter set (PPS).
23. The method according to claim 22, in, The first syntax element indicates whether the surrounding clipping operation is enabled in a horizontal direction for the current block.
24. The method according to claim 23, in, The at least one syntax element includes a second syntax element included in a sequence parameter set (SPS), and the second syntax element indicates whether the surrounding clipping operation is enabled in the horizontal direction for the current block.
25. The method according to claim 24, in, The value of the first syntax element depends on the value of the second syntax element.
26. The method according to claim 25, in, In case the second syntax element indicates that the surrounding clipping operation is disabled for the current block, the first syntax element indicates that the surrounding clipping operation is disabled.
27. The method according to claim 25, in, The first syntax element is conditionally included in the bitstream in case the second syntax element indicates that the surrounding clipping operation is enabled for the current block.
28. The method according to claim 23, in, A value of the first syntax element depends on a first size associated with a codec treeblock of the current block and a second size associated with a width of the current picture including the current block.
29. The method according to claim 28, in, The first syntax element indicates that the surrounding clipping operation is disabled if the first size is greater than the second size.
30. The method according to claim 28, in, The first size is equal to (CtbSizeY / MinCbSizeY+Offset1), where CtbSizeY indicates the height or width of the codec tree block of the current block, MinCbSizeY indicates the minimum allowed size of the codec block for the conversion, and Offset1 is an integer, and The second size is equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2), where pic_width_in_luma_samples indicates the width of the current picture in luma samples indicated in a picture parameter set, and Offset2 is an integer. The method of claim 30 , wherein Offset2=Offset1=1.
32. The method according to claim 23, in, A value of '1' of the first syntax element indicates that the surrounding clipping operation is enabled in the horizontal direction, and a value of '0' of the first syntax element indicates that the surrounding clipping operation is disabled in the horizontal direction.
33. The method according to claim 22, in, The converting includes encoding the current video block into the bitstream.
34. The method according to claim 22, in, The converting includes decoding the current video block from the bitstream.
35. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: For conversion between a current block of a current picture of a video and a bitstream of the video, determining, based on at least one syntax element, use of a surround clipping operation applied to a reference picture to determine a prediction block for the current block; performing said converting based on said determining; wherein the surrounding clipping operation is used to reselect samples in the reference picture if the samples are outside the reference picture, and The at least one syntax element comprises a first syntax element included in a picture parameter set (PPS).
36. The device according to claim 35, in, The first syntax element indicates whether the surrounding clipping operation is enabled in a horizontal direction for the current block.
37. The device according to claim 36, in, The at least one syntax element includes a second syntax element included in a sequence parameter set (SPS), and the second syntax element indicates whether the surrounding clipping operation is enabled in the horizontal direction for the current block.
38. A non-transitory computer-readable storage medium storing instructions that cause a processor to: For conversion between a current block of a current picture of a video and a bitstream of the video, determining, based on at least one syntax element, use of a surround clipping operation applied to a reference picture to determine a prediction block for the current block; performing said converting based on said determining; wherein the surrounding clipping operation is used to reselect samples in the reference picture if the samples are outside the reference picture, and The at least one syntax element comprises a first syntax element included in a picture parameter set (PPS).
39. The non-transitory computer-readable storage medium of claim 38, in, The first syntax element indicates whether the surrounding clipping operation is enabled in a horizontal direction for the current block.
40. A non-transitory computer-readable recording medium storing a bit stream of a video generated by a method performed by a video processing device, wherein the method include: For a current block of a current picture of a video, determining, based on at least one syntax element, use of a surround clipping operation applied to a reference picture to determine a prediction block for the current block; generating the bitstream based on the determination; wherein the surrounding clipping operation is used to reselect samples in the reference picture if the samples are outside the reference picture, and The at least one syntax element comprises a first syntax element included in a picture parameter set (PPS).
41. The non-transitory computer-readable recording medium according to claim 40, in, The first syntax element indicates whether the surrounding clipping operation is enabled in a horizontal direction for the current block.
42. A method for storing a bit stream of a video, include: For a current block of a current picture of a video, determining, based on at least one syntax element, use of a surround clipping operation applied to a reference picture to determine a prediction block for the current block; generating the bitstream based on the determination; as well as storing the bitstream in a non-transitory computer-readable recording medium; wherein the surrounding clipping operation is used to reselect samples in the reference picture if the samples are outside the reference picture, and The at least one syntax element comprises a first syntax element included in a picture parameter set (PPS).