Bitstream compatibility constraints for intra block copies in video coding
By employing cache management and block vector coding methods, combined with in-ring reshaping technology, the complexities of dynamic changes in the reference region and block vector invalidity checks in IBC are resolved, thereby improving video coding efficiency and simplifying the processing.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-09-27
- Publication Date
- 2026-03-10
AI Technical Summary
Existing video coding technologies suffer from several problems when processing Intra Block Copy (IBC) within the same frame. These problems include complex dynamic changes in the reference region, difficulty in checking invalid block vectors, low coding efficiency due to irregular reference regions, and difficulties in processing coding units smaller than 128x128.
By employing cache management and block vector encoding methods, the effectiveness of block vectors is ensured through the creation of virtual caches and dynamic adjustment of reference regions. In-Loop Reshape (ILR) technology is used to optimize the encoding process. By combining cache management and block vector encoding, the effectiveness of block vectors and encoding efficiency are ensured.
It improves the efficiency of video encoding and simplifies the processing complexity of encoders and decoders, solves the problem of block vector invalidity checking, optimizes the processing of coding units smaller than 128x128, and improves encoding efficiency.
Smart Images

Figure 0007827671000042 
Figure 0007827671000043 
Figure 0007827671000044
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a divisional application of Japanese Patent Application No. 2022-501043, which is a national stage application of International Patent Application No. PCT / CN2020 / 100998 filed on July 9, 2020, and claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 095656 filed on July 11, 2019, International Patent Application No. PCT / CN2019 / 095913 filed on July 13, 2019, and International Patent Application No. PCT / CN2019 / 096048 filed on July 15, 2019. For all purposes under law, the entire disclosure of the above application is incorporated by reference as part of the disclosure of this specification.
[0002] This patent specification relates to video encoding and decoding techniques, devices and systems. [Background technology]
[0003] Despite advances in video compression, digital video is still widely distributed across the Internet and other It accounts for the largest bandwidth usage in digital communication networks in the world. As the number of connected user devices capable of displaying and viewing digital video increases, the demand for digital video usage is on the rise. It is predicted that bandwidth demands will continue to increase. Summary of the Invention
[0004] This specification describes an intra-block copy method for decoding or encoding video or images. Various embodiments for buffer management and block vector coding in different modes and and technology will be explained.
[0005] In one exemplary embodiment, a visual media processing method is disclosed. The current video block of the current picture of the media data and the bit rate of the current video block For conversion to and from the stream representation, the block vectors (BVx, BVy) are determined. The validity of the block vector (BVx, BVy) is determined by: (1) the sample block (1) whether to reconstruct the sample at position (P,Q) and / or (2) whether to reconstruct the sample at position (P,Q) , and / or (3) the position of the current video block (where the block vector (BVx, BVy) represents the pixel displacement between the current video block and the sample block The block vector is used to determine the predicted block of the current video block. In the same video region as the current video block, consisting of reference samples used to derive the block. and performing the conversion in intra-block copy mode based on the reconstruction block located therein. , and during the transformation, at least the size of the buffer and / or the block vector (B Vx, BVy) from the reference sample in the buffer, with position (A, B) Determine the predicted sample.
[0006] In another exemplary aspect, another method for visual media processing is disclosed, the method comprising: The current video block of the current picture of the visual media data and the bit of the visual media data For conversion between the current video block and the video stream representation, Determining whether a block vector (BVx, BVy) is valid, The block vector (BVx, BVy) is the distance between the current video block and the sample block. and determining a block vector representing a pixel displacement between the current image block and the block vector. The current picture contains the reference samples used to derive the predicted block of the block. and performing the transformation based on a reference region from the block vector (BVx,BVy) indicates that (1) one or more samples from this sample block are (1) outside the current picture, and / or (2) one or more samples from the sample block The sample is at least one coding tree unit associated with the current video block. (3) one or more samples from the sample block; This is enabled if a sample fails to reconstruct.
[0007] In yet another exemplary aspect, another method of visual media processing is disclosed. The method includes: determining a current video block of a current picture of visual media data; converting the current video block into a bitstream representation of the video data; the current picture with the reference samples used to derive the predicted block of the block. A virtual buffer of a defined size is created based on the reference region from the prediction block. The reference sample is used to track the availability of the reference sample for deriving a check.
[0008] In yet another exemplary aspect, another method of visual media processing is disclosed. The method includes: combining a current video block of a current picture of the visual media data with a Derive a prediction block of the current video block for conversion to and from the bitstream representation of the data. maintaining a buffer containing reference samples from the current picture for One or more reference samples in the buffer marked as unavailable for the derivation are has a value outside the range
[0009] In another exemplary aspect, another method of video processing is disclosed. contains reference samples from the current picture to derive a prediction block for the image block The buffer is used to store the video block of the current picture of the visual media data and the visual media converting the data to and from a bitstream representation of the data, For the frame representation to be compliant, the reference samples in the buffer must be bitstream appropriate. It is based on rules that stipulate that the compatibility constraints must be met.
[0010] In yet another exemplary aspect, a processing device configured to implement the above-described method A video encoder or decoder device is disclosed that includes a
[0011] In another exemplary aspect, a computer-readable program medium is disclosed. code embodying processor-executable instructions for implementing one of the disclosed methods. Memorize the code.
[0012] These and other aspects are described in greater detail herein. [Brief explanation of the drawings]
[0013] [Figure 1] 1 illustrates current picture reference or intra block copy video or image coding techniques. [Figure 2] 1 illustrates a dynamic reference region. [Figure 3] The coding of the block starting at (x,y) is illustrated below. [Figure 4] 1 illustrates possible alternative methods for selecting a previously coded 64x64 block. [Figure 5] 1 illustrates possible alternative ways to change the encoding / decoding order of a 64x64 block. [Figure 6] 1 is a flowchart illustrating an example of a video or image processing method. [Figure 7] FIG. 1 is a block diagram illustrating a hardware platform for encoding or decoding video or images. [Figure 8]If the decoding order of the 64x64 blocks is top-to-bottom, left-to-right, here is another possible alternative for selecting the previous coded 64x64 block. [Figure 9] Another possible alternative for selecting the previously coded 64x64 block is shown. [Figure 10] 10 shows an exemplary flowchart of a decoding process with reshaping. [Figure 11] Another possible alternative for selecting the previous coded 64x64 block is shown when the decoding order of the 64x64 blocks is left to right, top to bottom. [Figure 12] FIG. 1 is a diagram showing the IBC reference buffer status, where one block represents 64×64 CTUs. [Figure 13] One arrangement of reference regions for IBC is shown. [Figure 14] 1 shows an alternative arrangement of reference regions for IBCs. [Figure 15] 10 shows an alternative placement of the reference area for the IBC when the current virtual pipeline data unit (VPDU) is to the right of the picture boundary. [Figure 16] An example of the state of the virtual buffer when VPDUs in one CTU row are decoded sequentially is shown. [Figure 17] FIG. 1 is a block diagram illustrating an exemplary video processing system in which the disclosed techniques can be implemented. [Figure 18] 1 is a flowchart illustrating an example of a visual media processing method. [Figure 19] 1 is a flowchart illustrating an example of a visual media processing method. [Figure 20] 1 is a flowchart illustrating an example of a visual media processing method. [Figure 21] 1 is a flowchart illustrating an example of a visual media processing method. [Figure 22] 1 is a flowchart illustrating an example of a visual media processing method. DETAILED DESCRIPTION OF THE INVENTION
[0014] Section headings are used herein for ease of understanding, and the information disclosed in a section may be used interchangeably. This specification does not limit the embodiments described to only that section. Buffer management and block copying in intra block copy mode for encoding or coding - Patents.com Various embodiments and techniques for lock vector encoding are described.
[0015] 1. Overview
[0016] This specification relates to video coding technology. This applies to standards under development, such as general purpose video coding. The present invention is also applicable to future video encoding standards or video codecs.
[0017] 2. Brief Description
[0018] Video coding standards have emerged primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T has developed H.261 and H.263, and ISO / IEC has developed MPEG- 1 and MPEG-4 Visual, and both organizations are working on H.262 / MPEG-2 Video o and H.264 / MPEG-4 AVC(Advanced Video Coding ) and co-created the H.265 / HEVC standard. Since H.262, video coding standards have It is based on a hybrid video coding structure that utilizes inter-prediction and transform coding. In 2015, VCEG and MPEG jointly launched the We established the Joint Video Exploration Team (JVET). Since then, many new methods have been adopted by JVET and JEM (Joint Exp. It has been incorporated into the reference software called "Loration Mode." In April 2016, VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG1 1 (MPEG) and the Joint Video Expert Team (JVET) was established and began formulating the VVC standard with the goal of reducing the bit rate by 50% compared to HEVC. They are working together.
[0019] 2.1 Inter Prediction in HEVC / H.265 Each inter-predicted PU has motion parameters for one or two reference picture lists. The motion parameters include motion vectors and reference picture indexes. The use of one of the two reference picture lists is inter _pred_idc. The motion vectors for the predictors may be signaled using It may be explicitly coded as a delta.
[0020] If one CU is coded in skip mode, one PU is associated with this CU. There are no significant residual coefficients, and the coded motion vector differential is also a reference picture index. Specify the merge mode, which merges the motion parameters for the current PU. The merge mode is obtained from the neighboring PUs, including the spatial and temporal candidates. It can be applied to any inter-predicted PU, not just for merged modes. An alternative to the code is the explicit transmission of motion parameters, which are motion vectors (more precisely , the motion vector differential (MVD) compared to the motion vector predictor), for each reference picture list The corresponding reference picture index of each PU, and the reference picture list usage status are Such a mode is referred to in this disclosure as Advanced Motion Vector Prediction (AM) It is called VP.
[0021] If the signaling indicates that one of the two reference picture lists is to be used, the sample A PU is generated from one block of a P slice. This is called "uniprediction." Uniprediction is available for both B and C slices.
[0022] If the signal indicates that both reference picture lists are to be used, two of the samples This is called "bidirectional prediction." Directional prediction is available.
[0023] The inter prediction modes defined in HEVC will be explained in detail below. The following describes the mode.
[0024] 2.2 Referencing the current picture Current Picture Reference (CPR) was formerly called Intra Block Copy (IBC). However, HEVC Screen Content Coding Extensions (HEVC-SCC) and the current IBC is an inter-frame coding method that uses the concept of motion compensation. As shown in Figure 1, the current block is coded using CPR If applied, it is predicted by one reference block in the same picture. Before encoding or decoding a block, the samples in the reference block are already reconstructed. CPR must be performed for most camera-captured sequences. Although it is not very efficient for video coding, it can provide significant coding gains for screen content. The reason is that in the screen content picture, icons, characters, etc. are repeated. CPR utilizes the redundancy between these repeating patterns. In HEVC-SCC, the inter coding unit (CU) is If you select the current picture as its reference picture, you can apply CPR. In this case, MV is renamed to block vector (BV), and BV always has integer pixel accuracy. To conform to the Main Profile HEVC, the current picture is The picture is marked as a "long-term" reference picture in the Data Buffer (DPB). In multiple-view / 3D video coding standards, inter-view reference pictures are also "long-term" It is marked as a reference picture.
[0025] After the BV finds the reference block, it generates a prediction by copying this reference block. The residual can be obtained by subtracting the reference pixel from the original signal. And, just like other coding modes, transforms and quantization can be applied. .
[0026] FIG. 1 is an illustration of a current picture reference.
[0027] However, if the reference block is outside the picture or overlaps with the current block, If the area is too small, or if it is outside the reconstructed area, or if it is limited by some constraint, If the pixel value is outside the specified valid area, some or all of the pixel value is undefined. There are two solutions to deal with such problems. The other is to not allow for data stream conformance with these undefined pixel values. The solution is to apply coding. The following subsections explain the solution in detail.
[0028] 2.3 CPR in HEVC Screen Content Coding Extensions In the HEVC Screen Content Coding Extension, one block is the current pixel. When using a structure as a reference, the entire reference block must be It should be ensured that the body is within the available reconstructed area. The variables offsetX and offsetY are derived as follows: offsetX=(ChromaArrayType==0)?0:(mvCLX[ 0]&0x7?2:0) (8-104) offsetY=(ChromaArrayType==0)?0:(mvCLX[ 1]&0x7?2:0) (8-105) If the reference picture is the current picture, the luma motion vector mvLX is determined by the following constraint: It is a bitstream conformance requirement that it should comply with - the derivation process for the availability of z-scan order blocks as specified in Section 6.4.1 (xCurr, yCurr) is set equal to (xCb, yCb) and (xPb + (m vLX[0]>>2)-offsetX,yPb+(mvLX[1]>>2)-offs The input is called the luminance position (xNbY, yNbY) of the neighborhood set equal to the input (e.g., xNbY, yNbY). When called, the output is TRUE. - the derivation process for the availability of z-scan order blocks as specified in clause 6.4.1 (xCurr, yCurr) is set equal to (xCb, yCb) and (xPb + (m vLX[0]>>2)+nPbW-1+offsetX,yPb+(mvLX[1]>> 2) + nPbI-I-1 + offsetY) Y, yNbY) and is called as input, the output is TRUE. - One or both of the following conditions must be true: - The value of (mvLX[0]>>2) + nPbW + xB1 + offsetX is less than or equal to 0. do. - The value of (mvLX[1]>>2) + nPbH + yB1 + offsetY is less than or equal to 0. do. - The following conditions must be true: (xPb+(mvLX[0]>>2)+nPbSw-1+offsetX) / CtbS izeY-xCb / CtbSizeY<=yCb / CtbSizeY-(yPb+(mv LX[1]>>2)+nPbSh-1+offsetY) / CtbSizeY ( 8-106)
[0029] This way, you can avoid cases where the reference block overlaps with the current block, or where the reference block is The out-of-picture case does not occur. There is no need to fill in the reference or predicted blocks. There is no.
[0030] 2.4 CPR / IBC Example In the VVC test model, the entire reference block is the current coding tree unit (CTU ) and does not overlap with the current block. There is no need to pad.
[0031] When dual tree is enabled, the partitioning structure is different for luma and chroma CTUs. Therefore, for a 4:2:0 color format, one chroma block (e.g. For example, a CU) corresponds to a single co-located luminance region that is divided into multiple luminance CUs. You may respond.
[0032] A chroma block may only be coded in CPR mode if the following conditions are true: It is possible. 1) Each of the luma CUs of the collocated luma blocks is coded in CPR mode. should be. 2) Each luminance 4x4 block BV is first converted to a chroma block BV, Mablock's BV is a valid BV.
[0033] If either of the two conditions is false, the chroma block is coded in CPR mode. Not encrypted.
[0034] The definition of a valid BV is subject to the following constraints: 1) All samples of the reference block identified by BV are within the restricted search range. (e.g., in the same CTU in the current VVC design). 2) All samples of the reference block identified by BV are reconstructed.
[0035] 2.5 CPR / IBC Example In some embodiments, the reference region for CPR / IBC is limited to the current CTU. The maximum number of reference candidates is 128x128. While maintaining or reducing the CPR / IBC reference buffer from one CTU Dynamically change the reference region to reuse memory and reduce CPR / IBC The reference sample is stored.
[0036] Figure 2 shows one method, where one block is 64x64 and one CTU is It contains four 64x64 blocks. When encoding a 64x64 block, the first three 6 The decoder can use 4x64 blocks as references, which allows it to To support / IBC, only four 64x64 blocks need to be stored.
[0037] Let (x,y) be the position of the current luminance CU relative to the top-left corner of the picture, and let (x,y) be the block vector In the current design, whether BV is valid depends on the brightness Position ((x+BVx)>>6<<6+(1<<7),(y+BVy)>>6<<6) is re- Not configured, ((x+BVx)>>6<<6+(1<<7),(y+BVy)>> 6<<6) is not equal to (x>>6<<6, y>>6<<6). can.
[0038] 2.6 In-Loop Reshape (ILR) The basic idea of In-Loop Reshape (ILR) is to reshape the original (in the first domain) Transforming a signal (predicted / reconstructed signal) into a second domain (reshaped domain) And so.
[0039] The in-loop luminance reshaper is implemented as a pair of look-up tables (LUTs). However, the other can be calculated from the signaled LUT, so Only one of the LUTs needs to be signaled. Each LUT has 1024 entries, each of which is 10 bits in length. A mapping table (1D-LUT) is a forward LUT, Fw dLUT, which is a function of the input luminance code values Y i The changed value Y r :Y r =FwdLU T[Y iThe other LUT is the inverse LUT, InvLUT, which maps the modified The assigned code value Y r to Y^ i :Y^ i :InvLUT[Y r ]. (Y^ i is Y i represents the reconstruction value of
[0040] 2.6.1 PWL model Conceptually, piecewise linear (PWL) is implemented as follows:
[0041] Let x1 and x2 be two input fulcrums, and y1 and y2 be output fulcrums corresponding to one piece. The output value y for any input value x between x1 and x2 is interpolated using the following formula: It is possible.
[0042] y=((y2-y1) / (x2-x1))*(x-x1)+y1
[0043] In a fixed-point implementation, this equation can be rewritten as: y=((m*x+2 FP_PREC-1 )>>FP_PREC)+c
[0044] m is a scalar, c is an offset, and FP_PREC is a precision It is a constant.
[0045] In some embodiments, the PWL model uses a 1024-entry FwdLUT map. It is used to pre-calculate the InvLUT and InvLUT mapping tables. ,The PWL model uses the same mapping values in its implementation without pre-computing the LUT. It also allows for on-the-fly calculations.
[0046] 2.6.2.1 Reshaping Luminance The in-loop luminance reshape method provides a lower complexity pipeline and Eliminating decoding latency for block-wise intra prediction in ter-slice reconstruction Intra prediction is performed for both inter-slice and intra-slice. This is done in the shaped domain.
[0047] Intra prediction is always done in the reshaped domain, regardless of slice type. With this configuration, intra prediction can be started immediately after the previous TU reconstruction. Such a configuration can be used for intra-mode instead of slice-dependent. Figure 10 shows the decoded data based on the CE12-2 method. FIG. 10 is a block diagram showing the encoding process.
[0048] Instead of a 32-piece piecewise linear (PWL) model, a 16-piece PWL model was used. Luminance and chrominance residual scaling was performed.
[0049] Interslice reconstruction with in-loop intensity reshaper (shaded in light green) The blocks represent the signal in the reshaped domain. and intra-luminance reconstruction)
[0050] 2.6.2.2 Luminance-Dependent Chroma Residual Scaling Luminance-dependent chroma residual scaling is a multiplication operation implemented in fixed-point integer arithmetic. Chroma residual scaling compensates for the interaction of the luminance signal with the chroma signal. Chroma residual scaling is applied in the RGB mode. Specifically, the following is applied: - For intra, average the reconstructed luminance. - For inter, average the predicted luminance.
[0051] This average value is used to determine the index in the PWL model. The index specifies the scaling factor cScaleInv. Multiply by.
[0052] Note that the chroma scaling coefficients are forward-mapped, not reconstructed luminance values. It is calculated from the predicted brightness value.
[0053] 2.6.2.3 Signaling of ILR side information The parameters are (currently) transmitted in the tile group header (similar to ALF). These are , which is reported to require 40 to 100 bits.
[0054] In some examples, the added syntax is highlighted in italics.
[0055] [Table 1]
[0056] [Table 2]
[0057] Adds a new syntax table tile group reshaper.
[0058] [Table 3]
[0059] In general, the semantics of a sequence parameter set RBSP adds the following semantics: If sps_reshaper_enabled_flag is equal to 1, the encoded video It specifies that a reshaper is used in the sequence (CVS). sps If _reshaper_enabled_flag is equal to 0, then the It specifies that no shapers are used. The tile group header syntax adds the following semantics: If tile_group_reshaper_model_present_flag is equal to 1, it specifies that tile_group_reshaper_model() is present in the tile group. If tile_group_reshaper_model_present_flag is equal to 0, it specifies that tile_group_reshaper_model() is not present in the tile group header. If tile_group_reshaper_model_present_flag is not present, it is inferred to be equal to 0. If tile_group_reshaper_enabled_flag is equal to 1, it specifies that the reshaper is enabled for the current tile group. If tile_group_reshaper_enabled_flag is equal to 0, it specifies that the reshaper is not enabled for the current tile group. If tile_group_reshaper_enable_flag is not present, it is inferred to be 0. If tile_group_reshaper_chroma_residual_scale_flag is equal to 1, it specifies that chroma residual scaling is enabled for the current tile group. If tile_group_reshaper_chroma_residual_scale_flag is equal to 0, it specifies that chroma residual scaling is not enabled for the current tile group. If tile_group_reshaper_chroma_residual_scale_flag is not present, it is inferred to be 0. Add tile_group_reshaper_model() syntax. reshape_model_min_bin_idx is the smallest bin (or piece) Specifies the index to be used in the reshaper construction process. model_min_bin_idx value is in the range of 0 to MaxBinIdx Let the value of MaxBinIdx be equal to 15. reshape_model_delta_max_bin_idx is the maximum allowed bin ( or piece) index MaxBinIdx minus maximum bin index is used in the reshaper construction process. The value of _max_bin_idx is MaxBinIdx-reshape_model_ It is set equal to delta_max_bin_idx. reshaper_model_bin_delta_abs_cw_prec_min us1+1 has the syntax reshape_model_bin_delta_abs_CW[ The number of bits used to represent [i] is specified. reshape_model_bin_delta_abs_CW[i] is the delta of the ith bin This specifies the absolute delta code name value of the reshaper_model_bin_delta_sign_CW_flag[i] is the sign of reshape_model_bin_delta_abs_CW[i] It is written as follows: - reshape_model_bin_delta_sign_CW_flag[i ] is equal to 0, the corresponding variable RspDeltaCW[i] is positive. - else (reshape_model_bin_delta_sign_C W_flag[i] is not equal to 0), the corresponding variable RspDeltaCW[i] is negative is the value.
[0060] reshape_model_bin_delta_sign_CW_flag[i] If not present, it is inferred to be equal to 0.
[0061] Variable RspDeltaCW[i]=(1 2*reshape_model_bin_ delta_sign_CW[i])*reshape_model_bin_delt a_abs_CW[i]; The variable RspCW[i] is derived as follows:
[0062] The variable OrgCW is (1< <BitDepth Y ) / (MaxBinIdx+1) It is set up properly. -reshaper_model_min_bin_idx<=i<=reshaper For _model_max_bin_idx, RspCW[i]=OrgCW+Rsp DeltaCW[i]. - Otherwise, RspCW[i]=0.
[0063] BitDepth Y If the value of is equal to 10, the value of RspCW[i] is 32~2*O It falls within the range of rgCW_1.
[0064] The variable InputPivot[i], where i is in the range 0 to MaxBinIdx+1, is It is derived as follows: InputPivot[i]=i*OrgCW
[0065] where i is in the range 0 to MaxBinIdx+1, and the variables ScaleCoef[i] and InvScaleCoeff[i] is in the range of 0 to MaxBinIdx, and i The variable ReshapePivot[i] is in the range of 0 to MaxBinIdx. It is derived as follows. shiftY=14 ReshapePivot[0]=0; for(i=0;i<=MaxBinIdx;i++){ ReshapePivot[i+1]=ReshapePivot[i]+RspCW [i] ScaleCoef[i]=(RspCW[i]*(1< <shiftY)+(1< <(Log2(OrgCW)-1)))>>(Log2(OrgCW)) if(RspCW[i]==0) InvScaleCoeff[i]=0 Other InvScaleCoeff[i]=OrgCW*(1< <shiftY) / Rs pCW[i] }
[0066] The variable ChromaScaleCoef[i ] is derived as follows: ChromaResidualScaleLut
[64] ={16384,16384 ,16384,16384,16384,16384,16384,8192,8192 ,8192,8192,5461,5461,5461,5461,4096,4096 ,4096,4096,3277,3277,3277,3277,2731,2731 ,2731,2731,2341,2341,2341,2048,2048,2048 ,1820,1820,1820,1638,1638,1638,1638,1489 ,1489,1489,1489,1365,1365,1365,1365,1260 ,1260,1260,1260,1170,1170,1170,1170,1092 ,1092,1092,1092,1024,1024,1024,1024}; shiftC=11 -if(RspCW[i]==0) ChromaScaleCoef[i]=(1< <shiftC) -otherwise (RspCW[i] != 0),ChromaScaleCoef [i]= ChromaResidualScaleLut[RspCW[i]>>1]
[0067] 2.6.2.4 How to Use ILR On the encoder side, we first map each picture (or tile group) to a reshaped window. Then all encoding is done in the reshaped domain. In the case of intra prediction, the neighboring blocks are in the reshaped domain, and the For prediction, first, a reference block (generated from the original domain from the decoded picture buffer) is Transform the resulting image (which is then reshaped) into the reshaped domain, and generate the residual and Encode it into a frame.
[0068] After the entire picture (or tile group) is coded / decoded, it is reshaped. The samples in the blocked domain are transformed to the original domain, and then a deblocking filter and Apply other filters.
[0069] Forward reshaping to the prediction signal is disabled if:
[0070] The current block is intra-coded.
[0071] The current block is CPR (current picture reference, also known as intra-block copy, I BC).
[0072] The current block is coded as Combined Inter-Intra mode (CIIP). , forward reshaping is disabled for intra predicted blocks.
[0073] 3. Examples of Problems Solved by Various Embodiments Several problems exist with current CPR / IBC designs. 1) The reference region changes dynamically, which complicates the encoder / decoder processing. 2) Invalid block vectors are easily generated and difficult to check, so the encoder and This increases the complexity of both the decoder and the processor. 3) Irregular reference regions lead to inefficient coding of block vectors. 4) It is unclear how to deal with CTU sizes smaller than 128x128. do. 5) In the process of determining whether BV is valid or invalid, in the case of a chroma block, The decision is based on the availability of luminance samples, which is This may result in incorrect decisions due to the partition structure.
[0074] 4. Exemplary Embodiments In some embodiments, the CPR / IBC block is used to obtain a reference. A buffer can be used.
[0075] The function isRec(x,y) is used to calculate the pixel (x,y) after it has been reconstructed and referenced by the IBC mode. (x,y) is specified to indicate whether the slice / tile / block is illuminated or not. If it is outside the picture of the clock, isRec(x,y) returns false, and (x, If x, y) is not reconstructed, isRec(x, y) returns false. If sample (x,y) is reconstructed, but some other condition is met, then A sample may be marked as unavailable, e.g., outside the reference region / in a different VPDU. Therefore, isRec(x,y) returns false.
[0076] The function isRec(c,x,y) determines whether a sample (x,y) of component c is available. For example, if a sample (x,y) has not yet been reconstructed, If so, it is marked as unavailable. In another example, if sample (x,y) is However, if some other condition is met, the sample (x, y) may also be used. may be marked as not possible, e.g. out of picture / different slides chairs / tiles / bricks / in different VPDUs, allowed reference areas, etc. If sample (x,y) is unavailable, then isRec(c,x,y) is fa Returns lse, otherwise returns true.
[0077] In the following description, the reference sample may be a reconstructed sample. The "buffer" responds to "one color component buffer" or "multiple color component buffers" Good too.
[0078] Reference buffer for CPR / IBC 1. MxN pixel buffers are used to store luminance reference samples for CPR / IBC. It is suggested to use fa. In one example, the buffer size is 64x64. b. In one example, the buffer size is 128x128. c. In one example, the buffer size is 64x128. d. In one example, the buffer size is 128x64. e. In one example, N is equal to the height of the CTU. f. In one example, N=nH, where H is the height of the CTU and n is a positive integer. . g. In one example, M is equal to the width of the CTU. h. In one example, M=mW, where W is the width of the CTU and m is a positive integer. i. In one example, the buffer size is not equal to the CTU size, for example, 96× 128 or 128x96. j. In one example, the buffer size is equal to the CTU size. k. In one example, M=mW, N=H, where W and H are the width and height of the CTU. and m is a positive integer. l. In one example, M=W, N=nH, where W and H are the width and height of the CTU. and n is a positive integer. In one example, M=mW, N=nH, where W and H are the width and height of the CTU. and m and n are positive integers. n. In the above example, m and n may depend on the size of the CTU. i. In one example, if the size of the CTU is 128x128, then m=1; n=1. ii. In one example, if the size of the CTU is 64x64, then m=4 and n =1. iii. In one example, if the size of the CTU is 32x32, then m=16. , n=1. iv. In one example, if the size of the CTU is 16x16, then m=64; n=1. Alternatively, the buffer size corresponds to the CTU size. p. Alternatively, this buffer size is expressed in Virtual Pipeline Data Units (VPDUs) corresponds to the size of q. M and / or N are the signals from the encoder to the decoder, e.g. VPS / SPS / P It may be signaled in PS / picture header / slice header / tile group header etc. stomach. 2. M and / or N may vary for different profiles / levels / tiers defined in the standard. A separate Mc x Nc pixel buffer may be used to provide chrominance references for CPR / IBC. It is proposed to store the reference sample. a. In one example, for 4:2:0 video, Mc=M / 2 and Nc=N / 2 . b. In one example, for 4:4:4 video, Mc=M and Nc=N. c. In one example, for 4:2:2 video, Mc=M and Nc=N / 2. d. Alternatively, Mc and Nc may be independent of M and N. e. In one example, the chroma buffer contains two channels corresponding to Cb and Cr. include. f. In one example, Mc=M and Nc=N. 3. Use an MxN sample buffer to store RGB reference samples for PR / IBC. It is suggested to remember. In one example, the buffer size is 64x64. b. In one example, the buffer size is 128x128. c. In one example, the buffer size is 64x128. d. In one example, the buffer size is 128x64. e. Alternatively, the buffer size corresponds to the CTU size. f. Alternatively, this buffer size can be specified in terms of Virtual Pipeline Data Units (VPDUs). ) size. 4. A buffer can store the reconstructed pixels before loop filtering. It is proposed that the loop filtering be performed using a deblocking filter, an adaptive loop filter, and a Filter (ALF), Sample Adaptive Offset (SAO), Cross Component ALF, or any Other filters may be referenced. In one example, a buffer can store samples in the current CTU. b. In one example, the buffer can store samples outside of the current CTU. Cut. c. In one example, the buffer stores samples from any portion of the current picture. It is possible. d. In one example, the buffer can store samples from other pictures. do. 5. A buffer can store the reconstructed pixels after loop filtering. It is proposed that the loop filtering be performed using a deblocking filter, an adaptive loop filter, and a Filter (ALF), Sample Adaptive Offset (SAO), Cross Component ALF, or any Other filters may be referenced. In one example, a buffer can store samples in the current CTU. b. In one example, the buffer can store samples outside of the current CTU. Cut. c. In one example, the buffer stores samples from any portion of the current picture. It is possible. d. In one example, the buffer can store samples from other pictures. do. 6. The buffer is reconstructed both before and after loop filtering. It is proposed that the generated samples can be stored. Deblocking filter, Adaptive Loop Filter (ALF), Sample Adaptive Offset (SA O), cross-component ALF, or any other filter. In one example, the buffer contains samples from the current picture and samples from other pictures. The samples may be stored based on their availability. b. In one example, reference samples from other pictures are used to from the reconstituted sample. c. In one example, reference samples from other pictures are used before loop filtering. The results are from samples reconstituted in 7. The buffer has a given bit depth that may be different from the bit depth of the encoded video data. It is proposed to store samples corresponding to the In one example, the bit depth of the reconstructed buffer / encoded video data is Greater than the bit depth of the stored IBC reference samples. b. In one example, the internal bit depth is the input bit depth for a video sequence. Even if the IBC reference sample differs from the input sample, e.g. (10-bit vs. 8-bit), The data is stored aligned to the input bit depth. c. In one example, the bit depth is the same as the bit depth of the reconstruction buffer. d. In one example, the bit depth is the same as the bit depth of the input image / video. e. In one example, the bit depth is equal to a predefined number. f. In one example, the bit depth depends on the standard profile. g. In one example, bit depth compared to output bit depth / input bit depth / internal bit depth. The difference in bit depth or bit depth is determined by the SPS / PPS / Sequence Header / Picture Header / slice header / tile group header / tile header or other kind of video data unit This may be signaled in the unit. h. The proposed method applies to the proposed buffer definitions mentioned in other bullets. Alternatively, it may be applied to existing designs of IBCs. i. The bit depth of each color component of the buffer may be different.
[0079] Buffer Start 8. It is suggested to initialize the buffer with a given value. In one example, a buffer is initialized with a given value. i. In one example, the given value corresponds to the input bit depth and / or the internal bit depth. You may depend on it. ii. In one example, the buffer is initialized with a medium gray value, e.g., 8-bit For 10-bit signals, it is set to 128, and for 10-bit signals, it is set to 512. iii. In one example, if ILR is used, the buffer is forwardLU It is initialized by T(m), e.g., m=1<<(Bitdepth-1). b. Alternatively, the buffer can be used for SPS / VPS / APS / PPS / Sequence Header / Tile group header / Picture header / tile / CTU / Coding unit / VPDU It is initialized with the value signaled in the / field. c. In one example, this given value is the value of a previously decoded picture or slice or may be derived from rows of CTUs or samples of CTUs or CUs. d. This given value may be different for different color components. 9. Alternatively, use decoded pixels from a previously coded block to create a buffer. It is suggested to initialize In one example, the decoded pixels are pixels before in-loop filtering. . b. In one example, if the buffer size is CTU, the buffer is available. If so, it is initialized with the decoded pixels of the previously decoded CTU. c. In one example, if the buffer size is 64x64, then the buffer size is , if available, the first decoded pixel of the previously decoded 64x64 block It will be scheduled. d. Alternatively, if the previously coded block is not available, then The method may be applied.
[0080] Referencing a buffer 10. For one block to use pixels in the buffer as reference, is the position (x,y) in the buffer, x=0,1,2,...,M-1; y=0,1,2, ...,N-1, can be used to indicate the reference. 11. Alternatively, this reference position is l=y*M+x, l=0,1,...,M*N-1 It can be expressed as: 12. The top left position of the block for the current CTU is (x0, y0). The lock vector (BVx,BVy) = (x-x0,y-y0) is sent to the decoder and buffered. It may also indicate a reference in the file. 13. Alternatively, the block vector (BVx,BVy) is (x-x0+Tx,yy 0 + Ty), where Tx and Ty are predefined offsets. do. 14. For any pixel (x0,y0) and (BVx,BVy), The reference can be found in (x0+BVx, y0+BVy). In one example, if (x0+BVx, y0+BVy) is outside the buffer, It is clipped to the bounds. b. Alternatively, if (x0+BVx, y0+BVy) is outside the buffer, The reference value is predefined as a given value, for example, mid-gray. c. Alternatively, the reference position can be set to ((x0+BVx)mo so that it is always within the buffer. d M,(y0+BVy)mod N). 15. For any pixel (x0, y0) and (BVx, BVy), (x0+BVx , y0 + BVy) is outside the buffer, its reference value is derived from the value in the buffer. This may be done. a. In one example, this value is the number of samples in the buffer ((x0 + BVx) mod M, (y0+BVy)mod N). b. In one example, this value is the number of samples in the buffer ((x0 + BVx) mod M, derived from clip(y0+BVy,0,N-1)). c. In one example, this value is the number of samples in the buffer (clip(x0 + BVx ,0,M-1), (y0+BVy)mod N). d. In one example, this value is the number of samples in the buffer (clip(x0 + BVx ,0,M-1), clip(y0+BVy,0,N-1)). 16. May not allow certain coordinates outside the buffer range. In one example, for the top left corner of the CTU and the block vector (BVx, BVy), For any pixel (x0, y0), y0+BVy is in the range [0,..,N-1]. It is a bitstream constraint that it should be b. In one example, the upper left corner of the CTU and the block vector (BVx, BVy) For any pixel (x0, y0), x0+BVx is in the range [0,..,M-1] It is a bitstream constraint that c. In one example, the upper left corner of the CTU and the block vector (BVx, BVy) For any pixel (x0,y0), y0+BVy is in the range [0,..,N-1] and x0+BVx should be in the range [0,..,M-1]. , is a bitstream constraint. 17. The signaled or derived block vector of one block is buffered If it points somewhere outside the , it may do padding based on the buffer. In one example, the value of any sample outside the buffer is set to a predefined value. will be done. i. In one example, this value may be 1<(bit depth-1), e.g. For an 8-bit signal, it is 128, and for a 10-bit signal, it is 512. ii. In one example, if ILR is used, this value is the forwardLUT( m), e.g. m=1<<(Bitdepth-1). iii. Alternatively, the indication of the predefined value may be in the SPS / PPS / Sequence header. At the da / picture header / slice header / tile group / tile / CTU / CU level It may be signaled or displayed. b. In one example, any sample outside the buffer is matched to the nearest sample in the buffer. It is specified as a sample value. 18. The handling of buffer references may differ horizontally and vertically, or depending on the location of the current block (e.g., closer to a picture boundary or not). That's fine. a. In one example, if y0+BVy is outside [0,N-1], then (x0+BVx , y0+BVy) are assigned as predefined values. b. In one example, if x0+BVx is outside [0,M-1], then (x0+BVx , y0+BVy) are assigned as predefined values. c. Alternatively, the sample values of (x0+BVx, y0+BVy) can be expressed as ((x0+BVx) mod M,y0+BVy) as the sample value, which results in (((x0+ If (BVx) mod M,y0+BVy) is still outside the buffer, Other methods may be invoked to further derive it. d. Alternatively, the sample values of (x0+BVx, y0+BVy) can be expressed as (x0+BVx,( y0+BVy) mod N) as the sample value, which gives (x0+BV If x, (y0+BVy) mod N) is still outside the buffer, Other methods may be invoked to derive
[0081] Block Vector Representation 19. Each component of the block vector (BVx, BVy) or one of its components is within a certain range. It may be normalized to a range. In one example, BVx may be replaced with (BVx mod M). b. Alternatively, BVx can be replaced by ((BVx+X) mod M)-X. Often, X is a predefined value. i. In one example, X is 64. ii. In one example, X is M / 2. iii. In one example, X is the horizontal coordinate of the block relative to the current CTU. c. In one example, BVy may be replaced with (BVy mod N). d. Alternatively, BVy may be replaced by ((BVy+Y) mod N)-Y; Y is a predefined value. i. In one example, Y is 64. ii. In one example, Y is N / 2. iii. In one example, Y is the vertical coordinate of the block relative to the current CTU. 20. BVx and BVy may have different normalization ranges. 21. Block vector differences (BVDx, BVDy) can be normalized to a certain range. Cut. In one example, BVDx may be replaced with (BVDx mod M) ,The function mod returns the reminder. b. Alternatively, BVDx can be replaced by ((BVDx+X) mod M)-X. X may be a predetermined value. i. In one example, X is 64. ii. In one example, X is M / 2. c. In one example, BVy may be replaced with (BVDy mod N). d. Alternatively, BVy may be replaced by ((BVDy+Y) mod N)-Y , Y is a predefined value. i. In one example, Y is 64. ii. In one example, Y is N / 2. 22. BVDx and BVDy may have different normalization ranges.
[0082] Block Vector Validation The width and height of the IBC buffer are W buf and H buf In the top left corner of the picture On the other hand, the W×H block (luminance block, chroma block, CU, T) starting from (X, Y) U, 4x4, 2x2, or other sub-blocks), the block vector To indicate whether a rule (BVx, BVy) is valid, the following may be applied: W p ic , H pic Let be the width and height of one picture, and W ctu , H ctu One CT Let be the width and height of U. The function floor(x) returns the largest integer not greater than x. . The function isRec(x,y) returns the sample (x,y) if it is reconstructed. 23. Even if any of the reference positions is outside the picture boundary, the block vector (BVx , BVy) may be set as valid. In one example, a block vector is valid even if X+BVx<0. You can also set it as follows. b. In one example, the block vector is X+W+BVx>W pic Even if It may be set as valid. c. In one example, a block vector is considered valid even if Y+BVy<0. You can also set it as follows. d. In one example, Y+H+BVy>H pic Even if you use block vectors, It may be set as: 24. Even if the reference position is outside the current CTU row, the block vector (BVx,B Vy) may be set as valid. In one example, the block vector is Y+BVy <floor(Y / H ctu ) *H ctu It may be set as valid even if b. In one example, the block vector is Y+H+BVy>=floor(Y / H c tu )*H ctu +H ctu It may be set as valid even if 25. Block vectors (BVx, BVy) are used to determine whether any reference position is the current CTU or It may be set as valid even if it is outside the left (n-1) CTU, where n is Number of CTUs (including or excluding the current CTU) that can be used as reference areas for the IBC It's a number. In one example, the block vector is X+BVx <floor(X / W ctu ) *W ctu -(n-1)*W ctu It may be set as valid even if b. In one example, the block vector is X+W+BVx>floor(X / W ct u )*W ctu +W ctu However, it may be set as valid. 26. Even if a particular sample is not reconstructed, the block vector (BVx, BVy ) may be set as valid. a. In one example, even if isRec(X+BVx, Y+BVy) is false, , the block vector may be set as valid. b. In one example, isRec(X+BVx+W-1,Y+BVy) is false. Even if there are, the block vectors may be set as valid. c. In one example, isRec(X+BVx,Y+BVy+H-1) is false. Even if there are, the block vectors may be set as valid. d. In one example, isRec(X+BVx+W-1, Y+BVy+H-1) is fa Even if it is lse, block vectors may be set as valid. 27. Block vector (BVx, BVy) is a vector where one block is the th If it is not a block of 1 CTU, it may be set as always valid. Alternatively, the block vector may be set to always be valid. 28. If all three of the following conditions are met, define a block vector (BVx, BVy) as It may be set to always be valid. X+BVx>=0 Y+BVy>=floor(Y / H ctu ) ·isRec(X+BVx+W-1,Y+BVy+H-1)==true a. Alternatively, for the first block of CTUs in a CTU row, three clauses If all of the conditions are met, the block vector may be set as always valid. 29. If the block vector (BVx,BVy) is valid, the sample code of the block The filtering may be performed based on block vectors. a. In one example, the prediction for sample (X,Y) is ((X+BVx)%W buf ,( Y+BVy)%H buf ) can be obtained from
[0083] Buffer Update 30. When encoding a new picture or tile, the buffer may be reset. stomach. a. The term "reset" can refer to a buffer being initialized. b. The term "reset" refers to the resetting of all samples / pixels in the buffer to a given value (e.g. , 0 or -1). 31. After the VPDU is encoded, the buffer is updated with the reconstructed value of the VPDU. That's fine. 32. After encoding a CTU, the buffer is updated with the reconstructed value of the CTU. good. In one example, if the buffer is not full, the buffer is filled by the CTU. It can be updated sequentially. b. In one example, if the buffer is full, the buffer corresponding to the oldest CTU Update the region. c. In one example, M = mW, N = H (W and H are the size of the CTU, and M and N are the balance If the previously updated region starts from (kW,0), the update The next starting position to be selected is ((k+1)W mod M,0). 33. The buffer may be reset at the beginning of each CTU row. Alternatively, the buffer may be reset at the start of decoding each CTU. b. Alternatively, the buffer may be reset at the start of decoding one tile. stomach. c. Alternatively, the buffer is reset at the start of decoding one tile group / picture. It may be set. 34. After completing the coding of the block starting from (x,y), The corresponding region of the image is updated by reconstruction from the block. In one example, (x,y) is the position relative to the top left corner of the CTU. 35. After coding a block for a picture, the corresponding area of the buffer is Updated by reconstructing from lock. a. In one example, the value of position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at location (x,y) relative to the top left corner of the picture . b. In one example, the value of position (x mod M, y mod N) in the buffer is updated with the reconstructed pixel value at position (x,y) relative to the top-left corner of the current tile. good. c. In one example, the value of position (x mod M, y mod N) in the buffer is updated with the reconstructed pixel value at location (x,y) relative to the top left corner of the current CTU row. Good too. d. In one example, the values in the buffer are updated with the reconstructed pixel values after bit depth alignment. It may be renewed. 36. After coding the block starting from (x,y), The corresponding area of the buffer is updated by reconstruction from the block (xb, yb) and and (x,y) are two different coordinates. a. In one example, (x,y) is the position relative to the top left corner of the CTU, and (xb,y b) is (x+update_x, y+update_y), and update_x and and update_y indicate the position in the buffer where the update can be performed. 37. In the above example, the reconstructed value of one block is filtered (e.g., non-blocking It may also refer to the reconstructed values before applying the block filter. a. Alternatively, the reconstructed value of one block may be filtered (e.g., a non-blocking It may also indicate the reconstructed value after a filter (or filter) has been applied. 38. When the buffer is updated from the reconstructed sample, the reconstructed sample is Before being stored, the sample may first be modified, for example, the bit depth of the sample may be changed. stomach. In one example, the buffer is reconstructed after bit-depth alignment to the bit-depth of the buffer. The value is updated with the sampled value. b. In one example, the buffer value is updated based on the value {p + [1 << (b - 1)]} >> b, where p is the reconstructed sample value and b is a predefined bit shift value. c. In one example, the buffer value is updated based on the value clip({p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1), where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the buffer bit depth. d. In one example, the buffer value is updated based on the value {p + [1 < (b - 1) - 1]} > b, where p is the reconstructed sample value and b is a predefined bit shift value. e. In one example, the buffer value is updated based on the value clip({p + [1 << (b - 1) - 1]} > > b, 0, (1 << bitdepth) - 1), where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the buffer bit depth. f. In one example, the buffer value is updated based on the value p >> b. g. In one example, the buffer value is updated based on the value clip(p >> b, 0, (1 << bitdepth) - 1), where bitdepth is the buffer bit depth. h. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth. 39. When forming a prediction using buffer samples, preprocessing can be applied. a. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. d. In one example, the buffer value is updated based on the value {p + [1 < (b - 1) - 1]} > b, where p is the reconstructed sample value and b is a predefined bit shift value. e. In one example, the buffer value is updated based on the value clip({p + [1 << (b - 1) - 1]} > > b, 0, (1 << bitdepth) - 1), where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the buffer bit depth. f. In one example, the buffer value is updated based on the value p >> b. g. In one example, the buffer value is updated based on the value clip(p >> b, 0, (1 << bitdepth) - 1), where bitdepth is the buffer bit depth. h. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth. f. In one example, the buffer value is updated based on the value p >> b. g. In one example, the buffer value is updated based on the value clip(p >> b, 0, (1 << bitdepth) - 1), where bitdepth is the buffer bit depth. h. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth. . h. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth. i. In one example, the buffer value is updated based on the value p << b, where p is the sample value in the buffer and b is a predefined value. 39. When forming a prediction using buffer samples, preprocessing can be applied. a. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. a. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. b. In one example, the buffer value is updated based on the value {p + [1 << (b - 1)]} >> b, where p is the reconstructed sample value and b is a predefined bit shift value. b. In one example, the predicted value is clip(p< <b,0,1<<bitdepth) and bitdepth is the bit depth of the reconstructed samples. c. In one example, the predicted value is (p< <b)+(1<<(bitdepth-1)) where p is the sample value in the buffer, b is a predefined value, and b itdepth is the bit depth of the reconstructed samples. d. In the above example, b is the bit depth minus the input sample bit depth. may be reconstructed as follows. 40. Buffers may be updated in a given order. In one example, the buffer may be updated sequentially. b. In one example, the buffer may be updated based on the order of the reconstructed blocks. good. 41. If the buffer is full, replace the samples in the buffer with the most recent reconstructed sample. It can be replaced. In one example, samples may be updated on a first-in, first-out basis. b. In one example, the oldest sample is replaced. c. In one example, samples are assigned priorities and sorted based on these priorities. can be replaced. d. In one example, samples are "long-term" so that other samples are first replaced. may be marked as "period". e. In one example, a flag is used with a block to indicate high priority. You can send a message. f. In one example, a number is sent with a block to indicate priority. It can be trusted. g. In one example, samples from a reconstructed block with certain characteristics are compared with other The samples are assigned higher priority so that they are replaced first. i. In one example, the percentage of samples coded in IBC mode is greater than or equal to a threshold value. If is larger than , then all samples in the block can be assigned a high priority. do. ii. In one example, the percentage of samples coded in Palette mode If the size of the block is greater than a threshold, assign a high priority to all samples in the block. It is possible. iii. In one example, samples encoded in IBC or Palette mode If the percentage of samples in the block is greater than the threshold, all samples in the block are assigned a high priority. Ranks can be assigned. iv. In one example, the percentage of samples coded in transform skip mode If the size is greater than the threshold, all samples in the block are assigned a high priority. This can be done. v. This threshold may vary based on block size, color components, and CTU size. stomach. vi. Threshold is set to SPS / PPS / Sequence Header / Slice Header / Tile Group It may be signaled at group / tile level / region. h. In one example, this buffer being full indicates that the available memory in this buffer is full. It may mean that the number of possible samples is equal to or greater than a given threshold. i. In one example, the number of samples available in the buffer is 64 x 64 x 3. If the number of samples is equal to or greater than the number of samples, the buffer may be determined to be full.
[0084] Alternative Buffer Combinations 42. Instead of always using the three previously coded 64x64 blocks as the reference area, Instead, it adaptively changes it based on the position of the current block (or VPDU). is proposed. a. In one example, when encoding / decoding a 64x64 block, the previous three 6 4x64 blocks can be used as references. Compared to Figure 2, the previous 64x64 blocks Figure 2 shows the different combinations of the previous 64x64 blocks. Here is an example. 43. Instead of using z-scan order, a vertical scan order may be used. a. In one example, one block has four rows with indices 0..3 in the z-scan order. If it is split into two VPDUs, the encoding / decoding order is 0, 2, 1, 3. b. In one example, when encoding / decoding a 64x64 block, the previous three As compared to Figure 2, a 64x64 block of The encoding / decoding order of 64x64 blocks can be applied. An example of different encoding / decoding orders for four blocks is shown below. c. Alternatively, the above method may be applied to the coding of screen content only. . d. Alternatively, the method may be performed by applying CP to one tile / tile group / picture. May only be applied if R is enabled. e. Alternatively, the method may be performed in a manner that enables CPR for one CTU or one row of CTUs. It may only be applied if the
[0085] Virtual IBC Buffer In the following, the width and height of the VPDU in the luminance sample are defined as W VPDU (example For example, 64) and H VPDU (e.g., 64). Alternatively, W VPDU and / or Or H VPDU represents the width and / or height of another video unit (e.g., CTU) That's fine. 44. A virtual buffer may be maintained to keep track of the state of the IBC reference region. In one example, the virtual buffer size is VPDU ×nH VPDU is. i. In one example, m is equal to 3 and n is equal to 2. ii. In one example, m and / or n depend on the picture resolution, CTU size. may exist. iii. In one example, m and / or n may be signaled or predicted. It may be specified as follows. b. In one example, the method described in the bullets and sub-bullets above uses a virtual buffer. may be applied to. c. In one example, the sample relative to the top left corner of the picture / slice / tile / brick Rule (x, y) is (x%(mW VPDU ),y%(nH VPDU )) is mapped to Good too. 45. Use an array to track the availability of each sample associated with a virtual buffer. That's fine. In one example, a flag is associated with a sample in the virtual buffer to indicate the buffer It may also be specified whether the sample in the database can be used as an IBC reference. b. In one example, each 4x4 block containing luma and chroma samples is A flag is shared between the IBC references of any sample associated with that block. It may also indicate whether the item can be used as a reference. c. In one example, an array corresponding to 3x2 VPDUs (e.g., each 4x4 block (These records may share the same availability flag) tracks the availability of IBC reference samples. It is maintained as such. d. In one example, an array corresponding to 4x2 VPDUs (e.g., each 4x4 block (These records may share the same availability flag) tracks the availability of IBC reference samples. It is maintained as such. 46. After a VPDU or video unit has been decoded, it is associated with a virtual buffer. Certain samples may be marked as unavailable for IBC reference. In one example, which samples are unavailable is determined by the most recently decoded VP It may depend on the location of the DU. b. If one sample is marked as unavailable, predictions from this sample are not allowed. It is not permitted. i. Alternatively, other methods (e.g., using default values) may be applied further, Predictors may be derived to replace unavailable samples. 47. Record the location of the most recently decoded VPDU and any associated virtual buffers. It can be easier to identify if a sample has been marked as unavailable. In one example, at the start of decoding a VPDU, the position of the most recently decoded VPDU is Based on the location, some samples associated with the virtual buffer are marked unavailable. can be added. i. In one example, the picture / slice / tile / Relative to the top left corner of the brick / other video processing unit (xPrevVPDU, yPrevV PDU) as the top left position, and yPrevVPDU%(nH VPDU ) is equal to 0 ,A particular location (x,y) can be marked as unavailable. 1. In one example, x is [xPrevVPDU-W VPDU +2mW VPD U )% mW VPDU ,((xPrevVPDU-2W VPDU +2mW VPDU )%m W VPDU )-1+W VPDU ] may be within a range such as 2. In one example, y is [yPrevVPDU%(nH VPDU ),(yPr evVPDU%(nH VPDU ))-1+H VPDU ] may be within a range such as 3. In one example, x is [xPrevVPDU-W VPDU +2mW VPD U ]%mW VPDU , ((xPrevVPDU-W VPDU +2mW VPDU )%mW VPDU )-1+W VPDU ], and y may be in a range such as [yPrevVPDU%(nH VPDU ),(yPrevVPDU%(nH VPDU ))-1+H VPDU ] It may be within the range. ii. In one example, the picture / slice / tile of the most recently decoded VPDU / brick / other video processing unit relative to the top left corner (xPrevVPDU,yPre vVPDU) as the top left position, and yPrevVPDU%(nH VPDU ) is equal to 0 If not, the particular position (x,y) can be marked as unavailable. 1. In one example, x is [xPrevVPDU-W VPDU +2mW VPDU )%mW VPDU ,((xPrevVPDU-W VPDU +2mWVPDU )%mW VP DU )-1+W VPDU ] may be within a range such as 2. In one example, y is [yPrevVPDU%(nH VPDU ),(yPr evVPDU%(nH VPDU ))-1+H VPDU ] may be within a range such as 3. In one example, x is [xPrevVPDU-W VPDU +2mW VPDU )%mW VPDU ,((xPrevVPDU-W VPDU +2mW VPDU )%mW VP DU )-1+W VPDU ], and y may be in a range such as [yPrevVPDU %(nH VPDU ),(yPrevVPDU%(nH VPDU ))-1+H VPDU ]of It may be within such a range. 48. If one CU contains multiple VPDUs, the IBC reference availability matrix based on the VPDUs shall be used. Instead of applying the marking process, the IBC reference availability marking process will be as per the following CU: That's fine. In one example, at the start of decoding a CU containing multiple VPDUs, Applying IBC reference availability marking to each VPDU before decoding the DU good. b. In such a case, 128x64 IBC blocks and 64x128 IBC blocks Locks are sometimes not allowed. i. In one example, pred_ mode_ibc_flag may not be sent and may be inferred to be equal to 0. 49. For a reference block or sub-block, check the reference availability status in the top right corner. Checks whether the block vector associated with this reference block is valid. Sometimes there's no need to judge. In one example, determine if the block vector is valid and Only check the top left, bottom left and bottom right corners of the block. 50. The IBC buffer size is the size of the VPDU (width / height expressed as vSize). ) and / or depending on the size of the CTB / CTU (width / height is represented by ctbSize) may exist. In one example, the buffer height may be equal to ctbSize. b. In one example, the buffer width may depend on min(ctbSize,64) good. i. In one example, the width of the buffer is (128*128 / vSize,min(c tbSize,64)). 51. The IBC buffer may contain values outside the pixel range, which means that this position is May not be available for BC reference (e.g., not used to predict other samples) This indicates that... The sample value may be set to a value that indicates that the sample is not available. b. In one example, this value may be -1. c. In one example, this value is [0,1<<(internal_bit_dept h)-1], and internal_bit_depth is A positive integer value. For example, internal_bit_depth encodes samples of one color component. The internal bit depth used for decoding. d. In one example, this value is [0,1<<(input_bit_depth)- 1], and input_bit_depth is a positive integer value. is. For example, input_bit_depth encodes / decodes samples of one color component. The input bit depth used to encode the image. 52. The availability marking of a sample in the IBC buffer is based on the current block location. Depends on the size of the current block, the size of the CTU / CTB, and the size of the VPDU. In one example, (xCb, yCb) is the position of the block relative to the top left of the picture. ctbSize is the size of the CTU / CTB (i.e. width and / or height) , and vSize=min(ctbSize,64), and wIbcBuf and h IbcBuf is the width and height of the IBC buffer. a. In one example, (xCb%vSize) is equal to 0 and (yCb%vSize) If is equal to 0, the particular set of locations in the IBC buffer is marked as unavailable. can be added. b. In one example, the size of the current block is equal to the size of the VPDU, i.e., min(c tbSize,64), the area marked as unavailable is used to May be according to U size c. In one example, if the size of the current block is larger than the size of the VPDU, If it is min(ctbSize,64), the area is marked as unavailable. may depend on the size of the CU. 53. Video unit relative to top left position of picture (e.g., VPDU(xV,yV)) At the start of decoding, the corresponding position in the IBC buffer is set to a value outside the pixel range. That's fine. a. In one example, the position in the buffer (x%wIbcBuf, y%hIbcBu f) with x=xV,...,xV+ctbSize-1, y=yV,...,yV+ The buffer samples with ctbSize-1 are set to the value -1. and hIbcBuf is the width and height of the IBC buffer, and ctbSize is the This is the width of the TU / CTB. i. In one example, hIbcBuf may be equal to ctbSize. 54. Bitstream conformance constraints are based on the values of the samples in the IBC buffer. That's fine. a. In one example, the block vector associated with the IBC buffer If one of the reference blocks contains an out-of-range pixel value, the bitstream is invalid. There is a possibility. 55. Bitstream conformance constraints based on availability indications in IBC buffers may be set. In one example, any reference sample mapped to the IBC buffer is If a block is marked as unavailable for encoding / decoding, This bitstream may be corrupted. b. In one example, if a single tree is used, one block is encoded / decoded. Any luma reference sample mapped to the IBC buffer for decoding is unavailable. If marked as possible, this bitstream may be corrupt. c. One conforming bitstream is associated with an IBC coded block. The block vector may point to a single reference block mapped in the IBC buffer. <,> Each luminance reference sample located in the IBC buffer to encode / decode one block can be marked as available (e.g., the sample value is within the range of [K0, K1], for example, K0 is set to 0 and K1 is set to ( 1 << BitDepth - 1), and BitDepth is the internal bit depth or the input bit depth). 56. The bitstream compliance constraints may depend on the type of the split tree and the encoding of the current CU treeType. a. In one example, when a dual tree is permitted at a high level (e.g., slice / picture / block / tile) and the current video block (e.g., CU / PU / CB / PB) is encoded with a single tree, the bitstream constraints may need to check whether all the positions of the components mapped to the IBC buffer are marked as unavailable. b. In one example, when a dual tree is permitted at a high level (e.g., slice / picture / block / tile) and the current luminance video block (e.g., CU / PU / CB / PB) is encoded with a dual tree, the bitstream constraints may ignore whether the positions mapped in the IBC buffer of the chroma components are marked as unavailable. i. Alternatively, in such a case, the bitstream constraints may still check whether all the positions of the components mapped to the IBC buffer are marked as unavailable. c. In one example, when a single tree is used, the bitstream constraints are I [[ID=3用的に、このような場合、ビットストリーム制約は、依然として、IBCバッファにマッピングされたすべての成分の位置が利用不可能としてマークされているかどうかをチェックすることもある。 c. In one example, when a single tree is used, the bitstream constraints are I Ignore whether the position of the chroma component mapped to the BC buffer is unavailable This can be done.
[0086] Improvement of the current VTM design 57. The prediction of IBC may have a lower accuracy than reconstruction. a. In one example, the predicted value is based on the value clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the bit depth of the predicted sample bits. b. In one example, the predicted value is based on the value clip{{p + [1 << (b - 1) - 1]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value and b is a predefined bit shift value. c. In one example, the predicted value is based on the value ((p >> b) + (1 << (bitdepth - 1 )) << b, and the bit depth is the bit depth of the predicted sample. d. In one example, the predicted value is based on the value (clip((p >> b), 0, (1 << (bit depth - b))) + (1 << (bitdepth - 1))) << b, and the bit depth is the bit depth of the predicted sample. e. In one example, the predicted value is clipped in different ways based on whether ILR is applied. f. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth and then doing something else (the text seems incomplete here). g. In one example, the bit depth or the difference in bit depth compared to the output bit depth / input bit depth / internal bit depth is in the SPS / PPS / sequence header / picture header / slice header / tile group header / tile header or other kind of video data unit This may be signaled in the unit. 58. Some parts of the IBC predictions can be less accurate, while others can be as accurate as the reconstructions. Has. In one example, the allowable reference regions have different precisions (e.g., bit depths). The sample may include: b. In one example, the current 64x64 block is decoded to another 64x64 block that has not yet been decoded. The reference from the block is less precise, and the reference from the current 64x64 block is more accurate than the reconstruction. It has the same accuracy. c. In one example, references from CTUs other than the current CTU being decoded are Low, the reference from the current CTU has the same accuracy as the reconstruction. d. In one example, the reference from a specific set of color components is less accurate and the reference from other color components is less accurate. The reference has the same accuracy as the reconstruction. 59. If the size of the CTU is M × M and the size of the reference region is nM × nM, The reference region is the nearest available nxn CTU in a row of CTUs. In one example, the size of the reference region is 128x128 and the size of the CTU is 6 If the number of CTUs is 4x64, the four nearest available CTUs in a CTU row are used as IBCs. Can be used for reference. b. In one example, the size of the reference region is 128x128 and the size of the CTU is 3 If the number is 2 × 32, the nearest 16 available CTUs in one CTU row are used as IB Can be used for C references. 60. If the size of the CTU is M and the size of the reference region is nM, the reference region is The nearest n-1 available CTUs in the CTU's row / tile. In one example, the size of the reference region is 128x128 or 256x64; If the CTU size is 64x64, the nearest available 3 in one CTU row One CTU can be used for IBC reference. b. In one example, the size of the reference region is 128x128 or 512x32; If the CTU size is 32x32, the nearest available CTU in a row Five CTUs can be used for IBC reference. 61. If the size of the CTU is M, the size of the VPDU is kM, and the size of the reference area is The size is nM and the reference region is the nearest available nk pixels in the row / tile of the CTU. This is the CTU. In one example, the size of the CTU is 64x64 and the size of the VPDU is also 64x64. 64, the size of the reference is 128x128, and the nearest neighbor in one CTU row Three CTUs can be used for IBC reference. b. In one example, the size of the CTU is 32x32 and the size of the VPDU is 64x 64, the size of the reference is 128x128, and the nearest ( 16-4) = 12 CTUs can be used for IBC reference. 62. Using IBC, for a w × h block whose upper left corner is (x,y), what is the reference block? There are constraints that keep blocks from a specific area for memory reclamation, and w and h are the current block size. The width and height of the block. a. In one example, the size of the CTU is 128x128, and (x,y)=(mx6 4,n×64), the reference block starts from ((m-2)×64,n×64). It cannot overlap with the 64x64 area. b. In one example, if the size of the CTU is 128x128, the reference block is If the top left corner of a wxh block is at (x-128,y), then there cannot be overlaps. c. In one example, if the size of the CTU is 128x128, then (x+BVx,y +BVy) does not lie within the w*h block whose top left corner is (x-128,y). where BVx and BVy represent the block vectors of the current block. d. In one example, the CTU size is M×M and the IBC buffer size is k×M ×M, the reference block cannot overlap with the w×h block, and the top left corner is ( xk×M,y), and BVx and BVy are the block vectors of the current block. represent. e. In one example, the CTU size is M×M and the IBC buffer size is k×M ×M, then (x+BVx, y+BVy) is in w×h intra blocks. The upper left corner is (xk×M,y), and BVx and BVy are the coordinates of the current block. represents the block vector of the block. 63. If the size of the CTU is not M × M and the size of the reference region is nM × nM, The reference region is the nearest available n×n−1 CTUs in a row of CTUs. In one example, the size of the reference region is 128x128 and the size of the CTU is 6 If the number of CTUs is 4x64, the three closest available CTUs in a CTU row are used as IBCs. Can be used for reference. b. In one example, the size of the reference region is 128x128 and the size of the CTU is 3 If the number is 2 × 32, the nearest 15 available CTUs in one CTU row are used as IB Can be used for C references. 64. CU of 64x64 block starting from (2m*64, 2n*64), i.e. 12 For the top left 64x64 block in an 8x128 CTU, its IBC prediction is ((2 64x64 blocks starting from ((2m-1)*64, 2n*64) 64x64 blocks starting from ((2m-1)*64,(2n+1 )*64) and the recursion in the current 64x64 block. This can be done from a configuration sample. 65. 64x64 blocks starting from ((2m+1)*64, (2n+1)*64) For a CU, i.e., the bottom right 64x64 block in a 128x128 CTU, The IBC prediction may be from the current 128x128 CTU. 66. CU of 64x64 block starting from ((2m+1)*64,2n*64), That is, for the top right 64x64 block in a 128x128 CTU, its IBC prediction is , 64x64 blocks starting from ((2m-1)*64, 2n*64), ((2m-1) *64,(2n+1)*64), and the 64x64 blocks starting from (2m*64,2 n*64) and the replay in the current 64x64 block. This can be done from a configuration sample. a. Alternatively, a 64x64 block starting at (2m*64, (2n+1)*64) If we reconstruct the IBC prediction, the 64 starting from ((2m-1)*64, 2n*64) ×64 blocks, 64×64 blocks starting from (2m*64, 2n*64), (2m* 64, (2n+1)*64) and the current 64x64 block. This can be done from the reconstruction samples in the lock. 67. CU of 64x64 block starting from (2m*64,(2n+1)*64), i.e. For the bottom left 64x64 block in a 128x128 CTU, the IBC prediction is 64x64 blocks starting from ((2m-1)*64,(2n+1)*64), (2m* 64x64 blocks starting from ((2m+1)*64,2n*64) ) and the reconstruction sample in the current 64x64 block. This can be done from the pull. a. Alternatively, a 64x64 block starting from ((2m+1)*64, 2n*64) If the metric is not reconstructed, the IBC prediction starts from ((2m-1)*64, 2n*64). 64x64 blocks, starting from ((2m-1)*64, (2n+1)*64) 64×64 blocks, 64×64 blocks starting from (2m*64, 2n*64), and the current This can be done from the reconstructed samples in the current 64x64 block. 68. Adjust the reference region based on which 64x64 block the current CU belongs to. It is proposed that a. In one example, for a CU starting from (x,y), (y>>6)&1==0. Then, ((x>>6<<6)-128,y>>6<<6) and ((x>>6<<6)-6 The two or two previous 64x64 blocks starting from 4,y>>6<<6) are IBC It can be referenced by mode. b. In one example, for a CU starting from (x,y), (y>>6)&1==1. When this happens, the previous 64x value starts from ((x>>6<<6)-64,y>>6<<<6). The 64 blocks can be referenced by the IBC mode. 69. Block starting at (x,y) and having block vector (BVx,BVy) If isRec(((x+BVx)>>6<<6)+128-(((y+BVy)> >6)&1)*64+(x%64),((y+BVy)>>6<<6)+(y%64)) If is true, the block vector is invalid. In one example, the block is a luminance block. b. In one example, this block is a chroma block in a 4:4:4 format. be. c. In one example, this block contains both luma and chroma components. 70. 4:2 starting from (x,y) and having block vector (BVx,BVy): For 0 format chroma blocks, isRec(((x+BVx)>>5<<5)+64- (((y+BVy)>>5)&1)*32+(x%32),((y+BVy)>>5<< If 5)+(y%32)) is true, the block vector is invalid. 71. The decision whether BV is invalid for a block of component c is made by Instead of checking the sample, one may rely on the availability of a sample of component X. a. Starting from (x,y), the component c has block vector (BVx,BVy). For blocks, isRec(c,((x+BVx)>>6<<6)+128-(((y +BVy)>>6)&1)*64+(x%64),((y+BVy)>>6<<6)+( If y%64)) is true, the block vector may be treated as invalid. i. In one example, this block is a luminance block (e.g., c is the luminance component (The color is the G component for RGB encoding.) ii. In one example, this block is a chroma block in a 4:4:4 format. (e.g., c is the cb or cr component, or the B / R component for RGB encoding) be). iii. In one example, for example, this block processes both the luma and chroma components. The availability of samples for both luma and chroma components may be checked, including . b. Starting from (x,y) of component c, it has block vector (BVx,BVy) For 4:2:0 format chroma blocks, isRec(c,((x+BVx)>>5<< 5)+64-(((y+BVy)>>5)&1)*32+(x%32),((y+BVy )>>5<<5)+(y%32)) is true, the block vector is invalid. It may be treated as such. c. Starting from (x,y) of component c, it has block vector (BVx,BVy). For a chroma block or sub-block, isRec(c,x+B Vx+Chroma_CTU_size,y) is true, the block vector may be treated as invalid, and Chroma_CTU_size is the CTU size of the chroma component. It is. i. In one example, for 4:2:0 format, Chroma_CTU_si ze may be 64. ii. In one example, the chroma sub-blocks are 2x2 blocks in a 4:2:0 format. It may also be rock. iii. In one example, the chroma sub-blocks are 4x4 in a 4:4:4 format. It may be a block. iv. In one example, the chroma sub-blocks are sized to the minimum CU size in the luma component. We can handle it. 1. Alternatively, the chroma sub-blocks may be split according to the minimum CU size of the chroma components. Good too. 72. For all the bullets above, the reference buffer is a multiple of M × M blocks (M = 64). However, this is because the reference buffer contains multiple N × M blocks. This can be extended to other cases, including blocks (e.g., N=128, M=64). 73. For all the bullets above, the reference buffer is in the same bridge as the current block. Apply the further restriction that the block / tile / tile group / slice You may do so. In one example, part of the reference buffer is in the current brick / tile / tile group. / If outside a slice, the use of IBC may be disabled. Signaling IBC-related syntax elements The notification may be skipped. b. Alternatively, if part of the reference buffer is in the current brick / tile / tilegroup / slot If outside of RICE, IBC may still be activated for one block. However, the block vector associated with one block is only the remaining reference buffer. It may also refer to. 74. As reference area for IBC, except for the current VPDU, if available, CTU / In the first VPDU row of a CTB row, there are K1 most recently coded VPDUs, if possible. For example, in the second VPDU row of a CTU / CTB row, there are K2 most recently coded VPDUs. It is proposed that In one example, K1 is equal to 2 and K2 is equal to 1. b. In one example, the method is for a CTU / CTB size of 128x128 and V This may also be applied when the PDU size is 64x64. c. In one example, the method is for a CTU / CTB size of 64x64 and a VPD This may be applied when the U size is 64x64 and / or 32x32. d. In one example, the method is for a CTU / CTB size of 32x32 and a VPD This may be applied when the U size is 32x32 or less. 75. The above methods may be applied at different stages. In one example, modular operations on block vectors (BVs) (e.g., mod b) is called in the BV availability check process to determine whether the BV is valid or not. You may do so. b. In one example, modular operations on block vectors (BVs) (e.g., mod b) to retrieve the reference sample in the IBC virtual buffer or the reconstructed picture buffer. Pull position (e.g., based on the current sample position and BV module results) It may be specified (eg, before the in-loop filtering process).
[0087] 5. Implementation 5.1 Embodiment #1 One implementation of a buffer for the IBC is described below.
[0088] The buffer size is 128x128. The CTU size is also 128x128. For encoding the first CTU in a row of CTUs, the buffer is 128 (8-bit image For encoding the k-th CTU in a CTU row, The buffer is initialized with the reconstruction before the loop filtering of the (k-1)th CTU. can be.
[0089] FIG. 3 illustrates the coding of a block starting at (x,y).
[0090] When encoding the block starting at (x,y) for the current CTU, the block vector The decoder receives the data (BVx,BVy) = (x-x0,y-y0) and the reference block is It indicates that it is from (x0, y0) in the IBC buffer. Let w be the block height and h be the block height. When we finish encoding the block, the IBC buffer The wxh region starting from (x,y) in It is updated by the creation of
[0091] 5.2 Embodiment #2 Figure 4 shows possible alternatives for selecting a previously coded 64x64 block. Here is an example:
[0092] 5.3 Embodiment #3 Figure 5 shows an alternative way in which the encoding / decoding order of the 64x64 blocks can be changed. Here is an example:
[0093] 5.4 Embodiment #4 Figure 8 shows the decoding order of a 64x64 block from top to bottom and left to right. 1 shows another possible alternative way of selecting the coded 64x64 blocks of .
[0094] 5.5 Embodiment #5 Figure 9 shows another possible alternative way to select the previously coded 64x64 block. show.
[0095] 5.6 Embodiment #6 Figure 11 shows the decoding order of a 64x64 block from left to right and top to bottom. 1 shows another possible alternative for selecting the coded 64x64 blocks of
[0096] 5.7 Embodiment #7 The size of the CTU is W×W, and in the decoder, the size is mW×W, and the bit Here is an implementation of an IBC buffer with depth B:
[0097] At the beginning of decoding a CTU row, initialize the buffer with the value (1<<(B-1)) and Set the starting point (xb,yb) to (0,0).
[0098] Decode the CU starting at (x,y) with size w × h relative to the top-left corner of the CTU. In this case, after aligning the bit depth to B bits, the (xb+x, yb+y) and w×h sub-pixels are used. The region starting from the CU is updated with the reconstructed pixel values of the CU.
[0099] After decoding the CTU, the update starting point (xb, yb) is set as ((xb+W) mod mW, 0).
[0100] When decoding an IBC CU with block vector (BVx, BVy), For any pixel (x,y) relative to the top left corner of the After the alignment, the buffer position ((x+BVx) mod mW, (y+BVy) mode Extract the prediction from W).
[0101] In one example, B is set to 7 or 8, while the output / input bit depth of the block is It may be equal to 10.
[0102] 5.8 Embodiment #8 From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For a starting luma CU or joint luma / chroma CU, the block vector is ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+ If (x%64), ((y+BVy)>>6<<6)+(y%64)) is true, it is invalid. It is effective.
[0103] From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For the starting chroma CU, the block vector is isRec(((x+BVx)>>5< <5)+64-(((y+BVy)>>5)&1)*32+(x%32),((y+BV It is invalid if y)>>5<<5)+(y%32)) is true.
[0104] 5.9 Embodiment #9 Chroma block or starting at (x,y) in 4:2:0 format relative to the top left corner of the picture is a sub-block, and for block vector (BVx,BVy), isRec(c, When (x+BVx+64,y+BVy) is true and c is a chroma component, the block The vector is invalid.
[0105] Chroma block or pixels starting at (x,y) in 4:4:4 format relative to the top left corner of the picture or sub-block, and block vector (BVx,BVy), isRec(c ,(x+BVx+64,y+BVy) is true and c is a chroma component. The vector is invalid.
[0106] 5.10 Embodiment #10 From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For a starting luma CU or joint luma / chroma CU, the block vector is ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+ If (x%64), ((y+BVy)>>6<<6)+(y%64)) is true, it is invalid. It is effective.
[0107] Chroma block or starting point of (x,y) in 4:2:0 format relative to the top left corner of the picture or sub-block, and block vector (BVx,BVy), isRec(c ,((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+ (x%32),((y+BVy)>>5<<5)+(y%32)) is true and c is When it is a Roma component, the block vector is invalid.
[0108] 5.11 Embodiment #11 In this embodiment, the two most significant VPDUs in the row of the first VPDU are excluded from the current VPDU. The encoded VPDU and one in the row of the second VPDU in the row of the first CTU / CTB. The emphasis is on implementations that preserve the most encoded VPDUs.
[0109] If the coding order is top to bottom, left to right, the reference region is shown as in Figure 13.
[0110] The coding order of the VPDU is left to right and top to bottom, and the current VPDU is a pictorial If the reference area is not to the right of the pixel boundary, the reference area is shown as in FIG.
[0111] The coding order of the VPDU is left-to-right and top-to-bottom, and the current VPDU is a picture If it is to the right of the boundary, the reference region can be shown as in FIG.
[0112] If the size of the luminance block (x,y) is w×h, then the block vector (BVx,B Vy) is valid or not can be known by checking the following conditions: do.
[0113] isRec(((x+BVx+128)>>6<<6)-(refy&0x40)+( x%64),((y+BVy)>>6<<6)+(refy>>6==y>>6)?(y %64):0). Here, refy=(y&0x40)?(y+BVy):(y+BV y+w-1).
[0114] If the above function returns true, the block vector (BVx,BVy) is invalid, Otherwise, the block vector may be valid.
[0115] 5.12 Embodiment #12 If the CTU size is 192x128, a virtual buffer of size 192x128 is used. is maintained to track the reference sample for the IBC.
[0116] The sample (x,y) relative to the top left corner of the picture is the position (x,y) relative to the top left corner of the buffer. %192,y%128). The following steps are hypothetical for IBC reference. Indicates how to mark the availability of samples associated with the buffer.
[0117] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the start of decoding the first CU of a VPDU, x = (xPrevVPDU-2WVP DU+2mWVPDU)%(mWVPDU),..,((xPrevVPDU-2WVP DU+2mWVPDU)%(mWVPDU))-1+WVPDU;and y=yPre vVPDU%(nHVPDU),..,(yPrevVPDU%(nHVPDU))-1 + The position (x,y) in the HVPDU case may be marked as unavailable. xPrevVPDU, yPrevVPDU) as (xCU, yCU), that is, Set the top left position relative to the picture. 3) After decoding one CU, x=xCU%(mWVPDU),...,(xCU +CU_width-1)%(mWVPDU) and y=yCU%(nHVPDU),. ..,(yCU+CU_height-1)%(nHVPDU) position (x,y) is marked as available. 4) For IBCCU with block vector (xBV, yBV), x = (xCU + xBV)%(mWVPDU),...,(xCU+xBV+CU_width-1)%( mWVPDU) and y=(yCU+yBV)%(nHVPDU),...,(yCU+ yBV+CU_height-1)%(nHVPDU) position (x,y) is used If marked as impossible, the block vector is considered invalid.
[0118] FIG. 16 shows the buffer status for a picture together with the decoding status of a VPDU.
[0119] 5.13 Embodiment #13 The CTU size is 128 x 128, or the CTU size is the same as the VPDU size. (e.g., 64x64 in the current design) or the size of the CTU. If the size is larger than the VPDU size (for example, 64x64 in the current design), In this case, a virtual buffer of size 192x128 is maintained to add reference samples for IBC. In the following, if a<0, (a%b) is defined as floor(a / b)*b, and f loor(c) returns the largest integer less than or equal to c.
[0120] The sample (x,y) relative to the top left corner of the picture is the position (x,y) relative to the top left corner of the buffer. %192,y%128). The following steps are hypothetical for IBC reference. Indicates how to mark the availability of samples associated with the buffer.
[0121] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the beginning of decoding the first CU of a VPDU, a. If yPrevVPDU%64 is equal to 0, then x=(xPrevVPDU-1 28)%192,..,((xPrevVPDU-128)%192)+63; and y =yPrevVPDU%128,..,(yPrevVPDU%128)+63 position( x,y) is marked as unavailable, and (xPrevVPDU,yPre vVPDU) is set as (xCU, yCU), that is, the upper left position of the CU relative to the picture. Determine. b. Otherwise, x=(xPrevVPDU-64)%192,..,((x PrevVPDU-64)%192)+63; and y=yPrevVPDU%128, ..,(yPrevVPDU%128)+63 position (x,y) is marked as unavailable. Then, (xPrevVPDU, yPrevVPDU) is converted to (xCU, yCU ), that is, the top left position of the CU relative to the picture. 3) After decoding one CU, x=xCU%192,...,(xCU+CU_w idth-1)%192 and y=yCU%128,...,(yCU+CU_heig ht-1)%128 then the position (x,y) is marked as available. 4) For IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%192,...,(xCU+xBV+CU_width-1)%192 and y=(yCU+yBV)%128,...,(yCU+yBV+CU_height- 1) The position (x,y) in the case of %128 is marked as unavailable and the block vector The rule is considered invalid.
[0122] If the size of the CTU is S × S, S is not equal to 128, so Wbuf is set to 128. * 128 / S. A virtual buffer of size WbufxS is maintained and the reference of IBC is In this case, the size of the VPDU is equal to the size of the CTU.
[0123] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the start of decoding the first CU of a VPDU, x = (xPrevVPDU-W bu f *S)%S,..,((xPrevVPDU-W buf *S)%S)+S-1;and Position when y=yPrevVPDU%S,..,(yPrevVPDU%S)+S-1 (x,y) is marked as unavailable, and (xPrevVPDU,yP revVPDU) as (xCU, yCU), that is, the top left position of the CU relative to the picture Set to. 3) After decoding one CU, x=xCU%(W buf ),...,(xCU+C U_width-1)%(W buf ) and y=yCU%S,...,(yCU+CU_ The position (x,y) where (x,y) is greater than or equal to (height-1)%S is marked as available. 4) For IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%(Wbuf),...,(xCU+xBV+CU_width-1)%(W buf) and y=(yCU+yBV)%S,...,(yCU+yBV+CU_hei ght-1) The position (x,y) in case %S is marked as unavailable and The vector is considered invalid.
[0124] 5.14 Embodiment #14 The CTU size is 128 x 128, or the CTU size is the same as the VPDU size. (e.g., 64x64 in the current design) or the size of the CTU. If the size is larger than the VPDU size (for example, 64x64 in the current design), In this case, a virtual buffer of size 256x128 is maintained to store reference samples for IBC. In the following, if a<0, (a%b) is defined as floor(a / b)*b, and f loor(c) returns the largest integer less than or equal to c.
[0125] The sample (x,y) relative to the top left corner of the picture is the position (x,y) relative to the top left corner of the buffer. %256,y%128). The following steps are hypothetical for IBC reference. Indicates how to mark the availability of samples associated with the buffer.
[0126] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the beginning of decoding the first CU of a VPDU, a. If yPrevVPDU%64 is equal to 0, then x=(xPrevVPDU-1 28)%256,..,((xPrevVPDU-128)%256)+63; and y =yPrevVPDU%128,..,(yPrevVPDU%128)+63 position( x,y) is marked as unavailable, and (xPrevVPDU,yPre vVPDU) is set as (xCU, yCU), that is, the upper left position of the CU relative to the picture. Determine. b. Otherwise, x=(xPrevVPDU-64)%256,..,((x PrevVPDU-64)%256)+63; and y=yPrevVPDU%128, ..,(yPrevVPDU%128)+63 position (x,y) is marked as unavailable. Then, (xPrevVPDU, yPrevVPDU) is converted to (xCU, yCU ), that is, the top left position of the CU relative to the picture. 3) After decoding one CU, x=xCU%256,...,(xCU+CU_w idth-1)%256 and y=yCU%128,...,(yCU+CU_heig ht-1)%128 then the position (x,y) is marked as available. 4) For IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%256,...,(xCU+xBV+CU_width-1)%256 and y=(yCU+yBV)%128,...,(yCU+yBV+CU_height- 1) The position (x,y) in the case of %128 is marked as unavailable and the block vector The rule is considered invalid.
[0127] The size of the CTU is not 128x128, or is less than 64x64, or is 64x64. If it is less than 64, the same process as in the previous example, ie, embodiment #14, is applied.
[0128] 5.15 Embodiment #15 The IBC reference availability marking process is described below. This document describes the changes. Bold, underlined and italicized.
[0129] [Table 4]
[0130] [Table 5] [ka]
[0131] 7.3.7.5 Coding Unit Syntax
[0132] [Table 6]
[0133] 8.6.2 Derivation of motion vector components for IBC blocks 8.6.2.1 General ... [ka] ...
[0134] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding a coding unit that was coded in ibc prediction mode. It is served.
[0135] The inputs to this process are: - the top left sample of the current coding block relative to the top left luma sample of the current picture The luminance position (xCb, yCb) that defines the - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples , - The variables numSbX and numSbX, which specify the number of luminance-coding sub-blocks in the horizontal and vertical directions, respectively. and numSbY, - xSbIdx=0..numSbX-1, and ySbIdx=0..numSbY Motion vector mv[xSbIdx][ySbIdx] when it is -1 - variable cIdx that specifies the color component index of the current block [ka] ...
[0136] xSbIdx=0..numSbX-1, and ySbIdx=0..numSbY- Each coding of subblock index (xSbIdx, ySbIdx) in case 1 For the sub-blocks the following applies: - the top-left sample of the current coding sub-block relative to the top-left luma sample of the current picture The luminance position (xSb, ySb) that defines the sample is derived as follows. (xSb,ySb)=(xCb+xSbIdx*sbWidth,yCb+ySbId x*sbHeight) (8-913) [ka] [ka]
[0137] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. Position to be specified (xCurr, yCurr), - Variables nCurrSw and nCu that define the width and height of the current block, respectively rrSh, - variable cIdx, which specifies the color component of the current block, - (nCurrSw) x (nCurrSh) specifies the predicted sample of the current block array predSamples, - (nCurrSw) x (nCurrSh) array specifying the residual samples of the current block Column resSamples.
[0138] The output of this process is: - The reconstructed picture sample array recSamples. [ka]
[0139] 5.16 Embodiment #16 This is the same as the above embodiment except for the following changes.
[0140] [Table 7]
[0141] [Table 8] [ka]
[0142] 5.17 Embodiment #17 Herein, the changes in some instances are indicated by bold, underlined text.
[0143] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax
[0144] [Table 9]
[0145] 7.4.8.5 Coding Unit Syntax
[0146] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 to add the history to the shared merge candidate list area. The underlying motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0147] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- 1 is assigned as follows: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138) [ka]
[0148] 8.6.2 Derivation of motion vector components for IBC blocks 8.6.2.1 General The inputs to this process are: - The top-left sample of the current luma coding block relative to the top-left luma sample of the current picture. the luminance position of the sample (xCb, yCb), - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples .
[0149] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample precision mvL.
[0150] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in Section 8.6.2.2 is (xCb,yCb), variables cbWidth and cbHeight are called as inputs. The output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is 0, the following applies: Used 1. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 2. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set to 0, rightShift set to 1 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 3. The luminance motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0](8-8 86) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) Note 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0151] History-based motion vector predictor list update processing as specified in Section 8.6.2.6 The process is invoked using the luminance motion vector mvL. [ka]
[0152] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. Position to be specified (xCurr, yCurr), - Variables nCurrSw and nCu that define the width and height of the current block, respectively rrSh, - variable cIdx, which specifies the color component of the current block, - (nCurrSw) x (nCurrSh) specifies the predicted sample of the current block array predSamples, - (nCurrSw) x (nCurrSh) array specifying the residual samples of the current block Column resSamples.
[0153] [ka]
[0154] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The function clipCidx1 corresponds to the created chroma sample array SCb, and the function clipCidx1 returns Clip1. C to handle. - Otherwise (cIdx is equal to 2), set tuCbfChroma to tu_cbf _cr[xCurr][yCurr] and recSamples are reconstructed. The function clipCidx1 corresponds to the chroma sample array SCr obtained from Clip1. C Compatible with do.
[0155] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, then the position (xCu (nCurrSw) of the reconstructed samples recSamples in (rr,yCurr) ×(nCurrSh) block is i=0..nCurrSw-1,j=0..nCur For rSh-1, it is derived as follows: recSamples[xCurr+i][yCurr+j]=clipCidx1 (predSamples[i][j]+resSamples[i][j]) (8 -992) - Otherwise (slice_lmcs_enabled_flag is equal to 1) , the following applies: - If cIdx is equal to 0, the following applies: - pixel samples with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the input array resSamples and outputs the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples Chroma position (xCurr, yCurr), width nCurrSw and height of the transformation block nCurrSh, coding block flag of the current chroma transformation block tuCbfChro ma, predicted chrominance sample array predSamples, residual chrominance sample array res Samples is called with the reconstructed chroma sample array recSam as input. ples as the output. [ka]
[0156] 5.18 Embodiment #18 In this specification, the changes in some examples are shown in bold, underlined, and italicized type. .
[0157] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax
[0158] [Table 10]
[0159] 7.4.8.5 Coding Unit Syntax
[0160] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 to add the history to the shared merge candidate list area. The underlying motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0161] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- 1 is assigned as follows: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138) [ka]
[0162] 8.6.2 Derivation of motion vector components for IBC blocks 8.6.2.1 General The inputs to this process are: - The top-left sample of the current luma coding block relative to the top-left luma sample of the current picture. the luminance position of the sample (xCb, yCb), - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples .
[0163] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample precision mvL.
[0164] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in Section 8.6.2.2 is (xCb,yCb), variables cbWidth and cbHeight are called as inputs. The output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is equal to 0, The below applies. 1. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 2. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set to 0, rightShift set to 1 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 3. The luminance motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) Note 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0165] History-based motion vector predictor list update processing as specified in Section 8.6.2.6 The process is invoked using the luminance motion vector mvL. [ka]
[0166] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding a coding unit that was coded in ibc prediction mode. It is served.
[0167] The inputs to this process are: - the top left sample of the current coding block relative to the top left luma sample of the current picture The luminance position (xCb, yCb) that defines the - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples , - color component index of the current block, [ka]
[0168] The output of this process is: - array of prediction samples predSamples. [ka]
[0169] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. Position to be specified (xCurr, yCurr), - Variables nCurrSw and nCu that define the width and height of the current block, respectively rrSh, - variable cIdx, which specifies the color component of the current block, - (nCurrSw) x (nCurrSh) specifies the predicted sample of the current block array predSamples, - (nCurrSw) x (nCurrSh) array specifying the residual samples of the current block Column resSamples.
[0170] [ka]
[0171] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C to handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0172] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, then the position (xCu (nCurrSw) of the reconstructed samples recSamples in (rr,yCurr) ×(nCurrSh) block is i=0..nCurrSw-1,j=0..nCur For rSh-1, it is derived as follows: recSamples[xCurr+i][yCurr+j]=clipCidx1( predSamples[i][j]+resSamples[i][j]) (8- 992) - Otherwise (slice_lmcs_enabled_flag is equal to 1) ), the following applies: - If cIdx is equal to 0, the following applies: - pixel samples with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the input array resSamples and outputs the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples Chroma position (xCurr, yCurr), width nCurrSw and height of the transformation block nCurrSh, coding block flag of the current chroma transformation block tuCbfChro ma, predicted chrominance sample array predSamples, residual chrominance sample array res Samples is called with the reconstructed chroma sample array recSam as input. ples as the output. [ka]
[0173] 5.19 Embodiment #19 Herein, the changes in some instances are indicated by bold, underlined text.
[0174] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax
[0175] [Table 11]
[0176] 7.4.8.5 Coding Unit Syntax If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 to add the history to the shared merge candidate list area. The underlying motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0177] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight-1 The allocation is as follows: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138) [ka]
[0178] 8.6.2 Derivation of motion vector components for IBC blocks 8.6.2.1 General The inputs to this process are: - The top-left sample of the current luma coding block relative to the top-left luma sample of the current picture. the luminance position of the sample (xCb, yCb), - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples .
[0179] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample precision mvL.
[0180] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in Section 8.6.2.2 is (xCb,yCb), variables cbWidth and cbHeight are called as inputs. The output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is 0, the following applies: Used 1. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 2. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set to 0, rightShift set to 1 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 3. The luminance motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) Note 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0181] History-based motion vector predictor list update processing as specified in Section 8.6.2.6 The process is invoked using the luminance motion vector mvL. [ka]
[0182] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding a coding unit that was coded in ibc prediction mode. It is served.
[0183] The inputs to this process are: - the top left sample of the current coding block relative to the top left luma sample of the current picture The luminance position (xCb, yCb) that defines the - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples , [ka]
[0184] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. Position to be specified (xCurr, yCurr), - Variables nCurrSw and nCu that define the width and height of the current block, respectively rrSh, - variable cIdx, which specifies the color component of the current block, - (nCurrSw) x (nCurrSh) specifies the predicted sample of the current block array predSamples, - (nCurrSw) x (nCurrSh) array specifying the residual samples of the current block Column resSamples.
[0185] The output of this process is the reconstructed picture sample arrays recSamples and IBC buffer array ibcBuf L , ibcBuf Cb , ibcBuf Cr is.
[0186] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array SL, and the function clipCidx1 corresponds to Clip1 YCorresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C to handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cr The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0187] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, then the position (xCu (nCurrSw) of the reconstructed samples recSamples in (rr,yCurr) ×(nCurrSh) block is i=0..nCurrSw-1,j=0..nCur For rSh-1, it is derived as follows: recSamples[xCurr+i][yCurr+j]=clipCidx1( predSamples[i][j]+resSamples[i][j]) (8- 992) - Otherwise (slice_lmcs_enabled_flag is equal to 1) , the following applies: - If cIdx is equal to 0, the following applies: - pixel samples with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the input array resSamples and outputs the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples The position of the roma (xCurr, yCurr), the width nCurrSw and height n of the transformation block CurrSh, the coding block flag for the current chroma transform block tuCbfChrom a, predicted chrominance sample array predSamples, residual chrominance sample array resS It is called with recSamp as input and returns the reconstructed chroma sample array. The output is les. [ka]
[0188] 5.20 Embodiment #20 In this specification, the changes in some examples are shown in bold, underlined, and italicized type. .
[0189] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax
[0190] [Table 12]
[0191] 7.4.8.5 Coding Unit Syntax If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 to add the history to the shared merge candidate list area. The underlying motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0192] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- 1 is assigned as follows: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138) [ka]
[0193] 8.6.2 Derivation of motion vector components for IBC blocks 8.6.2.1 General The inputs to this process are: - The top-left sample of the current luma coding block relative to the top-left luma sample of the current picture. the luminance position of the sample (xCb, yCb), - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples .
[0194] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample precision mvL.
[0195] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in Section 8.6.2.2 is (xCb,yCb), variables cbWidth and cbHeight are called as inputs. The output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is equal to 0, The following applies 1. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 2. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set to 0, rightShift set to 1 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 3. The luminance motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) Note 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0196] History-based motion vector predictor list update processing as specified in Section 8.6.2.6 The process is invoked using the luminance motion vector mvL. [ka]
[0197] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding a coding unit that was coded in ibc prediction mode. It is served.
[0198] The inputs to this process are: - the top left sample of the current coding block relative to the top left luma sample of the current picture The luminance position (xCb, yCb) that defines the - a variable cbWidth that specifies the width of the current coding block in luma samples, - variable cbHeight that specifies the height of the current coding block in luma samples , - a variable cIdx that specifies the color component index of the current block, [ka]
[0199] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. Position to be specified (xCurr, yCurr), - Variables nCurrSw and nCu that define the width and height of the current block, respectively rrSh, - variable cIdx, which specifies the color component of the current block, - (nCurrSw) x (nCurrSh) specifies the predicted sample of the current block array predSamples, - (nCurrSw) x (nCurrSh) array specifying the residual samples of the current block Column resSamples. [ka]
[0200] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C to handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0201] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, then the position (xCu (nCurrSw) of the reconstructed samples recSamples in (rr,yCurr) The x(nCurrSh) block is i=0..nCurrSw-1,j=0..nCur For rSh-1, it is derived as follows: recSamples[xCurr+i][yCurr+j]=clipCidx1 (predSamples[i][j]+resSamples[i][j]) (8 -992) - Otherwise (slice_lmcs_enabled_flag is equal to 1) , the following applies: - If cIdx is equal to 0, the following applies: - pixel samples with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the input array resSamples and outputs the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples Chroma position (xCurr, yCurr), width nCurrSw and height of the transformation block nCurrSh, coding block flag of the current chroma transformation block tuCbfChro ma, predicted chrominance sample array predSamples, residual chrominance sample array res Samples is called with the reconstructed chroma sample array recSam as input. ples as the output. [ka]
[0202] FIG. 6 is a flow chart illustrating an example of an exemplary method for processing visual media (video or images). The method 600 is a bitstream of the current video block. The current image is encoded using the intra-block copy coding mode for conversion to and from the image representation. determining a buffer size for storing reference samples for the image block (602); , and perform this transformation using the reference samples stored in this buffer (604). include.
[0203] The following sections provide some example implementations of the method 600 and other methods. Additional examples are provided in Section 4 of this specification.
[0204] 1. Between a current video block and a bitstream representation of the current video block , the current video block is transformed using an intra block copying coding mode. determining a buffer size for storing reference samples for the and performing the transformation using the reference samples obtained.
[0205] 2. The method of claim 1, wherein the buffer size is a predetermined constant.
[0206] 3. Any of items 1 to 2, wherein the size is M×N, and M and N are integers. The method described above.
[0207] 4. M × N is equal to 64 × 64 or 128 × 128 or 64 × 128, the third term The method described below.
[0208] 5. The buffer size is the size of the coding tree unit of the current video block. The method of claim 1, which is equal to
[0209] 6. The buffer size is the virtual pipeline data unit used for the transformation. The method described in paragraph 1 is equal to the size of
[0210] 7. The buffer size is specified in a field in the bitstream representation. The corresponding method according to paragraph 1.
[0211] 8. The field is a video parameter set, a sequence parameter set, or Picture parameter set, or picture header, slice header, or tile group 8. The method of claim 7, included in a bitstream representation at group header level.
[0212] 9. The size of the buffer is determined based on the number of reference samples for the luma component and the number of reference samples for the chroma component. 9. The method according to any one of items 1 to 8, wherein the method is different from the pull method.
[0213] 10. The size of the buffer is determined based on the chroma subsampled value of the current video block. 9. The method according to any one of items 1 to 8, which depends on the encoding format.
[0214] 11. Any of paragraphs 1 to 8, wherein the reference samples are stored in RGB format. The method described below.
[0215] 12. The buffer includes a pre-loop filtering and a post-loop filtering regenerator. 12. The method according to any one of claims 1 to 11, used for storing configuration samples.
[0216] 13. Loop filtering can be deblocking or adaptive loop filtering. Filtering (ALF), or Sample Adaptive Offset (SAO) filtering 13. The method according to claim 12.
[0217] 14. Between a current video block and a bitstream representation of the current video block For the conversion in the intra block copying coding model, the initial value of the reference sample is used. and initialize a buffer that stores reference samples for the current video block using the and performing the conversion using the reference samples stored in the buffer. and a video processing method including:
[0218] 15. The method of claim 14, wherein the initial value corresponds to a constant.
[0219] 16. The initial value is a function of the bit depth of the current video block. Item 10. The method according to any one of the preceding items.
[0220] 17. The method of claim 15, wherein the constant corresponds to a median gray value.
[0221] 18. The initial values correspond to pixel values of a previously decoded video block. The method described below.
[0222] 19. The previously decoded video block is the decoded block before in-loop filtering. 19. The method of claim 18, corresponding to the selected block.
[0223] 20. The buffer size is one of items 1 to 13, items 14 to 19 Item 10. The method according to any one of the preceding items.
[0224] 21. The x and y numbers are used to address pixel locations within the buffer. The method according to any one of items 1 to 20,
[0225] 22. Represent pixel locations within the buffer using a single number ranging from 0 to M*N-1. where M and N are the pixel width and pixel height of the buffer. 10. The method according to any one of the preceding paragraphs.
[0226] 23. The current bitstream representation includes block vectors for said transform; The block vector represented as (BVx, BVy) is converted to (x-x0, y-y0). (x0, y0) is the top left position of the coding tree unit of the current video block. 21. The method according to any one of items 1 to 20, corresponding to
[0227] 24. The current bitstream representation includes block vectors for said transform; The block vector, represented as (BVx,BVy), is expressed as (x-x0+Tx,yy 0+Ty), and (x0, y0) is the coding tree unit of the current video block. Tx and Ty correspond to the upper left position of the target, and are offset values. The method described above.
[0228] 25. The method of claim 24, wherein Tx and Ty are predefined offset values. .
[0229] 26. During the transformation, there is a block vector (BVx,BV For a pixel with a reference position (x0+BV), the corresponding reference in the buffer is x, y0+BVy).
[0230] 27. If the reference position is outside the buffer, is determined by clipping at the boundaries of the buffer. method.
[0231] 28. If the reference position is outside the buffer, 27. The method of claim 26, wherein is determined to have a predetermined value.
[0232] 29. During the transformation, there is a block vector (BVx,BV For a pixel with a reference position (x0+B Vx) mod M, (y0+BVy) mod N), where "mod" is the model where M and N are integers representing the x and y dimensions of the buffer. The method according to any one of claims 1 to 20.
[0233] 30. During conversion between the video and the bitstream representation of the current video block, A buffer for storing reference samples for intra-block copying coding at boundaries is provided. Reset and use the reference sample stored in this buffer to perform this conversion. and a video processing method comprising:
[0234] 31. The image boundary corresponds to a new picture or a new tile. The method described.
[0235] 32. The transformation, after the reset, converts the buffer into a virtual pipeline data unit. 30, by updating the VPDU with the reconstructed value. method.
[0236] 33. The transformation, after the reset, converts the buffer to a reconstructed coding tree unit. 31. The method of claim 30, wherein the method is performed by updating the value of the generated value.
[0237] 34. The method according to claim 30, wherein the resetting is performed at the beginning of each coding tree unit row. How to do it.
[0238] 35. The size of the buffer is set to L previously decoded blocks of 64x64. 2. The method of claim 1, wherein L is an integer.
[0239] 36. To read or store samples in the buffer during the conversion: 36. The method of any of clauses 1 to 35, wherein a vertical scan order is used.
[0240] 37. Between a current video block and a bitstream representation of the current video block. Intra block copying coding mode is used to convert the current image block a buffer for storing reference samples for the block, The first bit depth of the encoded data is different from the second bit depth of the encoded data. and performing the conversion using the reference samples stored in the buffer. and a video processing method comprising:
[0241] 38. The method of claim 37, wherein the first bit depth is greater than the second bit depth. How to do it.
[0242] 39. The first bit depth is the bit depth of a reconstruction buffer used during conversion. The method according to any one of claims 37 to 38, which is the same.
[0243] 40. The method according to any one of claims 37 to 39, wherein the first bit depth is signaled as a value or a difference value in the bitstream representation. The method according to any one of claims 37 to 39, wherein the first bit depth is signaled as a value or a difference value in the bitstream representation.
[0244] 41. The method according to any one of claims 37 to 40, wherein the conversion uses different bit depths for chroma and luminance components. The method according to any one of claims 37 to 40, wherein the conversion uses different bit depths for chroma and luminance components.
[0245] Additional embodiments and examples up to claims 37 to 41 are described in item 7 of Chapter 4. are described in item 7 of Chapter 4.
[0246] 42. A video processing method, comprising performing a conversion between a current video block and a bitstream representation of the current video block using an intra block copy mode, wherein a first accuracy used for prediction calculation during the conversion is lower than a second accuracy used for reconstruction calculation during the conversion. A video processing method, comprising performing a conversion between a current video block and a bitstream representation of the current video block using an intra block copy mode, wherein a first accuracy used for prediction calculation during the conversion is lower than a second accuracy used for reconstruction calculation during the conversion. A video processing method, comprising performing a conversion between a current video block and a bitstream representation of the current video block using an intra block copy mode, wherein a first accuracy used for prediction calculation during the conversion is lower than a second accuracy used for reconstruction calculation during the conversion. A video processing method, comprising performing a conversion between a current video block and a bitstream representation of the current video block using an intra block copy mode, wherein a first accuracy used for prediction calculation during the conversion is lower than a second accuracy used for reconstruction calculation during the conversion.
[0247] 43. The method according to claim 43, wherein the prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the prediction sample accuracy. The method according to claim 43, wherein the prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - l} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the prediction sample accuracy. The method according to claim 43, wherein the prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the prediction sample accuracy. The method according to claim 43, wherein the prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the prediction sample accuracy.
[0248] Additional embodiments and examples up to claims 42 to 43 are described in items 28 to 31, and item 34 of Chapter 4. are described in items 28 to 31, and item 34 of Chapter 4.
[0249] 44. A method of using an intra block copy mode to perform a conversion between a current video block and a bitstream representation of the current video block The size nM × nM is The encoding tree unit size is M×M, n and N are integers, and the current image is The image block is located in the coding tree unit, and the reference region is the current The nearest available nxn coding tree unit corresponding to the video block. -unit, image processing method.
[0250] Additional embodiments and examples of Section 4 are provided in Chapter 4, Section 35.
[0251] 45. Use the intrablock copy mode to copy the current video block to the current video block. The size nM × nM is The encryption tree unit size is used other than M×M, and n and N are integers. The current video block is located in the coding tree unit, and the reference region is The nearest available n×n-1 coding tree unit corresponding to the current video block. A video processing method that is a coding tree unit.
[0252] Additional embodiments and examples of Section 4 are described in Chapter 4, Section 36. Further exemplary embodiments are shown in FIGS.
[0253] 46. M=mW, N=H, where W and H are the coding tree of the current video block. 4. The method according to claim 3, wherein m is the width and height of the unit (CTU), and m is a positive integer. Law.
[0254] 47. M=W and N=nH, where W and H are coding tree units (CTUs). 4. The method of claim 3, wherein n is a width and height of the image, and n is a positive integer.
[0255] 48. M=mW, N=nH, where W and H are coding tree units (CTUs). 4. The method of claim 3, wherein m and n are the width and height of the image, respectively, and m and n are positive integers.
[0256] 49. The method according to any one of claims 46 to 48, wherein n and m depend on the size of the CTU. How to do it.
[0257] 50. Between the current video block and the bitstream representation of the current video block For the transformation, the component X of the image is used to transform the current image block of the component c of the image. determining the validity of the corresponding block vector, determining whether the block vector is different from the luminance component of the current image block; When it is determined that the block vector is valid for and a block vector represented as (BVx, BVy) is (x-x0,y-y0), where (x0,y0) is the coding tree of the current video block. -Corresponds to the top left position of the unit.
[0258] 51. The method of clause 50, wherein the component c corresponds to a luminance component of the image.
[0259] 52. The current image block is a chroma block, and the image is in 4:4:4 format. 51. The method of claim 50, wherein the compound is a hydroxybenzoate.
[0260] 53. The video is in 4:2:0 format, and the current video block is at position (x, y), and the determining is Vx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32) , ((y+BVy)>>5<<5)+(y%32)) is true 51. The method of claim 50, comprising determining that the check vector is invalid.
[0261] 54. The video is in 4:2:0 format, and the current video block is at position (x, y), and the determining is x+Chroma_CTU_size,y) is true, 51. The method of claim 50, further comprising determining that the vector is invalid.
[0262] 55. Current video of the current virtual pipeline data unit (VPDU) in the video area Selective conversion between the block and the bitstream representation of the current video block. , K1, which is the preprocessed VPDU from the first row of the video area, and K2, which is the preprocessed VPDU from the second row. The method involves determining whether to use K2, which is a VPDU, and converting it. The conversion excludes the use of the remainder of the current VPDU, and includes the conversion. Image processing methods.
[0263] 56. The method of claim 55, wherein K1=1 and K2=2.
[0264] 57. The current video block is the size of the video area or the current VPDU. 57. The method of claim 55-56, wherein the processing is selectively based on size.
[0265] 58. A method for decoding a current video block and a bitstream representation of the current video block. performing a validity check of a block vector for conversion between said block vectors; The vector is used in intra-block copy mode and is subject to validity checks. the result of the validity check is used to selectively use the block vectors during the transformation. and using the image processing method.
[0266] 59. An intra-block copy (IBC) buffer is used during the transformation, and the IBC C Let Wbuf and Hbuf be the width and height of the buffer, respectively. is W × H, and the block vector is expressed as (BVx, BVy), and the current A video block is in the current picture with dimensions Wpic and Hpic and is coded The tree unit has width and height Wctu and height Hctu. 59. The method of claim 58, wherein the check uses predetermined rules.
[0267] 60. The current image block may include a luminance block, a chroma block, and a coding unit. CU, transformation unit TU, 4x4 block, 2x2 block, or pixel coordinates (X,Y) 59. The method according to any one of items 58 to 59, wherein the block is a subblock of a parent block starting from
[0268] 61. The validity check determines whether the block vector is outside the boundaries of the current picture. 61. The method of any one of paragraphs 58 to 60, wherein the torque is deemed to be valid.
[0269] 62. The validity check is performed for block vectors that are outside the boundaries of a coding tree unit. 61. The method according to any one of paragraphs 58 to 60, wherein the rule is deemed valid.
[0270] Paragraphs 23 to 30 of the previous chapter provide additional examples and variations of paragraphs 58 to 62 above.
[0271] 63. The transform generates the bitstream representation from the current video block. 63. The method according to any one of items 1 to 62, comprising:
[0272] 64. The conversion is performed by converting pixel values of the current video block from the bitstream representation. Item 63. The method of any one of items 1 to 62, comprising producing
[0273] 65. A processing device configured to implement the method of one or more of claims 1 to 62. A video encoder device comprising:
[0274] 66. A processing device configured to implement the method according to one or more of paragraphs 1 to 62. A video decoder device.
[0275] 67. A computer-readable medium having stored thereon a code, the code being a number from 1 to 62. Executing processor-executable instructions for implementing the methods of any one or more of the claims. A computer-readable medium.
[0276] FIG. 7 is a block diagram showing the hardware platform of a video / image processing device 700. The apparatus 700 may be used to implement one or more of the methods described herein. The device 700 may be a smartphone, a tablet, a computer, an IoT (Internet The apparatus 700 may be implemented by one or more a processor 702, one or more memories 704, and video processing hardware 706. The one or more processing units 702 may include one or more of the methods described herein. The method may be configured to implement methods (including, but not limited to, method 600). The memory(s) 704 are used to implement the methods and techniques described herein. The video processing hardware 706 may be used to store data and code to be processed. may be used to implement the techniques described herein in hardware circuitry.
[0277] The bitstream representation corresponding to the current video block is a contiguous set of bits. It does not need to be a header, parameter set, and Network Abstraction Layer (NAL) packet. The data may be distributed across multiple servers.
[0278] Section A: Additional Exemplary Embodiments
[0279] In Section A, the VVC standard is used to implement some of the techniques described herein. Another exemplary embodiment is presented in which the current version of the case may be modified.
[0280] In this section, we analyze some of the issues in the current IBC reference buffer design and We present a different design to address these issues. Instead of mixing in the decoding memory, In this paper, an independent IBC reference buffer is proposed. Compared with the current anchor, the proposed The team is Class F with AI / RA / LD-B of -0.99% / -0.71% / -0.79%. The brightness BD ratio of 4:2:0 TGM is -2.57% / -1.81% / -1.36%. A 6.7% memory decrease, or -1.31% / -1.01% / -0 for class F. 81%, 4:2:0 TGM -3.23% / -2.33% / -1.71%, 6.7 This shows a % memory increase.
[0281] A1. Introduction Intra Block Copy, i.e. IBC (or Current Picture Reference, i.e. Previous CP R) coding mode is adopted. Note that IBC reference samples are stored in on-chip memory. Therefore, a limited reference area of one CTU is defined. To limit the amount of extra on-chip memory required, the current design uses 64x64 memory. The memory required to support IBC is reused to decode the current VPDU. is only three additional 64x64 blocks of memory. The current reference region for the case of 8 is shown in Figure 2.
[0282] In the current draft (VVC Draft 4), area is defined as follows:
[0283] [Table 13]
[0284] Thus, the total reference size is the CTU.
[0285] A2. Potential issues with the current design The current design reuses 64x64 memory to decode the current VPDU. Assuming this, the IBC standard is adapted to VPDU memory reuse accordingly. In this design, the VPDU decoding memory is bundled with the IBC buffer. can be. 1. Handling smaller CTU sizes can be problematic. 32x32, the current 64x64 memory that decodes the current VPDU is different. It can efficiently support 32x32 level memory reclamation in various architectures. It is unclear whether this is the case. 2. The reference regions are significantly different, so there are too many bitstream conformance Constraints are introduced to ensure efficient use of the reference area and legal bitstreams. In order to avoid generating a different module, For example, the probability of having invalid BVs in the merge list increases. Handling this may introduce extra logic or extra conformance constraints This not only puts a burden on the encoder or decoder, but also This may cause discrepancies between the encoding and the 3. The design does not scale well. VPDU decoding is mixed with the IBC buffer. Therefore, it is not possible to increase or decrease the reference area for the current single 128x128 CTU design. It is not easy. Utilizing the exploiting the trade-off between better coding efficiency and on-chip memory during development This may limit the flexibility required for 4. The bit depth of the IBC reference buffer is connected to the decoding buffer. The bit depth of the lean content is smaller than the bit depth of the internal decoding, but the buffer Still used to store bits that represent mostly rounded and quantized noise. This problem becomes more serious when considering higher decoding bit depth configurations. becomes even more serious.
[0286] A3. Clear IBC buffer design To address the issues described in the above subsection, we use a decoded memory and a mixed We propose to have a dedicated IBC buffer that is not
[0287] For a 128x128 CTU, the buffer is 128x128 containing 8-bit samples. Once a CU(x,y) of size w × h has been decoded, the loop filter The buffer before restructuring is converted to 8-bit and starts from position (x%128,y%128). The modulo operator % always returns a positive number. That is, if x<0 and x%L is defined as -(-x%L), then, for example, -3%128=12 It is 5.
[0288] Assume that pixel (x,y) is coded in IBC mode with BV=(BVx,BVy). and the predicted samples in the IBC reference buffer are ((x+BVx)%128, (y+B Vy)%128), and pixel values are converted to 10-bit before prediction.
[0289] If we consider the buffer as (W,H), we decode the CTU or CU starting at (x,y). Then, the reconstructed pixels before loop filtering are Thus, after decoding a CTU, the corresponding IBC reference buffer is These settings will be updated accordingly if the CTU size is not 128x128. For example, in the case of 64x64 CTU, the current buffer size is It can be considered as a 256x64 buffer. Buffer state for 64x64 CTU This is shown in Figure 2.
[0290] Figure 12 shows the IBC reference buffer status. One block is 64x6 Indicates 4 CTU.
[0291] In such a design, the IBC buffer is different from the VPDU decoding memory, so All IBC reference buffers can be used as references.
[0292] If the IBC buffer bit depth is 8 bits, then three additional 10-bit 64x6 Compared to the current design, which requires 4 buffers, the increase in on-chip memory is (8*4) / ( 10*3)-100%=6.7%.
[0293] Further reductions in bit depth can further reduce memory requirements. For example, For a 7-bit buffer, the on-chip memory savings is 100%-(7*4) / (10* 3)=6.7%.
[0294] In this design, the only bitstream compatibility constraint is that the reference block must be in the current tile. The point is that the current CTU row should be within the reconstructed region of the current CTU row.
[0295] If initialization to 512 is allowed at the start of each CTU row, all bitstreams The compatibility constraint can be removed.
[0296] A4. Experimental results In some embodiments, the disclosed methods use VTM-4.0 software. It may be implemented as
[0297] For 10-bit buffer implementations and CTC, this decoder supports the current VTM4.0 emulator. This means that the proposed decoder is fully compatible with VTM-4.0. This means that the CTC bitstream can be decoded correctly.
[0298] A 7-bit buffer implementation gives the results shown in Table 1.
[0299] For the 8-bit buffer implementation, the results are shown in Table 2.
[0300] [Table 14]
[0301] [Table 15]
[0302] FIG. 17 illustrates an exemplary video processing system in which various techniques disclosed herein may be implemented. 17. A block diagram of system 1700 is shown. Various implementations of the modules of system 1700 The system 1700 may include an input for receiving video content. The video content may include a video output unit 2802. The video content may be in a raw or uncompressed format. , for example, may be received as 8 or 10 bit multi-module pixel values, or may be compressed or The input unit 1702 may receive the network interface signal in an encoded format. It may represent a memory interface, a peripheral bus interface, or a storage interface. Examples of network interfaces are Ethernet, passive optical networks, Wired interfaces such as Passive Optical Network (PON) and Wi-Fi or cellular - including wireless interfaces such as an interface.
[0303] The system 1700 may implement various encoding or encoding methods described herein. The encoding module 1704 may include an encoding module 1704 that can encode an input The average bit rate of the video from the input unit 1702 is output to the encoding module 1704. This encoding technique may thus be referred to as video compression or This is sometimes called video transcoding technology. The output of the encoding module 1704 is The data may be stored in the memory or transmitted via a connected communication channel, as represented by module 1706. The data received, stored or communicated at the input unit 1702 may be transmitted. The bitstream (or coded) representation of the video is used by module 1708. to generate pixel values or displayable images that are sent to the display interface unit 1710. The process of generating a user-viewable image from a bitstream representation. Furthermore, certain video processing operations are sometimes called "encoding." Although we refer to "encoding" operations or tools, encoding tools or operations are encoders and their corresponding It is understood that a decoding tool or operation is performed by the decoder that reverses the result of the decoding. Let's solve it.
[0304] An example of a peripheral bus interface unit or a display interface unit is a Universal Serial Bus (USB) or High-Definition Multimedia Interface (HDMI) I (registered trademark) or DisplayPort, etc. Examples of interfaces include Serial Advanced Technology Attachment (SATA), PCI, The technology described in this specification is applicable to mobile phones, laptops, etc. computer, smartphone, or other device capable of digital data processing and / or image display The present invention may be implemented in a variety of electronic devices, such as a mobile phone.
[0305] FIG. 18 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example 23 in Chapter 4 of this application. In this case, the process is performed by dividing the current video block of the current picture of the video media data by the current video block of the current picture. For conversion to and from the bitstream representation of a video block, the block vector (BVx,B Vy), and the validity of the block vector is determined by: (1) the position of the sample block (P ,Q), and / or (2) whether to reconstruct the sample at position (P,Q), and and / or (3) the block vector (BVx, BVy) represents the pixel displacement between the current video block and the sample block. At 1804, the process uses the block vector to calculate the current image block. the current video block, including the reference samples used to derive the predicted block of Transformation in intra-block copy mode based on reconstruction blocks located in the same image area During the transformation, a prediction having a position (A, B) from a reference sample in the buffer is performed. Samples are stored in a buffer of at least the size of the buffer and / or the block vector (BVx,B Vy).
[0306] FIG. 19 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example 23 in Chapter 4 of this application. wherein the processing is performed by comparing a current video block of a current picture of the visual media data with the Supports current video blocks for conversion to and from bitstream representations of visual media data. Determine whether the block vector (BVx,BVy) is valid according to the rules, The block vector (BVx, BVy) is the current image block and the sample block. In step 1904, the process calculates a block vector a reference subsequence used to derive a prediction block for the current video block using the The transformation is based on a reference region from the current picture containing the block. The block vector (BVx,BVy) is (1) one or more samples from this sample block The pull is outside this current picture and / or (2) from the sample block one or more samples of at least one encoding associated with the current video block outside the tree unit (CTU), and / or (3) from the sample block. Enabled if one or more samples in the fails to reconstruct.
[0307] FIG. 20 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example 44 in Chapter 4 of this application. The process then compares the current video block of the current picture of the visual media data with the visual converting to and from a bitstream representation of media data, said conversion being from the current picture containing the reference samples used to derive the predicted block of the Based on the reference region, a virtual buffer of a defined size is used to derive the predicted block. Used to track the availability of reference samples.
[0308] FIG. 21 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example 51 in Chapter 4 of this application. wherein the processing is performed by combining a current video block of a current picture of the visual media data with a visual media Prediction blocks of the current video block are used for conversion to and from the bitstream representation of the video data. It is possible to maintain a buffer containing reference samples from the current picture to derive the frame rate. and one or more reference samples in the buffer marked as unavailable for said derivation. has a value outside the range of pixel values.
[0309] FIG. 22 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example 54 in Chapter 4 of this application. In this case, the process includes: The current picture of the visual media data is generated using a buffer containing reference samples from the and converting between the video blocks of the visual media data and a bitstream representation of the visual media data. The conversion is performed by adjusting the reference subscripts in the buffer so that the bitstream representation conforms to the rules. based on rules that specify that samples must meet bitstream conformance constraints .
[0310] Some embodiments of this specification are presented in a section-based format.
[0311] L1. A visual media processing method, comprising: The current video block of the current picture of the video media data and the video of the current video block Determine the block vectors (BVx, BVy) for conversion to and from the bitstream representation. The validity of the block vector is determined by: (1) the position of the sample block (P, Q), and / or (2) whether to reconstruct the sample at position (P,Q), and / or (3) the block vector (BVx,B Vy) represents the pixel displacement between the current video block and the sample block. And, deriving a prediction block for a current video block using the block vector; A reconstruction located in the same video region as the current video block, containing the reference samples used for performing a block-based intra-block copy mode transformation, In the meantime, the predicted sample with position (A, B) from the reference sample in the buffer is At least based on the size of the buffer and / or the block vector (BVx, BVy) determining, and performing the transformation.
[0312] L2. A visual media processing method, comprising: a current video block of a current picture of visual media data and the visual media data The block vector corresponding to the current video block is used for conversion to and from the bitstream representation of the Determining whether the torque (BVx, BVy) is valid according to the rules, The block vector (BVx, BVy) is the current image block and the sample block representing pixel displacements between Using the block vector, derive a prediction block for the current video block. a transformation based on a reference region from the current picture that contains the reference samples used for The rule includes: (1) performing a block vector (BVx, BVy) such that One or more samples from the sample block are outside this current picture, and / or or (2) one or more samples from the sample block are related to the current video block. outside at least one associated coding tree unit (CTU), and / or or (3) valid when one or more samples from a sample block fail to be reconstructed. A more effective way to process visual media.
[0313] L3. If the block vector (BVx, BVy) is determined to be valid, At least the size of the buffer and / or the size of the block vector (BVx,BVy) Determine the predicted sample with position (A,B) from the reference sample in the buffer according to , the method described in clause L2.
[0314] L4. The reference samples in the buffer are compared to the reconstructed samples of the area of the current picture. The method according to any one or more of items L1 or L3.
[0315] L5. The region is the coding tree unit (CT) associated with the current video block. The method described in item L4, including line U).
[0316] L6. The block vector (BVx, BVy) and the top left position of the current image block The position (P,Q) calculated based on the position (x,y) is outside the boundary of one picture. The block vector (BVx, BVy) is determined to be valid regardless of whether The method according to any one or more of items L1 to L5.
[0317] L7. Whether x+BVx<0 or x+BVx>0, block base The method according to item L6, wherein the vector (BVx, BVy) is valid.
[0318] L8. Block vector (BVx, BVy) is x+W+BVx>W pic or x+ W+BVx <W pic where W is the current image represents the width of the image block, W pic represents the width of the picture.
[0319] L9. Block vector (BVx, BVy) is either y+BVy<0 or y+B The method according to item L6, which is valid regardless of Vy>0.
[0320] L10. Block vector (BVx, BVy) is x+H+BVx>H pic or x +H+BVx <H pic wherein H is the current It represents the height of the video block, H pic represents the height of the picture, method.
[0321] L11. The block vector (BVx, BVy) and the upper left corner of the current image block The position (P, Q) calculated based on the position (x, y) corresponds to one of the current video blocks. The block vector (BVx , BVy) is effective.
[0322] L12.y+BVy <floor(y / H ctu )*H ctu Or y+BVy>f loor(y / H ctu )*H ctu block vectors (BVx, BVy) is valid and H ctu represents the height of the coding tree unit, and floor( The method according to item L11, wherein a) is the largest integer equal to or less than a.
[0323] L13.y+H+BVy <floor(y / H ctu )*Hctu Or y+H+B Vy>floor(y / H ctu )*H ctu block vector ( BVx, BVy) is valid, H represents the height of the current image block, and H ctu teeth ,represents the height of the coding tree unit, and floor(a) is the largest integer less than or equal to a. The method described in item L11.
[0324] L14. The block vector (BVx, BVy) and the upper left corner of the current image block The position (P,Q) calculated according to the position (x,y) is the current image block and the left outside the coding tree unit containing (n-1) coding tree units along Whether the block vector (BVx, BVy) is valid or not, item L The method according to any one or more of 1 to L5.
[0325] L15.x+BVx <floor(x / W ctu )*W ctu -(n-1)*W ctu or x+BVx>floor(X / W ctu )*W ctu -(n-1)*W ctu Noi Regardless of the offset, the block vector (BVx, BVy) is valid and W ctu indicates the weight of the coding tree unit, and floor(a) is the largest integer less than or equal to a. The method according to item L14.
[0326] L16.x+W+BVx>floor(X / W ctu )*W ctu +W ctu or x +W+BVx <floor(X / W ctu )*Wctu +W ctu Regardless of whether Regardless of the block vector, the block vector (BVx, BVy) is valid, and W is the coding tree unit. Indicates the weight of the knit, W ctu indicates the weight of the current video block, and floor( The method according to item L14, wherein a) is the largest integer equal to or less than a.
[0327] L17. The block vector (BVx, BVy) and the upper left corner of the current image block The position (P, Q) calculated based on the position (x, y) is the current image block including the current image block. The block is located outside the CTU row containing the coding tree unit. The vector (BVx, BVy) is valid and is described in one or more of items L1 to L5. How to do it.
[0328] L18. The block vector (BVx, BVy) is Y+BVy <floor(Y / H ctu )*H ctu or Y+H+BVy>=floor(Y / H ctu )*H ctu +H ctu where W ctu and H ctu are CTUs, respectively. The width and height of the floor are indicated by the following formula: floor(a) is the largest integer less than or equal to a, as described in item L17. How to post.
[0329] L19. Whether the reconstruction of the sample failed or not, the block vector (BVx , BVy) is determined to be effective, .
[0330] L20. Block vector (BVx, BVy) is isRec(x+BVx, y+BV y) is false, and pixel (x,y) is an intrablock copy. If the reconstructed data is in the reconstructed mode, isRec(x,y) is true. How to post.
[0331] L21. Block vector (BVx, BVy) is isRec(x+BVx+W-1, y+BVy) is valid whether or not the pixel (x,y) is intrablock. When reconstructed by the backcopy mode, isRec(x,y) is true and W is the The method described in item L19, wherein the width of the current video block.
[0332] L22. Block vector (BVx, BVy) is isRec(x+BVx, y+BV y+H-1) is valid regardless of whether the pixel (x,y) is intrablock. If the image is reconstructed by the copy mode, isRec(x,y) is true and H is the previous The method described in item L19, wherein the height of the current video block.
[0333] L23. Block vector (BVx, BVy) is isRec(x+BVx+W-1, y+BVy+H-1) is valid whether or not the pixel (x,y) is If the block is reconstructed by the block copy mode, isRec(x,y) is true. , W denotes the width of the current video block, and H is the height of the current video block. , the method described in item L19.
[0334] L24. The current video block is included in the first coding tree unit of a coding tree unit row. The block vector (BVx, BVy) is determined to be valid regardless of whether it is The method according to any one or more of items L1 to L5.
[0335] L25.(i)x+BVx>=0,(ii)y+BVy>=floor(y / H ctu ), (iii) isRec(x+BVx+W-1, y+BVy+H-1) is true, and A block vector (BVx, BVy) is valid when all of the following conditions are met: isRec(x,y) is the value of the sample (x,y) in the intra-block copy mode. is true if the video is being reconstructed in the current video block, W is the width of the current video block, and H is the indicates the height of the video block, and floor(a) is the largest integer less than or equal to a. The method according to any one or more of L5.
[0336] L26. The block vector is located in the first CTU in the CTU row. 25. The method described in
[0337] L27. Buffer size, block vector (BVx, BVy), and top-left position The method according to item L3, which determines the predicted sample at position (A, B) based on (x, y). Law.
[0338] L28. The predicted sample with location (A,B) is ((X+BVx)%W buf ,( Y+BVy)%H buf ), and W bu f and H buf are the buffer width and buffer height, respectively. The method described below.
[0339] L29. The conversion is performed in intra-block copy mode. The method according to any one or more of the preceding claims.
[0340] M1. A visual media processing method, comprising: The current video block of the current picture of the visual media data and the converting the data to and from a bitstream representation of the data; The transform is a reference sample used to derive a prediction block for the current video block. The pull is based on a reference region from the current picture, A virtual buffer of a defined size stores the reference samples for deriving the predicted block. A visual media processing method used to track pull availability.
[0341] M2. The virtual buffer uses a virtual pipeline data unit (VPDU). The size of the virtual buffer is maintained as m*W VPDU ×n*H VPDU and W VP DU and H VPDU indicates the width and height of the VPDU.
[0342] M3. The method according to item M2, wherein m=4 and n=2.
[0343] M4.m and / or n are the picture resolutions associated with the current video block or based at least in part on the size of the coding tree unit that contains the current video block. The method according to item M2.
[0344] The method according to item M2, wherein M5.m and / or are predefined quantities.
[0345] M6.m and / or signaled as fields in the bitstream representation The method according to item M2.
[0346] M7. The samples in the current video block are (x%(m*W)) in the virtual buffer. VPD U ),y%(n*H VPDU )) where The sample is located at (x,y) relative to the top left corner of the picture, and "x%y" means that y=xy *floor(x / y), where floor(a) is the largest integer less than or equal to a, and W V PDU and H VPDU indicates the width and height of the VPDU.
[0347] M8. The method according to item M1, Use an array to track the availability of samples stored in a virtual buffer. Further comprising: a method.
[0348] M9. The array is configured such that one or more samples stored in the buffer are intra-blot. The value in item M8 contains a flag to indicate whether the value is used for prediction in copy mode. How to post.
[0349] M10. The array corresponds to one or more VPDUs of size 3x2, as described in item M8. How to post.
[0350] M11. The array corresponds to one or more VPDUs of size 4x2, as described in item M8. How to post.
[0351] M12. Mark a subset of samples stored in the virtual buffer as unavailable for prediction. and flagging the same, as described in item M1.
[0352] M13. The subset of samples flagged as unavailable for prediction is The method according to item M12 is based on the position of the processed VPDU.
[0353] M14. The sample is flagged as unavailable at the start of processing the VPDU. The method according to item M13.
[0354] M15.yPrevVPDU%(n*H VPDU ) is 0, then at position (x,y) A subset of samples located at x is flagged as unavailable, where x is the first and y is within a second predetermined range, and (xPrevVPDU, yPr evVPDU) represents the top left corner of the coding tree unit of the recently processed VPDU, and W VPDU and H VPDU The method according to item M14, wherein represents the width and height of the VPDU.
[0355] M16. The first range is [xPrevVPDU-2W VPDU +2mW VPDU ) %mW VPDU ,((xPrevVPDU-2*W VPDU +2*m*W VPDU )%( m*W VPDU ))-1+W VPDU ] and the second range is represented as [yPrevVP DU%(n*H VPDU ),(yPrevVPDU%(n*H VPDU ))-1+H VP DU ] The method described in item M15.
[0356] M17. The first range is [xPrevVPDU-2*W VPDU +2*m*W VP DU)%mW VPDU ,((xPrevVPDU-2*W VPDU +2*m*W VPDU )%(m*W VPDU ))-1+W VPDU ] and the second range is expressed as [yPre vVPDU%(n*H VPDU ),(yPrevVPDU%(n*H VPDU ))-1+ H VPDU ] The method described in item M15.
[0357] M18.yPrevVPDU%(n*H VPDU ) is not equal to 0, the position (x, y) is flagged as unavailable, where x is within a first predetermined range, y is within a second predetermined range, and (xPrevVPDU, yPrevVPDU) represents the top left corner of the coding tree unit of the most recently processed VPDU. S, W VPDU and H VPDU represents the width and height of the VPDU, as described in item M14. method.
[0358] M19.First range is [xPrevVPDU-W VPDU +2*m*W VPDU )%( m*W VPDU ),((xPrevVPDU-W VPDU +2*m*W VPDU )%(m *W VPDU ))-1+W VPDU ] and the second range is represented as [yPrevVPDU %(n*H VPDU ),(yPrevVPDU%(n*H VPDU ))-1+H VPDU ] The method described in item M18.
[0359] M20. The first range is [xPrevVPDU-W VPDU +2*m*W VPDU )% mW VPDU ,((xPrevVPDU-W VPDU +2*m*W VPDU )%(m*W VPDU ))-1+W VPDU ] and the second range is expressed as [yPrevVPDU% (n*H VPDU ),(yPrevVPDU%(n*H VPDU ))-1+H VPDU ] The method described in item M18, represented as follows:
[0360] M21. If the coding tree contains a VPDU, it is flagged as unavailable for prediction. The subset of samples selected is based on the position of the most recently processed coding tree unit. The method according to item M12.
[0361] M22. The sample is flagged as unavailable at the beginning of processing a coding tree unit. The method according to item M21, in which a tag is established.
[0362] M23. The method according to any one of items M1 to M22, The top left position of the current video block, the bottom left position of the current video block, and the Based on the bottom right position of the image block, the validity of the block vector corresponding to the current image block is calculated. determining whether the current image block is a top right position, the determining including excluding the use of the top right position of the current image block. The method further comprising:
[0363] M24. The conversion is performed in intra-block copy mode. The method according to any one or more of the preceding claims.
[0364] N1. A visual media processing method, comprising: The video block of the current picture of the visual media data and the bit rate of the visual media data To derive a prediction block for a current video block for conversion to and from a stream representation, maintaining a buffer containing reference samples from the current picture; One or more reference samples in the buffer marked as unavailable for the derivation are The method has a value outside a range of values.
[0365] N2. The pixel value range is expressed as [0, 1<<(bit_depth)-1]. , where bit_depth is a positive integer.
[0366] N3.bit_depth is the precision used to process the samples. Method described in N2.
[0367] N4. The method comprises: A single sample set in a single buffer can be used if this single sample set is unavailable. The method of clause N1, further comprising initializing the value to a predetermined value indicating that the
[0368] N5. The method of claim N4, wherein the predetermined value is −1.
[0369] N6. The position of the set of samples and / or the set of samples are set to a predetermined value. Whether to initialize or not depends on the current video block position, the current video block size, and the current The size of the VPDU containing the current video block and / or the code containing the current video block The method according to any one or more of items N4-N5, based on the size of the tree unit.
[0370] N7.If (xCb%vSize) is equal to 0 and (yCb%vSize) is 0 , this set of samples is marked as unavailable, and xCb, yCb are represents the position of the current video block relative to the video frame, and vSize=min(ctbSiz e,64), and ctbSize indicates the width or height of the coding tree unit. , the method described in item N6.
[0371] N8. If the size of the current video block is less than min(ctbSize,64) , a set of samples in the buffer is marked as unavailable, and ctbSize is The method according to item N1, which represents the width or height of the coding tree unit.
[0372] N9. The method according to item N8, wherein the position of the plurality of samples is related to the size of the VPDU. method.
[0373] N10. The position of the set of samples is determined by the coding tree including the current video block. The method described in item N8, relating to the size of the unit.
[0374] N11. The set of samples in the buffer is %hIbcBuf), where x=xV,···,xV+ctbSize-1 and y= yV,···,yV+ctbSize-1, and xV,yV are the top left position of the picture. The ctbSize represents the top left position of the VPDU relative to the current video block. represents the size of the coding tree unit, and wIbcBuf and hIbcBuf represent the buffer size. Item N4 method for representing the width of the buffer and the height of the buffer.
[0375] N12. The set of samples in the buffer is initialized to -1, as described in item N11. Law.
[0376] N13. The set of samples is initialized at the start of decoding a video unit. The method described in item N4.
[0377] N14. The conversion is performed in intra-block copy mode. The method according to any one or more of the preceding claims.
[0378] O1. A visual media processing method, comprising: A reference sample from the current picture is used to derive a prediction block for the current video block. A buffer containing the video block of the current picture of visual media data is used to converting to and from a bitstream representation of visual media data; The conversion is performed by adjusting the reference subscripts in the buffer so that the bitstream representation conforms to the rules. based on rules that specify that samples must meet bitstream conformance constraints ,method.
[0379] O2. Bitstream conformance constraints are: (1) the values of reference samples in the buffer and and / or (2) sample availability information in the buffer. The method according to item O1.
[0380] O3. The bitstream conformance constraint is that samples in the buffer must not exceed one pixel range. Items O1-O2, which, if they have a value, specify that the bitstream representation is non-conforming The method according to any one or more of the preceding claims.
[0381] O4. The range is [K0,K1], where K0 is set to 0 and K1 is (1< <BitDe Set to pth-1), where BitDepth represents the accuracy of the predicted sample, item The method described in O3.
[0382] O5. The bitstream compliance constraint is that if the availability information of the sample in the buffer indicates that the sample is not available for the current video block, the bitstream representation is non-compliant, and is one or more of the methods described in items O1 to O2. The method described above.
[0383] O6. If the sample is a luminance sample and the availability information of the sample in the buffer indicates that this sample is not available for the current video block and a single tree split is used for the current video block, the bitstream compliance constraint is that the bit stream representation is non-compliant, and is one or more of the methods described in items O1 to O2. The method described above.
[0384] O7. The method described in any one of items O1 to O6, further including marking the availability information of the sample according to the value of the sample in the buffer.
[0385] O8. The method described in item O7, where if the value of the sample is within the interval represented as [K0, K1], mark the availability information of the sample as available.
[0386] O9. The method described in item O8, where K0 is set to 0 and K1 is set to (1 << BitDepth - 1), and BitDepth represents the accuracy of the predicted sample.
[0387] O10. The bitstream compliance constraint is the code associated with the current video block One of items O1 to O8 based on the division type and tree type of the quantification unit One or more methods described herein.
[0388] O11.Partitioning type is dual tree and tree type is single tree, the bitstream conformance constraint is that all color components of the sample are available. In item O10, it is specified to check whether the The method described.
[0389] O12.Partitioning type is dual tree and tree type is dual tree, the bitstream conformance constraint is that the chroma component of the sample is not available. No provision is made to check whether the product is marked as such, as described in item O10 How to do it.
[0390] O13. The conversion is performed in intrablock copy mode. Any one or more of the methods described above.
[0391] XX. The transformation generates the bitstream representation from the current video block The method according to any one of Items L1 to LXX, comprising:
[0392] XX. The conversion converts pixel values of the current video block from the bitstream representation The method according to any one of items L1 to XX, comprising producing
[0393] XX. A processing device configured to implement the method according to one or more of items L1 to XX. A video encoder device.
[0394] XX. A processing device configured to implement the method according to one or more of items L1 to XX. A video decoder device.
[0395] XX. A computer-readable medium having stored thereon a code, the code comprising items L1 to X Implementing processor-executable instructions for implementing the method according to any one or more of claims X. A computer-readable medium.
[0396] As used herein, the term "video processing" refers to video encoding, video decoding, video compression, or can refer to image decompression. For example, a video compression algorithm converts a pixel representation of an image into a It may be applied during conversion to a corresponding bitstream representation or vice versa. The bitstream representation of the current video block, as specified by the syntax, may be, for example: This may correspond to bits spread at the same or different locations in the bitstream. For example, one macroblock can be divided into two parts in terms of transformed and coded error residual values: and coded using bits in the header and other fields in the bitstream. It may be encrypted.
[0397] While specific embodiments of the disclosed technology have been described above for purposes of illustration, it should be understood that such modifications may deviate from the scope of the present invention. It will be understood that various modifications are possible without departing from the spirit and scope of the present disclosure. The technology is not limited except as by the appended claims.
[0398] The implementation of the subject matter and functional operations described in this patent specification is based on the structure disclosed herein. Various systems, digital electronic circuits, or computer systems, including their structural equivalents may be implemented in computer software, firmware, or hardware, or One or more of these may be implemented in combination. is one or more computer program products, i.e. programs executed by a data processing device. A tangible, non-portable computer is used to operate or control the operation of a data processing device. Implemented as one or more modules of computer program instructions encoded on a readable medium. The computer-readable medium may be a machine-readable storage device, a machine-readable storage medium, or a a board, a memory device, a composition of matter that provides a machine-readable propagated signal, or one or more of these The term "data processing unit" or "data processing device" may be used interchangeably. The term may refer to, for example, a programmable processing device, a computer, or a plurality of processing devices or computers. Includes all apparatus, devices and machines for processing data, including computers In addition to the hardware, this device also includes the code that creates the execution environment for the computer program. processor firmware, protocol stacks, database management systems , an operating system, or any combination of one or more of these. It can be done.
[0399] Computer programs (programs, software, software applications) , script, or code) is a compiled or interpreted language It can be written in any programming language, including Modules suitable for use as standalone programs or in a computing environment may be deployed in any form, including as a component, subroutine, or other unit. A computer program does not necessarily have to be a file in a file system. The program may not be compatible with other programs or files that hold data. recorded in a part (e.g., one or more scripts stored in a markup language document) The program may be stored in a single file dedicated to that program, or in multiple files. A coordination file (e.g., a file that stores one or more modules, subprograms, or pieces of code) A computer program may be stored in a single server. It may be a single computer located at one site or distributed over multiple sites and connected via a communication network. It is also possible to deploy the program to run on multiple computers interconnected by the same means.
[0400] The processes and logic flows described herein operate on input data and produce output. execute one or more computer programs to perform functions by creating The process and logic flow can be performed by one or more programmable processing devices. It also refers to application-specific logic circuits, such as FPGAs (Field Programmable Gate Arrays). The device may also be implemented by a microprocessor (microprocessor array) or an ASIC (application specific integrated circuit), It can be implemented as special purpose logic circuitry.
[0401] Suitable processing devices for the execution of a computer program include, for example, general purpose and special purpose microprocessors. both the processor and any one or more processors of any kind of digital computer. Generally, a processing unit may have read-only memory or random access memory or The essential elements of a computer are the processor and the processors that execute the instructions. and one or more memory devices for storing instructions and data. Generally, a computer has one or more mass storage devices, e.g. For example, it may include a magnetic, magneto-optical, or optical disk, or any of these mass storage devices. operatively coupled to receive data from or transfer data to a device However, a computer need not have such devices. A computer readable medium suitable for storing computer program instructions and data is , including all forms of non-volatile memory, media, and memory devices, e.g., EPR Includes semiconductor memory devices such as ROM, EEPROM, and flash memory devices. The devices and memories may be supplemented by special purpose logic circuitry, or may be implemented in special purpose It may be incorporated into a logic circuit.
[0402] This specification, together with the drawings, are given by way of illustration only, and by illustration I mean examples. It is intended that the use of "or" herein be interpreted as meaning "or" unless the context dictates otherwise. "and / or" is intended to be inclusive unless expressly indicated otherwise.
[0403] This patent specification contains many details which may not be readily apparent to those skilled in the art from the scope or claims of any invention. These should not be construed as limiting the scope of the present invention, but rather as specific to particular embodiments of a particular invention. The description of the features that may be included in the separate embodiments in this patent document should be interpreted as a description of the features that may be included in the separate embodiments in this patent document. Certain features described in the context may be implemented in combination in a single example. Various features described in the context of one example may be used separately or optionally in multiple embodiments. Furthermore, features may be implemented in any suitable subcombination. Although it may be described above as being used for the purpose and may initially be claimed as such, One or more features from the combination may be extracted from the combination in some cases. The claimed combination may be a subcombination or a variation of a subcombination. It may be directed towards the
[0404] Similarly, although operations may be shown in a particular order in the figures, this is not to be construed as a guarantee that a desired result will be achieved. that such actions be performed in the particular order or sequential order shown, in order to It should not be understood as requiring that all operations shown be performed. Also, the separation of the various system components in the examples described in this patent specification It should not be understood that all embodiments require such separation.
[0405] Only some implementations and examples are described and illustrated in this patent document. Other embodiments, extensions, and variations are possible based on the teachings herein.
Claims
1. determining a first prediction mode to be applied to a current video block of a current picture of a video for conversion between the current video block and a bitstream of the video; maintaining, for the first prediction mode, a buffer containing reference samples derived from blocks of sample values of the same video region of the current video block in the current picture; generating a prediction sample for the current video block based on the determination; and performing the conversion between the current video block and the bitstream; resetting all samples in the buffer to a predetermined value if a predetermined condition is met; In the first prediction mode, the reference samples determined by block vectors in the buffer are used to derive prediction samples for the current video block; the predetermined value is outside the pixel range; a plurality of reference samples in a first region of the buffer are not available for generating predicted samples for the current video block, the position of the first region is determined based on coordinates (x0, y0), where x0%(min(ctbSize, 64))=0 and y0%(min(ctbSize, 64))=0, where % represents a modulus and ctbSize represents a width or height of a coding tree block; If the size of the current video block is greater than (min(ctbSize, 64)), the size of the first region is determined based on the size of a coding unit. A method for processing video data.
2. the predetermined value is −1; The method of claim 1.
3. The buffer is reset at the beginning of a CTU row.
3. The method according to claim 1 or 2.
4. maintaining a historical motion predictor list for the first prediction mode, the historical motion predictor list including candidate block vectors; The number of block vector candidates in the history-based motion predictor list is reset to 0 at the beginning of a CTU row. The method according to any one of claims 1 to 3.
5. the transformation is based on a rule specifying that, in order for the bitstream to be conformant, reference samples in the buffer must satisfy a bitstream conformance constraint; The method according to any one of claims 1 to 4.
6. the bitstream conformance constraint specifies that the bitstream is non-conformant if a luma reference sample determined by the block vector in the buffer contains a value equal to the predetermined value. The method of claim 5.
7. if a luma reference sample determined by the block vector in the buffer contains a value indicating sample unavailability, the bitstream conformance constraint specifies that the bitstream is non-conformant. The method of claim 5.
8. the bitstream conformance constraint specifies that the bitstream is non-conformant if luma reference samples determined by the block vectors in the buffer contain values outside a pixel range. The method of claim 5.
9. The bitstream conformance constraint specifies that the bitstream is conformant if the luma reference samples determined by the block vectors in the buffer contain values in [K0, K1], where K0 is 0 and K1 is (1<<BitDepth-1), and BitDepth represents the precision of the reference samples. The method of claim 5.
10. the transforming includes encoding the current video block into the bitstream. The method according to any one of claims 1 to 9.
11. the converting includes decoding the current video block from the bitstream. The method according to any one of claims 1 to 9.
12. 1. An apparatus for processing video data, comprising a processor and a non-transitory memory comprising instructions, the instructions, when executed by the processor, causing the processor to: determining a first prediction mode to be applied to a current video block of a current picture of a video for conversion between the current video block and a bitstream of the video; maintaining, for the first prediction mode, a buffer containing reference samples derived from blocks of sample values of the same video region of the current video block in the current picture; generating a prediction sample for the current video block based on the determination; and performing the conversion between the current video block and the bitstream; resetting all samples in the buffer to a predetermined value when a predetermined condition is met; In the first prediction mode, the reference samples determined by block vectors in the buffer are used to derive prediction samples for the current video block; the predetermined value is outside the pixel range; a plurality of reference samples in a first region of the buffer are not available for generating predicted samples for the current video block, the position of the first region is determined based on coordinates (x0, y0), where x0%(min(ctbSize, 64))=0 and y0%(min(ctbSize, 64))=0, where % represents a modulus and ctbSize represents a width or height of a coding tree block; If the size of the current video block is greater than (min(ctbSize, 64)), the size of the first region is determined based on the size of a coding unit. Device.
13. A non-transitory computer-readable storage medium storing instructions, the instructions causing a processor to: determining that a first prediction mode is applied to a current video block of a current picture of a video for conversion between the current video block and a bitstream of the video; maintaining, for the first prediction mode, a buffer containing reference samples derived from blocks of sample values of the same video region of the current video block in the current picture; generating a prediction sample for the current video block based on the determination; and performing the conversion between the current video block and the bitstream; resetting all samples in the buffer to a predetermined value when a predetermined condition is met; In the first prediction mode, the reference samples determined by block vectors in the buffer are used to derive prediction samples for the current video block; the predetermined value is outside the pixel range; a plurality of reference samples in a first region of the buffer are not available for generating predicted samples for the current video block, the position of the first region is determined based on coordinates (x0, y0), where x0%(min(ctbSize, 64))=0 and y0%(min(ctbSize, 64))=0, where % represents a modulus and ctbSize represents a width or height of a coding tree block; If the size of the current video block is greater than (min(ctbSize, 64)), the size of the first region is determined based on the size of a coding unit. A non-transitory computer-readable storage medium.
14. 1. A method of storing a video bitstream, said method comprising: determining a first prediction mode to be applied to a current video block of a current picture of the video; maintaining, for the first prediction mode, a buffer containing reference samples derived from blocks of sample values of the same video region of the current video block in the current picture; generating a prediction sample for the current video block based on the determination; and generating the bitstream based on the predicted samples; storing the bitstream on a non-transitory computer-readable recording medium; resetting all samples in the buffer to a predetermined value if a predetermined condition is met; In the first prediction mode, the reference samples determined by block vectors in the buffer are used to derive prediction samples for the current video block; the predetermined value is outside the pixel range; a plurality of reference samples in a first region of the buffer are not available for generating predicted samples for the current video block, the position of the first region is determined based on coordinates (x0, y0), where x0%(min(ctbSize, 64))=0 and y0%(min(ctbSize, 64))=0, where % represents a modulus and ctbSize represents a width or height of a coding tree block; If the size of the current video block is greater than (min(ctbSize, 64)), the size of the first region is determined based on the size of a coding unit. method.
Citation Information
Patent Citations
Method, apparatus and system for deblocking blocks of video samples
JP2017519460A
JPP7359934B
JPP7708827B