Sample Identification for Intra-Block Copy in Video Signaling

A buffer management system with defined size and validity rules for intra-block copy modes addresses inefficiencies in video encoding and decoding, enhancing processing efficiency and accuracy.

JP7708827B2Active Publication Date: 2025-07-15DOUYIN VISION CO LTD +1

Patent Information

Application Number
JP2023168834
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-07-10
Filing Date
2023-09-28
Publication Date
2025-07-15
Estimated Expiration
2040-07-09

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in managing buffer memory efficiently for intra-block copy modes, leading to complex processing, invalid block vectors, inefficient encoding, and difficulties in handling CTU sizes smaller than 128x128, particularly in screen content coding.

Method used

Implementing a buffer management system for intra-block copy modes that uses a defined size buffer to track reference samples, with rules for determining valid block vectors and ensuring bitstream compliance, and applying in-loop reshaping to simplify processing and reduce complexity.

Benefits of technology

Enhances the efficiency of video encoding and decoding by simplifying buffer management, reducing complexity, and improving the accuracy of block vector validity checks, thereby optimizing video compression and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007708827000042
    Figure 0007708827000042
  • Figure 0007708827000043
    Figure 0007708827000043
  • Figure 0007708827000044
    Figure 0007708827000044
Patent Text Reader

Abstract

To provide techniques for buffer management and block vector encoding in an intra block copy mode for decoding or encoding video or images.SOLUTION: A video processing method includes maintaining, for conversion between a video block of a current picture of visual media data and bitstream representation of the visual media data, a buffer comprising reference samples from the current picture in order to derive of a prediction block of the current video block. One or more reference samples in the buffer that are marked unavailable for derivation have values outside a pixel value range.SELECTED DRAWING: Figure 21
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - reference to related applications This application is a divisional application of Japanese Patent Application No. 2022-501042, which is the national phase of International Patent Application No. PCT / CN2020 / 100992 filed on July 9, 2020, and claims the priority and benefits of International Patent Application No. PCT / CN2019 / 095504 filed on July 10, 2019. For all purposes under the law, the entire disclosure of the above - mentioned application is incorporated by reference as part of the disclosure of this specification.

[0002] This patent specification relates to video encoding and decoding technologies, devices, and systems.

Background Art

[0003] Despite the progress of video compression, digital video still occupies the largest bandwidth usage in the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for the use of digital video is expected to continue to increase.

Summary of the Invention

[0004] This specification describes various embodiments and techniques for buffer management and block - vector encoding in the intra - block copy mode for decoding or encoding video or images.

[0005] In one exemplary aspect, a visual media processing method is disclosed. This method determines block vectors (BVx, BVy) for the conversion of the current video block of the current picture of visual media data and the bitstream representation of the current video block, wherein the validity of the block vectors (BVx, BVy) is determined by (1) the position (P, Q) of the sample block and / or (2) whether to reconstruct the samples at the 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) depending on not, determining, and using this block vector to perform a conversion in the intra-block copy mode based on a reconstructed block located in the same video area as the current video block, consisting of reference samples used to derive the predicted block of the current video block and performing a conversion in the intra-block copy mode based on a reconstructed block located in the same video area as the current video block, consisting of reference samples used to derive the predicted block of the current video block , including, during conversion, determining a predicted sample having a position (A, B) from reference samples in the buffer at least according to the size of the buffer and / or the size of the block vector (BVx, BVy).

[0006] In another exemplary aspect, another method of visual media processing is disclosed. This method is for converting a current video block of a current picture of visual media data to a bitstream representation of the visual media data, determining whether a block vector (BVx, BVy) corresponding to the current video block is valid according to rules, where the block vector (BVx, BVy) represents the pixel displacement between the current video block and the sample block, and performing the conversion based on a reference area of the current picture including reference samples used to derive the predicted block of the current video block using the block vector, where the rules are that the block vector (BVx, BVy) is such that (1) one or more samples from this sample block are outside this current picture, and / or (2) one or more samples from the sample block are in at least one coded tree unit associated with the current video block block vector (BVx, BVy) represents the pixel displacement between the current video block and the sample block, determining, and performing the conversion based on a reference area of the current picture including reference samples used to derive the predicted block of the current video block using the block vector from which the predicted block of the current video block is derived, including performing the conversion, and the rules are that the block vector (BVx, BVy) is such that (1) one or more samples from this sample block are outside this current picture, and / or (2) one or more samples from the sample block are in at least one coded tree unit associated with the current video block (BVx, BVy) is such that (1) one or more samples from this sample block are outside this current picture, and / or (2) one or more samples from the sample block are in at least one coded tree unit associated with the current video block outside the current picture, and and / or (2) one or more samples from the sample block are in at least one coded tree unit associated with the current video block ​ It is outside the (CTU) and / or becomes effective when one or more samples from the (3) sample block fail to be reconstructed.

[0007] Furthermore, in another exemplary aspect, another method of visual media processing is disclosed. This method includes performing a conversion between a current video block of a current picture of visual media data and a bitstream representation of this visual media data, wherein the conversion is performed based on a reference region from the current picture that comprises reference samples used to derive a predicted block of the current video block, and a virtual buffer of a defined size is used to track the availability of the reference samples for deriving the predicted block.

[0008] Furthermore, in another exemplary aspect, another method of visual media processing is disclosed. This method includes maintaining a buffer that includes reference samples from the current picture for deriving a predicted block of the current video block for conversion between the current video block of a current picture of visual media data and a bitstream representation of the visual media data, and one or more reference samples within the buffer marked as not available for the derivation have values outside the range of pixel values.

[0009] In another exemplary aspect, another method of video processing is disclosed. This method includes performing a conversion between a video block of a current picture of visual media data and a bitstream representation of the visual media data by using a buffer that includes reference samples from the current picture for deriving a predicted block of the current video block, wherein the conversion includes ​​​​​​​​​​​For the frame representation to comply with the rules, it is based on rules that define that the reference samples in the buffer meet the bitstream compliance constraints.

[0010] In yet another exemplary aspect, a video encoder or decoder device is disclosed that comprises a processing device configured to implement the methods described above.

[0011] In another exemplary aspect, a computer-readable program medium is disclosed. This medium stores code that implements processor-executable instructions for implementing one of the disclosed methods.

[0012] These and other aspects are described in more detail herein.

Brief Description of the Drawings

[0013]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Figure 21

Figure 22

Mode for Carrying Out the Invention

[0014] In this specification, chapter headings are used for ease of understanding, and the embodiments disclosed in one chapter are not limited to that chapter only. This specification describes various embodiments and techniques for buffer management and block vector coding in an intra-block copy mode for decoding, encoding, or coding video or images.

[0015] 1. Overview

[0016] This specification relates to video coding techniques. Specifically, it relates to intra-block copy in video coding. This can be applied to developing standards, such as general video coding, and is also applicable to future video coding standards or video codecs.

[0017] 2. Brief Description

[0018] Video coding standards have mainly evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, and ISO / IEC developed MPEG- 1 and MPEG-4 Visual. Both organizations jointly developed H.262 / MPEG-2 Vide o, H.264 / MPEG-4 AVC (Advanced Video Coding ), and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure that utilizes temporal prediction and transform coding. To explore future video coding techniques beyond HEVC, in 2015, VCEG and MPEG jointly established JVET (Joint Video Exploration Team). Since then, many new methods have been adopted by JVET and incorporated into the reference software called JEM (Joint Exploration Mode). In April 2018, the Joint Video Expert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG), and is working on formulating the VVC standard with the goal of reducing the bitrate by 50% compared to HEVC. 2018 April, between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG1 1 (MPEG), the Joint Video Expert Team (JVET) was established and is working on formulating the VVC standard aiming for a 50% bitrate reduction compared to HEVC.

[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 indices. The use of one of the two reference picture lists may be signaled using inter_pred_idc. The motion vectors may be explicitly coded as deltas with respect to predictors. including motion vectors and reference picture indices. The use of one of the two reference picture lists may be signaled using inter _pred_idc. The motion vectors may be explicitly coded as deltas with respect to predictors. _pred_idc. The motion vectors may be explicitly coded as deltas with respect to predictors.

[0020] When one CU is coded in skip mode, one PU is associated with this CU, there are no significant residual coefficients, and there are no coded motion vector differences nor reference picture indices. The merge mode is specified, and thereby the motion parameters for the current PU are obtained from neighboring PUs including spatial and temporal candidates. The merge mode can be applied not only for skip mode but also for any inter - predicted PU. As an alternative to the merge mode, there is an explicit transmission of motion parameters, including motion vectors (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list associated with this CU, there are no significant residual coefficients, and there are no coded motion vector differences nor reference picture indices. The merge mode is specified, and thereby the motion parameters for the current PU are obtained from neighboring PUs including spatial and temporal candidates. The merge mode can be applied not only for skip mode but also for any inter - predicted PU. As an alternative to the merge mode, there is an explicit transmission of motion parameters, including motion vectors (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list including motion vectors (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list The merge mode can be applied not only for skip mode but also for any inter - predicted PU. As an alternative to the merge mode, there is an explicit transmission of motion parameters, including motion vectors (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list The merge mode can be applied not only for skip mode but also for any inter - predicted PU. As an alternative to the merge mode, there is an explicit transmission of motion parameters, including motion vectors (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list (more precisely, motion vector differences (MVD) compared to motion vector predictors), each reference picture list ​​The corresponding reference picture index and the usage status of the reference picture list are signaled explicitly to each PU in this manner. Such a mode is referred to as Advanced Motion Vector Prediction (AM VP) in this disclosure.

[0021] When signaling indicates using one of the two reference picture lists, a PU is generated from one of the sample blocks. This is called "single prediction". Single prediction is available for both P slices and B slices.

[0022] When signaling indicates using both reference picture lists, a PU is generated from two of the samples blocks. This is called "bi - directional prediction". Bi - directional prediction is available only for B slices .

[0023] Hereinafter, the inter - prediction modes defined in HEVC will be described in detail. First, the merge mode will be described.

[0024] 2.2 Reference to the current picture Reference to the current picture (CPR), also known as Intra - Block Copy (IBC) in some cases, is adopted in the HEVC Screen Content Coding Extension (HEVC - SCC) and the current VVC test model. IBC extends the concept of motion compensation from inter - frame coding to intra - frame coding. As shown in FIG. 1, when CPR is applied, the current block is predicted by one reference block within the same picture. Before encoding or decoding the current block , the samples in the reference block must already have been reconstructed . CPR is applicable to most sequences captured by a camera . Before encoding or decoding the current block, the samples in the reference block must already have been reconstructed . CPR is applicable to most sequences captured by a camera while not very efficient, for screen content, a significant coding gain is shown. The reason is that in screen content pictures, there are many repeating patterns such as icons and text. CPR can effectively remove the redundancy between these repeating patterns. In HEVC-SCC, when an inter-coded unit (CU) selects the current picture as its reference picture, CPR can be applied. In this case, the MV is renamed as a block vector (BV), and the BV always has integer pixel precision. To conform to the main profile HEVC, the current picture is marked as a "long-term" reference picture in the decoded picture buffer (DPB). Similarly, in the multiple view / 3D video coding

[0025] standard, the reference pictures between views are also marked as "long-term" reference pictures. After the BV finds its reference block, prediction can be generated by copying this reference block. The residual can be

[0026] obtained by subtracting the reference pixels from the original signal.

[0027] And then, similar to other coding modes, transformation and quantization can be applied. However, if the reference block is outside the picture, or overlaps with the current block, or is outside the reconstructed It is not to permit throughput stream compatibility. Another is to apply padding to these undefined pixel values. In the following sub - session, the solution will be explained in detail.

[0028] 2.3 CPR in HEVC Screen Content Coding Extension In the screen content coding extension of HEVC, when one block uses the current picture as a reference, as shown in the text of the following specification, it should be ensured that the entire reference block 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) When the reference picture is the current picture, it is a bit - stream compatibility requirement that the luminance motion vector mvLX should follow the following constraints. - When the derivation process for the availability of the z - scan - ordered block as defined in Section 6.4.1 is called with (xCurr,yCurr) set equal to (xCb,yCb) and the neighboring luminance position (xNbY,yNbY) set equal to (xPb+(mvLX[0]>>2)-offsetX,yPb+(mvLX[1]>>2)-offsetY), the output is TRUE. (xCb,yCb) vLX[0]>>2)-offsetX,yPb+(mvLX[1]>>2)-offs etY) - When the derivation process for the availability of the z - scan - ordered block as defined in Section 6.4.1 is called with (xCurr,yCurr) set equal to (xCb,yCb) and (xCb,yCb) ​​​​​vLX[0] >> 2) + nPbW - 1 + offsetX, yPb + (mvLX[1] >> 2) + nPbI - I - 1 + offsetY) is set equal to the luminance position (xNb Y, yNbY) of the vicinity called as input, the output becomes TRUE. - One or both of the following conditions are true - The value of (mvLX[0] >> 2) + nPbW + xB1 + offsetX is 0 or less or. - The value of (mvLX[1] >> 2) + nPbH + yB1 + offsetY is 0 or less or. - The following condition is 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] Thus, a case where the reference block overlaps with the current block or the reference block is outside the picture does not occur. There is no need to fill the reference block or the prediction block.

[0030] 2.4 Examples of CPR / IBC In the VVC test model, the entire reference block should have the current coding tree unit (CTU ) and does not overlap with the current block. Therefore, there is no need to pad the reference or prediction block.

[0031] When the dual tree is enabled, the split structure may be different between the luminance CTU and the chroma CTU. Therefore, in the case of the 4:2:0 color format, one chroma block (example ​​​For example, CU) may correspond to one luminance region collocated and divided into a plurality of luminance CUs. It may respond.

[0032] The chroma block can be encoded only in the CPR mode when the following conditions are true. It can be encoded. 1) Each of the luminance CUs of the collocated luminance blocks should be encoded in the CPR mode. It should be encoded. 2) Each of the luminance 4×4 blocks ’BV is first converted into the BV of the chroma block, and the BV of the chroma block is a valid BV. The BV of the chroma block is a valid BV.

[0033] If either of the two conditions is false, the chroma block is not encoded in the CPR mode. It is not encoded.

[0034] Note that the definition of a valid BV has the following constraints. 1) All samples of the reference block specified by BV should be within the restricted search range (e.g., within the same CTU in the current VVC design). For example, in the current VVC design, it is within the same CTU. 2) All samples of the reference block specified by BV have been reconstructed.

[0035] 2.5 Examples of CPR / IBC In some embodiments, the reference region for CPR / IBC is restricted to the current CTU and is at most 128×128. While the CPR / IBC block can have more reference candidates, the reference region is dynamically changed to reuse memory and store the reference samples of CPR / IBC so that the reference buffer of CPR / IBC can be maintained or reduced from one CTU. The reference region for CPR / IBC is restricted to the current CTU and is at most 128×128. While the CPR / IBC block can have more reference candidates, the reference region is dynamically changed to reuse memory and store the reference samples of CPR / IBC so that the reference buffer of CPR / IBC can be maintained or reduced from one CTU. The reference region for CPR / IBC is restricted to the current CTU and is at most 128×128. While the CPR / IBC block can have more reference candidates, the reference region is dynamically changed to reuse memory and store the reference samples of CPR / IBC so that the reference buffer of CPR / IBC can be maintained or reduced from one CTU. The reference region for CPR / IBC is restricted to the current CTU and is at most 128×128. While the CPR / IBC block can have more reference candidates, the reference region is dynamically changed to reuse memory and store the reference samples of CPR / IBC so that the reference buffer of CPR / IBC can be maintained or reduced from one CTU. The reference region for CPR / IBC is restricted to the current CTU and is at most 128×128. While the CPR / IBC block can have more reference candidates, the reference region is dynamically changed to reuse memory and store the reference samples of CPR / IBC so that the reference buffer of CPR / IBC can be maintained or reduced from one CTU.

[0036] Figure 2 shows one method, one block is 64×64, and one CTU is It includes four 64×64 blocks. When encoding a 64×64 block, the previous three 6 4×64 blocks can be used as references. By doing so, the decoder only needs to store four 64×64 blocks to support CPR / IBC.

[0037] Let the position of the current luminance CU relative to the upper left corner of the picture be (x, y), and the block vector be (BVx, BVy). In the current design, whether BV is valid can be determined by the fact that the luminance position ((x + BVx)>>6<<6+(1<<7),(y + BVy)>>6<<6) is not re constructed and ((x + BVx)>>6<<6+(1<<7),(y + BVy)>> 6<<6) is not equal to (x>>6<<6,y>>6<<6). can be known.

[0038] 2.6 In-loop reshaping (ILR) The basic idea of in-loop reshaping (ILR) is to convert the original (in the first domain) signal (prediction / reconstruction signal) to the second domain (reshaped domain). That's it.

[0039] The in-loop luminance reshaper is implemented as a pair of look-up tables (LUTs). Since one of the two LUTs can be calculated from the other LUT that is signaled, only one of the two LUTs needs to be signaled. Each LUT is a one-dimensional 10-bit 1024-entry mapping table (1D-LUT). One LUT is the forward LUT, Fw dLUT. This is the input luminance code value Y changed to the value Y :Y i changed to the value Y r :Y r =FwdLU T[Y iMap it to []. The other LUT is the inverse LUT, InvLUT, and the changed code value Y is mapped to Y^ r as Y^ i :Y^ i :InvLUT[Y r . (Y^ i represents the reconstructed value of Y i ).

[0040] 2.6.1 PWL Model Conceptually, the piecewise linear (PWL) is implemented as follows.

[0041] Let x1 and x2 be two input fulcrums, and y1 and y2 be the output fulcrums corresponding to one piece. For any input value x between x1 and x2, the output value y can be interpolated by the following formula and can be.

[0042] y = ((y2 - y1) / (x2 - x1))*(x - x1) + y1

[0043] In fixed-point implementation, this formula can be rewritten as follows. y = ((m * x + 2 FP_PREC-1 ) >> FP_PREC) + c

[0044] m is a scalar, c is an offset, and FP_PREC is a constant for specifying the precision. is a constant.

[0045] In some embodiments, the PWL model is used to pre-compute a 1024-entry FwdLUT mapping table and an InvLUT mapping table, but the PWL model also enables the same mapping values to be calculated on-the-fly in the implementation without pre-computing the LUT. However, the PWL model also enables the same mapping values to be calculated on-the-fly in the implementation without pre-computing the LUT. In some embodiments, the PWL model is used to pre-compute a 1024-entry FwdLUT mapping table and an InvLUT mapping table, but the PWL model also enables the same mapping values to be calculated on-the-fly in the implementation without pre-computing the LUT. In some embodiments, the PWL model is used to pre-compute a 1024-entry FwdLUT mapping table and an InvLUT mapping table, but the PWL model also enables the same mapping values to be calculated on-the-fly in the implementation without pre-computing the LUT.

[0046] 2.6.2.1 Luminance reshaping The in-loop luminance reshaping method provides a pipeline with lower complexity and eliminates the decoding waiting time for block-level intra prediction in inter-slice reconstruction. Intra prediction is performed in the reshaped domain for both inter-slice and intra-slice. Intra prediction is performed in the reshaped domain for both inter-slice and intra-slice. It is performed in the reshaped domain.

[0047] Intra prediction is always performed in the reshaped domain regardless of the slice type. With such a configuration, intra prediction can be started immediately after the previous TU reconstruction. Such a configuration can also provide a unified process for intra mode instead of depending on the slice. Fig. 10 is a block diagram showing the encoding process based on the CE12-2 method. It is a block diagram showing the encoding process based on the CE12-2 method.

[0048] Instead of using a 32-piece piecewise linear (PWL) model, a 16-piece PWL model was used for luminance and chroma residual scaling. Luminance and chroma residual scaling was performed.

[0049] Inter-slice reconstruction using the in-loop luminance reshaper (the blocks shaded in light green indicate the signals in the reshaped domain. Luminance residual, intra-luminance prediction, and intra-luminance reconstruction) and intra-luminance reconstruction)

[0050] 2.6.2.2 Luminance-dependent chroma residual scaling Luminance-dependent chroma residual scaling is a multiplication process implemented by fixed-point integer arithmetic. Chroma residual scaling compensates for the interaction between the chroma signal and the luminance signal. Chroma residual scaling is applied at the TU level. Specifically, the following is applied. - In the intra case, the reconstructed luminance is averaged. - In the inter case, the predicted luminance is averaged.

[0051] This average value is used to identify the index in the PWL model. This index identifies the scaling coefficient cScaleInv. Multiply the chroma residual by that number .

[0052] Note that the chroma scaling coefficient is calculated from the forward mapped predicted luminance value rather than the reconstructed luminance value.

[0053] 2.6.2.3 Signal Notification of ILR Side Information The parameters are transmitted in the (current) tile group header (similar to ALF). These are reported to require 40 - 100 bits.

[0054] In some examples, the added syntax is emphasized in italics.

[0055] [Table 1]

[0056] [Table 2]

[0057] Add a new syntax table tile group reshaper.

[0058] [Table 3]

[0059] Generally, in the semantics of the sequence parameter set RBSP, add the following semantics. If sps_reshaper_enabled_flag is equal to 1, the coded video Specifies that a reshaper is used in the sequence (CVS). sps If _reshaper_enabled_flag is equal to 0, it specifies that no reshaper is used in CVS. In the tile group header syntax, add the following semantics. If tile_group_reshaper_model_present_flag is equal to 1, it specifies that tile_group_reshaper_model() exists within the tile group. If tile_group_reshaper_model_present_flag is equal to 0, it specifies that tile_group_reshaper_model() does not exist in the tile group header. If tile_group_reshaper_model_present_flag does not exist, 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 does not exist, 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 does not exist, it is presumed to be 0. Add the tile_group_reshaper_model() syntax.​ The reshape_model_min_bin_idx defines the index of the minimum bin (or piece) to be used in the reshaper construction process. reshape_ model_min_bin_idx. Let the value of reshape_model_min_bin_idx be within the range of 0 to MaxBinIdx. Assume the value of MaxBinIdx is equal to 15. The reshape_model_delta_max_bin_idx defines that the value obtained by subtracting the maximum bin index from the maximum allowable bin (or piece) index MaxBinIdx is to be used in the reshaper construction process. The value of reshape_model_ max_bin_idx is set to be equal to MaxBinIdx - reshape_model_ delta_max_bin_idx. reshaper_model_bin_delta_abs_cw_prec_min us1 + 1 defines the number of bits to be used in the expression of the syntax reshape_model_bin_delta_abs_CW i]. reshape_model_bin_delta_abs_CW[i] defines the absolute delta code name value of the i-th bin. reshaper_model_bin_delta_sign_CW_flag[i] describes the sign of reshape_model_bin_delta_abs_CW[i] as follows. - When reshape_model_bin_delta_sign_CW_flag[i is equal to 0, the corresponding variable RspDeltaCW[i] is a positive value. - Otherwise (when reshape_model_bin_delta_sign_C ​​​​​​If W_flag[i] is not equal to 0, the corresponding variable RspDeltaCW[i] is negative is the value of.

[0060] reshape_model_bin_delta_sign_CW_flag[i] If it does not exist, it is assumed 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]; Variable RspCW[i] is derived as the following steps.

[0062] Variable OrgCW is set equal to (1<<BitDepth Y ) / (MaxBinIdx+1) is set. When -reshaper_model_min_bin_idx <= i <= reshaper _model_max_bin_idx, RspCW[i]=OrgCW+Rsp DeltaCW[i]. - Otherwise, RspCW[i]=0.

[0063] BitDepth Y When the value of is equal to 10, the value of RspCW[i] falls within the range of 32~2*O rgCW_1.

[0064] The variable InputPivot[i] where i is in the range of 0~MaxBinIdx+1 is derived as follows. as follows. InputPivot[i]=i*OrgCW

[0065] When i is in the range of 0~MaxBinIdx+1, the variables ScaleCoef[i] and InvScaleCoeff[i] is within the range of 0 to MaxBinIdx respectively, and i The variable ReshapePivot[i] within the range of 0 to MaxBinIdx is derived as follows 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 Otherwise InvScaleCoeff[i] = OrgCW * (1 << shiftY) / Rs pCW[i] }

[0066] The variable ChromaScaleCoef[i within the range of i from 0 to MaxBinIdx 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 Method of Using ILR On the encoder side, first, each picture (or tile group) is reshaped into the main domain for conversion. Then, all encoding processes are performed in the reshaped domain. In the case of intra prediction, neighboring blocks are in the reshaped domain. In the case of inter prediction, first, the reference block (generated from the original domain in the decoded picture buffer) is converted into the reshaped domain. Then, the residual is generated and

[0068] encoded into the bitstream. After the encoding / decoding of the entire picture (or tile group) is completed, the samples in the reshaped domain are converted back to the

[0069] original domain, and then the deblocking filter and other filters are

[0070] applied.

[0071] The current block is encoded as CPR (refer to the current picture, alias intra-block copy, I BC).

[0072] The current block is encoded as combined inter-intra mode (CIIP), and forward reshaping is disabled for the intra prediction block.

[0073] 3. Examples of problems solved by various embodiments In the current CPR / IBC design, there are some problems. 1) Since the reference region changes dynamically, the processing of the encoder / decoder becomes complex. 2) Invalid block vectors are easily generated and difficult to check, which complicates both the encoder and the decoder. 3) If the reference region is irregular, the encoding of the block vector becomes inefficient. 4) It is unclear how to handle CTU sizes smaller than 128×128. 5) In the determination process of whether the BV is valid or invalid, in the case of chroma blocks, this decision is made based on the availability of luminance samples, which may lead to incorrect determinations due to the dual-tree partition structure.

[0074] 4. Exemplary embodiments In some embodiments, a normal buffer can be used for the CPR / IBC block to obtain references.

[0075] The function isRec(x, y) is defined to indicate whether the pixel (x, y) is reconstructed and referred to by the IBC mode. If (x, y) is in a different slice / tile / brick ​​If it is outside the frame, isRec(x,y) returns false and (x, If x,y) is not reconstructed, then isRec(x,y) returns false. If sample (x,y) is reconstructed, but some other condition is met, 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 it is not available, it is marked as unavailable. However, if some other condition is met, the sample (x,y) may also be used. It may be marked as not possible, e.g. out of picture / different slide in chairs / tiles / bricks / in different VPDUs, allowed reference areas, etc. If sample(x,y) is not available, then isRec(c,x,y) is 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. An MxN pixel buffer is 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 128×128. c. In one example, the buffer size is 64×128. d. In one example, the buffer size is 128×64. 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 128×96. 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. m. 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 examples, m and n may depend on the size of the CTU. i. In one example, when the size of the CTU is 128×128, m = 1 and n = 1. ii. In one example, when the size of the CTU is 64×64, m = 4 and n = 1. iii. In one example, when the size of the CTU is 32×32, m = 16 and n = 1. iv. In one example, when the size of the CTU is 16×16, m = 64 and n = 1. o. Alternatively, the buffer size corresponds to the CTU size. p. Alternatively, this buffer size corresponds to the size of a virtual pipeline data unit (VPDU) . q. M and / or N may be signaled from the encoder to the decoder, for example, by VPS / SPS / P PS / picture header / slice header / tile group header, etc. . 2. M and / or N may vary for different profiles / levels / layers specified in the standard. Another Mc×Nc pixel buffer is proposed to be used to store chroma reference samples for CPR / IBC. 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 . f. In one example, Mc = M and Nc = N. 3. It is proposed to use an M×N sample buffer to store RGB reference samples for PR / IBC. a. In one example, the buffer size is 64×64. b. In one example, the buffer size is 128×128. c. In one example, the buffer size is 64×128. d. In one example, the buffer size is 128×64. e. Alternatively, the buffer size corresponds to the CTU size. f. Alternatively, this buffer size corresponds to the size of the virtual pipeline data unit (VPDU ). 4. It is proposed that the buffer be able to store the pixels reconstructed before loop filtering . Loop filtering may refer to a non-blocking filter, an adaptive loop filter (ALF), a sample adaptive offset (SAO), a cross-component ALF, or any other filter. a. In one example, the buffer can store samples for the current CTU. b. In one example, the buffer can store samples outside the current CTU . c. In one example, the buffer can store samples from any part of the current picture . d. In one example, the buffer can store samples from other pictures . 5. It is proposed that the buffer be able to store the pixels reconstructed after loop filtering . Loop filtering may refer to a non-blocking filter, an adaptive loop filter (ALF), a sample adaptive offset (SAO), a cross-component ALF, or any other filter. a. In one example, the buffer can store samples for the current CTU. b. In one example, the buffer can store samples outside the current CTU . c. In one example, the buffer can store samples from any part of the current picture . d. In one example, the buffer can store samples from other pictures . ​​6. It is proposed that the buffer can store the samples reconstructed both before and after loop filtering. Loop filtering may refer to a non-blocking filter, an adaptive loop filter (ALF), a sample adaptive offset (SAO), a cross-component ALF, or any other filter. a. In one example, the buffer can store samples from the current picture and samples from other pictures based on the availability of those samples. b. In one example, the reference samples from other pictures are from the reconstructed samples after loop filtering. c. In one example, the reference samples from other pictures are from the samples reconstructed before loop filtering. 7. It is proposed that the buffer stores samples having a given bit depth that may be different from the bit depth of the encoded video data. a. In one example, the bit depth of the reconstructed buffer / encoded video data is greater than the bit depth of the IBC reference samples stored in the buffer. b. In one example, if the internal bit depth is different from the input bit depth for one video sequence, e.g., (10 bits vs. 8 bits), the IBC reference samples are stored aligned to the input bit depth. c. In one example, the bit depth is the same as the bit depth of the reconstructed 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 the same as a predefined number. f. In one example, the bit depth depends on the standard profile. ​​​​​​​​​​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 may be signaled in the SPS / PPS / sequence header / picture header / slice header / tile group header / tile header or other types of video data units. h. The proposed method may be applied to the proposed buffer definitions referred to by the other black circles, or alternatively, may also be applied to the existing designs of IBC. i. The bit depth of each color component of the buffer may be different.

[0079] Buffer start 8. It is proposed to initialize the buffer with a given value. a. In one example, the buffer is initialized with a given value. i. In one example, the given value may depend on the input bit depth and / or the internal bit depth. ii. In one example, the buffer is initialized with a middle gray value. For example, for an 8-bit signal, 128 is set, and for a 10-bit signal, 512 is set. iii. In one example, when ILR is used, the buffer is initialized with forwardLU T(m). For example, m = 1<<(Bitdepth-1). b. Alternatively, the buffer is initialized with a value signaled in the SPS / VPS / APS / PPS / sequence header / tile group header / picture header / tile / CTU / coding unit / VPDU / region. c. In one example, this given value may be derived from the previously decoded picture or slice or alternatively from the samples of the CTU row or CTU or CU. d. This given value may be different for different color components. 9. Alternatively, the buffer is proposed to be initialized using the decoded pixels from the previously encoded block. a. In one example, the decoded pixel is the pixel before in-loop filtering. b. In one example, when the buffer size is a CTU, the buffer is initialized with the decoded pixels of the previously decoded CTU if available. c. In one example, when the buffer size is 64×64, the buffer size is initialized with the decoded pixels of the previously decoded 64×64 block if available. d. Alternatively, further, if the previously encoded block is not available, the method of black dot 8 may be applied.

[0080] Reference of the buffer 10. For a block to use the pixels in the buffer as references, this block can indicate the reference destination using the positions (x,y) in the buffer, where x = 0, 1, 2,..., M - 1; y = 0, 1, 2,... ..., N - 1. 11. Alternatively, this reference position can be represented as l = y * M + x, where l = 0, 1,..., M * N - 1. 12. Still, taking the upper left position of the block regarding the current CTU as (x0, y0), the block vector (BVx, BVy) = (x - x0, y - y0) can be sent to the decoder to indicate the reference destination in the buffer. 13. Alternatively, the block vector (BVx, BVy) may be defined as (x - x0 + Tx, y - y0 + Ty), where Tx and Ty are predefined offsets. ​​​​​​​​​​​​14. For any pixel (x0,y0) and (BVx,BVy), The reference can be found at (x0+BVx, y0+BVy). In one example, if (x0+BVx, y0+BVy) is outside the buffer, then It is clipped to the bounds. b. Alternatively, if (x0+BVx, y0+BVy) is outside the buffer, The subvalue is predefined as a given value, for example mid-grey. 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, 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, padding may be done 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 predefined values may be in the SPS / PPS / Sequence header. At the data / 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. The value is specified as a sample. 18. The handling of buffer references may differ between horizontal and vertical directions. or vary depending on the position of the current block (e.g., whether it is closer to a picture boundary). This may also be the case. a. In one example, if y0 + BVy is outside [0, N - 1], the sample value of (x0 + BVx, y0 + BVy) is assigned as a predefined value. b. In one example, if x0 + BVx is outside [0, M - 1], the sample value of (x0 + BVx, y0 + BVy) is assigned as a predefined value. c. Alternatively, the sample value of (x0 + BVx, y0 + BVy) is assigned as the sample value of ((x0 + BVx) mod M, y0 + BVy), and if (((x0 + BVx) mod M, y0 + BVy) is still outside the buffer, other methods may be called to further derive the value. d. Alternatively, the sample value of (x0 + BVx, y0 + BVy) is assigned as the sample value of (x0 + BVx, (y0 + BVy) mod N), and if (x0 + BVx, (y0 + BVy) mod N) is still outside the buffer, other methods may be called to further derive the value.

[0081] Block vector representation 19. Each component of the block vector (BVx, BVy) or one of its components may be normalized to a certain range. a. In one example, BVx may be replaced with (BVx mod M). b. Alternatively, BVx may be replaced with ((BVx + X) mod M) - X, where 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 with respect to the current CTU. c. In one example, BVy may be replaced with (BVy mod N). d. Alternatively, BVy may be replaced with ((BVy + Y) mod N) - Y, where 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 with respect to the current CTU. 20. BVx and BVy may have different normalization ranges. 21. The block vector difference (BVDx, BVDy) can be normalized to a certain range. Yes. a. In one example, BVDx may be replaced with (BVDx mod M) , where the function mod returns the remainder. b. Alternatively, BVDx may be replaced with ((BVDx + X) mod M) - X , where X is a predefined 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 with ((BVDy + Y) mod N) - Y , where 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] Validity check of the block vector Let the width and height of the IBC buffer be W buf and H buf respectively. At the upper left corner of the picture For the case of a W×H block (luminance block, chroma block, CU, TU, 4×4, 2×2, or other sub-blocks) starting from (X, Y), the following may be applied to indicate whether the block vector (BVx, BVy) is valid. Let W and H be the width and height of one picture, and let W and H be the width and height of one CTU. The function floor(x) returns the largest integer not greater than x p ic . pic The function isRec(x, y) returns it if the sample (x, y) is reconstructed ctu . ctu 23. Even if any reference position is outside the picture boundary, the block vector (BVx , BVy) may be set as valid . a. In one example, the block vector may be set as valid even if X + BVx < 0 . b. In one example, the block vector may be set as valid even if X + W + BVx > W . c. In one example, the block vector may be set as valid even if Y + BVy < 0 . pic d. In one example, the block vector may be set as valid even if Y + H + BVy > H . 24. Even if a reference position exists outside the current CTU row, the block vector (BVx, B Vy) may be set as valid . pic a. In one example, the block vector may be set as valid even if Y + BVy < floor(Y / H * H . b. In one example, the block vector may be set as valid even if Y + BVy >= floor(Y / H * H ctu ) * H + H ctu . b. In one example, the block vector may be set to be valid even if Y + H + BVy >= floor(Y / H c tu ) * H ctu + H ctu . 25. The block vector (BVx, BVy) may be set to be valid even if any reference position is outside the current CTU and also the left (n - 1) CTU, where n is the number of CTUs (including or excluding the current CTU) that can be used as a reference region for IBC. a. In one example, the block vector may be set to be valid even if X + BVx < floor(X / W ctu ) * W ctu - (n - 1) * W ctu . b. In one example, the block vector may be set to be valid even if X + W + BVx > floor(X / W ct u ) * W ctu + W ctu . 26. The block vector (BVx, BVy ) may be set to be valid even if a specific sample has not been reconstructed. a. In one example, the block vector may be set to be valid even if isRec(X + BVx, Y + BVy) is false . b. In one example, the block vector may be set to be valid even if isRec(X + BVx + W - 1, Y + BVy) is false . c. In one example, the block vector may be set to be valid even if isRec(X + BVx, Y + BVy + H - 1) is false . d. In one example, the block vector may be set to be valid even if isRec(X + BVx + W - 1, Y + BVy + H - 1) is fa​​ Otherwise, the block vector may be set as valid. 27. The block vector (BVx, BVy) is the block of the first CTU in one CTU row. If it is not the block of the first CTU in the CTU row, it may always be set as valid. a. Alternatively, the block vector may always be set as valid. 28. If all of the following three conditions are satisfied, the block vector (BVx, BVy) may always be set as valid. · X + BVx >= 0 · Y + BVy >= floor(Y / H ctu ) · isRec(X + BVx + W - 1, Y + BVy + H - 1) == true a. Alternatively, for the block of the first CTU in one CTU row, if all three conditions are satisfied, the block vector may always be set as valid. 29. If the block vector (BVx, BVy) is valid, the sample copy of the block may be performed based on the block vector. a. In one example, the prediction of the sample (X, Y) is ((X + BVx) % W buf , ( Y + BVy) % H buf ).

[0083] Buffer Update 30. When encoding a new picture or tile, the buffer may be reset. a. The term "reset" may refer to the buffer being initialized. b. The term "reset" may refer to all samples / pixels in the buffer being set to a given value (e.g., , 0 or -1). 31. After finishing encoding the VPDU, the buffer is updated with the It may also be. 32. After finishing the encoding of the CTU, the buffer may be updated with the reconstructed value of the CTU. It may be. a. In one example, if the buffer is not full, the buffer can be sequentially updated by the CTU. It can be updated sequentially by the CTU. b. In one example, if the buffer is full, the buffer area corresponding to the oldest CTU is updated. Update the buffer area corresponding to the oldest CTU. c. In one example, M = mW, N = H (W and H are the sizes of the CTU, and M and N are the buffer sizes), and if the previously updated area starts from (kW, 0), the next start position to be updated is ((k + 1)W mod M, 0). Update the buffer area corresponding to the oldest CTU. The next start position to be updated is ((k + 1)W mod M, 0). 33. The buffer may be reset at the beginning of each CTU row. a. 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. It may be. c. Alternatively, the buffer may be reset at the start of decoding one tile group / picture. It may also be reset. 34. After finishing the encoding of the block starting from (x, y), the corresponding area of the buffer starting from (x, y) is updated by the reconstruction from the block. The corresponding area of the buffer starting from (x, y) is updated by the reconstruction from the block. a. In one example, (x, y) is the position relative to the upper left corner of the CTU. 35. After finishing the encoding of the block for the picture, the corresponding area of the buffer is updated by the reconstruction from the block. The corresponding area of the buffer is updated by the reconstruction from the block. a. In one example, the value at the position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at the position (x, y) relative to the upper left corner of the picture. The value at the position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at the position (x, y) relative to the upper left corner of the picture. It may be. b. In one example, the value at position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at position (x, y) relative to the upper left corner of the current tile. That is fine. c. In one example, the value at position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at position (x, y) relative to the upper left corner of the current CTU row. That is also fine. d. In one example, the values in the buffer may be refreshed with the reconstructed pixel values after bit-depth alignment. That is fine too. 36. After finishing encoding the block starting from (x, y), the corresponding area of the buffer starting from (xb, yb) is updated by reconstruction from the block, where (xb, yb) and (x, y) are two different coordinates. a. In one example, (x, y) is the position with respect to the upper left corner of the CTU, and (xb, y b) is (x + update_x, y + update_y), where update_x and update_y indicate the updatable positions in the buffer. 37. In the above example, the reconstructed value of one block may indicate the reconstructed value before applying a filter (e.g., a non-blocking filter). That is fine. a. Alternatively, the reconstructed value of one block may indicate the reconstructed value after applying a filter (e.g., a non-blocking filter). That is also fine. 38. When the buffer is updated from the reconstructed samples, the reconstructed samples may first be modified before being stored, for example, by changing the bit-depth of the samples. That is fine. a. In one example, the buffer is updated with the reconstructed sample values after bit-depth alignment to the bit-depth of the buffer. That is fine. 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 examples, 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. b. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. c. 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 predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. e. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. f. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. g. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. h. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. i. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. j. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. k. In one example, the predicted value is p << b, where p is the sample value in the buffer and b is a predefined value. l. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer 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. b. In one example, the predicted value is clip(p << b, 0, (1 << bitdepth) - 1), where p is the sample value in the buffer and bitdepth is the buffer bit depth. c. 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 predicted value is clip(p << b, 0, 1 << bitdepth) where bitdepth is the bit depth of the reconstructed sample. 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 bitdepth is the bit depth of the reconstructed sample. d. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth and then. 40. The buffer may be updated in a given order. a. 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 and. 41. When the buffer is full, the samples in the buffer can be replaced with the latest reconstructed samples and. a. In one example, the samples may be updated in a first-in-first-out manner. b. In one example, the oldest sample is replaced. c. In one example, priorities can be assigned to the samples, and the samples can be replaced based on this priority. d. In one example, the samples can be marked as "long-term" so that other samples are replaced first and. e. In one example, one flag can be sent with one block to indicate a high priority and. f. In one example, one number can be sent with one block to indicate the priority and. g. In one example, samples from a reconstructed block with a certain feature are from other A higher priority is assigned so that the sample is replaced first. i. In one example, if the percentage of samples encoded in IBC mode is greater than a threshold value, a high priority can be assigned to all samples in the block . ii. In one example, if the percentage of samples encoded in Palette mode is greater than the threshold value, a high priority can be assigned to all samples in the block . iii. In one example, if the percentage of samples encoded in IBC or Palette mode is greater than the threshold value, a high priority can be assigned to all samples in the block . iv. In one example, if the percentage of samples encoded in conversion skip mode is greater than the threshold value, a high priority can be assigned to all samples in the block . v. This threshold may vary based on block size, color component, and CTU size . vi. The threshold may be signaled in the SPS / PPS / sequence header / slice header / tile group / tile level / region. h. In one example, this buffer being full may mean that the number of available samples in this buffer is equal to or greater than a given threshold . i. In one example, if the number of available samples in the buffer is 64×64×3 luminance samples or more, the buffer may be determined to be full.

[0084] Alternative buffer combinations 42. Instead of always using the three previously encoded 64×64 blocks as the reference region and adaptively change it based on the position of the current block (or VPDU). is proposed. a. In one example, when encoding / decoding a 64×64 block, the previous three 6 4×64 blocks can be used as references. Compared with FIG. 2, more combinations of the previous 64×64 blocks may be combined. FIG. 2 shows examples of different combinations of the previous 64×64 blocks. are shown. 43. Instead of using the z-scan order, a vertical scan order may be used. a. In one example, when one block is divided into 4 VPDUs having indices 0..3 in the z-scan order, the encoding / decoding order is 0, 2, 1, 3. b. In one example, when encoding / decoding a 64×64 block, the previous three 64×64 blocks can be used as references. Compared with FIG. 2, more types of encoding / decoding orders of 64×64 blocks can be applied. FIG. 4 shows examples of different encoding / decoding orders of 64×6 4 blocks. c. Alternatively, the above method may be applied only to the encoding of screen content . d. Alternatively, the above method may be applied only when CPR is enabled for one tile / tile group / picture. e. Alternatively, the above method may be applied only when CPR is enabled for one CTU or one CTU row.

[0085] Virtual IBC Buffer Hereinafter, in the luminance samples, the width and height of the VPDU are denoted as W VPDU (for example 64) and H VPDU (for example, 64), respectively. Alternatively, W VPDU and / or or H VPDU represents the width and / or height of another video unit (e.g., CTU) and may be used. 44. A virtual buffer may be maintained to continuously track the state of the IBC reference region. a. In one example, the virtual buffer size is mW VPDU ×nH VPDU where m and n are integers. i. In one example, m is equal to 3 and n is equal to 2. ii. In one example, m and / or n may depend on the picture resolution and CTU size and may vary accordingly. iii. In one example, m and / or n may be signaled or predefined and may be used as needed. b. In one example, the method described by the above black dots and sub-black dots may be applied to the virtual buffer and may be used as needed. c. In one example, the sample (x,y) for the upper left corner of a picture / slice / tile / brick is mapped to (x%(mW ),y%(nH VPDU )) VPDU and may be used as needed. and may be used as needed. 45. An array may be used to track the availability of each sample associated with the virtual buffer and may be used as needed. a. In one example, a flag may be associated with a sample in the virtual buffer to identify whether the sample in the buffer can be used as an IBC reference and may be used as needed. b. In one example, each 4×4 block, including luminance and chroma samples, may share one flag to indicate whether any sample associated with that block can be used as an IBC reference and may be used as needed. and may be used as needed. c. In one example, an array corresponding to 3×2 VPDUs (e.g., each 4×4 block Cl may share the same availability flag) tracks the availability of the IBC reference sample is maintained as such. d. In one example, an array corresponding to 4 × 2 VPDUs (e.g., each 4 × 4 block Cl may share the same availability flag) tracks the availability of the IBC reference sample is maintained as such. 46. After decoding of the VPDU or video unit is complete, specific samples associated with the virtual buffer may be marked as unavailable for IBC reference. a. In one example, which samples are unavailable may depend on the position of the most recently decoded VP DU. b. If one sample is marked as unavailable, prediction from this sample is not permitted. i. Alternatively, other methods (e.g., using default values) may be further applied to derive a predictor and replace the unavailable sample. 47. Recording the position of the most recently decoded VPDU can facilitate identification of which samples associated with the virtual buffer are marked as unavailable. a. In one example, at the start of decoding the VPDU, based on the position of the most recently decoded VPDU some samples associated with the virtual buffer can be marked as unavailable. i. In one example, taking the upper left corner of the picture / slice / tile / brick / other video processing unit of the most recently decoded VPDU as (xPrevVPDU, yPrevV PDU) as the upper left position, and when yPrevVPDU % (nH ) is equal to 0 VPDU a specific position (x, y) can be marked as unavailable. ​1. In one example, x may be within a range such as [xPrevVPDU - W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU - 2W VPDU + 2mW VPDU )%mW VPDU ) - 1 + W VPDU . 2. In one example, y may be within a range such as [yPrevVPDU%(nH VPDU ), (yPrevVPDU%(nH VPDU )) - 1 + H VPDU . 3. In one example, x may be within a range such as [xPrevVPDU - W VPDU + 2mW VPDU %mW VPDU , ((xPrevVPDU - W VPDU + 2mW VPDU )%mW VPDU - 1 + W VPDU , and y may be within a range such as [yPrevVPDU%(nH VPDU ), (yPrevVPDU%(nH VPDU )) - 1 + H VPDU . ii. In one example, for the upper left corner of the most recently decoded VPDU picture / slice / tile / brick / other video processing unit, represent (xPrevVPDU, yPre vVPDU) as the upper left position. If yPrevVPDU%(nH VPDU ) is not equal to 0 , the specific position (x, y) can be marked as unavailable. 1. In one example, x may be within a range such as [xPrevVPDU - W VPDU + 2mW VPDU )%mW VPDU , ((xPrevVPDU - W VPDU + 2mW VPDU )%mW VP DU ) - 1 + W VPDU . 2. In one example, y may be within a range such as [yPrevVPDU%(nH VPDU ),(yPr evVPDU%(nH VPDU )) - 1 + H VPDU . 3. In one example, x may be within a range such as [xPrevVPDU - W VPDU +2mW VPDU )%mW VPDU ,((xPrevVPDU - W VPDU +2mW VPDU )%mW VP DU ) - 1 + W VPDU , and y may be within a range such as [yPrevVPDU %(nH VPDU ),(yPrevVPDU%(nH VPDU )) - 1 + H VPDU . That is, it may be within such a range. 48. When one CU contains multiple VPDUs, instead of applying the IBC reference availability marking process based on the VPDUs, the IBC reference availability marking process may follow the following CU . That is, it may be. a. In one example, at the start of decoding a CU that contains multiple VPDUs, before decoding the VPDUs within the CU, the IBC reference availability marking process may be applied for each VPDU . That is, it may be. b. In such a case, 128×64 IBC blocks and 64×128 IBC blocks may not be permitted. i. In one example, the pred_ mode_ibc_flag for 128×64 and 64×128 CUs may not be sent, and may be assumed to be equal to 0. 49. In the case of a reference block or sub - block, check the reference availability status of the upper - right corner It may not be necessary to check whether the block vector associated with this reference block is valid by hooking. There may be cases where it is not necessary to make a determination. a. In one example, determine whether the block vector is valid and check only the upper left, lower left, and lower right corners of the block / sub-block. 50. The IBC buffer size may depend on the size of the VPDU (the width / height is represented by vSize) and / or the size of the CTB / CTU (the width / height is represented by ctbSize). It may be dependent. a. In one example, the height of the buffer may be equal to ctbSize. b. In one example, the width of the buffer may depend on min(ctbSize, 64). i. In one example, the width of the buffer may be (128 * 128 / vSize, min(ctbSize, 64)). 51. The IBC buffer may contain values outside the pixel range, indicating that this position may not be available for IBC reference (e.g., not used for prediction of other samples). This indicates that there may be a possibility that it is not available for IBC reference (e.g., not used for prediction of other samples). a. The sample value may be set to a value indicating that the sample is unavailable. b. In one example, this value may be -1. c. In one example, this value may be any value outside [0, 1 << (internal_bit_depth) - 1], where internal_bit_depth is a positive integer value. For example, internal_bit_depth is the internal bit depth used for encoding / decoding samples of one color component. For example, internal_bit_depth is the internal bit depth used for encoding / decoding samples of one color component. / decoding. d. In one example, this value may be any value outside [0, 1 << (input_bit_depth) - ​​​​​​It may be any value outside the range of [[1]], and input_bit_depth is a positive integer value is. For example, input_bit_depth is the input bit depth used to encode / decode samples of one color component is. 52. The availability marking of samples in the IBC buffer may depend on the position of the current block , the size of the current block, the size of the CTU / CTB, and the size of the VPDU In one example, (xCb, yCb) represents the position of the block relative to the upper left of the picture , ctbSize is the size of the CTU / CTB (i.e., width and / or height) is, vSize = min(ctbSize, 64), and wIbcBuf and h IbcBuf are the width and height of the IBC buffer. a. In one example, if (xCb % vSize) is equal to 0 and (yCb % vSize) is equal to 0, a set of specific positions in the IBC buffer can be marked as unavailable can be marked. b. In one example, if the size of the current block is smaller than the size of the VPDU, i.e., min(c tbSize, 64), the marked unavailable area may follow the size of the VPD U. c. In one example, if the size of the current block is larger than the size of the VPDU, i.e ., min(ctbSize, 64), the marked unavailable area may follow the size of the CU. 53. At the start of decoding of a video unit (e.g., VPDU(xV, yV)) relative to the upper left position of the picture , the corresponding position in the IBC buffer may be set to a value outside the pixel range may be. a. In one example, the position (x%wIbcBuf, y%hIbcBuf) in the buffer f), where x = xV, ..., xV+ctbSize-1, y = yV, ..., yV+ ctbSize-1, the buffer samples are set to the value -1. wIbcBuf and hIbcBuf are the width and height of the IBC buffer, and ctbSize is the C width of the TU / CTB. i. In one example, hIbcBuf may be equal to ctbSize. 54. The bitstream compliance constraints may follow the values of the samples in the IBC buffer as well. a. In one example, if one reference block associated with one block vector in the IBC buffer contains values outside the pixel range, this bitstream may be invalid possibly. 55. Based on the availability indication in the IBC buffer, the bitstream compliance constraints may be set. a. In one example, if any reference sample mapped to the IBC buffer is marked as unavailable for encoding / decoding one block, this bitstream may be invalid possibly. b. In one example, when a single tree is used, if any luminance reference sample mapped to the IBC buffer for encoding / decoding one block is marked as unavailable, this bitstream may be invalid possibly. c. One compliant bitstream, in the case of an IBC encoded block, may point to one reference block to which the associated block vector is mapped in the IBC buffer, or each luminance reference sample located in the IBC buffer for encoding / decoding one block. It can satisfy the requirement of marking as available for samples (for example, the value of the sample is within the range of [K0, K1]. For example, K0 is set to 0 and K1 is set to ( 1 << BitDepth - 1), where 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, i.e., 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, it may be necessary 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 luma video block (e.g., CU / PU / CB / PB) is encoded with a dual tree, the bitstream constraints may allow ignoring 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 may be able to ignore whether the positions of the chroma components mapped to the IBC buffer are unavailable.​​​

[0086] Improvement of current VTM design 57. The prediction of IBC may have a lower accuracy than the 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. 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 the SPS / PPS / sequence header / picture header / slice header / tile group header / tile header or other types of video data units Signaling may be performed in the knit. 58. Some parts of the IBC prediction may be less accurate, while other parts have the same accuracy as the reconstruction. Have. a. In one example, the allowed reference region may include samples having different accuracies (e.g., bit depths). Do. b. In one example, references from other 64×64 blocks where the current 64×64 block is not decoded are less accurate, while references from the current 64×64 block have the same accuracy as the reconstruction. Block are less accurate, while references from the current 64×64 block have the same accuracy as the reconstruction. Have. c. In one example, references from CTUs other than the current CTU being decoded are less accurate, while references from the current CTU have the same accuracy as the reconstruction. Low, while references from the current CTU have the same accuracy as the reconstruction. d. In one example, references from a collection of specific color components are less accurate, while references from other color components Have 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 closest available n×n CTUs in the row of the CTU. There is. a. In one example, if the size of the reference region is 128×128 and the size of the CTU is 6 4×64, the closest available 4 CTUs in one CTU row can be used for IBC Reference. b. In one example, if the size of the reference region is 128×128 and the size of the CTU is 3 2×32, the closest available 16 CTUs in one CTU row can be used for IB C reference. 60. If the size of the CTU is M and the size of the reference region is nM, the reference region is the closest available n−1 CTUs in the row / tile of the CTU. There is. a. In one example, if the size of the reference region is 128×128 or 256×64, When the size of the CTU is 64×64, the two closest available CTUs in one CTU row can be used for IBC reference. b. In one example, when the size of the reference area is 128×128 or 512×32, and the size of the CTU is 32×32, the five closest available CTUs in one CTU row can be used for IBC reference. 61. When the size of the CTU is M, the size of the VPDU is kM, the size of the reference area is nM, and the reference area is the n - k closest available CTUs in the CTU row / tile. a. In one example, the size of the CTU is 64×64, the size of the VPDU is also 64×64, the size of the reference is 128×128, and the three closest CTUs in one CTU row can be used for IBC reference. b. In one example, the size of the CTU is 32×32, the size of the VPDU is 64×64, the size of the reference is 128×128, and the twelve closest (16 - 4) CTUs in one CTU row can be used for IBC reference. 62. When using IBC for a w×h block with the upper left corner at (x,y), there are constraints to protect the reference block from a specific area for memory reuse, where w and h are the width and height of the current block. a. In one example, when the size of the CTU is 128×128 and (x,y)=(m×64,n×64), the reference block cannot overlap with the 64×64 area starting from ((m - 2)×64,n×64). b. In one example, when the size of the CTU is 128×128, the reference block cannot overlap when the upper left corner of the w×h block is (x - 128,y). ​​​​​​​​​​​​​​ c. In one example, when the size of the CTU is 128×128, (x + BVx, y + BVy) does not exist within the w*h block whose upper left corner is (x - 128, y), and BVx and BVy represent the block vectors of the current block. d. In one example, when the size of the CTU is M×M and the IBC buffer size is k×M ×M, the reference block cannot overlap with the w×h block, and its upper left corner is ( x - k×M, y), and BVx and BVy represent the block vectors of the current block. e. In one example, when the size of the CTU is M×M and the IBC buffer size is k×M ×M, (x + BVx, y + BVy) does not exist within the w×h intra block, and its upper left corner is (x - k×M, y), and BVx and BVy represent the block vectors of the current block. 63. When 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 the row of the CTU. a. In one example, when the size of the reference region is 128×128 and the size of the CTU is 6 4×64, the nearest available 3 CTUs in one CTU row can be used for IBC reference. b. In one example, when the size of the reference region is 128×128 and the size of the CTU is 3 2×32, the nearest available 15 CTUs in one CTU row can be used for IBC reference. 64. For the CU of the 64×64 block starting from (2m*64, 2n*64), that is, the upper left 64×64 block in the 12 8×128 CTU, its IBC prediction is ((2 ​​​​​64×64 blocks starting from ((m - 2)*64, 2n*64), ((2m - 1)*64, 2n*64), and 64×64 blocks starting from ((2m - 1)*64, (2n + 1 )*64), and can be performed from the reconstruction samples in the current 64×64 block. 65. For the CU of the 64×64 block starting from ((2m + 1)*64, (2n + 1)*64), that is, the lower - right 64×64 block in the 128×128 CTU, its IBC prediction may be from the current 128×128 CTU. 66. For the CU of the 64×64 block starting from ((2m + 1)*64, 2n*64), that is, the upper - right 64×64 block in the 128×128 CTU, its IBC prediction is from 64×64 blocks starting from ((2m - 1)*64, 2n*64), ((2m - 1) *64, (2n + 1)*64), 64×64 blocks starting from (2m*64, 2 n*64), and can be performed from the reconstruction samples in the current 64×64 block. a. Alternatively, when reconstructing the 64×64 block starting from (2m*64, (2n + 1)*64), the IBC prediction is from 64×64 blocks starting from ((2m - 1)*64, 2n*64), 64×64 blocks starting from (2m*64, 2n*64), (2m* 64, (2n + 1)*64), and can be performed from the reconstruction samples in the current 64×64 block. 67. For the CU of the 64×64 block starting from (2m*64, (2n + 1)*64), that is, the lower - left 64×64 block in the 128×128 CTU, its IBC prediction is, ​​​​​64×64 blocks starting from ((2m - 1)*64, (2n + 1)*64), 64×64 blocks starting from (2m* 64, 2n*64), 64×64 blocks starting from ((2m + 1)*64, 2n*64 ), and can be performed from the reconstruction samples in the current 64×64 block. It can be done. a. Alternatively, if the 64×64 block starting from ((2m + 1)*64, 2n*64) is not reconstructed, the IBC prediction can be performed from the 64×64 blocks starting from ((2m - 1)*64, 2n*64), 64×64 blocks starting from ((2m - 1)*64, (2n + 1)*64), 64×64 blocks starting from (2m*64, 2n*64), and the reconstruction samples in the current 64×64 block. starting from, 64×64 blocks starting from ((2m - 1)*64, (2n + 1)*64), 64 ×64 blocks starting from (2m*64, 2n*64), and the current 64×64 block. 68. It is proposed to adjust the reference area based on which 64×64 block the current CU belongs to. It is proposed to. a. In one example, for a CU starting from (x, y), when (y >> 6) & 1 == 0, two or two previous 64×64 blocks starting from ((x >> 6 << 6) - 128, y >> 6 << 6) and ((x >> 6 << 6) - 6 4, y >> 6 << 6) can be referenced by the IBC mode. b. In one example, for a CU starting from (x, y), when (y >> 6) & 1 == 1, one previous 64× 64 block starting from ((x >> 6 << 6) - 64, y >> 6 <<< 6) can be referenced by the IBC mode. 69. For a block starting from (x, y) and having a block vector (BVx, BVy), isRec(((x + BVx) >> 6 << 6) + 128 - (((y + BVy) > > 6) & 1)*64 + (x % 64), ((y + BVy) >> 6 << 6) + (y % 64)) > 6) & 1)*64 + (x % 64), ((y + BVy) >> 6 << 6) + (y % 64)) If it is true, the block vector is invalid. a. In one example, the block is a luminance block. b. In one example, this block is a chroma block in 4:4:4 format and exists. c. In one example, this block contains both a luminance component and a chroma component. 70. Starting from (x,y), for a 4:2: 0 format chroma block with block vector (BVx,BVy), if isRec(((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. 71. The determination of whether the BV is invalid for the block of component c may depend on the availability of the samples of component X instead of checking the samples of the luminance. a. For the block of component c starting from (x,y) with block vector (BVx,BVy), if isRec(c, ((x + BVx) >> 6 << 6) + 128 - (((y + BVy) >> 6) & 1) * 64 + (x % 64), ((y + BVy) >> 6 << 6) + ([[]] 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 a luminance component or the G component for RGB encoding). ii. In one example, this block is a chroma block in 4:4:4 format (e.g., c is a cb or cr component, or the B / R component for RGB encoding ). iii. In one example, for instance, this block contains both a luminance and a chroma component ). The availability of samples for both luminance and chroma components, such as including, may be checked. . b. Starting from (x, y) of component c and having a block vector (BVx, BVy) In the case of a 4:2:0 format chroma block, if 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 may be treated as invalid. c. Starting from (x, y) of component c and having a block vector (BVx, BVy) In the case of a chroma block or sub - block, if isRec(c, x + B Vx + Chroma_CTU_size, y) is true for the chroma component, the block vector may be treated as invalid, and Chroma_CTU_size is the CTU size of the chroma component. i. In one example, for the 4:2:0 format, Chroma_CTU_si ze may be 64. ii. In one example, a chroma sub - block may be a 2×2 block in the 4:2:0 format. iii. In one example, a chroma sub - block may be a 4×4 block in the 4:4:4 format. iv. In one example, a chroma sub - block may correspond to the minimum CU size in the luminance component. 1. Alternatively, a chroma sub - block may correspond to the minimum CU size of the chroma component. 72. For all the black circles described above, assume that the reference buffer contains a plurality of M×M blocks (M = 64). However, this is provided that the reference buffer contains a plurality of N×M blocks. It can also be extended to other cases including hooks (e.g., N = 128, M = 64). 73. For all the above-mentioned black circles, an additional restriction may be applied that the reference buffer should be within the same brick / tile / tile group / slice as the current block. a. In one example, if a part of the reference buffer is outside the current brick / tile / tile group / slice, the use of IBC can be disabled. The signaling of IBC-related syntax elements may be skipped. b. Alternatively, if a part of the reference buffer is outside the current brick / tile / tile group / slice, IBC may still be enabled for one block, but the block vector associated with one block may point to only the remaining reference buffer. 74. As the reference area of IBC, except for the current VPDU, if available, in the first VPDU row of the CTU / CTB row, it is proposed to have K1 of the most recently encoded VPDUs, and if possible, in the second VPDU row of the CTU / CTB row, to have K2 of the most recently encoded VPDUs. a. In one example, K1 is equal to 2 and K2 is equal to 1. b. In one example, the above method may be applied when the CTU / CTB size is 128×128 and the VPDU size is 64×64. c. In one example, the above method may be applied when the CTU / CTB size is 64×64 and the VPDU size is 64×64 and / or 32×32. d. In one example, the above method may be applied when the CTU / CTB size is 32×32 and the VPDU size is 32×32 or less. 75. The above-described method may be applied at different stages. a. In one example, a modular operation (e.g., mod b) of the block vector (BV) is called in the BV availability check process to determine whether the BV is valid or not. b. In one example, a modular operation (e.g., mod b) of the block vector (BV) is called to specify the reference sample position in the IBC virtual buffer or the reconstructed picture buffer (e.g., based on the position of the current sample and the modular result of the BV) before, for example, the in-loop filtering process.

[0087] 5. Embodiments 5.1 Embodiment #1 One implementation of the buffer for IBC is described below.

[0088] The buffer size is 128×128. The CTU size is also 128×128. For the encoding of the first CTU in one CTU row, the buffer is initialized with 128 (in the case of an 8-bit video signal). For encoding the k-th CTU in the CTU row, the buffer is initialized with the reconstruction before the loop filtering of the (k - 1)-th CTU.

[0089] FIG. 3 illustrates the encoding of a block starting from (x, y).

[0090] When encoding a block starting from (x, y) for the current CTU, the block vector (BVx, BVy) = (x - x0, y - y0) is sent to the decoder, indicating that the reference block is from (x0, y0) in the IBC buffer. Respectively, the width of the block ​Let w be the width and h be the height of the block. When the encoding of the block is completed, the wxh region starting from (x, y) in the IBC buffer is updated by the reconstruction of the block before loop filtering.

[0091] 5.2 Embodiment #2 FIG. 4 illustrates a possible alternative method for selecting the previously encoded 64×64 block.

[0092] 5.3 Embodiment #3 FIG. 5 illustrates an alternative method that can change the encoding / decoding order of the 64×64 block.

[0093] 5.4 Embodiment #4 FIG. 8 shows another possible alternative method for selecting the previously encoded 64×64 block when the decoding order of the 64×64 block is from top to bottom and from left to right.

[0094] 5.5 Embodiment #5 FIG. 9 shows another possible alternative method for selecting the previously encoded 64×64 block.

[0095] 5.6 Embodiment #6 FIG. 11 shows another possible alternative method for selecting the previously encoded 64×64 block when the decoding order of the 64×64 block is from left to right and from top to bottom.

[0096] 5.7 Embodiment #7 If the size of the CTU is W×W and in the decoder, an IBC buffer with a size of mW×W and a bit depth of B is implemented, the following occurs.

[0097] At the start of decoding the CTU row, initialize the buffer with the value (1<<(B - 1)) and update​​​​​​​ Set the starting point (xb, yb) to (0, 0).

[0098] When decoding a CU starting from (x, y) with size w×h with respect to the upper left corner of the CTU after aligning the bit depth to B bits, update the region starting from (xb + x, yb + y) and with size w×h with the reconstructed pixel values of the CU.

[0099] After decoding the CTU, set the updated starting point (xb, yb) to ((xb + W) mod mW, 0).

[0100] When decoding an IBC CU with block vectors (BVx, BVy), for any pixel (x, y) with respect to the upper left corner of the CTU after aligning the bit depth to the bit depth of the prediction signal, extract the prediction from the buffer position ((x + BVx) mod mW, (y + BVy) mode W).

[0101] In one example, B is set to 7 or 8, while the output / input bit depth of the block may be equal to 10.

[0102] 5.8 Embodiment #8 For a luminance CU or combined luminance / chroma CU starting from (x, y) and block vectors (BVx, BVy) with respect to the upper left corner of the picture the block vector is ineffective if isRec( ((x + BVx)>>6<<6)+128 - (((y + BVy)>>6)&1)*64 + (x%64), ((y + BVy)>>6<<6)+(y%64)) is true.

[0103] For a luminance CU or combined luminance / chroma CU starting from (x, y) and block vectors (BVx, BVy) with respect to the upper left corner of the picture ​​For the starting chroma CU, the block vector is invalid if isRec(((x + BVx) >> 5 < <5) + 64 - (((y + BVy) >> 5) & 1) * 32 + (x % 32), ((y + BV y) >> 5 << 5) + (y % 32)) is true.

[0104] 5.9 Embodiment #9 For a chroma block or sub - block starting from (x, y) in 4:2:0 format regarding the upper - left corner of the picture, and a block vector (BVx, BVy), the block vector is invalid when isRec(c, (x + BVx + 64, y + BVy) is true and c is a chroma component. (x + BVx + 64, y + BVy) is true and c is a chroma component, the block vector is invalid.

[0105] For a chroma block or sub - block starting from (x, y) in 4:4:4 format regarding the upper - left corner of the picture, and a block vector (BVx, BVy), when isRec(c (x + BVx + 64, y + BVy) is true and c is a chroma component, the block ,(x + BVx + 64, y + BVy) is true and c is a chroma component, the block vector is invalid.

[0106] 5.10 Embodiment #10 For a luma CU or combined luma / chroma CU starting from (x, y) regarding the upper - left corner of the picture and a block vector (BVx, BVy), the block vector is invalid if isRec( ((x + BVx) >> 6 << 6) + 128 - (((y + BVy) >> 6) & 1) * 64 + (x % 64), ((y + BVy) >> 6 << 6) + (y % 64)) is true. (x % 64), ((y + BVy) >> 6 << 6) + (y % 64)) is true, then it is invalid.

[0107] For a chroma block or sub - block starting from (x, y) in 4:2:0 format regarding the upper - left corner of the picture, and a block vector (BVx, BVy), when isRec(c (x + BVx + 64, y + BVy) is true and c is a chroma component, , ((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 chroma component, the block vector is invalid.

[0108] 5.11 Embodiment #11 In this embodiment, except for the current VPDU, the two most encoded VPDUs in the row of the first VPDU and one most encoded VPDU in the row of the second VPDU in the row of the first CTU / CTB are emphasized for retention.

[0109] When the encoding order is from top to bottom and from left to right, the reference area is shown as in Figure 13.

[0110] When the encoding order of the VPDU is from left to right and from top to bottom, and the current VPDU is not on the right side of the picture boundary, the reference area is shown as in Figure 14.

[0111] When the encoding order of the VPDU is from left to right and from top to bottom, and the current VPDU is on the right side of the picture boundary, the reference area can be shown as in Figure 15.

[0112] Assuming the size of the luminance block (x, y) is w × h, whether the block vector (BVx, B Vy) is valid can be known by checking the following conditions .

[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 When the size of the CTU is 192×128, a virtual buffer of size 192×128 is maintained to track the reference samples of IBC.

[0116] The sample (x, y) relative to the upper left corner of the picture is associated with the position (x % 192, y % 128) relative to the upper left corner of the buffer. The following steps show how to mark the availability of the samples associated with the virtual buffer for IBC reference.

[0117] Record the position (xPrevVPDU, yPrevVPDU) relative to the upper left corner of the picture to represent the upper left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0, 0). 2) At the start of decoding the first CU of the VPDU, positions (x = (xPrevVPDU - 2WVP DU + 2mWVPDU) % (mWVPDU),.., ((xPrevVPDU - 2WVP DU + 2mWVPDU) % (mWVPDU)) - 1 + WVPDU; and y = yPre vVPDU % (nHVPDU),..,(yPrevVPDU % (nHVPDU)) - 1 + HVPDU) may be marked as unavailable. And, ([ xPrevVPDU, yPrevVPDU) is set to (xCU, yCU), i.e., the ​Set it to the upper left position for the picture. 3) After decoding one CU, x = xCU % (mWVPDU),...,(xCU + CU_width - 1) % (mWVPDU) and y = yCU % (nHVPDU),. ..,(yCU + CU_height - 1) % (nHVPDU) for the position (x,y) is marked as available. 4) For an 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) for the position (x,y) is, used is marked as impossible, and the block vector is considered invalid.

[0118] Figure 16 shows the buffer state in the picture together with the decoding state of the VPDU.

[0119] 5.13 Embodiment #13 If the size of the CTU is 128×128, or the size of the CTU is larger than the size of the VPDU (for example, in the current design, 64×64), or the size of the CTU is larger than the size of the VPDU (for example, in the current design, 64×64) then maintain a virtual buffer of size 192×128 to track the reference samples for IBC. Hereinafter, when 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 upper left corner of the picture is the position relative to the upper left corner of the buffer (x It is associated with (%192, y%128). The following steps show how to mark the availability of samples associated with the virtual buffer.

[0121] Record the position (xPrevVPDU, yPrevVPDU) relative to the upper left corner of the picture to represent the upper left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0, 0) 2) At the start of decoding the first CU of the VPDU, a. If yPrevVPDU%64 is equal to 0, x = (xPrevVPDU - 1 28)%192,..,((xPrevVPDU - 128)%192)+63; and y = yPrevVPDU%128,..,(yPrevVPDU%128)+63 at the positions ( x, y) are marked as unavailable. And (xPrevVPDU, yPre vVPDU) is set to (xCU, yCU), i.e., set to the upper left position of the CU relative to the picture. b. Otherwise, x = (xPrevVPDU - 64)%192,..,((x PrevVPDU - 64)%192)+63; and y = yPrevVPDU%128, .., (yPrevVPDU%128)+63 at the positions (x, y) are marked as unavail able. And (xPrevVPDU, yPrevVPDU) is set to (xCU, yCU ), i.e., set to the upper 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​​​ When the position (x, y) is within (ht - 1) % 128, it is marked as available. 4) For an IBCCU with a block vector (xBV, yBV), x = (xCU + xBV) % 192,..., (xCU + xBV + CU_width - 1) % 192 and y = (yCU + yBV) % 128,..., (yCU + yBV + CU_height - 1) % 128, the position (x, y) is marked as unavailable, and the block vector is considered invalid.

[0122] When the size of the CTU is S × S, since S is not equal to 128, set Wbuf equal to 128 * 128 / S. Maintain a virtual buffer of size Wbuf x S to track the reference samples for IBC. 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 upper - left corner of the picture, representing the upper - left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0, 0). 2) At the start of decoding the first CU of the VPDU, for x = (xPrevVPDU - W bu f * S) % S,.., ((xPrevVPDU - W buf * S) % S) + S - 1; and y = yPrevVPDU % S,.., (yPrevVPDU % S) + S - 1, the position (x, y) is marked as unavailable. And (xPrevVPDU, yP Set the revVPDU as (xCU, yCU), that is, set it to the upper left position of the CU picture to. 3) After decoding one CU, x = xCU % (W buf ),...,(xCU + C U_width - 1) % (W buf ) and y = yCU % S,...,(yCU + CU_ height - 1) % S, the positions (x, y) in this case are marked as available. 4) For an IBCCU with a 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) % S, the positions (x, y) in this case are marked as unavailable, and the block ve ctor is considered invalid.

[0124] 5.14 Embodiment #14 If the size of the CTU is 128×128, or if the size of the CTU is larger than the size of the VPDU (for example, in the current design, 64×64), or if the size of the CTU is larger than the size of the VPDU (for example, in the current design, 64×64) then maintain a virtual buffer of size 256×128 to track the reference samples for IBC. Hereinafter, when a < 0, define (a % b) 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 upper left corner of the picture is associated with the position (x % 256, y % 128) relative to the upper left corner of the buffer. The following steps are for virtual Indicates how to mark the availability of samples associated with the buffer.

[0126] Record the position (xPrevVPDU, yPrevVPDU) relative to the upper left corner of the picture and represents the upper left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0, 0) and is set to. 2) At the beginning of decoding the first CU of the VPDU, a. If yPrevVPDU % 64 is equal to 0, x = (xPrevVPDU - 1 28) % 256,.., ((xPrevVPDU - 128) % 256) + 63; and y = yPrevVPDU % 128,.., (yPrevVPDU % 128) + 63 at the position ( x, y) is marked as unavailable. And (xPrevVPDU, yPre vVPDU) is set to (xCU, yCU), that is, set to the upper left position of the CU relative to the picture. b. Otherwise, x = (xPrevVPDU - 64) % 256,.., ((x PrevVPDU - 64) % 256) + 63; and y = yPrevVPDU % 128, .., (yPrevVPDU % 128) + 63 at the position (x, y) is marked as unavail able. And (xPrevVPDU, yPrevVPDU) is set to (xCU, yCU ) and is set to the upper left position of the CU relative to the picture. 3) After decoding one CU, the positions (x, y) where x = xCU % 256,...,(xCU + CU_w idth - 1) % 256 and y = yCU % 128,...,(yCU + CU_heig ht - 1) % 128 are marked as available.​​ 4) In the case of an IBCCU having a block vector (xBV, yBV), x = (xCU + xBV) % 256,..., (xCU + xBV + CU_width - 1) % 256 and also y = (yCU + yBV) % 128,..., (yCU + yBV + CU_height - 1) % 128, the positions (x, y) are marked as unavailable, and the block vector is considered invalid.

[0127] If the size of the CTU is not 128×128, or less than 64×64, or less than 64× 64, the same processing as in the previous example, i.e., Embodiment #14, is applied.

[0128] 5.15 Embodiment #15 The IBC reference availability marking process is described as follows. In this document, its changes are shown in bold, underlined, and italic.

[0129]

Table 4

[0130]

Table 5

Fig.

[0131] 7.3.7.5 Encoding Unit Syntax

[0132]

Table 6

[0133] 8.6.2 Derivation Process of Motion Vector Components of IBC Blocks 8.6.2.1 General ... [Chemistry] ...

[0134] 8.6.3 Decryption Process of IBC Block 8.6.3.1 General This process is called when decrypting an encoded unit encoded in the IBC prediction mode. It is issued.

[0135] The input to this process is as follows. - The luminance position (xCb, yCb) that defines the top-left sample of the current encoded block with respect to the top-left luminance sample of the current picture - The variable cbWidth that defines the width of the current encoded block in the luminance sample - The variable cbHeight that defines the height of the current encoded block in the luminance sample - The variables numSbX and numSbY that define the number of horizontal and vertical luminance encoded sub-blocks , - The motion vector mv[xSbIdx][ySbIdx] when xSbIdx = 0..numSbX - 1 and ySbIdx = 0..numSbY - 1 - The variable cIdx that defines the color component index of the current block - For each coding of the sub-block index (xSbIdx, ySbIdx) when xSbIdx = 0..numSbX - 1 and ySbIdx = 0..numSbY - 1 -1, the following applies to the sub-block. - The top-left sample of the current encoded sub-block with respect to the top-left luminance sample of the current picture [Chemistry] ...

[0136] When xSbIdx = 0..numSbX - 1 and ySbIdx = 0..numSbY - 1, for each coding of the sub-block index (xSbIdx, ySbIdx), the following applies. - For each sub-block, the following applies. - The top-left sample of the current encoded sub-block with respect to the top-left luminance sample of the current picture The luminance positions (xSb, ySb) that define the samples are derived as follows. (xSb, ySb) = (xCb + xSbIdx * sbWidth, yCb + ySbId x * sbHeight) (8 - 913)

Chemical Formula

Chemical Formula

[0137] 8.7.5 Picture Reconstruction Processing 8.7.5.1 General The inputs to this process are as follows. - The position (xCurr, yCurr) that defines the top - left sample of the current block with respect to the top - left sample of the current picture component, - Variables nCurrSw and nCu rrSh that define the width and height of the current block respectively, - Variable cIdx that defines the color component of the current block, - The (nCurrSw)×(nCurrSh) array predSamples that defines the predicted samples of the current block, - The (nCurrSw)×(nCurrSh) array resSamples that defines the residual samples of the current block. - The (nCurrSw)×(nCurrSh) array resSamples that defines the residual samples of the current block. The outputs of this process are as follows.

[0138] - The reconstructed picture sample array recSamples. - The reconstructed picture sample array recSamples.

Chemical Formula

[0139] 5.16 Embodiment #16 It is the same as the above - mentioned embodiment except for the following changes.

[0140]

Table 7

[0141]

Table 8

Chem.

[0142] 5.17 Embodiment #17 In this specification, changes in some examples are indicated by text in bold or underlined.

[0143] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax

[0144]

Table 9

[0145] 7.4.8.5 Encoding Unit Syntax

[0146] If all of the following conditions are true, set NumHmvpSmrIbcCand to N umHmvpIbcCand, and set HmvpSmrIbcCandList i] to HmvpIbcCandList[i] for i = 0..NumHmv pIbcCand - 1, so that the motion vector predictor based on the history for the shared merge candidate list area is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0. - SmrY[x0][y0] is equal to y0.

[0147] x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - For 1, make the following assignments. CbPosX[x][y] = x0 (7 - 135) CbPosY[x][y] = y0 (7 - 136) CbWidth[x][y] = cbWidth (7 - 137) CbHeight[x][y] = cbHeight (7 - 138)

Chemical formula

[0148] 8.6.2 Derivation Process of Motion Vector Components of IBC Blocks 8.6.2.1 General The input to this process is as follows. - The luminance position (xCb, yCb) of the top - left sample of the current luminance - encoded block with respect to the top - left luminance sample of the current picture, - The variable cbWidth that defines the width of the current encoded block in the luminance sample, - The variable cbHeight that defines the height of the current encoded block in the luminance sample .

[0149] The output of this process is as follows. - The luminance motion vector at 1 / 16 - fraction sample accuracy mvL.

[0150] The luminance motion vector mvL is derived as follows. - The derivation process of the IBC luminance motion vector prediction defined in Section 8.6.2.2 is called with the luminance position (xCb, yCb), the variables cbWidth, and cbHeight as inputs, and its output is the luminance motion vector mvL. - When general_merge_flag[xCb][yCb] is 0, the following applies 1. The variable mvd is derived as follows. is applied ​​mvd[0] = MvdL0[xCb][yCb][0] (8 - 883) mvd[1] = MvdL0[xCb][yCb][1] (8 - 884) 2. The rounding process of the motion vector as defined in item 8.5.2.14 is called with the mvX set set equal to mvL, the rightShift set set equal to MvShift + 2, and the leftShift set set equal to MvShift + 2 as inputs, and the rounded mvL is output. u[0] = (mvL[0] + mvd[0] + 2 ) % 2 (8 - 885) 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 resulting values of mvL[0] and mvL[1] specified above are always within the range of -2 17 ~2 17 -1.

[0151] The update process of the history - based motion vector predictor list as defined in item 8.6.2.6 is called using the luminance motion vector mvL.

Chemical formula

[0152] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The input to this process is as follows. - The position (xCurr, yCurr) that defines the top - left sample of the current block relative to the top - left sample of the current picture component, - Variables nCurrSw and nCurrSh that define the width and height of the current block respectively, - A variable cIdx that defines the color component of the current block, - A (nCurrSw)×(nCurrSh) array predSamples that defines the predicted samples of the current block, - A (nCurrSw)×(nCurrSh) array resSamples that defines the residual samples of the current block.

[0153]

Chemical formula

[0154] Based on the value of the color component cIdx, the following assignments are made. - If cIdx is equal to 0, recSamples corresponds to the reconstructed picture sample array S and the function clipCidx1 corresponds to Clip1 L Y Y Y - Otherwise, if cIdx is equal to 1, tuCbfChroma is set equal to tu_cbf_cb[xCurr][yCurr], recSamples corresponds to the reconstructed chroma sample array SCb, and the function clipCidx1 corresponds to Clip1 C C - Otherwise (if cIdx is equal to 2), set tuCbfChroma equal to tu_cbf_cr[xCurr][yCurr], and recSamples is the reconstructed corresponding to the resulting color sample array SCr, the function clipCidx1 corresponds to Clip1 C corresponds to do

[0155] Depending on the value of slice_lmcs_enabled_flag, the following applies - When slice_lmcs_enabled_flag is equal to 0, the (nCurrSw) ×(nCurrSh) block of the reconstructed samples recSamples at position (xCurr rr,yCurr) is derived as follows for i = 0..nCurrSw-1, j = 0..nCur rSh-1 recSamples[xCurr+i][yCurr+j]=clipCidx1 (predSamples[i][j]+resSamples[i][j]) (8 -992) - Otherwise (when slice_lmcs_enabled_flag is equal to 1) , the following applies - When cIdx is equal to 0, the following applies - Picture reconstruction involving the mapping process of luminance samples as defined in 8.7.5.2 is called with the luminance position (xCurr,yCurr), block width nCurrSw and height nCurrSh, predicted luminance sample array preSamples, and residual luminance sample array resSamples as inputs, and the output is the reconstructed luminance sample array reCamples - Otherwise (when cIdx is greater than 0), picture reconstruction by the luminance-dependent chroma residual scaling process of chroma samples as defined in 8.7.5.3 is performed with the chroma position (xCurr,yCurr), width nCurrSw and height of the transform block ​nCurrSh, the coding block flag tuCbfChro of the current chroma conversion block ma, the predicted chroma sample array predSamples, the residual chroma sample array res Samples is called with the input, and the reconstructed chroma sample array recSam ples is output.

Chemical formula

[0156] 5.18 Embodiment #18 In this specification, changes in some examples are indicated in bold, underlined, and italic fonts .

[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 be equal to NumHmvpIbcCand, and set HmvpSmrIbcCandList i] to be equal to HmvpIbcCandList[i] for i = 0..NumHmv pIbcCand - 1, so that the motion vector predictor based on the history for the shared merge candidate list area is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0. - SmrY[x0][y0] is equal to y0.

[0161] For x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1, make the following assignments: CbPosX[x][y] = x0 (7 - 135) CbPosY[x][y] = y0 (7 - 136) CbWidth[x][y] = cbWidth (7 - 137) CbHeight[x][y] = cbHeight (7 - 138)

Chemical formula

[0162] 8.6.2 Derivation Process of Motion Vector Components of IBC Blocks 8.6.2.1 General The inputs to this process are as follows: - The luminance position (xCb, yCb) of the top - left sample of the current luminance coding block with respect to the top - left luminance sample of the current picture, - The variable cbWidth that defines the width of the current coding block in the luminance sample, - The variable cbHeight that defines the height of the current coding block in the luminance sample .

[0163] The outputs of this process are as follows: - The luminance motion vector at 1 / 16 - fraction sample precision mvL.

[0164] The luminance motion vector mvL is derived as follows: - The derivation process of IBC luminance motion vector prediction defined in section 8.6.2.2 is called with the luminance position (xCb, yCb), the variables cbWidth and cbHeight as inputs, and its output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is equal to 0, then - 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 rounding process of the motion vector as defined in item 8.5.2.14 is called with the mvX set set equal to mvL, the rightShift set set equal to MvShift + 2, and the leftShift set set equal to MvShift + 2 as inputs, and the rounded mvL is output. The mvX set set equal to mvL, the rightShift set set equal to MvShift + 2, and the leftShift set set equal to MvShift + 2 are used as inputs and called, and the rounded mvL is output. 3. The luminance motion vector mvL is corrected as follows. 3. The luminance motion vector mvL is corrected 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 resulting values of mvL[0] and mvL[1] specified above are always within the range of -2 17 ~2 17 -1.

[0165] The update process of the history - based motion vector predictor list as defined in item 8.6.2.6 is called using the luminance motion vector mvL. 5. The update process of the history - based motion vector predictor list as defined in item 8.6.2.6 is called using the luminance motion vector mvL.

Chemical formula

[0166] 8.6.3 Decryption Process of IBC Blocks 8.6.3.1 General This process is called when decrypting an encoded unit encoded in the IBC prediction mode. Output

[0167] The inputs to this process are as follows: - The luminance position (xCb, yCb) that defines the top - left sample of the current encoded block relative to the top - left luminance sample of the current picture, - The variable cbWidth that defines the width of the current encoded block in luminance samples, - The variable cbHeight that defines the height of the current encoded block in luminance samples, - The color component index of the current block, , - The color component index of the current block,

Chemical

[0168] The outputs of this process are as follows: - An array of predicted samples predSamples.

Chemical

[0169] 8.7.5 Picture Reconstruction Process 8.7.5.1 General The inputs to this process are as follows: - The position (xCurr, yCurr) that defines the top - left sample of the current block relative to the top - left sample of the current picture component, - The variables nCurrSw and nCu rrSh that define the width and height of the current block respectively, - The variable cIdx that defines the color component of the current block, - The variables nCurrSw and nCu rrSh that define the width and height of the current block respectively, - The variable cIdx that defines the color component of the current block, - Specify the prediction samples of the current block (nCurrSw)×(nCurrSh) in the predSamples array - Specify the residual samples of the current block in the (nCurrSw)×(nCurrSh) array resSamples

[0170] [Chem.]

[0171] Based on the value of the color component cIdx, the following assignments are made - If cIdx is equal to 0, recSamples corresponds to the reconstructed picture sample array S L and the function clipCidx1 corresponds to Clip1 Y - Otherwise, if cIdx is equal to 1, tuCbfChroma is set equal to tu_cb f_cb[xCurr][yCurr], recSamples corresponds to the reconstructed chroma sample array S Cb and the function clipCidx1 corresponds to Clip1 C - Otherwise, if (cIdx is equal to 2, tuCbfChroma is set equal to tu_c bf_cb[xCurr][yCurr], recSamples corresponds to the reconstructed chroma sample array S Cb and the function clipCidx1 corresponds to Clip1 C

[0172] Depending on the value of slice_lmcs_enabled_flag, the following applies - If slice_lmcs_enabled_flag is equal to 0, at position (xCu ​​​​(nCurrSw) of the reconstructed samples recSamples in rr, yCurr) ×(nCurrSh) blocks are derived as follows for i = 0..nCurrSw - 1, j = 0..nCur rSh - 1 recSamples[xCurr + i][yCurr + j]=clipCidx1( predSamples[i][j]+resSamples[i][j]) (8 - 992) - Otherwise (when slice_lmcs_enabled_flag is equal to 1 ), the following applies. - When cIdx is equal to 0, the following applies. - Picture reconstruction with the luminance sample mapping process as defined in clause 8.7.5.2 is called with the luminance position (xCurr, yCurr), block width nCurrSw, and height nCurrSh, predicted luminance sample array preSamples, and residual luminance sample array resSamples as inputs, and the output is the reconstructed luminance sample array reCamples. - Otherwise (when cIdx is greater than 0), picture reconstruction by the chrominance - dependent chroma residual scaling process defined in clause 8.7.5.3 is called with the chroma position (xCurr, yCurr), width nCurrSw and height nCurrSh of the transform block, the coding block flag tuCbfChro ma of the current chroma transform block, predicted chroma sample array predSamples, residual chroma sample array res Samples as inputs, and the reconstructed chroma sample array recSam ples as the output. [Japanese for "Transformation"] ​

[0173] 5.19 Embodiment #19 In this specification, changes in some examples are indicated by text in bold and underlined.

[0174] 7.3.7 Slice Data Syntax 7.3.7.1 General Slice Data Syntax

[0175] [Table 11]

[0176] 7.4.8.5 Encoding Unit Syntax If all of the following conditions are true, set NumHmvpSmrIbcCand to N umHmvpIbcCand, and set HmvpSmrIbcCandList i] to HmvpIbcCandList[i] for i = 0..NumHmv pIbcCand - 1, so that the motion vector predictor based on the history for the shared merge candidate list area is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0. - For x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1

[0177] perform the following assignments. For x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1 CbPosX[x][y] = x0 (7 - 135) CbPosY[x][y] = y0 (7 - 136) CbWidth[x][y] = cbWidth (7 - 137) CbHeight[x][y] = cbHeight (7 - 138) [Figure]

[0178] 8.6.2 Derivation Process of Motion Vector Components of IBC Blocks 8.6.2.1 General The inputs to this process are as follows. - The luminance position (xCb, yCb) of the top - left sample of the current luminance - coded block with respect to the top - left luminance sample of the current picture - The variable cbWidth that defines the width of the current coded block in the luminance samples - The variable cbHeight that defines the height of the current coded block in the luminance samples

[0179] The outputs of this process are as follows. - The luminance motion vector at 1 / 16 - fraction sample accuracy mvL.

[0180] The luminance motion vector mvL is derived as follows. - The derivation process of IBC luminance motion vector prediction defined in section 8.6.2.2 is called with the luminance position (xCb, yCb), the variables cbWidth and cbHeight as inputs, and its output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is 0, the following is applied 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 rounding process of the motion vector as defined in section 8.5.2.14 is performed with mvX set equal to mvL and rightShi set equal to MvShift + 2 ​​​​​​The ft set, with the leftShift set set equal to MvShift+2 as input is called, 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 resulting values of mvL[0] and mvL[1] specified above are always in the range of -2 17 ~2 17 -1.

[0181] The update process of the history-based motion vector predictor list as defined in item 8.6.2.6 is called using the luminance motion vector mvL.

Chemical

[0182] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding an encoded unit encoded in the ibc prediction mode. is called.

[0183] The input to this process is as follows. - The upper left sample of the current encoded block with respect to the upper left luminance sample of the current picture The luminance position (xCb, yCb) that defines the loop, - The variable cbWidth that defines the width of the current coded block in the luminance samples, - The variable cbHeight that defines the height of the current coded block in the luminance samples ,

Chemical

[0184] 8.7.5 Picture Reconstruction Processing 8.7.5.1 General The input to this process is as follows. - The position (xCurr, yCurr) that defines the top-left sample of the current block with respect to the top-left sample of the current picture component, - The variables nCurrSw and nCu rrSh that define the width and height of the current block respectively, - The variable cIdx that defines the color component of the current block, - The (nCurrSw) × (nCurrSh) array predSamples that defines the predicted samples of the current block, - The (nCurrSw) × (nCurrSh) array resSamples that defines the residual samples of the current block.

[0185] The output of this process is the reconstructed picture sample array recSamples and the IBC buffer array ibcBuf L , ibcBuf Cb , ibcBuf Cr .

[0186] Based on the value of the color component cIdx, the following assignments are made. - When cIdx is equal to 0, recSamples corresponds to the reconstructed picture sample array SL, and the function clipCidx1 is Clip1 Y ​corresponds to - Otherwise, if cIdx is equal to 1, then tuCbfChroma is set equal to tu_cb f_cb[xCurr][yCurr], and recSamples is the reconstructed chroma sample array S corresponding to Cb and the function clipCidx1 corresponds to Clip1 C to corresponds to - Otherwise, if (cIdx is equal to 2, then tuCbfChroma is set equal to tu_c bf_cb[xCurr][yCurr], and recSamples is the re constructed chroma sample array S Cr corresponding to C and the function clipCidx1 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 for the (nCurrSw) ×(nCurrSh) block of the reconstructed samples recSamples at position (xCu rr,yCurr), for i = 0..nCurrSw-1, j = 0..nCur 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 mapping processing of luminance samples as defined in 8.7.5.2, accompanied by The chroma reconstruction is called with the luminance position (xCurr, yCurr), the block width nCurrSw and the height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance san ple array resSamples as inputs, and the output is the reconstructed luminance sample array reCamples. - In other cases (when cIdx is greater than 0), picture reconstruction by luminance-dependent chroma residual scaling processing of chroma samples defined in clause 8.7.5.3 is performed on the chroma position (xCurr, yCurr), the width nCurrSw and height n CurrSh of the transform block, the coding block flag tuCbfChrom a of the current chroma transform block, the predicted chroma sample array predSamples, the residual chroma sample array resS amples as inputs, and the reconstructed chroma sample array recSamp les as the output.

Chemical formula

[0188] 5.20 Embodiment #20 In this specification, changes in some examples are indicated in bold, underlined, and italic .

[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 set HmvpSmrIbcCandList equal to HmvpIbcCandList[i] for i = 0..NumHmv By setting it to pIbcCand - 1, the motion vector predictor based on the history for the shared merge candidate list area is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.

[0192] For x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1, make the following assignments. CbPosX[x][y] = x0 (7 - 135) CbPosY[x][y] = y0 (7 - 136) CbWidth[x][y] = cbWidth (7 - 137) CbHeight[x][y] = cbHeight (7 - 138)

Chemical formula

[0193] 8.6.2 Derivation Process of Motion Vector Components of IBC Blocks 8.6.2.1 General The inputs to this process are as follows. - The luminance position (xCb, yCb) of the top - left sample of the current luminance - coded block for the top - left luminance sample of the current picture, - The variable cbWidth that defines the width of the current coded block in the luminance sample, - The variable cbHeight that defines the height of the current coded block in the luminance sample .

[0194] ​​The output of this process is as follows. - Luminance motion vectors at 1 / 16 fractional sample accuracy mvL.

[0195] The luminance motion vector mvL is derived as follows. - The derivation process of the IBC luminance motion vector prediction defined in Section 8.6.2.2 is called with the luminance position (xCb, yCb), variables cbWidth and cbHeight as inputs, and its output is the luminance motion vector mvL. - When general_merge_flag[xCb][yCb] is equal to 0, the following applies 1. The variable mvd is derived as follows. 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 rounding process of the motion vector as defined in Section 8.5.2.14 is called with the mvX set equal to mvL, the rightShift set equal to MvShift+2, and the leftShift set equal to MvShift+2 as inputs, and the rounded mvL is the output. 2. The rounding process of the motion vector as defined in Section 8.5.2.14 is called with the mvX set equal to mvL, the rightShift set equal to MvShift+2, and the leftShift set equal to MvShift+2 as inputs, 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 resulting values of mvL[0] and mvL[1] specified above are always -2 17 ~2 17 -1 are included in the range of.

[0196] The update process of the history-based motion vector predictor list as defined in Clause 8.6.2.6 is called using the luminance motion vector mvL.

Chemical formula

[0197] 8.6.3 Decoding process of ibc blocks 8.6.3.1 General This process is called when decoding an encoded unit encoded in the ibc prediction mode is called.

[0198] The input to this process is as follows. - The luminance position (xCb, yCb) defining the top-left sample of the current encoded block with respect to the top-left luminance sample of the current picture - The variable cbWidth defining the width of the current encoded block in the luminance samples - The variable cbHeight defining the height of the current encoded block in the luminance samples - The variable cIdx defining the color component index of the current block , - The variable cIdx defining the color component index of the current block

Chemical formula

[0199] 8.7.5 Picture reconstruction process 8.7.5.1 General The input to this process is as follows. - The top-left sample of the current block with respect to the top-left sample of the current picture component The determined position (xCurr, yCurr), - Variables nCurrSw and nCu rrSh that respectively define the width and height of the current block, - Variable cIdx that defines the color component of the current block, - (nCurrSw)×(nCurrSh) array predSamples that defines the predicted samples of the current block, - (nCurrSw)×(nCurrSh) array resSamples that defines the residual samples of the current block.

Chemical formula

[0200] Based on the value of the color component cIdx, the following assignments are made. - If cIdx is equal to 0, recSamples corresponds to the reconstructed picture sample array S L and the function clipCidx1 corresponds to Clip1 Y corresponds to. - Otherwise, if cIdx is equal to 1, tuCbfChroma is set equal to tu_cb f_cb[xCurr][yCurr], recSamples corresponds to the reconstructed chroma sample array Cb S and the function clipCidx1 corresponds to Clip1 C corresponds to here. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is set equal to tu_c bf_cb[xCurr][yCurr], recSamples corresponds to the reconstructed chroma sample array Cb S and the function clipCidx1 corresponds to Clip1 C corresponds to.

[0201] Depending on the value of the slice_lmcs_enabled_flag, the following applies. - When slice_lmcs_enabled_flag is equal to 0, the (nCurrSw) reconstruction samples recSamples at position (xCurr rr,yCurr) for the (nCurrSh) x(nCurrSh) block are derived as follows for i = 0..nCurrSw-1, j = 0..nCur recSamples[xCurr+i][yCurr+j]=clipCidx1 (predSamples[i][j]+resSamples[i][j]) (8 -992) - Otherwise (when slice_lmcs_enabled_flag is equal to 1) , the following applies. - When cIdx is equal to 0, the following applies. - Picture reconstruction with the luminance sample mapping process as defined in clause 8.7.5.2 is called with the luminance position (xCurr,yCurr), block width nCurrSw and height nCurrSh, predicted luminance sample array preSamples, and residual luminance sample array resSamples as input, and the output is the reconstructed luminance sample array reCamples. - Otherwise (when cIdx is greater than 0), picture reconstruction by the chroma sample luminance-dependent chroma residual scaling process as defined in clause 8.7.5.3 is performed with the chroma position (xCurr,yCurr), the width nCurrSw and height nCurrSh of the transform block, the coding block flag tuCbfChro ma of the current chroma transform block, predicted chroma sample array predSamples, residual chroma sample array res Samples, and Samples is called with the input, and the reconfigured chroma sample array recSam ples is output.

Chemical Formula

[0202] Figure 6 is a flowchart showing an example of an exemplary method for visual media (video or image) processing. The method 600 includes determining a buffer size for storing reference samples for the current video block using an intra-block copy encoding mode (602) for conversion between the current video block and the bitstream representation of the current video block, and performing this conversion using the reference samples stored in this buffer (604). It includes.

[0203] The following terms describe some exemplary preferred features implemented by embodiments of method 600 and other methods. Additional examples are described in Chapter 4 of this specification.

[0204] 1. A video processing method including determining a buffer size for storing reference samples for the current video block using an intra-block copy encoding mode for conversion between the current video block and the bitstream representation of the current video block, and performing the conversion using the reference samples stored in the buffer.

[0205] 2. The method according to item 1, wherein the buffer size is a predetermined constant.

[0206] 3. The method according to any one of items 1 to 2, wherein the size is M×N and M and N are integers.

[0207] 4. The method according to item 3, wherein M×N is equal to 64×64 or 128×128 or 64×128. The method according to item 3.

[0208] 5. The method according to item 1, wherein the buffer size is equal to the size of the coding tree unit of the current video block. The method according to item 1.

[0209] 6. The method according to item 1, wherein the buffer size is equal to the size of the virtual pipeline data unit used for the conversion. The method according to item 1.

[0210] 7. The method according to item 1, wherein the buffer size corresponds to one field in the bitstream representation. The method according to item 1.

[0211] 8. The method according to item 7, wherein the field is included in the bitstream representation at the level of a video parameter set, a sequence parameter set, or a picture parameter set, or a picture header, a slice header, or a tile group header. The method according to item 7. The method according to item 7.

[0212] 9. The method according to any one of items 1 to 8, wherein the size of the buffer is different between the reference samples of the luminance component and the reference samples of the chroma component. The method according to any one of items 1 to 8.

[0213] 10. The method according to any one of items 1 to 8, wherein the size of the buffer depends on the chroma subsampling format of the current video block. The method according to any one of items 1 to 8.

[0214] 11. The method according to any one of items 1 to 8, wherein the reference samples are stored in RGB format. The method according to any one of items 1 to 8.

[0215] 12. The buffer is for before and after loop filtering 12. A method according to any one of claims 1 to 11, used for storing configuration samples.

[0216] 13. Loop filtering can be non-blocking filtering or adaptive loop filtering. Filtering with 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 above, the initial value of the reference sample is used to perform the intra block copy coding model. and initializing a buffer for storing reference samples for the current video block using the and performing the transformation using the reference samples stored in the buffer. and,

[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 image block. Item 14. The method according to any one of items 1 to 3.

[0220] 17. The method of claim 15, wherein the constant corresponds to a median gray value.

[0221] 18. The initial value corresponds to a pixel value of a previously decoded video block. The method according to

[0222] 19. The previously decoded video block is the decoded image before in-loop filtering. 19. The method of claim 18, corresponding to a block that has been

[0223] 20. The buffer size is as set forth in any one of items 14 to 19. The method according to any one of the items.

[0224] 21. The method according to any one of items 1 to 20, wherein pixel positions in the buffer are addressed using the numbers x and y. The method according to any one of items 1 to 20, wherein pixel positions in the buffer are addressed using a single number in the range from 0 to M*N-1, where M and N are the pixel width and pixel height of the buffer.

[0225] 22. The method according to any one of items 1 to 20, wherein pixel positions in the buffer are addressed using a single number in the range from 0 to M*N-1, where M and N are the pixel width and pixel height of the buffer. The method according to any one of items 1 to 20, wherein pixel positions in the buffer are addressed using a single number in the range from 0 to M*N-1, where M and N are the pixel width and pixel height of the buffer. The method according to any one of items 1 to 20, wherein pixel positions in the buffer are addressed using a single number in the range from 0 to M*N-1, where M and N are the pixel width and pixel height of the buffer.

[0226] 23. The current bitstream representation includes a block vector for the conversion, and the block vector represented as (BVx, BVy) is equal to (x - x0, y - y0), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block. The method according to any one of items 1 to 20. (BVx, BVy) is equal to (x - x0, y - y0), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block. The method according to any one of items 1 to 20. The method according to any one of items 1 to 20, wherein the block vector represented as (BVx, BVy) is equal to (x - x0, y - y0), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block. The method according to any one of items 1 to 20, wherein the current bitstream representation includes a block vector for the conversion, and the block vector represented as (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values.

[0227] 24. The current bitstream representation includes a block vector for the conversion, and the block vector represented as (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values. The method according to any one of items 1 to 20. (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values. The method according to any one of items 1 to 20. The method according to any one of items 1 to 20, wherein the block vector represented as (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values. The method according to any one of items 1 to 20, wherein the current bitstream representation includes a block vector for the conversion, and the block vector represented as (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values. The method according to any one of items 1 to 20, wherein the current bitstream representation includes a block vector for the conversion, and the block vector represented as (BVx, BVy) is equal to (x - x0 + Tx, y - y0 + Ty), where (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block, and Tx and Ty are offset values.

[0228] 25. The method according to item 24, wherein Tx and Ty are predefined offset values. .

[0229] 26. During the conversion, for a pixel at position (x0, y0) having a block vector (BVx, BV y), the corresponding reference in the buffer is at the reference position (x0 + BV The method according to any one of claims 1 to 20, found in x,y0+BVy).

[0230] 27. When the reference position is outside the buffer, the reference in the buffer is determined by clipping at the boundary of the buffer, the method according to claim 26. Method.

[0231] 28. When the reference position is outside the buffer, the reference in the buffer is determined to have a predetermined value, the method according to claim 26.

[0232] 29. During the conversion, for a pixel at position (x0,y0) having a block vector (BVx,BV y), the corresponding reference in the buffer is found at the reference position ((x0+B Vx) mod M,(y0+BVy) mod N), where "mod" is the modulo operation, and M and N are integers representing the x and y dimensions of the buffer, the method according to claim 1 ~20.

[0233] 30. During the conversion between a video and the bitstream representation of the current video block, storing a buffer for reference samples for intra-block copy encoding at the video boundary and resetting the buffer, and performing this conversion using the reference samples stored in this buffer A video processing method comprising: And.

[0234] 31. The method according to claim 30, wherein the video boundary corresponds to a new picture or a new tile. Method described.

[0235] 32. After the reset, the conversion makes the buffer a virtual pipeline data unit Updating with the reconstructed value of the VPDU, the method according to claim 30 Method.

[0236] 33. The method according to claim 30, wherein the conversion is performed by updating the buffer with the reconstructed value of the encoding tree unit after the reset. Method according to claim 30, which is performed by updating the buffer with the reconstructed value of the encoding tree unit after the reset.

[0237] 34. The method according to claim 30, wherein the reset is performed at the beginning of each encoding tree unit row. Method.

[0238] 35. The method according to claim 1, wherein the size of the buffer corresponds to L pre-decoded blocks of 64×64, and L is an integer. Method according to claim 1.

[0239] 36. The method according to any one of claims 1 to 35, wherein a vertical scanning order is used to read or store samples in the buffer during the conversion. Method according to any one of claims 1 to 35, wherein a vertical scanning order is used to read or store samples in the buffer during the conversion.

[0240] 37. For the conversion between the current video block and the bitstream representation of the current video block, using an intra-block copy encoding mode to use a buffer for storing reference samples for the current video block, wherein a first bit depth of the buffer is different from a second bit depth of the encoded data, using, and performing the conversion using the reference samples stored in the buffer, a video processing method. Using an intra-block copy encoding mode to use a buffer for storing reference samples for the current video block for the conversion between the current video block and the bitstream representation of the current video block, wherein a first bit depth of the buffer is different from a second bit depth of the encoded data, using, and performing the conversion using the reference samples stored in the buffer, a video processing method. Buffer for storing reference samples for the current video block for the conversion between the current video block and the bitstream representation of the current video block, wherein a first bit depth of the buffer is different from a second bit depth of the encoded data, using, and performing the conversion using the reference samples stored in the buffer, a video processing method. The first bit depth of the buffer is different from the second bit depth of the encoded data, using, and performing the conversion using the reference samples stored in the buffer, a video processing method. The first bit depth of the buffer is different from the second bit depth of the encoded data, using, and performing the conversion using the reference samples stored in the buffer, a video processing method. Video processing method, including using and performing the conversion using the reference samples stored in the buffer.

[0241] 38. The method according to claim 37, wherein the first bit depth is greater than the second bit depth. Method.

[0242] 39. The first bit depth is the bit depth of the reconstruction buffer used during the 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 differential 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 differential value in the bitstream representation.

[0244] 41. The method according to any one of claims 37 to 40, wherein different bit depths are used for chroma and luminance components in the conversion. The method according to any one of claims 37 to 40, wherein different bit depths are used for chroma and luminance components in the conversion.

[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 in a prediction calculation during the conversion is lower than a second accuracy used in a 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 in a prediction calculation during the conversion is lower than a second accuracy used in a 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 in a prediction calculation during the conversion is lower than a second accuracy used in a 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 in a prediction calculation during the conversion is lower than a second accuracy used in a 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 bitshift 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 bitshift 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 bitshift 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 bitshift 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 34 of Chapter 4. are described in items 28 to 31 and 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 Performing conversion between the lock bitstream representation, where the size nM×nM is used for the coded tree unit size M×M, n and N are integers, and the current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n coded tree unit, a video processing method. The coded tree unit size M×M is used, n and N are integers, and the current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n coded tree unit. The current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n coded tree unit. The coded tree unit closest to the current video block and is an available n×n coded tree unit. A video processing method.

[0250] Additional embodiments and examples of item 4 are described in item 35 of Chapter 4.

[0251] 45. Using the intra block copy mode to perform conversion between the current video block and the lock bitstream representation, where the size nM×nM is used in addition to the coded tree unit size M×M, n and N are integers, the current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n - 1 coded tree unit, a video processing method. Performing conversion between the current video block and the lock bitstream representation, where the size nM×nM is used in addition to the coded tree unit size M×M, n and N are integers, the current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n - 1 coded tree unit. The coded tree unit size M×M is used in addition, n and N are integers, the current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n - 1 coded tree unit. The current video block is positioned in the coded tree unit, and the reference region is closest to the coded tree unit corresponding to the current video block and is an available n×n - 1 coded tree unit. The coded tree unit closest to the current video block and is an available n×n - 1 coded tree unit. A video processing method.

[0252] Additional embodiments and examples of item 4 are described in item 36 of Chapter 4. Figures 8 and 9 show further exemplary embodiments. Figures 8 and 9 show further exemplary embodiments.

[0253] 46. M = mW, N = H, where W and H are the width and height of the coded tree unit (CTU) of the current video block, and m is a positive integer, the method according to claim 3. The width and height of the coded tree unit (CTU) of the current video block, and m is a positive integer. The method according to claim 3.

[0254] 47. M = W and N = nH, where W and H are the coded tree unit (CTU) The method according to claim 3, wherein the width and height are such that n is a positive integer.

[0255] 48. M = mW and N = nH, where W and H are the width and height of a coding tree unit (CTU) The method according to claim 3, wherein the width and height are such that 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

[0257] 50. For the conversion between the current video block and the bitstream representation of the current video block, determining the validity of the corresponding block vector for the current video block of the component c of the video using the component X of the video, wherein the component X is different from the luminance component of the video, and when the block vector is determined to be valid for the current video block, performing the conversion using the block vector, wherein the block vector represented as (BVx, BVy) is equal to (x - x0, y - y0), and (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block. equal to (x - x0, y - y0), and (x0, y0) corresponds to the upper left position of the coding tree unit of the current video block.

[0258] 51. The method according to claim 50, wherein the component c corresponds to the luminance component of the video.

[0259] 52. The method according to claim 50, wherein the current video block is a chroma block and the video is in 4:4:4 format.

[0260] 53. The video is in 4:2:0 format, the current video block is a chroma block starting at position (x, y), and the determining is performed by isRec(c, ((x + B y) Vx)>>5<<5)+64 - (((y + BVy)>>5)&1)*32+(x%32) , if ((y + BVy)>>5<<5)+(y%32)) is true, then the block vector is determined to be invalid, the method according to claim 50, comprising. block vector is determined to be invalid, the method according to claim 50, comprising.

[0261] 54. The video is in 4:2:0 format, the current video block is a chroma block starting from position (x, y), and the determination includes that if isRec(c, x + BV x + Chroma_CTU_size, y) is true, then the block vector is determined to be invalid, the method according to claim 50.

[0262] 55. For conversion between the current video block of the current virtual pipeline data unit (VPDU) in the video region and the bitstream representation of the current video block, selectively determining to use K1 which is the pre - processed VPDU of the first row and K2 which is the pre - processed VPDU of the second row in the video region, and performing the conversion, where this conversion excludes using the rest of the current VPDU and includes performing more conversions, a video processing method. processing method.

[0263] 56. The method according to claim 55, wherein K1 = 1 and K2 = 2.

[0264] 57. The method according to claims 55 - 56, wherein the current video block is selectively processed based on the dimensions of the video region or the dimensions of the current VPDU.

[0265] 58. Between the current video block and the bitstream representation of the current video block Performing a validity check of a block vector for conversion between them, and the block vector is for use in an intra-block copy mode and performing a validity check, and selectively using the block vector during the conversion using the result of the validity check. A video processing method including the above.

[0266] 59. Using an intra-block copy (IBC) buffer during the conversion, where the width and height of the IBC buffer are Wbuf and Hbuf, the dimensions of the current video block are W×H, the block vector is represented as (BVx, BVy), the current video block is in the current picture having dimensions Wpic and Hpic, the coding tree unit has width and height Wctu and Hctu, and the validity check uses a predetermined rule. The method according to item 58.

[0267] 60. The current video block is a luminance block, a chroma block, a coding unit CU, a transform unit TU, a 4×4 block, a 2×2 block, or a sub-block of a parent block starting from pixel coordinates (X, Y). The method according to any one of items 58 to 59.

[0268] 61. The validity check regards the block vector outside the boundary of the current picture as valid. The method according to any one of items 58 to 60.

[0269] 62. The validity check regards the block vector outside the boundary of the coding tree unit as valid. The method according to any one of items 58 to 60.

[0270] ​​​​​​​​​​In the previous items 23 to 30, additional examples and modifications of the above items 58 to 62 are described.

[0271] 63. The method according to any one of claims 1 to 62, wherein the conversion includes generating the bitstream representation from the current video block. 6.

[0272] 64. The method according to any one of claims 1 to 62, wherein the conversion includes generating pixel values of the current video block from the bitstream representation. 12.

[0273] 65. A video encoder device comprising a processing device configured to implement the method according to one or more of claims 1 to 62. 18.

[0274] 66. A video decoder device comprising a processing device configured to implement the method according to one or more of claims 1 to 62. 24.

[0275] 67. A computer-readable medium storing code, the code implementing instructions executable by a processing device for implementing the method according to any one or more of claims 1 to 62. 30. 32.

[0276] Figure 7 is a block diagram showing the hardware platform of the video / image processing device 700. The device 700 may be used to implement one or more of the methods described herein. The device 700 may be implemented by a smartphone, a tablet, a computer, an IoT (Internet of Things) receiver, etc. The device 700 may include one or more processors 702, one or more memories 704, and video processing hardware 706. 44. One or more processing devices 702 may be one or more of the methods described herein. It may be configured to implement a method (including, but not limited to, method 600). M emory (plural available) 704 may be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 706 may be used to implement the techniques described herein in hardware circuitry.

[0277] The bitstream representation corresponding to the current video block need not be a continuous set of bits and may be distributed across headers, parameter sets, and network abstraction layer (NAL) packets.

[0278] Section A: Additional Exemplary Embodiments

[0279] In Section A, another exemplary embodiment is presented for modifying the current version of the VVC standard to implement some of the techniques described herein.

[0280] In this section, some problems in the current IBC reference buffer design are analyzed and different designs for addressing these problems are presented. Instead of mixing with the decoding memory, an independent IBC reference buffer is proposed. Compared with the current anchor, the proposed scheme shows a brightness BD rate of -0.99% / -0.71% / -0.79% for AI / RA / LD-B in class F, -2.57% / -1.81% / -1.36% in 4:2:0 TGM, a 6.7% memory reduction, or a brightness BD rate of -1.31% / -1.01% / -0.81% in class F, -3.23% / -2.33% / -1.71% in 4:2:0 TGM, and a 6.7% memory increase.

[0281] A1. Introduction Intra Block Copy, or IBC (or Current Picture Reference, or Previous CP R) coding mode is adopted. Note that the IBC reference samples are stored in the on-chip memory. Therefore, a limited reference region of one CTU is defined. To limit the amount of extra on-chip memory required for 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 when it is 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 will be adapted accordingly to VPDU memory reuse. Such a design bundles the VPDU decoding memory 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 reuse in architectures that It is unclear whether this is the case. 2. The reference regions are significantly different. Consequently, too many bitstream compatibility constraints are introduced. This places an extra burden on the encoder to efficiently utilize the reference regions and avoid generating legal bitstreams. Also, the likelihood of having invalid BVs in different modules, e.g., in the merge list, increases. Handling these invalid BVs may introduce extra logic or extra compatibility constraints, which not only burdens the encoder or decoder but may also create a discrepancy between BV encoding and MV encoding. 3. The design does not scale well. Since VPDU decoding is mixed with the IBC buffer, it is not easy to increase or decrease the reference region for the current single 128×128 CTU design. Utilizing this may limit the flexibility to effectively utilize the better trade-off between encoding efficiency and on-chip memory in later developments, such as for lower or higher profiles. 4. The bit depth of the IBC reference buffer is connected to the decoding buffer. Usually, the bit depth of the source content is smaller than that of the internal decoding, but the buffer still needs to consume memory to store bits representing mostly rounded or quantized noise. This problem becomes more severe when considering a higher decoding bit depth configuration.

[0286] A3. Clear IBC Buffer Design To address the problems described in the above subsection, we propose having a dedicated IBC buffer that is not mixed with the decoding memory.

[0287] For a 128×128 CTU, the buffer is defined as 128×128 containing 8-bit samples. When a CU(x,y) of size w×h is decoded, the reconstruction of the buffer before loop filtering is converted to 8 bits and written into a w×h block area starting from the 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), for example, -3%128 = 125. ... ... ... ... ...

[0288] Assume that the pixel (x,y) is encoded in IBC mode with BV=(BVx,BVy). Then, the predicted sample in the IBC reference buffer is located at ((x + BVx)%128, (y + BVy)%128), and the pixel value is converted to 10 bits before prediction. ... ...

[0289] When regarding the buffer as (W,H), after decoding the CTU or CU starting from (x,y), the reconstructed pixels before loop filtering are stored in the buffer starting from (x%W, y%H). In this way, after decoding the CTU, the corresponding IBC reference buffer is updated accordingly. Such a setting may occur when the size of the CTU is not 128×128. For example, for a 64×64 CTU, the current buffer size can be regarded as a 256×64 buffer. The buffer status for the 64×64 CTU is shown in Figure 2. ... ... ... ... ... ...

[0290] Figure 12 is a diagram showing the IBC reference buffer status, where one block represents 64×64 CTUs. ...

[0291] In such a design, since the IBC buffer is different from the VPDU decoding memory, all... All IBC reference buffers can be used as references.

[0292] When the bit depth of the IBC buffer is 8 bits, three additional 10-bit 64× 4 buffers are required. Compared with the current design, the increase in on-chip memory is (8*4) / ( 10*3)-100% = 6.7%.

[0293] If the bit depth is further reduced, the memory requirements can be further reduced. For example, in the case of a 7-bit buffer, the on-chip memory savings are 100%-(7*4) / (10* 3)=6.7%.

[0294] In this design, the only bitstream compatibility constraint is that the reference block should be within the reconstructed area in the current CTU row of the current tile. That is, it should be within the reconstructed area in the current CTU row of the current tile.

[0295] If initialization to 512 is permitted at the start of each CTU row, all bitstream compatibility constraints can be removed.

[0296] A4. Experimental Results In some embodiments, the disclosed method may be implemented using the VTM-4.0 software. It may be implemented using the VTM-4.0 software.

[0297] For the 10-bit buffer implementation and CTC, this decoder is fully compatible with the current VTM4.0 encoder. That is, this means that the proposed decoder can accurately decode the VTM-4.0 CTC bitstream.

[0298] In the 7-bit buffer implementation, the results shown in Table 1 are obtained.

[0299] In an implementation form of an 8-bit buffer, the results are shown in Table 2.

[0300]

Table 14

[0301]

Table 15

[0302] FIG. 17 is a block diagram showing an exemplary video processing system 1700 in which various techniques disclosed herein may be implemented. The various implementations may include some or all of the modules of system 1700. System 1700 may include an input unit 1702 for receiving video content. The video content may be received in an unprocessed or uncompressed format , for example, as 8- or 10-bit multimodule pixel values, or may be received in a compressed or encoded format. Input unit 1702 may represent a network interface, a peripheral bus interface, or a memory interface. Examples of network interfaces include wired interfaces such as Ethernet®, Passive Optical Network (PON), etc., and wireless interfaces such as Wi-Fi® or cellular interfaces. Examples of wireless interfaces include Wi-Fi® or cellular interfaces.

[0303] System 1700 may include an encoding module 1704 capable of implementing various encoding or encoding methods described herein. Encoding module 1704 may reduce the average bit rate of the video from input unit 1702 to the output of encoding module 1704 and generate an encoded representation of the video. Thus, this encoding technique may be used for video compression or also is sometimes referred to as video coding technology. The output of the encoding module 1704 may be stored or transmitted via a connected communication as represented by module 1706. The bitstream (or encoded) representation of the video received, stored, or communicated in the input unit 1702 is used by module 1708 to generate pixel values or a displayable video to be transmitted to the display interface unit 1710. The process of generating a video that can be viewed by the user from the bitstream representation is sometimes referred to as video decompression (video expansion). Furthermore, specific video processing operations are referred to as "encoding" operations or tools, but it should be understood that the encoding tools or operations are reversed by the decoder by the decoding tools or operations that reverse the result of the decoding. Examples of the peripheral bus interface unit or the display interface unit may include a universal serial bus (USB), a high-definition multimedia interface (HDMI (registered trademark)), or a display port, etc. Examples of the storage interface include serial advanced technology attachment (SATA), PCI, IDE interface, etc. The technology described in this specification may be implemented in various electronic devices such as mobile phones, notebook computers, smartphones, or other devices capable of performing digital data processing and / or video display. FIG. 18 is a flowchart showing an example of a video data processing method. This flowchart

[0304]

[0305] The steps of the "ト" will be described in relation to Example 23 of Chapter 4 of this application. In step 1802, at this time, this process is for the conversion between the current video block of the current picture of the video media data and the bitstream representation of the current video block, and a block vector (BVx, B Vy) is determined. The validity of the block vector depends on (1) the position (P , Q) of the sample block, and / or (2) whether to reconstruct the samples at the position (P, Q), and / or and / or (3) regardless of the position of the current video block, the block vector (BVx, BVy) represents the pixel displacement between the current video block and the sample block. In step 1804, the process uses the block vector to perform a conversion in the intra-block copy mode based on the reconstructed block located in the same video region as the current video block, including the reference samples used to derive the predicted block of the current video block. During the conversion, the predicted samples having the position (A, B) from the reference samples in the buffer are determined based on at least the size of the buffer and / or the block vector (BVx, B Vy).

[0306] Figure 19 is a flowchart showing an example of a video data processing method. The steps of this flowchart will be described in relation to Example 23 of Chapter 4 of this application. In step 1902, the process determines whether the block vector (BVx, BVy) corresponding to the current video block is valid according to the rules for the conversion between the current video block of the current picture of the visual media data and the bitstream representation of the visual media data. The block vector (BVx, BVy) is between the current video block and the sample block ​ In step 1904, the process calculates a block vector a reference subsequence used to derive a prediction block of the current video block using the The transformation is based on a reference region from the current picture that contains the block sample, and the rule 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. At least one sample of at least one encoded image 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 fail to reconstruct.

[0307] FIG. 20 is a flowchart illustrating an example of a video data processing method. This step is described in conjunction with Example 44 in Chapter 4 of this application. The process includes: converting the media data to and from a bitstream representation of the current video block; A set of reference samples from the current picture that are used to derive the predicted block of the current picture. Based on the reference region, a virtual buffer of a defined size is created 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 conjunction with Example 51 in Chapter 4 of this application. The process further comprises: For conversion to the bitstream representation of the dia data, a buffer containing reference samples from the current picture for deriving the prediction block of the current video block is maintained, and one or more reference samples in the buffer marked as not available for said derivation have values outside the range of pixel values.

[0309] FIG. 22 is a flowchart showing an example of a video data processing method. The steps of this flowchart will be described in connection with Example 54 of Chapter 4 of this application. At step 2202, the process includes converting the video block of the current picture of the visual media data and the bitstream representation of the visual media data using a buffer containing reference samples from the current picture to derive the prediction block of the current video block, and the conversion is based on rules that define that the reference samples in the buffer meet the constraints of bitstream compliance so that the bitstream representation complies with the rules.

[0310] Some embodiments of this specification are presented in a clause-based format.

[0311] L1. A visual media processing method, comprising: Determining a block vector (BVx, BVy) for conversion between the current video block of the current picture of the video media data and the bitstream representation of the current video block, wherein the validity of the block vector depends on (1) the position (P, Q) of the sample block, and / or (2) whether to reconstruct the sample at the position (P, Q), and / or (3) does not depend on the position of the current video block, the block vector (BVx, B Vy) represents and determines the pixel displacement between the current video block and the sample block and using the block vector to derive a predicted block of the current video block performing conversion in an intra block copy mode based on a reconstruction block located in the same video area as the current video block and including a reference sample used for this purpose wherein, during the conversion a predicted sample having a position (A, B) from a reference sample in the buffer is determined based on at least the size of the buffer and / or the block vector (BVx, BVy) and performing the conversion including.

[0312] L2. A visual media processing method, comprising determining whether a block vector (BVx, BVy) corresponding to a current video block is valid according to a rule for conversion between the current video block of the current picture of visual media data and the bitstream representation of the visual media data wherein the block vector (BVx, BVy) represents and determines the pixel displacement between the current video block and the sample block and using the block vector to perform conversion based on a reference area from the current picture including a reference sample used to derive a predicted block of the current video block wherein the rule is that the block vector (BVx, BVy) satisfies (1) one or more samples from this sample block are outside this current picture, and / or (2) one or more samples from the sample block are outside at least one coded tree unit (CTU) associated with the current video block, and / or including performing. wherein the rule is that the block vector (BVx, BVy) satisfies (1) one or more samples from this sample block are outside this current picture, and / or (2) one or more samples from the sample block are outside at least one coded tree unit (CTU) associated with the current video block, and / or or (2) one or more samples from the sample block are outside at least one coded tree unit (CTU) associated with the current video block, and / or Or, effective when one or more samples from the (3) sample block fail to reconstruct. A visual media processing method.

[0313] L3. When it is identified that the block vectors (BVx, BVy) are valid, at least depending on the size of the buffer and / or the size of the block vectors (BVx, BVy), determine a predicted sample having a position (A, B) from the reference samples in the buffer , the method described in clause L2.

[0314] L4. The method according to any one or more of items L1 or L3, where the reference samples in the buffer correspond to the reconstructed samples in the region of the current picture.

[0315] L5. The method according to item L4, where the region includes the coded tree unit (CT U) rows associated with the current video block.

[0316] L6. Whether the position (P, Q) calculated based on the block vectors (BVx, BVy) and the upper left position (x, y) of the current video block is outside the boundary of one picture, determine that the block vectors (BVx, BVy) are valid, the method according to any one or more of items L1 to L5.

[0317] L7. Whether x + BVx < 0 or x + BVx > 0, the method according to item L6, where the block vectors (BVx, BVy) are valid.

[0318] L8. The block vectors (BVx, BVy) are valid regardless of whether x + W + BVx > W pic or x + W + BVx < W pic where W is the current video Represents the width of the block, W pic Is the method described in item L6 that represents the width of the picture

[0319] L9. The block vector (BVx, BVy) is valid regardless of whether y + BVy < 0 or y + B Vy > 0, which is the method described in item L6

[0320] L10. The block vector (BVx, BVy) is such that x + H + BVx > H pic Or x + H + BVx < H pic And is valid regardless of whether, where H represents the current Height of the video block, H pic Represents the height of the picture, which is the Method described in item L6

[0321] L11. Regardless of whether the position (P, Q) calculated based on the block vector (BVx, BVy) and the upper left position (x, y) of the current video block is outside the coding tree unit containing one of the current video blocks, the block vector (BVx , BVy) is valid, which is the method described in any one or more of items L1 to L5

[0322] L12. Regardless of whether y + BVy < floor(y / H ctu ) * H ctu Or y + BVy > f loor(y / H ctu ) * H ctu The block vector (BVx, BVy) is valid, and H ctu Represents the height of the coding tree unit, and floor( a) is the largest integer less than or equal to a, which is the method described in item L11

[0323] L13. y + H + BVy < floor(y / H ctu ) * Hctu or y + H + B Vy > floor(y / H ctu ) * H ctu Regardless of whether it is, the block vector ( BVx, BVy) is valid, H represents the height of the current video block, and H ctu is , represents the height of the coding tree unit, and floor(a) is the largest integer less than or equal to a, The method according to item L11.

[0324] L14. Regardless of whether the position (P, Q) calculated according to the block vector (BVx, BVy) and the upper left position (x, y) of the current video block is outside the coding tree unit including the current video block and (n - 1) coding tree units along the left direction , the block vector (BVx, BVy) is valid, the method according to any one or more of items L 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 Regardless of whether there is any deviation, the block vector (BVx, BVy) is valid, and W ctu represents 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 ) * W​​ctu +W ctu Regardless of which of the following is the case the block vector (BVx, BVy) is valid, and W represents the weight of the encoding tree unit and W ctu represents the weight of the current video block, where floor( a) is the method described in item L14, which is the largest integer less than or equal to a

[0327] L17. Regardless of whether the position (P, Q) calculated based on the block vector (BVx, BVy) and the upper - left position (x, y) of the current video block is outside the lower - inner CTU row containing the current encoding tree unit including the current video block, the block vector (BVx, BVy) is valid, as described in any one or more of items L1 - L5 of the method

[0328] L18. The block vector (BVx, BVy) is valid regardless of whether 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 represent the width and height of the CTU respectively, and floor(a) is the largest integer less than or equal to a, as described in item L17 of the method

[0329] L19. Regardless of whether the reconstruction of the sample fails, the block vector (BVx , BVy) is determined to be valid, as described in any one or more of items L1 - L5 of the method

[0330] L20. The block vector (BVx, BVy) is isRec(x + BVx, y + BV​​​ is valid regardless of whether pixel (x, y) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. The method described in item L19 is valid regardless of whether isRec(x + BVx + W - 1, y + BVy) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. Here, W is the width of the current video block described above. The method described in item L19

[0331] L21. The block vector (BVx, BVy) is valid regardless of whether isRec(x + BVx, y + BVy + H - 1) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. Here, H is the height of the current video block described above. The method described in item L19 is valid regardless of whether isRec(x + BVx + W - 1, y + BVy + H - 1) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. Here, W is the width of the current video block, and H is the height of the current video block. The method described in item L19

[0332] L22. The block vector (BVx, BVy) is valid regardless of whether isRec(x + BVx, y + BV y + H - 1) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. Here, H is the height of the current video block described above. The method described in item L19 is valid regardless of whether isRec(x + BVx + W - 1,

[0333] L23. The block vector (BVx, BVy) is valid regardless of whether isRec(x + BVx + W - 1, y + BVy + H - 1) is false, and isRec(x, y) is true if pixel (x, y) is reconstructed by the intra block copy mode. Here, W indicates the width of the current video block, and H is the height of the current video block , and the method described in item L19 is valid regardless of whether the current video block is included in the first coding tree unit of the coding tree unit row, and it is determined that the block vector (BVx, BVy) is valid

[0334] L24. Regardless of whether the current video block is included in the first coding tree unit of the coding tree unit row, the block vector (BVx, BVy) is determined to be valid and is valid. The method described in item L19 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 ) and (iii) isRec(x + BVx + W - 1, y + BVy + H - 1) is true. When all of these conditions are satisfied, the block vector (BVx, BVy) is determined to be valid and isRec(x, y) is true when the sample (x, y) is reconstructed in the intra-block copy mode. W represents the width of the current video block, H represents the height of the current video block, and floor(a) is the largest integer less than or equal to a. The method according to any one or more of items L1 to L5. L26. The block vector is located in the first CTU in the CTU row. The method according to item L 25.

[0336] L27. Based on the buffer size, the block vector (BVx, BVy), and the top-left position (x, y), determine the predicted sample at the position (A, B). The method according to item L3

[0337] L28. The predicted sample at the position (A, B) includes the predicted sample at the position calculated according to ((X + BVx) % W ( Y + BVy) % H

[0338] L28. The predicted sample at the position (A, B) includes the predicted sample at the position calculated according to ((X + BVx) % W buf , ( Y + BVy) % H buf ) and W bu f and H buf represent the width and height of the buffer respectively. The method according to item L27 .

[0339] L29. The conversion is performed in the intra-block copy mode. Items L1 to L28 The method according to any one or more of the following.

[0340] M1. A visual media processing method, comprising: performing conversion between a current video block of a current picture of visual media data and a bitstream representation of the visual media data, wherein the conversion is performed based on a reference region from the current picture, the reference region comprising a reference sample for deriving a prediction block of the current video block, and a virtual buffer of a defined size is used to track the availability of the reference sample for deriving the prediction block. A visual media processing method.

[0341] M2. The virtual buffer is maintained using a virtual pipeline data unit (VPDU), and the size of the virtual buffer is m * W × n * H VPDU where W VPDU and H VP DU represent the width and height of the VPDU, respectively. VPDU The method according to item M1.

[0342] M3. The method according to item M2, wherein m = 4 and n = 2.

[0343] M4. The method according to item M2, wherein m and / or n are at least partially based on the resolution of a picture associated with the current video block or the size of a coding tree unit including the current video block. The method according to item M2.

[0344] M5. The method according to item M2, wherein m and / or n are predefined quantities.

[0345] M6. The method according to item M2, wherein m and / or n are signaled as fields in the bitstream representation. The method according to item M2, as being performed.

[0346] M7. Samples within the current video block are mapped to (x%(m * W VPD U ), y%(n * H VPDU )) within the virtual buffer, where the samples within the current video block are located at (x, y) relative to the upper left corner of the picture, and "x%y" is defined as y = x - y * floor(x / y), where floor(a) is the largest integer less than or equal to a, and W V PDU and H VPDU indicate the width and height of the VPDU, the method according to item M1.

[0347] M8. The method according to item M1, further comprising using an array to track the availability of samples stored in the virtual buffer. The method, further including.

[0348] M9. The array according to item M8 includes a flag for indicating whether one or more samples stored in the buffer are used for prediction in the intra-block copy mode. The method according to item M8.

[0349] M10. The array according to item M8 corresponds to one or more VPDUs of size 3×2. The method according to item M8.

[0350] M11. The array according to item M8 corresponds to one or more VPDUs of size 4×2. The method according to item M8.

[0351] M12. The method according to item M1, flagging as unavailable for prediction a subset of the samples stored in the virtual buffer. The method according to item M1.

[0352] The subset of samples flagged as unavailable for prediction is the method according to item M12, based on the position of the most recently processed VPDU.

[0353] The method according to item M13, wherein the sample is flagged as unavailable at the start of the processing of the VPDU.

[0354] M15. If yPrevVPDU % (n * H VPDU ) is 0, a subset of the samples located at position (x, y) is flagged as unavailable, where x is within a first predetermined range, y is within a second predetermined range, (xPrevVPDU, yPr evVPDU) represents the upper left corner of the encoded tree unit of the most recently processed VPDU, and W and H VPDU represent the width and height of the VPDU, the method according to item M14. VPDU

[0355] M16. The first range is represented as [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 according to 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 is represented as, and the second range is [yPre vVPDU %(n*H VPDU ),(yPrevVPDU %(n*H VPDU )) - 1 + H VPDU as described in item M15.

[0357] M18.yPrevVPDU %(n*H VPDU ) is not equal to 0, a subset of the samples located at position (x, y) is flagged as unavailable, where x is within the first predetermined range, y is within the second predetermined range, (xPrevVPDU, yPrevVPDU) represents the upper left corner of the encoded tree unit of the most recently processed VPDU and W VPDU and H VPDU represent the width and height of the VPDU, as described in item M14 method.

[0358] M19. The 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 is represented as, and the second range is [yPrevVPDU %(n*H VPDU ),(yPrevVPDU %(n*H VPDU )) - 1 + H VPDU as described in item M18.

[0359] 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 [yPrevVPDU % (n * H VPDU , (yPrevVPDU % (n * H VPDU )) - 1 + H VPDU The method according to item M18, which is represented as such.

[0360] M21. When the encoding tree includes a VPDU, the subset of the samples flagged as unavailable for prediction is based on the position of the most recently processed encoding tree unit. The method according to item M12.

[0361] M22. The method according to item M21, where the samples are flagged as unavailable at the start of processing of the encoding tree unit.

[0362] M23. The method according to any one of items M1 to M22, including determining the validity of the block vector corresponding to the current video block based on the top - left position, bottom - left position, and bottom - right position of the current video block, and further including excluding the use of the top - right position of the current video block.

[0363] M24. The method according to any one or more of items M1 to M23, where the conversion is performed in the intra - block copy mode.

[0364] ​N1. A visual media processing method, comprising: maintaining a buffer containing reference samples from the current picture for deriving a prediction block of the current video block for conversion of the current video block of visual media data into a bitstream representation; wherein one or more reference samples in the buffer marked as unavailable for said derivation have values outside the range of pixel values.

[0365] N2. The method according to item N1, wherein the range of the pixel values is represented as [0, 1<<(bit_depth)-1], where bit_depth is a positive integer.

[0366] N3. The method according to item N2, wherein bit_depth is the precision used to process samples.

[0367] N4. The method further comprises initializing one set of samples in one buffer to a predetermined value indicating that this one set of samples is unavailable.

[0368] N5. The method according to item N4, wherein the predetermined value is -1.

[0369] N6. The method according to any one or more of items N4 to N5, wherein the position of the set of samples and / or whether to initialize the set of samples to a predetermined value is based on the position of the current video block, the size of the current video block, the size of the VPDU containing the current video block, and / or the size of the coding tree unit containing the current video block.

[0370] When N7. (xCb % vSize) is equal to 0 and (yCb % vSize) is 0 , this set of samples is marked as unavailable, and xCb, yCb represent the position of the current video block with respect to the said sample pull, vSize = min(ctbSize e, 64), where ctbSize indicates the width or height of the coding tree unit , the method described in item N6.

[0371] N8. When the size of the current video block is less than min(ctbSize, 64) , the set of samples in the buffer is marked as unavailable, and ctbSize is the width or height of the coding tree unit, the method described in item N1.

[0372] N9. The positions of the said plurality of samples are related to the size of the VPDU, the method described in item N8 .

[0373] N10. The position of the set of samples is related to the size of the coding tree unit including the current video block, the method described in item N8 .

[0374] N11. The set of samples in the buffer is represented by the position (x % wIbcBuf, y % hIbcBuf), where x = xV, ···, xV + ctbSize - 1 and y = yV, ···, yV + ctbSize - 1, and xV, yV represent the upper left position of the VPDU with respect to the upper left position of the picture , ctbSize represents the size of the coding tree unit including the current video block , and wIbcBuf and hIbcBuf represent the width of the buffer and the height of the buffer, the method described in item N4.

[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 beginning of decoding of a video unit. The method according to 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: To derive a prediction block for the current video block, a reference sample from the current picture is used. A buffer containing the current picture of visual media data is used to retrieve the video block and converting to and from a bitstream representation of the visual media data; The conversion is performed by changing the reference subscripts in the buffer so that the bitstream representation conforms to the rules. Based on rules that stipulate 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) based on at least one of the sample availability information in the buffer. The method according to item O1.

[0380] O3. The bitstream conformance constraint is that samples in the buffer may not exceed one pixel range. Items O1 to 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], 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 constraint on the bitstream conformity is that the availability information of the sample in the buffer indicates that the sample is not available for the current video block. In this case, the bitstream representation is non-conforming, as defined in any one or more of items O1 to O2. The method described in any one or more of items O1 to O2, which stipulates that when 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-conforming. The method described in any one or more of items O1 to O2, which stipulates that when 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-conforming. The method described above.

[0383] O6. When 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 constraint on the bitstream conformity is that the bitstream representation is non-conforming, as defined in any one or more of items O1 to O2. The method described in any one or more of items O1 to O2, which stipulates that when the availability information of the sample in the buffer indicates that the sample is not available for the current video block and a single tree split is used for the current video block, the bitstream representation is non-conforming. The method described in any one or more of items O1 to O2, which stipulates that when the availability information of the sample in the buffer indicates that the sample is not available for the current video block and a single tree split is used for the current video block, the bitstream representation is non-conforming. The method described in any one or more of items O1 to O2, which stipulates that when the availability information of the sample in the buffer indicates that the sample is not available for the current video block and a single tree split is used for the current video block, the bitstream representation is non-conforming. 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. The method described in item O7, which further includes marking the availability information of the sample as available when the value of the sample is within the interval represented as [K0, K1]. The method described in item O7, which further includes marking the availability information of the sample as available when the value of the sample is within the interval represented as [K0, K1].

[0385] O8. The method described in item O7, which marks the availability information of the sample as available when the value of the sample is within the interval represented as [K0, K1]. The method described in item O7, which marks the availability information of the sample as available when the value of the sample is within the interval represented as [K0, K1].

[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. 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 constraint on the bitstream conformity is the code associated with the current video block. Any one of items O1 to O8, further based on the partitioning type and tree type of the conversion unit The method according to any one of the above.

[0388] O11. When the partitioning type is dual tree and the tree type is single tree, the bitstream compatibility constraint is defined to check whether all color components of the sample are marked as being impossible to use, as described in item O10. The method according to the above.

[0389] O12. When the partitioning type is dual tree and the tree type is dual tree, the bitstream compatibility constraint does not define to check whether the chroma component of the sample is marked as being impossible to use, as described in item O10. The method according to the above.

[0390] O13. The method according to any one or more of items O1 to O12, wherein the conversion is performed in an intra-block copy mode. The method according to any one or more of the above.

[0391] XX. The method according to any one of items L1 to XX, including generating the bitstream representation from the current video block. The method according to any one of items L1 to XX.

[0392] XX. The method according to any one of items L1 to XX, including generating the pixel values of the current video block from the bitstream representation. The method according to any one of items L1 to XX.

[0393] XX. A video encoder device comprising a processing device configured to implement the method according to one or more of items L1 to XX. The method according to any one of the above.

[0394] XX. A video encoder device comprising a processing device configured to implement the method according to one or more of items L1 to XX. A video decoder device that includes.

[0395] A computer-readable medium storing XX code, where the code implements instructions executable by a processing device for implementing the method according to any one or more of items L1 to X X, a computer-readable medium. To do.

[0396] In this specification, the term "video processing" can refer to video encoding, video decoding, video compression, or It can also refer to video expansion. For example, a video compression algorithm may be applied during the conversion from the pixel representation of a video to the Corresponding bitstream representation, or vice versa. The bitstream representation of the current video block may, for example, correspond to bits Spread to the same or different locations within the bitstream, as defined by the syntax. It may also be. For example, one macroblock may be coded using bits in the header and other fields in the bitstream, from the perspective of the transformed and encoded residual error values. And. It may be encoded.

[0397] Although specific embodiments of the technology of the present disclosure have been described above for the purpose of explanation, it will be understood that various modifications can be made without departing from the scope of the present invention. Therefore, the technology of the present disclosure is not limited, except as defined by the appended claims.

[0398] The subject matter and implementation forms of the functional operations described in this patent specification may be implemented in various systems, digital electronic circuits, or computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents. Or. It may also be implemented in computer software, firmware, or hardware, or ​​​It may be implemented in one or more of those combinations. Implementations of the subject matter described in this specification may be implemented as one or more computer program products, i.e., tangible, non-transitory computer readable media encoded with one or more modules of computer program instructions to be executed by, or to control the operation of, a data processing apparatus. The computer readable media may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of these The terms “data processing unit” or “data processing apparatus” include, for example, all apparatuses, devices, and machines for processing data, including programmable processing apparatuses, computers, or multiple processing apparatuses or computers. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, for example, processing apparatus firmware, protocol stack, database management system, operating system, or code that constitutes a combination of one or more of these.

[0399] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language, including a compiled or interpreted language, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program need not be a file in a file system. ​It is not always the case. A program may be recorded in a part of a file (e.g., one or more scripts stored in a markup language document) that holds other programs or data, or may be stored in a single file dedicated to the program, or may be stored in a plurality of adjustment files (e.g., files that store one or more modules, subprograms, or parts of code). It is also possible to deploy a single computer program to be executed on a single computer located at one site or on a plurality of computers distributed over a plurality of sites and interconnected by a communication network. It may be recorded in a part (e.g., one or more scripts stored in a markup language document) of a file that holds other programs or data, or may be stored in a single file dedicated to the program, or may be stored in a plurality of adjustment files (e.g., files that store one or more modules, subprograms, or parts of code). It is also possible to deploy a single computer program to be executed on a single computer located at one site or on a plurality of computers distributed over a plurality of sites and interconnected by a communication network. It may be recorded in a part (e.g., one or more scripts stored in a markup language document) of a file that holds other programs or data, or may be stored in a single file dedicated to the program, or may be stored in a plurality of adjustment files (e.g., files that store one or more modules, subprograms, or parts of code). It is also possible to deploy a single computer program to be executed on a single computer located at one site or on a plurality of computers distributed over a plurality of sites and interconnected by a communication network. It may be recorded in a part (e.g., one or more scripts stored in a markup language document) of a file that holds other programs or data, or may be stored in a single file dedicated to the program, or may be stored in a plurality of

[0400] The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits. The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits. The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits. The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits. The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits. The processes and logic flows described herein can be performed by one or more programmable processing devices that execute one or more computer programs to operate on input data and generate output to perform functions. The processes and logic flows can also be performed by special-purpose logic circuits, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and the apparatus can also be implemented as special-purpose logic circuits.

[0401] Processing devices suitable for the execution of a computer program include, for example, both general-purpose and special-purpose microprocessors, as well as any one or more processing devices of any type of digital computer. Generally, a processing device receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Processing devices suitable for the execution of a computer program include, for example, both general-purpose and special-purpose microprocessors, as well as any one or more processing devices of any type of digital computer. Generally, a processing device receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Processing devices suitable for the execution of a computer program include, for example, both general-purpose and special-purpose microprocessors, as well as any one or more processing devices of any type of digital computer. Generally, a processing device receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Processing devices suitable for the execution of a computer program include, for example, both general-purpose and special-purpose microprocessors, as well as any one or more processing devices of any type of digital computer. Generally, a processing device receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Processing devices suitable for the execution of a computer program include, for example, both general-purpose and special-purpose microprocessors, as well as any one or more processing devices of any type of digital computer. Generally, a processing device receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Generally, a computer may include one or more mass storage devices for storing data, such as magnetic, magneto - optical disks, or optical disks, or may be operatively coupled to receive data from or transfer data to these mass storage devices. However, a computer need not have such devices. Computer - readable media suitable for storing computer program instructions and data include any form of non - volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, flash memory devices, etc. The processing device and memory may be supplemented by, or incorporated in, application - specific logic circuitry. This specification, together with the drawings, is for the purpose of illustration only, and by illustration is meant example. In this specification, the use of "or" is intended to include "and / or" unless the context clearly dictates otherwise.

[0402] This patent specification includes many details, but these should not be construed as limiting the scope of any invention or the claims, but rather as descriptions and interpretations of features that may be specific to particular embodiments of a particular invention. Specific features described in the context of separate embodiments in this patent document may be

[0403] implemented in combination in one example. Conversely, various features described in the context of one example may be implemented separately or in any suitable sub - combination in multiple embodiments. Further, features may be made in a particular combination. described in the context of separate embodiments in this patent document may be implemented in combination in one example. Conversely, various features described in the context of one example may be implemented separately or in any suitable sub - combination in multiple embodiments. Further, features may be made The above-described and initially claimed as such, but one or more features from the claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a sub-combination or variation of sub-combinations. The above-described and initially claimed as such, but one or more features from the claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a sub-combination or variation of sub-combinations. The above-described and initially claimed as such, but one or more features from the claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a sub-combination or variation of sub-combinations. The above-described and initially claimed as such, but one or more features from the claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a sub-combination or variation of sub-combinations.

[0404] Similarly, the operations are shown in a particular order in the drawings, but this should not be understood as requiring that such operations be performed in the particular order shown or in a sequential order to achieve the desired result, nor that all the operations shown be performed. Similarly, the operations are shown in a particular order in the drawings, but this should not be understood as requiring that such operations be performed in the particular order shown or in a sequential order to achieve the desired result, nor that all the operations shown be performed. Similarly, the operations are shown in a particular order in the drawings, but this should not be understood as requiring that such operations be performed in the particular order shown or in a sequential order to achieve the desired result, nor that all the operations shown be performed. Also, the separation of the various system components in the examples described in this patent specification should not be understood as requiring such separation in all embodiments. Also, the separation of the various system components in the examples described in this patent specification should not be understood as requiring such separation in all embodiments.

[0405] Only some implementations and examples are described, and other embodiments, extensions, and variations are possible based on the content described and illustrated in this patent document. Only some implementations and examples are described, and other embodiments, extensions, and variations are possible based on the content described and illustrated in this patent document.

Claims

1. Determining that a prediction mode is applied to the current video block for conversion between the current video block of the current picture of the video and the bitstream of the video; Maintaining a buffer for the current video block that includes reference samples derived from a block of sample values of the same video region of the current video block in the current picture; Generating prediction samples for the current video block based on the determination; Performing the conversion between the current video block and the bitstream, including: In the prediction mode, the reference samples determined by a block vector in the buffer are used for derivation of prediction samples of the current video block; A specific reference block in the buffer marked as unavailable has a value outside the pixel value range; The position of the reference samples in the specific reference block is determined based on the size of the virtual unit; When the current video block includes one or more virtual units, the position of the reference samples in the specific reference block is further determined based on the size of the current video block; The position of the reference samples in the specific reference block is determined based on coordinates (x0, y0), where y0 % Vsize = 0, the coordinates (x0, y0) specify a position in the current picture, Vsize indicates the size of the virtual unit, and the position of the reference samples in the specific reference block is further determined based on the value of x0 % Vsize, where % is the modulo operation; A method for processing video data.

2. The value of the reference samples in the specific reference block marked as unavailable is set to a predetermined value indicating the unavailability of the reference samples; The method according to claim 1.

3. The method according to claim 2, wherein the predetermined value is -1.

4. The position and size of the specific reference block marked as unavailable are further determined based on one or more of the size of the current video block, the size of the virtual unit, or the size of the coding tree block including the current video block; The method according to claim 2 or 3.

5. (x0 % Vsize) is 0; Vsize = min(ctbSize, 64); ctbSize represents the width or height of the coding tree block, The method according to claim 4. **Claim 6** When the size of the current video block is smaller than the size of the virtual unit, the size of the specific reference block marked as unavailable is determined based on the size of the virtual unit, The method according to claim 4 or 5. **Claim 7** When the size of the current video block is larger than the size of the virtual unit, the size of the specific reference block marked as unavailable is determined based on the size of the current video block, the method according to claim 4 or 5. **Claim 8** The buffer is reset before coding the picture, The method according to any one of claims 1 to 7. **Claim 9** The constraints on bitstream compliance satisfied by the bitstream include that the reference samples determined by the block vector in the buffer do not have a value equal to a predetermined value indicating the unavailability of the reference samples, The method according to any one of claims 1 to 8. **Claim 10** The range of the pixel values is represented as [0, 1 << (bit_depth) - 1], and bit_depth is a positive integer, The method according to any one of claims 1 to 9. **Claim 11** bit_depth is the precision used to process the reference samples, The method according to claim 10. **Claim 12** The transformation includes encoding the current video block into the bitstream, The method according to any one of claims 1 to 11. **Claim 13** The transformation includes decoding the current video block from the bitstream, The method according to any one of claims 1 to 11. **Claim 14** An apparatus for processing video data, including a processor and a non-transitory memory storing instructions, wherein, when executed by the processor, the instructions cause the processor to, Determine that a prediction mode is applied to the current video block for the conversion between the current video block of the current picture of the video and the bitstream of the video, Maintain a buffer including reference samples derived from a block of sample values of the same video region of the current video block in the current picture for the current video block, generating a prediction sample for the current video block based on the determination; performing the conversion between the current video block and the bitstream; in the prediction mode, the reference sample determined by the block vector in the buffer is used for deriving the prediction sample of the current video block; a specific reference block in the buffer marked as unavailable for the derivation has a value outside the pixel value range; the position of the reference sample in the specific reference block is determined based on the size of the virtual unit; when the current video block includes one or more virtual units, the position of the reference sample in the specific reference block is further determined based on the size of the current video block; the position of the reference sample in the specific reference block is determined based on coordinates (x0, y0), where y0 % Vsize = 0, the coordinates (x0, y0) specify a position in the current picture, Vsize indicates the size of the virtual unit, and the position of the reference sample in the specific reference block is further determined based on the value of x0 % Vsize, where % is the modulo operation, apparatus. Claims 15 A non-transitory computer-readable storage medium storing instructions that cause a processor to determine that a 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; maintain a buffer for the current video block that includes reference samples derived from a block of sample values of the same video area of the current video block in the current picture; generate a prediction sample for the current video block based on the determination; perform the conversion between the current video block and the bitstream; in the prediction mode, the reference sample determined by the block vector in the buffer is used for deriving the prediction sample of the current video block; a specific reference block in the buffer marked as unavailable for the derivation has a value outside the pixel value range; the position of the reference sample in the specific reference block is determined based on the size of the virtual unit; When the current video block includes one or more virtual units, the position of the reference sample in the specific reference block is further determined based on the size of the current video block, the position of the reference sample in the specific reference block is determined based on the coordinates (x0, y0), y0 % Vsize = 0, the coordinates (x0, y0) specify a position within the current picture, Vsize indicates the size of the virtual unit, and the position of the reference sample in the specific reference block is further determined based on the value of x0 % Vsize, where % is the modulo operation, Non - transitory computer - readable storage medium. [

16. ] A method for storing a bitstream of video, the method comprising: determining that a prediction mode is applied to a current video block of a current picture of the video; maintaining, for the current video block, a buffer that includes reference samples derived from a block of sample values in the same video region of the current video block in the current picture; generating, for the current video block, prediction samples based on the determination; generating the bitstream based on the prediction samples; storing the bitstream in a non - transitory computer - readable recording medium, wherein, in the prediction mode, the reference samples determined by a block vector in the buffer are used for deriving prediction samples of the current video block; a specific reference block in the buffer marked as unavailable for the derivation has values outside the pixel value range; the position of the reference sample in the specific reference block is determined based on the size of the virtual unit; when the current video block includes one or more virtual units, the position of the reference sample in the specific reference block is further determined based on the size of the current video block; the position of the reference sample in the specific reference block is determined based on the coordinates (x0, y0), y0 % Vsize = 0, the coordinates (x0, y0) specify a position within the current picture, Vsize indicates the size of the virtual unit, and the position of the reference sample in the specific reference block is further determined based on the value of x0 % Vsize, where % is the modulo operation, a method.

Citation Information

Patent Citations

  • Method, apparatus and system for deblocking blocks of video samples

    JP2017519460A

  • JPP7359934B

  • Method and apparatus for intrabc mode with fractional-pel block vector resolution in video coding

    US20180048909A1

  • Method and Apparatus of Error Handling for Video Coding Using Intra Block Copy Mode

    US20180152727A1

Cited By

  • Bitstream conformance constraint for intra block copy in video coding

    JP2023182664A