Direction-Based Prediction for Intra Block Copy in Video Coding
A buffer management system for intra-block copy modes in video coding stabilizes encoding and decoding processes by using a fixed-size buffer to manage reference samples, addressing inefficiencies and complexity in current video coding technologies.
Patent Information
- Application Number
- JP2023210570
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-01
- Filing Date
- 2023-12-13
- Publication Date
- 2025-05-09
- Estimated Expiration
- 2040-03-02
AI Technical Summary
Current video coding technologies face challenges with dynamic reference regions in intra-block copy modes, leading to increased complexity and inefficiencies in encoding and decoding processes, particularly with invalid block vectors and irregular reference regions, which complicate both encoder and decoder processing.
Implementing a buffer management system for intra-block copy modes that uses a fixed-size buffer to store reference samples, ensuring valid block vectors and efficient reference region management, thereby stabilizing the encoding and decoding processes.
This approach reduces the complexity and improves the efficiency of video encoding and decoding by ensuring valid block vectors and optimizing reference region usage, leading to more effective video compression.
Smart Images

Figure 0007674457000052 
Figure 0007674457000053 
Figure 0007674457000054
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS Books The wish is, This application is based on Japanese patent application No. 2021-551506 filed on August 27, 2021, which is based on international patent application No. PCT / CN2020 / 077415 filed on March 2, 2020, which is based on the international patent application Priority and benefit of international patent application PCT / CN2019 / 076695 filed on March 1, 2019 Mainly Stretch All of the above-mentioned patent applications are incorporated herein by reference in their entireties.
[0002] This patent specification relates to video encoding and decoding techniques, devices and systems. [Background technology]
[0003] Despite advances in video compression, digital video is still widely distributed across the Internet and other It is the largest user of bandwidth in the world's digital communications networks. As the number of connected user devices capable of displaying and viewing digital video increases, so does the demand for digital video usage. It is expected that bandwidth demands will continue to grow. Summary of the Invention
[0004] This specification relates to an intra block copy method for decoding or encoding a video or image. Buffer management in modes and various implementations for block vector coding The present paper describes the state and technology of the technology.
[0005] In one exemplary embodiment, a method for video or image (visual data) processing is disclosed. The method further comprises: To predict in intra-block copy mode for conversion to and from stream representations determining a buffer for storing reference samples of the current video block; Intrablock based on motion information about reconstruction blocks located in the same image region as the block In the copy mode, the determination is made as to whether the coding tree including the current video block is - Spatially positioned at the position (x0, y0) of the current video block relative to the top left position of the unit For a sample with block vector (BVx, BVy), the reference position ( The corresponding reference in the buffer (P,Q) is calculated, and the reference position (P,Q) is the block The vector (BVx,BVy) and the position (x0,y0) are used to calculate the If it is determined that the reference position (P,Q) is outside the buffer, the current video block is At least one of the positions of the current video block relative to the coding tree unit that contains the block is and recalculating the reference position based in part on the
[0006] In another exemplary aspect, another method of processing video data is disclosed. a current video block of visual media data and a bitstream representation of the current video block For conversion between, we use the reference sample for prediction in intra-block copy mode. determining a buffer to store the same image as the current image block; Patent application title: Intra block copy mode based on motion information about reconstruction blocks located in a region and determining, spatially, the top-left location of the picture that contains the current video block. The current image block is located at the position (x, y) of the block vector (BVx, B For a sample with the current image block position (x, y), The code containing the block dimensions, picture dimensions, and current video block. The size of the data tree unit or the size of the buffer. Based at least in part on satisfying one or more conditions set forth in the (BVx,BVy) as valid and block vector (BVx, BVy) is valid and the block vector (BVx ,BVy) is valid, the corresponding reference in the buffer is P,Q) where the reference position (P,Q) is the block vector (BVx, BVy), the position (x,y), and the dimensions of the buffer. Including,
[0007] In yet another exemplary aspect, another method of processing video data is disclosed. The method includes: For conversion between the image representation, the block vector (BV x, BVy) or block vector difference (BVDx, BVDy), The transformation is performed by using motion information for a reconstruction block located in the same image region as the current image block. Intra block copy mode based on information, determining and At least one component of the vector (BVx, BVy) or the block vector difference ( Normalize at least one component of BVDx, BVDy) to fall within the range. , including.
[0008] In yet another exemplary aspect, another method of image processing is disclosed. For conversion between the current video block and a bitstream representation of the current video block. , used to store reconstructed samples for prediction in intra-block copy mode. determining a buffer to be transformed into the current video block; The intra-block copy mode is based on the motion information of the reconstruction block located at The reconstructed samples are then stored in a buffer and processed in an ordered order. and updating accordingly.
[0009] In another exemplary aspect, another method of video processing is disclosed. The conversion between the image block and the bitstream representation of the current video block is Thus, this transformation is performed on a reconstruction block located in the same image domain as the current image block. This is done in intra block copy mode based on the motion information provided by the image, and is used for prediction calculations during conversion. The first precision used in the reconstruction calculation is lower than the second precision used in the reconstruction calculation. Includes and.
[0010] In yet another exemplary aspect, another method of image processing is disclosed. The conversion between the current video block and the bitstream representation of the current video block is called The image reconstruction method is based on the motion information of the reconstruction block located in the same image region as the current image block. The conversion is performed using intrablock copy mode, and n and M are integers. If nM×nM is the number of pixels, a reference region of size nM×nM is used and the current image block is coded. The reference region is located in the coding tree unit corresponding to the current video block. The n × n nearest available coding tree units in the coding tree unit sequence Including samples from, including doing.
[0011] In yet another exemplary aspect, another method of image processing is disclosed. The conversion between the current video block and the bitstream representation of the current video block is called The image reconstruction method is based on the motion information of the reconstruction block located in the same image region as the current image block. The conversion is performed using intrablock copy mode, and n, p and M is an integer, a reference region of size nM × pM is used, and the current video block is The reference region is located in the coding tree unit and corresponds to the current video block. The n × p-1 nearest available coding tree units in the sequence of coding tree units Including samples from the unit, including doing.
[0012] In yet another exemplary aspect, another method of video processing is disclosed. The current video block in the image domain Virtual Pipeline Data Unit (VPDU) and the current Converts a video block to or from a bitstream representation of the same video block as the current video block. Patent application title: Intra block copy mode based on motion information about reconstruction blocks located in a region The conversion is performed using nM×k, where k, n, and M are integers. A reference region of size nM is used, the VPDU dimensions are kM x kM, and the current video block The block is located in the coding tree unit, and the reference region is the current video block. The n × nk nearest available coding units in the coding tree unit sequence corresponding to This includes performing, including samples from the tag tree unit.
[0013] In yet another exemplary aspect, another method of image processing is disclosed. A current video block of sensory media data with size w × h and a For conversion to and from the bitstream representation, prediction is performed in intra block copy mode. determining a buffer for storing reference samples for the conversion of the current The image block is then processed based on the motion information of the reconstruction block located in the same image region. In the love block copy mode, it is judged and the cycle including the current video block is The current video block for the top left position of the coding tree unit (CTU) with size M × M. The block is spatially located at the position (x0, y0) of the block, and the block vector (BVx, BVy ), the corresponding sample starting from reference position (P,Q) in the buffer Calculate the reference region, and the reference position (P, Q) is calculated by the block vector (BVx, BVy) and / or the position (x0, y0) to determine, calculate, and reference Apply one or more rule-based constraints to the region and / or reference location (P,Q) to and limiting the overlap between the region and the image region.
[0014] In yet another exemplary aspect, another method of image processing is disclosed. a current video block of visual media data and a bitstream representation of the current video block For conversion between, we use the reference sample for prediction in intra-block copy mode. The transformation includes determining a buffer in which to store the current video block. Based on the motion information about the reconstruction block located in the region, the intra block copy mode is The determination is made in the step S100 and the coding unit (CU) that contains the current video block. ) for a sample located spatially at position (x0, y0) of the current video block Calculate the corresponding reference area starting from the reference position in the buffer and and adjust the reference position to determine which of the previously processed blocks to use for prediction. This includes:
[0015] In yet another exemplary aspect, another method of video processing is disclosed. Conversion between a current video block of an image and a bitstream representation of the current video block. To do this, we use the image component X to find the block of this image component c that corresponds to the current image block. The purpose of the present invention is to determine the validity of the lock vector, and this component X is different from the luminance component of the image. and determining whether this block vector is valid for this current image block. if so, performing the transformation using the block vector; This transformation involves the motion of a reconstruction block located in the same image domain as the current image block. performing a conversion in informed intra-block copy (IBC) mode; Includes.
[0016] In yet another exemplary embodiment, a processing device configured to implement the above-described method is provided. A video encoder or decoder apparatus is disclosed comprising a video encoder or decoder apparatus.
[0017] In another exemplary aspect, a computer readable program medium is disclosed. A computer embodying processor executable instructions for implementing one of the disclosed methods. Remember the password.
[0018] These and other aspects are described in greater detail herein. [Brief description of the drawings]
[0019] [Figure 1] FIG. 1 illustrates a current picture reference or intra block copy video or image coding technique. [Diagram 2] FIG. 2 illustrates a dynamic reference region. [Diagram 3] FIG. 3 illustrates the coding of a block starting at (x,y). [Figure 4] FIG. 4 illustrates a possible alternative method for selecting a previously coded 64×64 block. [Diagram 5] FIG. 5 illustrates a possible alternative method for changing the encoding / decoding order of a 64×64 block. [Figure 6] FIG. 6 is a flow chart illustrating an example of a video or image processing method. [Figure 7] FIG. 7 is a block diagram illustrating a hardware platform for encoding or decoding video or images. [Figure 8] FIG. 8 shows another possible alternative method for selecting the previous coded 64×64 block when the decoding order of the 64×64 blocks is top-to-bottom, left-to-right. [Figure 9] FIG. 9 shows another possible alternative for selecting the previously coded 64×64 block. [Figure 10] FIG. 10 shows an exemplary flow chart of a decoding process with reshape. [Figure 11] FIG. 11 shows another possible alternative method for selecting the previous coded 64×64 block when the decoding order of the 64×64 blocks is left-to-right, top-to-bottom. [Figure 12] FIG. 12 is a diagram showing the IBC reference buffer status, where one block represents a 64×64 CTU. [Figure 13] FIG. 13 shows one arrangement of reference regions for IBC. [Figure 14] FIG. 14 shows an alternative arrangement of reference regions for IBCs. [Figure 15]FIG. 15 shows another arrangement of reference regions for an IBC when the current virtual pipeline data unit (VPDU) is to the right of a picture boundary. [Figure 16] FIG. 16 shows an example of the state of the virtual buffer when VPDUs in one CTU row are decoded sequentially. [Figure 17] FIG. 17 is a block diagram illustrating an example video processing system in which the disclosed techniques can be implemented. [Figure 18] FIG. 18 is a flowchart showing an example of a video data processing method. [Figure 19] FIG. 19 is a flowchart showing an example of a video data processing method. [Figure 20] FIG. 20 is a flowchart showing an example of a video data processing method. [Figure 21] FIG. 21 is a flowchart showing an example of a video data processing method. [Figure 22] FIG. 22 is a flowchart showing an example of a video data processing method. [Figure 23] FIG. 23 is a flowchart showing an example of a video data processing method. [Figure 24] FIG. 24 is a flowchart showing an example of a video data processing method. [Diagram 25] FIG. 25 is a flowchart showing an example of a video data processing method. [Figure 26] FIG. 26 is a flowchart showing an example of a video data processing method. [Figure 27] FIG. 27 is a flowchart showing an example of a video data processing method. [Figure 28] FIG. 28 is a flowchart showing an example of a video data processing method. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0020] Section headings are used herein for ease of understanding, and the disclosures contained in a section may be incorporated herein by reference. This specification does not limit the embodiments described in the chapter to those described in the chapter. MANAGEMENT AND BLOCK MANAGEMENT IN INTRA BLOCK COPY MODE FOR ENCODEMENT OR CODING - Patent application Various embodiments and techniques for lock vector coding are described.
[0021] 1. Overview
[0022] This specification relates to a video coding technology. This concerns intra-block copy. This is currently being developed, for example for general-purpose video coding. The present invention may be applied to any future video coding standard or video codec. This is also applicable to
[0023] 2. Brief Description
[0024] Video coding standards are primarily driven by well-known ITU-T and ISO / IEC standard developments. ITU-T created H.261 and H.263, and ISO / IEC created MP EG-1 and MPEG-4 Visual were created, and the two organizations are working on H.262 / MPEG-2 V ideo and H.264 / MPEG-4 AVC (Advanced Video Cod) The H.265 / HEVC standard was jointly created by Sony and Sony Video. The standard uses a hybrid video coding structure in which temporal prediction and transform coding are used. In 2015, to explore future video coding technologies beyond HEVC, VCEG and MPEG have jointly established the Joint Video Exploration and Technology Exploration (JVET) Since then, many new methods have been adopted by JVET. The reference software called JEM (Joint Exploration Mode) In April 2018, VCEG (Q6 / 16) and ISO / IE C JTC1 SC29 / WG11 (MPEG) and Joint Video Ex The JVET team was launched and achieved a 50% bitrate reduction compared to HEVC. We are currently working on formulating VVC standards with the goal of reducing this.
[0025] 2.1 Inter Prediction in HEVC / H.265
[0026] Each inter-predicted PU has motion parameters for one or two reference picture lists. The motion parameters include a motion vector and a reference picture index. The use of one of the two reference picture lists is inter _pred_idc. The motion vector for the predictor It may be explicitly coded as a delta.
[0027] When a CU is coded in skip mode, one PU is assigned to this CU. The motion vector differentials are also coded based on the reference picture. There is no merge mode, which specifies the motion parity for the current PU. The parameters are obtained from the neighboring PUs including the spatial and temporal candidates. Can be applied to any inter predicted PU, not just for skip mode An alternative to the merge mode is the explicit transmission of motion parameters, More precisely, the motion vector difference (MVD) compared to the motion vector predictor for each reference pixel The corresponding reference picture index in the reference picture list, and the usage status of the reference picture list. Such a mode is referred to as advanced motion vector mode in this disclosure. This is called AMVP.
[0028] If the signal indicates to use one of the two reference picture lists, the sample A PU is generated from one block of a P slice. This is called "uni-prediction". Uniprediction is available for both A and B slices.
[0029] If the signal indicates that both reference picture lists are to be used, two of the samples This is called "bi-directional prediction". Directional prediction is available.
[0030] The inter prediction modes defined in HEVC will be described in detail below. The following describes the mode.
[0031] 2.2 Referencing the current picture
[0032] Current Picture Reference (CPR) was formerly called Intra Block Copy (IBC). However, HEVC Screen Content Coding Extensions (HEVC-SCC) This is the concept of motion compensation that is adopted in the current VVC test model. As shown in Figure 1, the current A block is predicted by one reference block in the same picture when CPR is applied. Before encoding or decoding the current block, the samples in the reference block are The video must already be reconstructed. CPR is mostly captured by the camera. It is not very efficient for any sequence, but for screen content, This shows a significant coding gain because, in the screen content picture, This is because there are many repeating patterns such as icons and letters. CPR is It is possible to effectively remove redundancy between turns. A coded coding unit (CU) maps the current picture to its reference pictures. If MV is selected as the block vector, CPR can be applied. The HEVC main profile is renamed to BV, and BV always has integer pixel precision. To fit the current picture into the “long picture buffer” in the Decoded Picture Buffer (DPB), Similarly, the same applies to multiple view / 3D video coding. In the coding standard, inter-view reference pictures are also marked as "long-term" reference pictures. can be.
[0033] After the BV finds the reference block, it generates a prediction by copying this reference block. The residual can be obtained by subtracting the reference pixels from the original signal. And, just like any other coding mode, transforms and quantization can be applied. can.
[0034] FIG. 1 is an illustration of a current picture reference.
[0035] However, if the reference block is outside the picture or overlaps with the current block, If the area is outside the reconstructed region, or if it is limited by some constraint, If it is outside the defined valid area, some or all of the pixel value is undefined. There are two solutions to deal with such problems. The second is to not allow for data stream conformance with these undefined pixel values. The solution is to apply filtering. The following subsections explain the solution in detail.
[0036] 2.3 CPR in HEVC Screen Content Coding Extensions
[0037] In the Screen Content Coding Extension of HEVC, one block is currently When using the current picture as a reference, the reference block is The RAID controller should ensure that the entire block is within the available reconstructed region. The variables offsetX and offsetY are derived as follows: offsetX=(ChromaArrayType==0)?0:(mvCLX[ 0]&0x7?2:0) (8-104) offsetY=(ChromaArrayType==0)?0:(mvCLX[ 1]&0x7?2:0) (8-105) If the reference picture is the current picture, the luma motion vector mvLX is determined according to the following constraint: It is a bitstream conformance requirement that - the derivation process for the availability of z-scan order blocks as specified in 6.4.1 (xCurr,yCurr) is set equal to (xCb,yCb), and (xPb+(m vLX[0]>>2)-offsetX,yPb+(mvLX[1]>>2)-offs The input is called the luminance position (xNbY, yNbY) of the neighborhood of the input pixel. When called, the output is TRUE. - the derivation process for the availability of z scan order blocks as specified in 6.4.1 (xCurr,yCurr) is set equal to (xCb,yCb), and (xPb+(m vLX[0]>>2)+nPbW-1+offsetX,yPb+(mvLX[1]>> 2)+nPbI-I-1+offsetY) Y, yNbY) is called as input, the output is TRUE. - One or both of the following conditions are true: - The value of (mvLX[0]>>2) + nPbW + xB1 + offsetX is less than or equal to 0. do. - The value of (mvLX[1]>>2) + nPbH + yB1 + offsetY is less than or equal to 0. do. - The following conditions are 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)
[0038] Thus, cases where the reference block overlaps with the current block, or where the reference block The out-of-picture case does not occur. There is no need to fill in reference or predicted blocks. There is none.
[0039] 2.4 CPR / IBC Example
[0040] In the VVC test model, the entire reference block is the current coding tree unit ( CTU) and does not overlap with the current block. There is no need to pad locks.
[0041] When dual tree is enabled, the partition structure is different for luma and chroma CTUs. Therefore, for a 4:2:0 color format, one chroma block (e.g. For example, a CU) corresponds to a single co-located luminance region that is divided into multiple luminance CUs. You may respond.
[0042] Chroma blocks are coded only in CPR mode if the following conditions are true: It can be done. 1) Each of the luma CUs of the collocated luma block is coded in CPR mode. should be regulated. 2) Each luminance 4x4 block BV is first converted to a chroma block BV. The BV of the Roma block is a valid BV.
[0043] If either of the two conditions is false, the chroma block is compressed in CPR mode. Not loaded.
[0044] The definition of a valid BV is subject to the following constraints: 1) All samples of the reference block identified by BV are within the restricted search range. (e.g., within the same CTU in the current VVC design). 2) All samples of the reference block identified by BV have been reconstructed.
[0045] 2.5 CPR / IBC Example
[0046] In some embodiments, the reference region for CPR / IBC is limited to the current CTU. The maximum is 128 x 128. If the CPR / IBC block has more reference candidates, While the reference buffer for CPR / IBC can be maintained or reduced from one CTU Dynamically change the reference region to reuse memory and improve CPR / IBC performance. A reference sample is stored.
[0047] Figure 2 shows one method, where one block is 64x64 and one CTU is It contains four 64x64 blocks. When coding a 64x64 block, the first three One 64x64 block can be used as a reference. By doing so, the decoder Only four 64x64 blocks need to be stored to support CPR / IBC .
[0048] Let (x,y) be the position of the current luma CU relative to the top-left corner of the picture, and let (x,y) be the block vector Let BVx, BVy be the effective value. In the current design, the validity of BV depends on the luminance Position ((x+BVx)>>6<<6+(1<<7),(y+BVy)>>6<<6) is re- Not configured, ((x+BVx)>>6<<6+(1<<7),(y+BVy)>> We know this because (x>>6<<6,y>>6<<6) is not equal to (x>>6<<6,y>>6<<6). can.
[0049] 2.6 In-Loop Reshape (ILR)
[0050] The basic idea of In-Loop Reshape (ILR) is to reshape the original (in the first domain) Transforming a signal (the predicted / reconstructed signal) into a second domain (the reshaped domain) And so.
[0051] The in-loop luminance reshaper is implemented as a pair of look-up tables (LUTs). However, the other can be calculated from the signaled LUT, so Only one of the LUTs needs to be signaled. Each LUT has 1024 entries, each of which is 1-dimensional and 10 bits long. A mapping table (1D-LUT). One LUT is a forward LUT, Fw dLUT, which is a function of the input luminance code values Y i The changed value Y r :Y r =FwdLU T[Y i The other LUT is the inverse LUT, InvLUT, which maps the modified The code value Y r to Y^ i :Y^ i =InvLUT[Y r ]. (Y^ i is Y i represents the reconstruction value of
[0052] 2.6.1 PWL model
[0053] Conceptually, piecewise linear (PWL) is implemented as follows:
[0054] Let x1 and x2 be the two input fulcrums, and y1 and y2 be the output fulcrums corresponding to one piece. The output value y for any input value x between x1 and x2 is interpolated using the following formula: can
[0055] y=((y2-y1) / (x2-x1))*(x-x1)+y1
[0056] In a fixed-point implementation, this equation can be rewritten as: y=((m*x+2 FP_PREC-1 )>>FP_PREC)+c
[0057] m is a scalar, c is an offset, and FP_PREC is used to specify the precision. It is a constant.
[0058] In some embodiments, the PWL model uses a 1024-entry FwdLUT map. It is used to pre-calculate the InvLUT and InvLUT mapping tables. ,The PWL model uses the same mapping value in the implementation without pre-calculating the LUT. It also allows for on-the-fly calculations.
[0059] 2.6.2.1 Reshaping Luminance
[0060] The in-loop luminance reshape method provides a lower complexity pipeline and Eliminating Decoding Latency for Block-Wise Intra Prediction in Terslice Reconstruction Intra prediction is performed resequentially for both inter-slice and intra-slice. This is done in a shaped domain.
[0061] Intra prediction is always done in the reshaped domain, regardless of slice type. According to this configuration, intra prediction is started immediately after the previous TU reconstruction. Such a configuration can be used for intra modes instead of relying on slices. Figure 10 shows the decoded data based on the CE12-2 method. FIG. 2 is a block diagram showing an encoding process.
[0062] Instead of the 32-piece piecewise linear (PWL) model, a 16-piece PWL model was used. Luminance and chrominance residual scaling was performed using the
[0063] Interslice reconstruction with in-loop intensity reshaper (shaded in light green) The blocks represent the signal in the reshaped domain. and intra-luminance reconstruction)
[0064] 2.6.2.2 Luminance-Dependent Chroma Residual Scaling
[0065] Luminance-dependent chroma residual scaling is a multiplication operation implemented in fixed-point integer arithmetic. Chroma residual scaling compensates for the interaction of the luminance signal with the chroma signal. Chroma residual scaling is applied at the 100% RGB level. Specifically, the following is applied: - For intra, average the reconstructed luminance. - For inter, average the predicted luminance.
[0066] This average value is used to determine the index in the PWL model. The index specifies the scaling factor cScaleInv. Multiply by.
[0067] Note that the chroma scaling coefficients are forward-mapped, not reconstructed luminance values. The predicted luminance value is calculated from the estimated luminance value.
[0068] 2.6.2.3 Signaling of ILR side information
[0069] The parameters are (currently) transmitted in a tile group header (similar to ALF). These are , which is reported to require 40-100 bits.
[0070] In some examples, the added syntax is highlighted in italics.
[0071] [Table 1]
[0072] [Table 2]
[0073] Add a new syntax table tile group reshaper.
[0074] [Table 3]
[0075] In general, the semantics of the sequence parameter set RBSP adds the following semantics: If sps_reshaper_enabled_flag is equal to 1, It specifies that a reshaper is used in the CVS. If sps_reshaper_enabled_flag is equal to 0, then It specifies that no reshapers are used in the
[0076] In the tile group header syntax, the following semantics are added: tile_group_reshaper_model_present_flag If equal to 1, tile_group_reshaper_model() will It is stipulated that it exists within a group. tile_group_reshaper_model_present_flag If equal to 0, tile_group_reshaper_model() will It is stipulated that it should not be present in the group header. tile_group_reshaper_model_present_flag If not present, it is inferred to be equal to 0. If tile_group_reshaper_enabled_flag is equal to 1, specifies that the reshaper is enabled for the current tile group. . If tile_group_reshaper_enabled_flag is equal to 0, specifies that the reshaper is not enabled for the current tile group. do. If tile_group_reshaper_enable_flag does not exist , is inferred to be 0. tile_group_reshaper_chroma_residual_sca If le_flag is equal to 1, chroma residual scaling is enabled for the current tile group. It specifies that the use of the tile_group_reshaper_chroma_residual_sca If le_flag is equal to 0, chroma residual scaling is enabled for the current tile group. This stipulates that the routing is not valid. tile_group_reshaper_chroma_residual_sca If le_flag is not present, it is inferred to be 0.
[0077] Add tile_group_reshaper_model() syntax. reshape_model_min_bin_idx is the smallest bin (or piece ) index is specified to be used in the reshaper construction process. reshape_model_min_bin_idx value is 0 to MaxBinIdx The value of MaxBinIdx shall be equal to 15. reshape_model_delta_max_bin_idx is the maximum allowed bin (or piece) index MaxBinIdx minus the maximum bin index is specified to be used in the reshaper construction process. The value of reshape_model_max_bin_idx is MaxBinIdx - Set equal to reshape_model_delta_max_bin_idx . reshaper_model bin_delta_abs_cw_prec_mi nus1+1 has the syntax reshape_model_bin_delta_abs_CW It specifies the number of bits used to represent [i]. reshape_model_bin_delta_abs_CW[i] is the ith Specifies the absolute delta code name value of the bin. lta_sign_CW_flag[i] is the We write the sign of elta_abs_CW[i] as follows: - reshape_model_bin_delta_sign_CW_flag[i ] is equal to 0, then the corresponding variable RspDeltaCW[i] is a positive value. - else (reshape_model_bin_delta_sign_C W_flag[i] is not equal to 0), the corresponding variable RspDeltaCW[i] is negative. The value is reshape_model_bin_delta_sign_CW_flag[i] If not present, it is inferred to be equal to 0. Variable RspDeltaCW[i] = (1 2*reshape_model_bin_ delta_sign_CW[i])*reshape_model_bin_delt a_abs_CW[i]; The variable RspCW[i] is derived as follows: The variable OrgCW is (1< <BitDepth Y ) / (MaxBinIdx+1) It is set correctly. - reshaper_model_min_bin_idx<=i<=reshape For r_model_max_bin_idx, RspCW[i] = OrgCW + Rs pDeltaCW[i]. - Otherwise, RspCW[i] = 0. BitDepth Y If the value of is equal to 10, the value of RspCW[i] is 32~2*O It comes within the range of rgCW_1. The variable InputPivot[i], where i is in the range 0 to MaxBinIdx+1, is It is derived as follows: InputPivot[i]=i*OrgCW For i in the range 0 to MaxBinIdx+1, the variables ScaleCoef[i] and InvScaleCoeff[i] is in the range of 0 to MaxBinIdx, and i The variable ReshapePivot[i], whose range is 0 to MaxBinIdx, is It is derived as follows.
[0078] 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 else InvScaleCoeff[i] = OrgCW * (1< <shiftY) / Rs pCW[i] }
[0079] Variable ChromaScaleCoef[i where i is in the range 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) - if not (RspCW[i] != 0), ChromaScaleCoef[i] = ChromaResidualScaleLut[RspCW[i]>>1]
[0080] 2.6.2.4 Using ILR
[0081] On the encoder side, we first map each picture (or tile group) to a reshaped window. Then all coding operations are done in the reshaped domain. In the case of intra prediction, the neighboring blocks are in the reshaped domain. For center prediction, first, a reference block (a pixel from the original domain from the decoded picture buffer) is Then, we convert the residual (generated from the input vector) into the reshaped domain. Code it into the stream.
[0082] After the whole picture (or tile group) is coded / decoded, it is reshaped. The samples in the blocked domain are transformed to the original domain, and then a deblocking filter and Apply other filters.
[0083] Forward reshaping to the prediction signal is disabled if:
[0084] The current block is intra-coded.
[0085] The current block is CPR (current picture reference, also known as intra block copy, I The condition is coded as BC.
[0086] The current block is coded as Combined Inter-Intra Mode (CIIP). and forward reshape is disabled for intra predicted blocks.
[0087] 3. Examples of Problems Solved by Various Embodiments
[0088] Several problems exist with current CPR / IBC designs. 1) The reference region changes dynamically, which complicates the encoder / decoder processing. 2) Invalid block vectors are easily generated and difficult to check, so the encoder and This increases the complexity of both the decoder and the processor. 3) Irregular reference regions lead to inefficient coding of block vectors. 4) It is unclear how to deal with CTU sizes smaller than 128x128. do. 5) In the process of determining whether BV is valid or invalid, in the case of a chroma block, The decision is based on the availability of luminance samples, which is the basis for the dual tree partition. There is a possibility that erroneous judgments may occur due to the partition structure.
[0089] 4. Exemplary Embodiments
[0090] In some embodiments, the CPR / IBC block is configured to receive a reference from a normal A buffer can be used.
[0091] The function isRec(x,y) is used to determine whether a pixel (x,y) is reconstructed and referenced by the IBC mode. The (x,y) is specified to indicate whether the slice / tile / frame is illuminated or not. 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.
[0092] 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.
[0093] 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.
[0094] Reference buffer for CPR / IBC
[0095] 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 128x128. c. In one example, the buffer size is 64x128. d. In one example, the buffer size is 128x64. e. In one example, N is equal to the height of the CTU. f. In one example, N=nH, where H is the height of the CTU and n is a positive integer. . g. In one example, M is equal to the width of the CTU. h. In one example, M=mW, where W is the width of the CTU and m is a positive integer. i. In one example, the buffer size is not equal to the CTU size, e.g., 96× 128 or 128x96. j. In one example, the buffer size is equal to the CTU size. k. In one example, M=mW, N=H, where W and H are the width and height of the CTU. where 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. where n is a positive integer. In one example, M=mW, N=nH, where W and H are the width and height of the CTU. and m and n are positive integers. n. In the above example, m and n may depend on the size of the CTU. i. In one example, when the size of the CTU is 128×128, m=1; n=1. ii. In one example, when the size of the CTU is 64×64, m=4 and n =1. iii. In one example, if the size of the CTU is 32x32, then m=16. , n=1. iv. In one example, if the size of the CTU is 16×16, then m=64; n=1. Alternatively, the buffer size corresponds to the CTU size. p. Alternatively, this buffer size is measured in Virtual Pipeline Data Units (VPDUs). ) size. q. M and / or N are the May be signaled in PS / Picture Header / Slice Header / Tile Group Header etc. stomach.
[0096] 2. M and / or N may vary for different profiles / levels / tiers defined in the standard. A separate Mc × Nc pixel buffer may be used to provide chrominance references for CPR / IBC. It is proposed to store a reference sample. In one example, for 4:2:0 footage, 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 stores two channels corresponding to Cb and Cr. include. f. In one example, Mc=M and Nc=N.
[0097] 3. Using MxN sample buffer to store RGB reference samples for CPR / IBC Memory is suggested. In one example, the buffer size is 64x64. b. In one example, the buffer size is 128x128. c. In one example, the buffer size is 64x128. d. In one example, the buffer size is 128x64. e. Alternatively, the buffer size corresponds to the CTU size. f. Alternatively, this buffer size can be specified in Virtual Pipeline Data Units (VPDUs). ) size.
[0098] 4. A buffer can store the reconstructed pixels before loop filtering. It is proposed to use a deblocking filter, an adaptive loop filter, and Filter (ALF), Sample Adaptive Offset (SAO), Cross Component ALF, or any Other filters may also be referenced. In one example, a buffer can store samples in the current CTU. b. In one example, the buffer can store samples outside the current CTU. Cut. c. In one example, the buffer stores samples from any portion of the current picture. It is possible. d. In one example, the buffer can store samples from other pictures. do.
[0099] 5. The buffer can store the reconstructed pixels after loop filtering. It is proposed to use a deblocking filter, an adaptive loop filter, and Filter (ALF), Sample Adaptive Offset (SAO), Cross Component ALF, or any Other filters may also be referenced. In one example, a buffer can store samples in the current CTU. b. In one example, the buffer can store samples outside the current CTU. Cut. c. In one example, the buffer stores samples from any portion of the current picture. It is possible. d. In one example, the buffer can store samples from other pictures. do.
[0100] 6. The buffer is reconstructed both before and after loop filtering. It is proposed that the generated samples can be stored. Deblocking filter, Adaptive Loop Filter (ALF), Sample Adaptive Offset (SA O), the cross-component ALF, or any other filter. In one example, the buffer contains samples from the current picture and samples from other pictures. The samples may be stored based on their availability. b. In one example, reference samples from other pictures are From reconstituted samples. c. In one example, reference samples from other pictures are used before loop filtering. The results are from samples reconstituted in
[0101] 7. The buffer is stored at a given bit depth, which may be different from the bit depth of the coded video data. It is proposed to store the samples with the magnitude. In one example, the bit depth of the reconstruction buffer / coding video data is The bit depth of the IBC reference samples stored in the . b. In one example, the internal bit depth is the input bit depth for a video sequence. Even if the IBC reference sample differs from the input sample, e.g. (10 bits vs. 8 bits), The image is stored aligned to the input bit depth. c. In one example, the bit depth is the same as the bit depth of the reconstruction buffer. d. In one example, the bit depth is the same as the bit depth of the input image / video. e. In one example, the bit depth is equal to a predefined number. f. In one example, the bit depth depends on the standard profile. g. In one example, the bit depth is compared to the output bit depth / input bit depth / internal bit depth. The difference in bit depth or bit depth is determined by the SPS / PPS / Sequence Header / Picture Header / slice header / tile group header / tile header or other type of image data unit The signal may be sent in the unit. h. The proposed methodology applies to the proposed buffer definitions mentioned in the other bullets. Alternatively, it may be applied to existing designs of IBCs. i. The bit depth of each color component of the buffer may be different.
[0102] Buffer Initialization
[0103] 8. It is suggested to initialize the buffer with a given value. In one example, a buffer is initialized with a given value. i. In one example, the given value corresponds to the input bit depth and / or the internal bit depth. You may depend on it. ii. In one example, the buffer is initialized with a medium gray value, e.g., 8-bit For a 10-bit signal, it is set to 128, and for a 10-bit signal, it is set to 512. iii. In one example, when ILR is used, the buffer is forwardLU It is initialized by T(m), where m=1<<(Bitdepth-1). b. Alternatively, the buffer can be SPS / VPS / APS / PPS / Sequence Header / Tile Group Header / Picture Header / Tile / CTU / Coding Unit / VP It is initialized with the value signaled in the DU / region. c. In one example, this given value is based on a previously decoded picture or slice or may be derived from rows of a CTU or samples of a CTU or CU. d. This given value may be different for different color components.
[0104] 9. Alternatively, the buffer may be resized using decoded pixels from a previously coded block. It is suggested to initialize the buffer. In one example, the decoded pixels are pixels before in-loop filtering. . b. In one example, if the buffer size is CTU, the buffer is available. If so, it is initialized with the decoded pixels of the previously decoded CTU. c. In one example, if the buffer size is 64x64, then the buffer size is , if available, the first decoded pixel of the previously decoded 64x64 block It will be scheduled. d. Alternatively, if no previously coded blocks are available, black The method in circle 8 may be applied.
[0105] Referencing a Buffer
[0106] 10. A block uses pixels in the buffer as references. is the position (x,y) in the buffer, x=0,1,2,...,M-1; y=0,1,2, ...,N-1, can be used to indicate the reference.
[0107] 11. Alternatively, the reference position can be l=y*M+x, l=0,1,...,M*N-1 It can be expressed as:
[0108] 12. The top left position of the block for the current CTU is (x0, y0). The lock vector (BVx,BVy)=(x-x0,y-y0) is sent to the decoder and It may also indicate a reference in the file.
[0109] 13. Alternatively, the block vector (BVx,BVy) can be expressed as (x-x0+Tx,yy 0+Ty), where Tx and Ty are predefined offsets. do.
[0110] 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).
[0111] 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)).
[0112] 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.
[0113] 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.
[0114] 18. The handling of buffer references may differ between horizontal and vertical directions. or depending on the location of the current block (e.g., closer to a picture boundary or not). This is also fine. In one example, if y0+BVy is outside [0,N-1], then (x0+BVx , y0+BVy) are assigned as predefined values. b. In one example, if x0+BVx is outside [0,M-1], then (x0+BVx , y0+BVy) are assigned as predefined values. c. Alternatively, the sample value of (x0+BVx, y0+BVy) can be expressed as ((x0+BVx) mod M,y0+BVy) as the sample value, which results in (((x0+B If Vx) mod M,y0+BVy) is still outside the buffer, add that value again. Other methods may be invoked for the derivation. d. Alternatively, the sample value of (x0+BVx,y0+BVy) can be expressed as (x0+BVx,( y0+BVy)mod N) as the sample value, which results in (x0+BVx ,(y0+BVy)mod N) is still outside the buffer, we derive the value further. The scalar may also invoke other methods to output the
[0115] Block Vector Representation
[0116] 19. Set each component of the block vector (BVx, BVy) or one of its components to a certain range. The range may be normalized to In one example, BVx may be replaced with (BVx mod M). b. Alternatively, BVx may be replaced by ((BVx+X)mod M)-X. Here, X is a predefined value. i. In one example, X is 64. ii. In one example, X is M / 2. iii. In one example, X is the horizontal coordinate of the block relative to the current CTU. c. In one example, BVy may be replaced with (BVy mod N). d. Alternatively, BVy may be replaced by ((BVy+Y) mod N)-Y, 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 relative to the current CTU.
[0117] 20. BVx and BVy may have different normalization ranges.
[0118] 21. Block vector differences (BVDx, BVDy) can be normalized to a certain range. Cut. In one example, BVDx may be replaced with (BVDx mod M) ,The function mod returns the reminder. b. Alternatively, BVDx is replaced by ((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 by ((BVDy+Y) mod N)-Y; Y is a predefined value. i. In one example, Y is 64. ii. In one example, Y is N / 2.
[0119] 22. BVDx and BVDy may have different normalization ranges.
[0120] Block Vector Validation
[0121] The width and height of the IBC buffer are W buf and H buf In the upper left corner of the picture On the other hand, the W×H block starting from (X,Y) (luminance block, chroma block, CU, T U, 4x4, 2x2, or other sub-blocks), the block vector To indicate whether a rule (BVx, BVy) is valid, the following may be applied: p ic , H pic Let be the width and height of one picture, and W ctu , H ctu One CT Let be the width and height of U. The function floor(x) returns the largest integer not greater than x. The function isRec(x,y) returns the sample (x,y) if it is reconstructed.
[0122] 23. Even if any of the reference positions is outside the picture boundary, the block vector (BVx , BVy) may be set as valid. In one example, a block vector is valid even if X+BVx<0. may be set as follows. b. In one example, the block vector is X+W+BVx>W pic Even if may be set as valid. c. In one example, a block vector is considered valid even if Y+BVy<0. may be set as follows. d. In one example, Y+H+BVy>H pic Even if you use block vectors, It may be set as:
[0123] 24. Even if the reference position is outside the current CTU row, the block vector (BVx,B Vy) may be set as valid. In one example, the block vector is Y+BVy <floor(Y / H ctu ) *H ctu may be set as valid even if b. In one example, the block vector is Y+H+BVy>=floor(Y / H c tu )*H ctu +H ctu may be set as valid even if
[0124] 25. Block vector (BVx, BVy) is a vector whose reference position is either the current CTU or It may be set as valid even if it is outside the left (n-1) CTU, where n is , CTUs that can be used as reference areas for IBCs (including or excluding the current CTU) is the number of. In one example, the block vector is X+BVx <floor(X / W ctu ) *W ctu -(n-1)*W ctu may be set as valid even if b. In one example, the block vector is X+W+BVx>floor(X / W ct u )*W ctu +W ctu However, it may be set as valid even if the
[0125] 26. Even if a particular sample is not reconstructed, the block vector (BVx, BVy ) may be set as valid. In one example, even if isRec(X+BVx, Y+BVy) is false, , the block vector may be set as valid. b. In one example, isRec(X+BVx+W-1,Y+BVy) is false. Even if there are, the block vector may be set as valid. c. In one example, isRec(X+BVx,Y+BVy+H-1) is false. Even if there are, the block vector may be set as valid. d. In one example, isRec(X+BVx+W-1,Y+BVy+H-1) is Even if it is lse, block vectors may be set as valid.
[0126] 27. A block vector (BVx, BVy) is a vector that represents the first block in a CTU row. If it is not a block of 1 CTU, it may be set as always valid. Alternatively, the block vectors may be set as always valid.
[0127] 28. If all of the following three conditions are satisfied, define a block vector (BVx, BVy) as It may be set to always be valid. X+BVx>=0 Y+BVy>=floor(Y / H ctu ) ·isRec(X+BVx+W-1,Y+BVy+H-1)==true Alternatively, for the first block of CTUs in a CTU row, three clauses may be used: If all of the conditions are met, then the block vector may be set as always valid.
[0128] 29. If the block vector (BVx,BVy) is valid, the sample code of the block The filtering may be performed based on block vectors. In one example, the prediction for sample (X,Y) is ((X+BVx)%W buf ,( Y+BVy)%H buf ) can be obtained.
[0129] Buffer Update
[0130] 30. When coding a new picture or tile, the buffer is reset. This is also fine. The term "reset" may refer to a buffer being initialized. b. The term "reset" refers to the fact that all samples / pixels in the buffer are reset to a given value (e.g. , 0 or -1).
[0131] 31. After finishing coding the VPDU, the buffer is updated with the reconstructed values of the VPDU. It may be renewed.
[0132] 32. After finishing coding the CTU, the buffer is updated with the reconstructed value of the CTU. This may also be the case. In one example, if the buffer is not full, the buffer is filled by the CTU. It can be updated sequentially. b. In one example, if the buffer is full, the buffer corresponding to the oldest CTU Update the region. c. In one example, M=mW, N=H (W, H are the size of the CTU, and M, N are the If the previous update region starts at (kW,0), the update The next starting position to be selected is ((k+1)W mod M,0).
[0133] 33. The buffer may be reset at the beginning of each CTU row. Alternatively, the buffer may be reset at the start of decoding of each CTU. b. Alternatively, the buffer may be reset at the start of decoding one tile. stomach. c. Alternatively, the buffer is reset at the beginning of the decoding of one tile group / picture. It may be set.
[0134] 34. After you finish coding the block starting from (x,y), The corresponding area of the buffer is updated by reconstruction from the block. In one example, (x,y) is the position relative to the top left corner of the CTU.
[0135] 35. After coding a block for a picture, the corresponding area of the buffer is updated by reconstruction from the block. In one example, the value of position (x mod M, y mod N) in the buffer may be updated with the reconstructed pixel value at location (x,y) relative to the top-left corner of the picture. . b. In one example, the value of position (x mod M, y mod N) in the buffer is updated with the reconstructed pixel value at position (x,y) relative to the top-left corner of the current tile. good. c. In one example, the value of position (x mod M, y mod N) in the buffer is updated with the reconstructed pixel value at position (x,y) relative to the top-left corner of the current CTU row. Good too. d. In one example, the values in the buffer are updated with the reconstructed pixel values after bit-depth alignment. It may be renewed.
[0136] 36. After you finish coding the block starting from (x,y), start from (xb,yb) The corresponding area of the buffer starting from is updated by reconstruction from the block (xb,y b) 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.
[0137] 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). a. Alternatively, the reconstructed value of one block may indicate the reconstructed value after applying a filter (e.g., a non-blocking filter). a. When the buffer is updated from the reconstructed samples, the reconstructed samples may first be modified before being stored, for example, the bit depth of the samples may be changed.
[0138] 38. When the buffer is updated from the reconstructed samples, the reconstructed samples may first be modified before being stored, for example, the bit depth of the samples may be changed. a. In one example, the buffer is updated with the reconstructed sample values after bit depth alignment to the bit depth of the buffer. 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 the bit depth 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. a. When the buffer is updated from the reconstructed samples, the reconstructed samples may first be modified before being stored, for example, the bit depth of the samples may be changed. 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. It is a value. e. In one example, the buffer value is updated based on the value of 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 of clip(p >> b, 0, (1 << bitdep th) - 1), and bitdepth is the buffer bit depth . h. In the above example, b may be reconstructed by subtracting the input sample bit depth from the bit depth and then.
[0139] 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) and 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 b itdepth 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.
[0140] 40. The buffer may be updated in a given order. In one example, the buffer may be updated sequentially. b. In one example, the buffer may be updated based on the order of the reconstructed blocks. good.
[0141] 41. If the buffer is full, replace the samples in the buffer with the most recent reconstructed sample. It can be replaced. In one example, samples may be updated on a first-in, first-out basis. b. In one example, the oldest sample is replaced. c. In one example, samples are assigned priorities and sorted based on the priorities. can be replaced. d. In one example, samples are sorted by "length" so that other samples are replaced first. The device may be marked as "period". e. In one example, a flag is used with a block to indicate high priority. It is possible to send a message. f. In one example, a number is sent with a block to indicate priority. It can be believed. g. In one example, samples from a reconstructed block that have certain characteristics are compared to other The samples are assigned a higher priority so that they can be replaced first. i. In one example, the percentage of samples coded in IBC mode If is greater than a threshold, assign high priority to all samples in the block. can be done. ii. In one example, the percentage of samples coded in palette mode If the size of the block is greater than a threshold, assign high priority to all samples in the block. It is possible. iii. In one example, a sample coded in IBC or palette mode If the percentage of samples in the block is greater than the threshold, all samples in the block are assigned a high priority. Ranks can be assigned. iv. In one example, a percentage of samples coded in transform skip mode If the average number of samples in a block is greater than a threshold, then we assign high priority to all samples in the block. It is possible to do so. v. This threshold may vary based on block size, color components, and CTU size. stomach. vi. Threshold is set based on SPS / PPS / Sequence Header / Slice Header / Tile Group It may be signaled at group / tile level / region. h. In one example, the buffer being full indicates that there is available memory in the buffer. It may mean that the number of possible samples is equal to or greater than a given threshold. i. In one example, the number of samples available in the buffer is 64 x 64 x 3. If the number of samples is greater than or equal to the number of samples, the buffer may be determined to be full.
[0142] Alternative Buffer Combinations
[0143] 42. Always use the three previously coded 64x64 blocks as reference regions. Instead of using a fixed number of bits, it adaptively changes it based on the position of the current block (or VPDU). It is proposed that In one example, when encoding / decoding a 64x64 block, the previous three 6 We can use 4x64 blocks as references. Compared to Figure 2, we have 64x64 blocks. Figure 2 shows the different combinations of the previous 64x64 blocks. Here is an example.
[0144] 43. Instead of using z scan order, a vertical scan order may be used. In one example, one block has four elements with indices 0..3 in the z-scan order. If it is split into two VPDUs, the encoding / decoding order is 0, 2, 1, 3. b. In one example, when encoding / decoding a 64x64 block, the previous three As compared to Fig. 2, a larger variety of 64 × 64 blocks can be used as references. The encoding / decoding order for 64x64 blocks can be applied. 4 shows an example of different encoding / decoding orders for blocks. c. Alternatively, the above method is applied only to the coding of screen content. Good too. d. Alternatively, the method may be performed by applying a CP to one tile / tile group / picture. May only be applied if R is enabled. e. Alternatively, the method may be performed in a manner that enables CPR for a CTU or a row of CTUs. This may be applied only if the
[0145] Virtual IBC Buffer
[0146] In the following, for the luminance sample, the width and height of the VPDU are defined as W VPDU (example For example, 64) and H VPDU (e.g., 64). Alternatively, W VPDU and / or Or H VPDU represents the width and / or height of another video unit (e.g., CTU) This is also fine.
[0147] 44. A virtual buffer may be maintained to keep track of the state of the IBC reference region. In one example, the virtual buffer size isVPDU ×nH VPDU It is. In one example, m is equal to 3 and n is equal to 2. ii. In one example, m and / or n depend on the picture resolution, CTU size. may remain. iii. In one example, m and / or n may be signaled or predicted. It may be prescribed. b. In one example, the method described in the bullets and subbullets above may include a virtual buffer may be applied to. c. In one example, the sample for the top left corner of the picture / slice / tile / brick Rule (x,y) is (x%(mW VPDU ),y%(nH VPDU )) is mapped to Good too.
[0148] 45. Use an array to track the availability of each sample associated with a virtual buffer. This is also fine. In one example, a flag is associated with a sample in the virtual buffer to indicate that the buffer It may also be specified whether the sample in the database can be used as an IBC reference. b. In one example, each 4×4 block containing luma and chroma samples is A single flag is shared between all samples associated with that block, and all samples associated with that block are IBC references. May also indicate whether the document can be used as a reference. c. In one example, an array corresponding to 3x2 VPDUs (e.g., each 4x4 block (each of the IBC reference samples may share the same availability flag) tracks the availability of the IBC reference sample. It is maintained as such. d. In one example, an array corresponding to 4x2 VPDUs (e.g., each 4x4 block (each of the IBC reference samples may share the same availability flag) tracks the availability of the IBC reference sample. It is maintained as such.
[0149] 46. After a VPDU or video unit has been decoded, it is associated with a virtual buffer. Certain samples may be marked as unavailable for IBC reference. In one example, which sample is unavailable may be determined by the most recently decoded VP It may depend on the location of the DU. b. If a sample is marked as unavailable, predictions from this sample are not allowed. Not permitted. i. Alternatively, further applying other methods (e.g., using default values), A predictor may be derived to replace unavailable samples.
[0150] 47. Record the location of the recently decoded VPDU and any associated virtual buffers. It can be easier to identify if a sample has been marked as unavailable. In one example, when starting to decode a VPDU, the position of the most recently decoded VPDU is Based on the location, some samples associated with the virtual buffer are marked as unavailable. can be added. i. In one example, the picture / slice / tile / Relative to the top left corner of the brick / other video processing unit (xPrevVPDU, yPrevV PDU) as the top left position, and yPrevVPDU%(nH VPDU ) is equal to 0 ,A particular location (x,y) can be marked as unavailable. 1. In one example, x is [xPrevVPDU-2W VPDU +2mW VPD U )% mW VPDU ,((xPrevVPDU-2WVPDU +2mW VPDU )% mW VPDU )-1+W VPDU ] may be within a range such as: 2. In one example, y is [yPrevVPDU%(nH VPDU ),(yPr evVPDU%(nH VPDU ))-1+H VPDU ] may be within a range such as: 3. In one example, x is [xPrevVPDU-2W VPDU +2mW VPD U ]%mW VPDU , ((xPrevVPDU-2W VPDU +2mW VPDU )%mW VPDU , ((xPrevVPDU-2W VPDU +2mW VPDU )%mW VPDU ) -1+W VPDU ], and y may be in the range [yPrevVPDU%(n H VPDU ),(yPrevVPDU%(nH VPDU ))-1+H VPDU ] It may be within the range. ii. In one example, the picture / slice / tile of the most recently decoded VPDU / Brick / Other video processing unit to the top left corner, (xPrevVPDU,yPre vVPDU) as the top left position, and yPrevVPDU%(nH VPDU ) is equal to 0 If not, the particular position (x,y) can be marked as unavailable. 1. In one example, x is [xPrevVPDU-W VPDU +2mW VPDU )% mW VPDU ,((xPrevVPDU-W VPDU +2mW VPDU)% mW VPDU )-1+W VPDU ] may be within a range such as: 2. In one example, y is [yPrevVPDU%(nH VPDU ),(yPr evVPDU%(nH VPDU ))-1+H VPDU ] may be within a range such as: 3. In one example, x is [xPrevVPDU-W VPDU +2mW VPDU )% mW VPDU ,((xPrevVPDU-W VPDU +2mW VPDU )% mW VPDU )-1+W VPDU ], and y may be in a range such as [yPrevVP DU%(nH VPDU ),(yPrevVPDU%(nH VPDU ))-1+H VPDU ] may be within a range such as:
[0151] 48. If one CU contains multiple VPDUs, the IBC reference availability matrix based on the VPDUs is Instead of applying the marking process, the IBC reference availability marking process will be as per the following CU: This is also fine. In one example, at the start of decoding a CU that contains multiple VPDUs, IBC reference availability marking processing is applied to each VPDU before decoding the DU. good. b. In such a case, 128x64 IBC blocks and 64x128 IBC blocks Locking is something that may not be allowed. i. In one example, pred_ mode_ibc_flag may not be sent and may be inferred to be equal to 0.
[0152] 49. For a reference block or sub-block, check the reference availability status in the top right corner. Checks whether the block vector associated with this reference block is valid. Sometimes there's no need to judge. In one example, determine if the block vector is valid and Only check the top left, bottom left, and bottom right corners of the block.
[0153] 50. The IBC buffer size is determined by the size of the VPDU (width / height expressed as vSize). ) and / or the size of the CTB / CTU (width / height represented by ctbSize) may remain. In one example, the height of the buffer may be equal to ctbSize. b. In one example, the buffer width may depend on min(ctbSize,64). good. i. In one example, the width of the buffer is (128*128 / vSize,min(c tbSize,64)).
[0154] 51. The IBC buffer may contain values outside the pixel range, which means that this position is May not be available for BC reference (e.g., not used to predict other samples) This indicates that. The sample value may be set to a value that indicates that the sample is not available. b. In one example, this value may be -1. c. In one example, this value is [0,1<<(internal_bit_dept h)-1], and internal_bit_depth is A positive integer value. For example, internal_bit_depth encodes samples of one color component. The internal bit depth used to decode the audio. d. In one example, this value is in the range [0, 1<<(input_bit_depth) - 1], and input_bit_depth is a positive integer. For example, input_bit_depth is the number of samples per color component. The input bit depth used for encoding / decoding.
[0155] 52. The availability marking of a sample in the IBC buffer is based on the current block location. Depends on the size of the current block, the size of the CTU / CTB, and the size of the VPDU. In one example, (xCb, yCb) is the position of the block relative to the top left corner of the picture. ctbSize represents the size of the CTU / CTB (i.e. width and / or height) and vSize=min(ctbSize,64), and wIbcBuf and h IbcBuf is the width and height of the IBC buffer. In one example, (xCb%vSize) is equal to 0 and (yCb%vSize) If is equal to 0, the particular set of positions in the IBC buffer is marked as unavailable. can be added. b. In one example, the size of the current block is equal to the size of the VPDU, i.e., min(c If the size of the VPD is less than tbSize,64, the area marked as unavailable is May be according to the size of U c. In one example, if the size of the current block is greater than the size of the VPDU, If it is min(ctbSize,64), the area is marked as unavailable. may depend on the size of the CU.
[0156] 53. Video unit relative to top-left position of picture (e.g., VPDU(xV,yV)) At the start of decoding, the corresponding position in the IBC buffer is set to a value outside the pixel range. This is also fine. In one example, the position in the buffer (x%wIbcBuf, y%hIbcBu f) where x=xV, ..., xV+ctbSize-1, y=yV, ..., yV+ The buffer samples with ctbSize-1 are set to the value -1. and hIbcBuf is the width and height of the IBC buffer, and ctbSize is the This is the TU / CTB width. i. In one example, hIbcBuf may be equal to ctbSize.
[0157] 54. Bitstream conformance constraints are governed by the values of the samples in the IBC buffer. This is also fine. In one example, a block vector associated with the IBC buffer If one of the reference blocks contains an out-of-range pixel value, the bitstream is invalid. It's possible.
[0158] 55. Bitstream conformance constraints based on availability indications in IBC buffers may be set. In one example, any reference sample mapped to the IBC buffer is If a block is marked as unavailable for encoding / decoding, This bitstream may be corrupted. b. In one example, when a singletree is used, one block is encoded. Any luma reference samples mapped to the IBC buffer for encoding / decoding are If it is marked as impossible to use, this bitstream may be invalid. There is. c. For one compliant bitstream, in the case of an IBC coding block, the associated block vector may point to one reference block mapped to the IBC buffer, and each luminance reference sample located in the IBC buffer to encode / decode one block can meet the requirement of being marked as available (for example, the value of the sample is within the range of [K0, K1], for example, K0 is set to 0, and K 1 is set to (1<<BitDepth-1), and BitDepth is the internal bit depth or the input bit depth).
[0159] 56. The constraints on bitstream compliance may depend on the type of the split tree and the treeType of the current CU coding. a. In one example, if dualtree is permitted at a high level (e.g., slice / picture / brick / tile), and the current video block (e.g., CU / PU / CB / PB) is coded with a single tree, the bitstream constraints may need to check whether the positions of all components mapped to the IBC buffer are marked as unavailable. b. In one example, if dualtree is permitted at a high level (e.g., slice / picture / brick / tile), and the current luminance video block (e.g., CU / PU / CB / PB) is coded with a dual tree, then for the bitstream constraints, the positions mapped in the IBC buffer of the chroma components are marked It may be ignored whether it is done or not. i. Alternatively, in such a case, the bitstream constraint may still check whether the positions of all components mapped to the IBC buffer are marked as unavailable. c. In one example, when a single tree is used, the bitstream constraint may ignore whether the positions of the chroma components mapped to the IBC buffer are unavailable.
[0160] Improvements to the current VTM design
[0161] 57. The prediction of IBC may have lower accuracy than reconstruction. a. In one example, the predicted value is based on the value clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the bit depth of the predicted sample bits. b. In one example, the predicted value is based on the value clip{{p + [1 << (b - 1) - 1]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value and b is a predefined bit shift value. c. In one example, the predicted value is based on the value ((p >> b) + (1 << (bitdepth - 1 ))) << b, and the bit depth is the bit depth of the predicted sample. d. In one example, the predicted value is based on the value (clip((p >> b), 0, (1 << (bit depth - b))) + (1 << (bitdepth - 1))) << b, and the bit depth is the bit depth of the predicted sample. e. In one example, the forecast value is calculated in a different manner based on whether the ILR applies. is clipped. f. In the above example, b is the bit depth minus the input sample bit depth. The data may be reconstructed as above. g. In one example, the bit depth is compared to the output bit depth / input bit depth / internal bit depth. The difference in bit depth or bit depth is determined by the SPS / PPS / Sequence Header / Picture Header / slice header / tile group header / tile header or other type of image data unit The signal may be sent in the unit.
[0162] 58. Some parts of the IBC predictions can be less accurate, while other parts can be as accurate as the reconstructions. Yes. In one example, the allowed reference regions have different precisions (e.g., bit depths). The sample may include b. In one example, the current 64×64 block is decoded to another 64×64 The reference from the block is less precise, and the reference from the current 64x64 block is the reconstruction and It has the same precision. c. In one example, references from CTUs other than the current CTU being decoded may be Low, the reference from the current CTU has the same accuracy as the reconstruction. d. In one example, the reference from a particular set of color components is less precise and less accurate than the reference from other color components. The reference has the same accuracy as the reconstruction.
[0163] 59. If the size of the CTU is M × M and the size of the reference region is nM × nM, The reference region is the nearest available n×n CTU in a row of CTUs. In one example, the size of the reference region is 128x128 and the size of the CTU is 6 If the number of CTUs is 4 × 64, the four nearest available CTUs in a CTU row are sorted by IBC Can be used for reference. b. In one example, the reference region size is 128x128 and the CTU size is 3 If the number of CTUs is 2 × 32, the nearest 16 available CTUs in one CTU row are used as IB Can be used for C references.
[0164] 60. If the size of the CTU is M and the size of the reference region is nM, then the reference region is The nearest n-1 available CTUs in the CTU's row / tile. In one example, the size of the reference region is 128x128 or 256x64; If the CTU size is 64x64, the nearest 3 available One CTU can be used for IBC reference. b. In one example, the size of the reference region is 128×128 or 512×32; If the CTU size is 32x32, the closest available 1 in a CTU row Five CTUs can be used for IBC reference.
[0165] 61. If the size of the CTU is M, then the size of the VPDU is kM, and the size of the reference area is The size is nM, and the reference region is the nearest available nk regions in the row / tile of the CTU. This is the CTU. In one example, the size of the CTU is 64x64 and the size of the VPDU is also 64x64. 64, the size of the reference is 128x128, and the nearest neighbor in one CTU row Three CTUs can be used for IBC reference. b. In one example, the size of the CTU is 32x32 and the size of the VPDU is 64x 64, the size of the reference is 128×128, and the closest ( 16-4) = 12 CTUs can be used for IBC reference.
[0166] 62. Using IBC, for a w × h block whose upper left corner is (x,y), what is the reference block? There is a constraint that keeps the block from a specific area for memory reclamation, and w and h are the current block size. The width and height of the block. In one example, the size of the CTU is 128×128, and (x,y)=(m×6 4,n×64), the reference block starts at ((m-2)×64,n×64). The area cannot overlap with the 64x64 area. b. In one example, when the size of the CTU is 128×128, the reference block is If the top left corner of a wxh block is at (x-128,y), then there can be no overlap. c. In one example, if the size of the CTU is 128×128, (x+BVx,y +BVy) does not lie within the w*h block whose upper left corner is (x-128,y). Instead, BVx and BVy represent the block vectors of the current block. d. In one example, the size of the CTU is M×M and the size of the IBC buffer is k×M. x M, the reference block cannot overlap with the w x h block, and the top left corner is ( xk×M,y), where BVx and BVy are the block vectors of the current block. represent. e. In one example, the size of the CTU is M×M and the size of the IBC buffer is k×M ×M, then (x+BVx, y+BVy) is in w×h intra blocks. The top left corner is (xk×M,y), and BVx and BVy are the current block. represents the block vector of the block.
[0167] 63. If the size of the CTU is not M × M, but the size of the reference region is nM × nM, The reference region is the nearest available n×n−1 CTUs in a row of CTUs. In one example, the size of the reference region is 128x128 and the size of the CTU is 6 If the number of CTUs is 4 × 64, the three closest available CTUs in a CTU row are sorted by IBC Can be used for reference. b. In one example, the reference region size is 128x128 and the CTU size is 3 If the number of CTUs is 2 × 32, the nearest 15 available CTUs in one CTU row are used as the IB Can be used for C references.
[0168] 64. CU of 64x64 block starting from (2m*64,2n*64), i.e. 12 For the top-left 64x64 block in an 8x128 CTU, the IBC prediction is ((2 m-2)*64, 2n*64) 64x64 blocks starting from ((2m-1)*64, 64x64 blocks starting from ((2m-1)*64,(2n+1 )*64) and the recursion in the current 64x64 block This can be done from a configuration sample.
[0169] 65. 64x64 blocks starting from ((2m+1)*64, (2n+1)*64) For a CU, i.e., the bottom right 64x64 block in a 128x128 CTU, The IBC prediction may be from the current 128x128 CTU.
[0170] 66. CU of 64x64 block starting from ((2m+1)*64,2n*64), That is, for the top right 64x64 block in a 128x128 CTU, the IBC prediction is , 64x64 blocks starting from ((2m-1)*64, 2n*64), ((2m-1 )*64,(2n+1)*64), and 64x64 blocks starting at (2m*64, 2n*64) and the current 64x64 block This can be done from reconstituted samples. a. Alternatively, a 64x64 block starting at (2m*64,(2n+1)*64) If we reconstruct the IBC prediction, the 64-bit vector starting from ((2m-1)*64, 2n*64) is x64 blocks, 64x64 blocks starting from (2m*64, 2n*64), (2m* 64,(2n+1)*64) and the current 64x64 block. This can be done from the reconstruction samples in the lock.
[0171] 67. CU of 64x64 block starting from (2m*64,(2n+1)*64), For the bottom left 64x64 block in a 128x128 CTU, the IBC prediction is 64x64 blocks starting from ((2m-1)*64,(2n+1)*64), (2m* 64x64 blocks starting from ((2m+1)*64,2n*64) ) and the reconstruction sample in the current 64x64 block. This can be done from the pull. a. Alternatively, a 64x64 block starting at ((2m+1)*64, 2n*64) If the IBC prediction is not reconstructed, the starting point is ((2m-1)*64, 2n*64). 64×64 blocks, starting from ((2m-1)*64, (2n+1)*64) 64×64 blocks, 64×64 blocks starting from (2m*64, 2n*64), and the current This can be done from the reconstructed samples in the current 64x64 block.
[0172] 68. Adjust the reference region based on which 64x64 block the current CU belongs to. It is proposed that In one example, for a CU starting from (x,y), (y>>6)&1==0. Then, ((x>>6<<6)-128,y>>6<<6) and ((x>>6<<6)-6 4,y>>6<<6) and the two previous 64x64 blocks are IBC It can be referenced by mode. b. In one example, for a CU starting at (x,y), (y>>6)&1==1. Then, the previous 64×6 starting from ((x>>6<<6)-64,y>>6<<6) The four blocks can be referenced by the IBC mode.
[0173] 69. Block starting at (x,y) and with block vector (BVx,BVy) If isRec(((x+BVx)>>6<<6)+128-(((y+BVy)> >6)&1)*64+(x%64),((y+BVy)>>6<<6)+(y%64)) If is true, the block vector is invalid. In one example, the block is a luminance block. b. In one example, this block is a chroma block in a 4:4:4 format. be. c. In one example, this block contains both luma and chroma components.
[0174] 70. 4:2 starting at (x,y) and with block vector (BVx,BVy): For 0 format chroma blocks, isRec(((x+BVx)>>5<<5)+64- (((y+BVy)>>5)&1)*32+(x%32),((y+BVy)>>5<< 5)+(y%32)) is true, then the block vector is invalid.
[0175] 71. The decision whether BV is invalid for a block of component c is made based on the luminance samples. Instead of checking only the X component, one may rely on the availability of a sample of component X. a. Starting from (x,y), component c has block vector (BVx,BVy). For blocks, isRec(c,((x+BVx)>>6<<6)+128-(((y +BVy)>>6)&1)*64+(x%64),((y+BVy)>>6<<6)+( y%64)) is true, then the block vector may be treated as invalid. i. In one example, the block is a luminance block (e.g., c is the luminance component (either the G component for RGB coding). ii. In one example, this block is a chroma block in a 4:4:4 format. (e.g., c is the cb or cr component, or B / R for RGB coding) (ingredients). iii. In one example, for example, this block processes both the luma and chroma components. The availability of samples for both luma and chroma components may be checked, including . b. Starting at (x,y) of component c, with block vector (BVx,BVy) For 4:2:0 format chroma blocks, isRec(c,((x+BVx)>>5<< 5)+64-(((y+BVy)>>5)&1)*32+(x%32),((y+BVy )>>5<<5)+(y%32)) is true, the block vector is invalid. It may be treated as such. c. Starting at (x,y) of component c, with block vector (BVx,BVy) For a chroma block or sub-block, isRec(c,x+B Vx+Chroma_CTU_size,y) is true, then the block vector may be treated as invalid, and Chroma_CTU_size is the CTU size of the chroma components. It is Isu. i. In one example, for 4:2:0 format, Chroma_CTU_si ze may be 64. ii. In one example, the chroma sub-blocks are 2x2 blocks in a 4:2:0 format. It may be a lock. iii. In one example, the chroma sub-blocks are 4×4 in a 4:4:4 format. It may be a block. iv. In one example, the chroma sub-blocks are sized to the minimum CU size in the luma component. We can handle it. 1. Alternatively, the chroma sub-blocks are scaled according to the minimum CU size of the chroma components. Good too.
[0176] 72. For all the black dots above, the reference buffer is a multiple of M×M blocks (M= 64). However, this is because the reference buffer contains multiple N × M blocks. This can be extended to other cases, including blocks (e.g., N=128, M=64).
[0177] 73. For all the bullets above, the reference buffer is in the same bridge as the current block. Apply the further restriction that the block / tile / tile group / slice must be within You may do so. In one example, part of the reference buffer is not part of the current brick / tile / tile group. / When outside a slice, the use of IBC may be disabled. Signaling IBC-related syntax elements The notification may be skipped. b. Alternatively, part of the reference buffer is not part of the current brick / tile / tile group / slot. If outside of Rice, IBC may still be activated for one block. However, the block vector associated with one block is only the remaining reference buffer. You may also point to.
[0178] 74. As a reference area for the IBC, except for the current VPDU, the CTU / In the first VPDU row of a CTB row, there are K1 recently coded VPDUs. If possible, the K2 most recent code units in the second VPDU row of the CTU / CTB row are It is proposed to have a VPDU that is framed. In one example, K1 is equal to 2 and K2 is equal to 1. b. In one example, the method includes the steps of: This may also be applied when the PDU size is 64x64. c. In one example, the method includes a CTU / CTB size of 64×64 and a VPD This may be applied when the U size is 64x64 and / or 32x32. d. In one example, the method is for a CTU / CTB size of 32×32 and a VPD This may be applied when the U size is 32x32 or less.
[0179] 75. The methods described above may be applied at different stages. In one example, modulus operations on block vectors (BVs) (e.g., mod b) is called in the BV availability check process to determine whether the BV is valid. You may do so. b. In one example, modular arithmetic on block vectors (BVs) (e.g., mod b) to retrieve the reference sample in the IBC virtual buffer or the reconstructed picture buffer. Pull position (e.g., based on the current sample position and BV module results) It may be specified (eg, before the in-loop filtering process).
[0180] 5. Embodiments
[0181] 5.1 Embodiment #1
[0182] One implementation of a buffer for the IBC is described below.
[0183] The buffer size is 128x128. The CTU size is also 128x128. For coding the first CTU in one CTU row, the buffer is 128 (8 bits). The kth CTU in the CTU row is coded as To filter the k-1th CTU, the buffer is re-filtered before the loop filtering of the (k-1)th CTU. It is initialized in the configuration.
[0184] FIG. 3 illustrates the coding of a block starting at (x,y).
[0185] When coding a block starting at (x,y) for the current CTU, The reference vector (BVx,BVy) = (x-x0,y-y0) is sent to the decoder. The block is from (x0,y0) in the IBC buffer. Let the width of the block be w and the height of the block be h. When you finish coding the block, The wxh region starting from (x,y) in the BC buffer is the buffer before loop filtering. Updated by reconfiguring the lock.
[0186] 5.2 Example #2
[0187] Figure 4 shows possible alternatives for selecting the previously coded 64x64 block. The replacement method is illustrated below.
[0188] 5.3 Example #3
[0189] FIG. 5 shows an alternative way in which the encoding / decoding order of a 64×64 block can be changed. Here is an example:
[0190] 5.4 Example #4
[0191] Figure 8 shows the difference between the previous and next steps when the decoding order of a 64x64 block is top-to-bottom and left-to-right. 4 shows another possible alternative way of selecting the coded 64×64 blocks.
[0192] 5.5 Embodiment #5
[0193] Figure 9 shows another possible alternative for selecting the previously coded 64x64 block. Here's how.
[0194] 5.6 Example #6
[0195] Figure 11 shows the results when the decoding order of a 64x64 block is left-to-right and top-to-bottom. Here we present another possible alternative for selecting the coded 64 × 64 block. vinegar.
[0196] 5.7 Example #7
[0197] The size of the CTU is W×W, and in the decoder, the size is mW×W, and the bit Here is an implementation of an IBC buffer with depth B:
[0198] At the beginning of decoding a CTU row, we initialize a buffer with the value (1<<(B-1)) and Set the starting point (xb,yb) to (0,0).
[0199] Decode the CU starting at (x,y) with size w × h relative to the top-left corner of the CTU. In this case, after aligning the bit depth to B bits, (xb+x, yb+y) and w×h subs The region starting from the CU size is updated with the reconstructed pixel values of the CU.
[0200] After decoding the CTU, the update starting point (xb, yb) is set to ((xb+W)mod mW,0 )
[0201] When decoding an IBC CU with block vector (BVx, BVy), For any pixel (x,y) relative to the top left corner of After the alignment, the buffer position ((x+BVx) mod mW, (y+BVy) mode W ) to extract the prediction.
[0202] In one example, B is set to 7 or 8, while the output / input bit depth of the block is It may be equal to 10.
[0203] 5.8 Example #8
[0204] From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For a starting luma CU or joint luma / chroma CU, the block vector is ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+ If (x%64), ((y+BVy)>>6<<6)+(y%64)) is true, then it is invalid. It is effective.
[0205] From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For the chroma CU where the block vector starts, isRec(((x+BVx)>>5< <5)+64-(((y+BVy)>>5)&1)*32+(x%32),((y+BV It is invalid if y)>>5<<5)+(y%32)) is true.
[0206] 5.9 Example #9
[0207] Chroma block or starting at (x,y) in 4:2:0 format relative to the top left corner of the picture is a sub-block, and for block vector (BVx,BVy), isRec(c, When (x+BVx+64,y+BVy) is true and c is a chroma component, the block The vector is invalid.
[0208] Chroma block starting at (x,y) in 4:4:4 format, relative to the top-left corner of the picture or sub-block, and block vector (BVx,BVy), isRec(c ,(x+BVx+64,y+BVy) is true and c is a chroma component. The vector is invalid.
[0209] 5.10 Example #10
[0210] From (x,y) and block vector (BVx,BVy) relative to the top left corner of the picture For a starting luma CU or joint luma / chroma CU, the block vector is ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+ If (x%64), ((y+BVy)>>6<<6)+(y%64)) is true, then it is invalid. It is effective.
[0211] Chroma block starting at (x,y) in 4:2:0 format, relative to the top-left corner of the picture or sub-block, and block vector (BVx,BVy), isRec(c ,((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+ (x%32),((y+BVy)>>5<<5)+(y%32)) is true and c is When it is a Roma component, the block vector is invalid.
[0212] 5.11 Example #11
[0213] In this embodiment, the two most significant VPDUs in the row of the first VPDU are excluded from the current VPDU. coded VPDU and the first CTU / CTB line in the second VPDU line Emphasis is placed on implementations that preserve one most coded VPDU.
[0214] If the coding order of the VPDU is top-to-bottom and left-to-right, the reference area is as shown in Figure 13. As shown in.
[0215] The coding order of the VPDU is left-to-right and top-to-bottom, and the current VPDU is If it is not to the right of the picture boundary, the reference region is shown as in FIG.
[0216] The coding order of the VPDU is left-to-right and top-to-bottom, and the current VPDU is If it is to the right of the texture boundary, the reference region can be shown as in Figure 15.
[0217] If the size of the luminance block (x,y) is w×h, then the block vector (BVx,B Vy) is valid or not, you can check the following conditions: do.
[0218] 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).
[0219] If the above function returns true, the block vector (BVx, BVy) is invalid. Otherwise, the block vector may be valid.
[0220] 5.12 Example #12
[0221] If the CTU size is 192x128, then a virtual buffer of size 192x128 is created. A reference sample is maintained to track the IBC.
[0222] The sample (x,y) relative to the top-left corner of the picture is the position (x,y) relative to the top-left corner of the buffer. The following steps are for IBC reference: Indicates how to mark the availability of samples associated with the buffer.
[0223] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. Marked as (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the start of decoding the first CU of a VPDU, x=(xPrevVPDU-2WVP DU+2mWVPDU)%(mWVPDU),..,((xPrevVPDU-2WVP DU+2mWVPDU)%(mWVPDU))-1+WVPDU; and y=yPre vVPDU%(nHVPDU),..,(yPrevVPDU%(nHVPDU))-1 + Position (x,y) in the case of HVPDU may be marked as unavailable. And ( xPrevVPDU, yPrevVPDU) as (xCU, yCU), that is, Set the top left position for the picture. 3) After decoding one CU, x=xCU%(mWVPDU),...,(xCU +CU_width-1)%(mWVPDU) and y=yCU%(nHVPDU),. ..,Position(x,y) for (yCU+CU_height-1)%(nHVPDU) is marked as available. 4) For IBCCU with block vector (xBV, yBV), x = (xCU + xBV)%(mWVPDU),...,(xCU+xBV+CU_width-1)%( mWVPDU) and y=(yCU+yBV)%(nHVPDU),...,(yCU+ yBV+CU_height-1)%(nHVPDU) position (x,y) is used It is marked as not possible and the block vector is considered to be invalid.
[0224] FIG. 16 shows the buffer status for a picture together with the decoding status of a VPDU.
[0225] 5.13 Embodiment #13
[0226] The size of the CTU is 128 x 128 or the size of the CTU is the size of the VPDU. (e.g., 64x64 in the current design) or the size of the CTU If the size is larger than the VPDU size (for example, 64x64 in the current design), A virtual buffer of size 192x128 is maintained to store reference samples for IBC. In the following, if a<0, (a%b) is defined as floor(a / b)*b. , floor(c) returns the largest integer less than or equal to c.
[0227] The sample (x,y) relative to the top-left corner of the picture is the position (x,y) relative to the top-left corner of the buffer. The following steps are for IBC reference: Indicates how to mark the availability of samples associated with the buffer.
[0228] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. Marked as (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the beginning of decoding of the first CU of a VPDU, a. If yPrevVPDU%64 is equal to 0, then x=(xPrevVPDU-1 28)%192,..,((xPrevVPDU-128)%192)+63; and y =yPrevVPDU%128,..,(yPrevVPDU%128)+63 position ( x,y) is marked as unavailable. And (xPrevVPDU,yPre vVPDU) is set as (xCU, yCU), that is, at the top left position of the CU for the picture. Determine. b. Otherwise, x=(xPrevVPDU-64)%192,..,((x PrevVPDU-64)%192)+63; and y=yPrevVPDU%128, ..,(yPrevVPDU%128)+63 position (x,y) is marked as unavailable. Then, (xPrevVPDU, yPrevVPDU) is converted to (xCU, yCU ), that is, the top left position of the CU relative to the picture. 3) After decoding one CU, x=xCU%192,...,(xCU+CU_w idth-1)%192 and y=yCU%128,...,(yCU+CU_heig ht-1)%128 then the position (x,y) is marked as available. 4) For an IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%192,...,(xCU+xBV+CU_width-1)%192 and y=(yCU+yBV)%128,...,(yCU+yBV+CU_height- 1) The position (x,y) in the %128 case is marked as unavailable and the block vector The rule is considered invalid.
[0229] If the size of the CTU is S × S, then S is not equal to 128, so Wbuf is set to 128. * 128 / S. A virtual buffer of size WbufxS is maintained and referenced by IBC. In this case, the size of the VPDU is equal to the size of the CTU.
[0230] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. Marked as (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the start of decoding the first CU of a VPDU, x = (xPrevVPDU-Wbu f *S)%S,..,((xPrevVPDU-W buf *S)%S)+S-1; and Position when y=yPrevVPDU%S,..,(yPrevVPDU%S)+S-1 (x,y) is marked as unavailable. And (xPrevVPDU,yP revVPDU) as (xCU, yCU), that is, the top left position of the CU relative to the picture Set to. 3) After decoding one CU, x=xCU%(W buf ),...,(xCU+C U_width-1)%(W buf ) and y=yCU%S,...,(yCU+CU_ A position (x,y) where (x,y) is less than or equal to (height-1)%S is marked as available. 4) For an IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%(Wbuf),...,(xCU+xBV+CU_width-1)%(W buf) and y=(yCU+yBV)%S,...,(yCU+yBV+CU_hei ght-1) The location (x,y) for %S is marked as unavailable and The kutor is considered invalid.
[0231] 5.14 Embodiment #14
[0232] The size of the CTU is 128 x 128 or the size of the CTU is the size of the VPDU. (e.g., 64x64 in the current design) or the size of the CTU If the size is larger than the VPDU size (for example, 64x64 in the current design), In the IBC, a virtual buffer of size 256x128 is maintained to store reference samples. In the following, if a<0, (a%b) is defined as floor(a / b)*b, and f loor(c) returns the largest integer less than or equal to c.
[0233] The sample (x,y) relative to the top-left corner of the picture is the position (x,y) relative to the top-left corner of the buffer. The following steps are for IBC reference: Indicates how to mark the availability of samples associated with the buffer.
[0234] Record the position (xPrevVPDU, yPrevVPDU) relative to the top left corner of the picture. represents the top left sample of the most recently decoded VPDU. 1) At the start of decoding one VPDU row, all positions in the buffer are unavailable. Marked as (xPrevVPDU, yPrevVPDU) is set as (0,0) will be done. 2) At the beginning of decoding of the first CU of a VPDU, a. If yPrevVPDU%64 is equal to 0, then x=(xPrevVPDU-1 28)%256,..,((xPrevVPDU-128)%256)+63; and y =yPrevVPDU%128,..,(yPrevVPDU%128)+63 position ( x,y) is marked as unavailable. And (xPrevVPDU,yPre vVPDU) is set as (xCU, yCU), that is, at the top left position of the CU for the picture. Determine. b. Otherwise, x=(xPrevVPDU-64)%256,..,((x PrevVPDU-64)%256)+63; and y=yPrevVPDU%128, ..,(yPrevVPDU%128)+63 position (x,y) is marked as unavailable. Then, (xPrevVPDU, yPrevVPDU) is converted to (xCU, yCU ), that is, the top left position of the CU relative to the picture. 3) After decrypting one CU, x=xCU%256,...,(xCU+CU_w idth-1)%256 and y=yCU%128,...,(yCU+CU_heig ht-1)%128 then the position (x,y) is marked as available. 4) For an IBCCU with block vector (xBV, yBV), x=(xCU +xBV)%256,...,(xCU+xBV+CU_width-1)%256 and y=(yCU+yBV)%128,...,(yCU+yBV+CU_height- 1) The position (x,y) in the %128 case is marked as unavailable and the block vector The rule is considered invalid.
[0235] The size of the CTU is not 128x128, or is less than 64x64, or is 64x If it is less than 64, the same process as in the previous example, ie, embodiment #14, is applied.
[0236] 5.15 Embodiment #15
[0237] The IBC reference availability marking process is described as follows. This document describes the changes: Bold, underlined and italicized.
[0238] [Table 4]
[0239] [Table 5]
[0240] [ka]
[0241] 7.3.7.5 Coding unit syntax
[0242] [Table 6]
[0243] 8.6.2 Motion Vector Component Derivation Process for IBC Blocks
[0244] 8.6.2.1 General
[0245] [ka]
[0246] 8.6.3 Decoding process of ibc block
[0247] 8.6.3.1 General
[0248] This process is used to decode coding units coded in ibc prediction mode. This is called when
[0249] [ka]
[0250] xSbIdx=0..numSbX-1, and ySbIdx=0..numSbY- Each code of the subblock index (xSbIdx, ySbIdx) when For the encoding sub-blocks the following applies: - the left of the current coding sub-block relative to the top-left luminance sample of the current picture; The luminance position (xSb, ySb) that defines the upper sample is derived as follows. (xSb,ySb)=(xCb+xSbIdx*sbWidth,yCb+ySbId x*sbHeight) (8-913)
[0251] [ka]
[0252] [ka]
[0253] [ka]
[0254] 8.7.5 Picture Reconstruction Process
[0255] 8.7.5.1 General
[0256] The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. The position to be specified (xCurr, yCurr), - The variables nCurrSw and nCu, which define the width and height of the current block, respectively. rrSh, - the variable cIdx, which specifies the color components of the current block, - an(nCurrSw)×(nCurrS h) array predSamples, - an(nCurrSw)×(nCurrSh) specifies the residual samples of the current block. ) array .
[0257] [ka]
[0258] 5.16 Embodiment #16
[0259] This is the same as the above embodiment, except for the following changes.
[0260] [Table 7]
[0261] [Table 8]
[0262] [ka]
[0263] 5.17 Embodiment #17
[0264] In this specification, the changes in some instances are indicated by bold, underlined text.
[0265] 7.3.7 Slice Data Syntax
[0266] 7.3.7.1 General slice data syntax
[0267] [Table 9]
[0268] 7.4.8.5 Coding unit syntax
[0269] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 will be used to add history to the shared merge candidate list area. The based motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0270] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- For 1, the following allocation is made: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138)
[0271] [ka]
[0272] 8.6.2 Motion Vector Component Derivation Process for IBC Blocks
[0273] 8.6.2.1 General
[0274] The inputs to this process are: - the left of the current luma coding block relative to the top-left luma sample of the current picture Luminance position of the upper sample (xCb, yCb), - The variable cbWidt that specifies the width of the current coding block in luma samples. h, - The variable cbHei that specifies the height of the current coding block in luma samples. ght.
[0275] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample accuracy mvL.
[0276] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in subclause 8.6.2.2 is It is called with inputs (xCb,yCb), variables cbWidth and cbHeight. and the output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is 0, the following applies: Used 1. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 2. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set correctly, rightShift set equal to MvShift+2 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 3. The luma motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885 ) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0](8-8 86) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887 ) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) NOTE 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0277] [ka]
[0278] 8.7.5 Picture Reconstruction Process
[0279] 8.7.5.1 General
[0280] The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. The position to be specified (xCurr, yCurr), - The variables nCurrSw and nCu, which define the width and height of the current block, respectively. rrSh, - the variable cIdx, which specifies the color components of the current block, - an(nCurrSw)×(nCurrS h) array predSamples, - an(nCurrSw)×(nCurrSh) specifies the residual samples of the current block. )array predSamples.
[0281] [ka]
[0282] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array. S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C To handle. - Otherwise (cIdx is equal to 2), set tuCbfChroma to tu_cbf _cr[xCurr][yCurr] is set equal to recSamples. The chroma sample sequence S Cr The function clipCidx1 corresponds to Clip1 C Compatible with do.
[0283] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, the position (xCu (rr,yCurr) of the reconstructed samples recSamples in (nCurrSw) ×(nCurrSh) block is i=0..nCurrSw-1,j=0..nCur For rSh-1, the derivation is 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 size with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the pull array resSamples as input, and the output is the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples that are The position of the roma (xCurr, yCurr), the width nCurrSw and height n of the transformation block CurrSh, coding block flag of the current chroma transformation block tuCbfCh roma, predicted chroma sample array predSamples, residual chroma sample array It is called with resSamples as input and returns the reconstructed chroma sample array rec The output is Samples.
[0284] [ka]
[0285] 5.18 Embodiment #18
[0286] In this specification, the changes in some examples are shown in bold, underlined, and italicized type. .
[0287] 7.3.7 Slice Data Syntax
[0288] 7.3.7.1 General slice data syntax
[0289] [Table 10]
[0290] 7.4.8.5 Coding unit syntax
[0291] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 will be used to add history to the shared merge candidate list area. The based motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0292] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- For 1, the following allocation is made: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138)
[0293] [ka]
[0294] [ka]
[0295] [ka]
[0296] 8.6.2 Derivation of motion vector components for IBC blocks
[0297] 8.6.2.1 General
[0298] The inputs to this process are: - the left of the current luma coding block relative to the top-left luma sample of the current picture Luminance position of the upper sample (xCb, yCb), - The variable cbWidt that specifies the width of the current coding block in luma samples. h, - The variable cbHei that specifies the height of the current coding block in luma samples. ght.
[0299] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample accuracy mvL.
[0300] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in subclause 8.6.2.2 is It is called with inputs (xCb,yCb), variables cbWidth and cbHeight. and the output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is equal to 0, The below applies. 4. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 5. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set correctly, rightShift set equal to MvShift+2 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 6. The luma motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885 ) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887 ) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) NOTE 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0301] A history-based motion vector predictor list update process as specified in 8.6.2.6. The process is invoked using the luminance motion vector mvL.
[0302] [ka]
[0303] 8.6.3 Decoding process of ibc block
[0304] 8.6.3.1 General
[0305] This process is used to decode coding units coded in ibc prediction mode. This is called when
[0306] [ka]
[0307] The output of this process is: - The array of prediction samples, predSamples.
[0308] [ka]
[0309] 8.7.5 Picture reconstruction process
[0310] 8.7.5.1 General
[0311] The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. The position to be specified (xCurr, yCurr), - The variables nCurrSw and nCu, which define the width and height of the current block, respectively. rrSh, - the variable cIdx, which specifies the color components of the current block, - an(nCurrSw)×(nCurrS h) array predSamples, - an(nCurrSw)×(nCurrSh) specifies the residual samples of the current block. )array.
[0312] [ka]
[0313] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array. S L The function clipCidx1 corresponds to Clip1 YCorresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C To handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cr The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0314] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, the position (xCu (rr,yCurr) of the reconstructed samples recSamples in (nCurrSw) The x(nCurrSh) block is i=0..nCurrSw-1, j=0..nCur For rSh-1, the derivation is 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 size with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the pull array resSamples as input, and the output is the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the A picture reconstruction is performed by a luminance-dependent chroma residual scaling process of the chroma samples that are Chroma position (xCurr,yCurr), width nCurrSw and height of the transformation block nCurrSh, coding block flag of the current chroma transformation block tuCbfC hroma, predicted chroma sample array predSamples, residual chroma sample array It is called with resSamples as input and returns the reconstructed chroma sample array rec The output is Samples.
[0315] [ka]
[0316] 5.19 Example #19
[0317] In this specification, the changes in some instances are indicated by bold, underlined text.
[0318] 7.3.7 Slice Data Syntax
[0319] 7.3.7.1 General slice data syntax
[0320] [Table 11]
[0321] 7.4.8.5 Coding unit syntax
[0322] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 will be used to add history to the shared merge candidate list area. The based motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0323] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight-1 The following allocation is made to CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138)
[0324] [ka]
[0325] [ka]
[0326] [ka]
[0327] 8.6.2 Motion Vector Component Derivation Process for IBC Blocks
[0328] 8.6.2.1 General
[0329] The inputs to this process are: - the left of the current luma coding block relative to the top-left luma sample of the current picture Luminance position of the upper sample (xCb, yCb), - The variable cbWidt that specifies the width of the current coding block in luma samples. h, - The variable cbHei that specifies the height of the current coding block in luma samples. ght.
[0330] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample accuracy mvL.
[0331] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in subclause 8.6.2.2 is It is called with inputs (xCb,yCb), variables cbWidth and cbHeight. and the output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is 0, the following applies: It is used. 7. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 8. The motion vector rounding process as specified in 8.5.2.14 shall be equal to mvL. mvX set correctly, rightShift set equal to MvShift+2 ft set, leftShift set equal to MvShift+2. and the rounded mvL is the output. 9. The luma motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885 ) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887 ) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) NOTE 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0332] A history-based motion vector predictor list update process as specified in 8.6.2.6. The process is invoked using the luminance motion vector mvL.
[0333] [ka]
[0334] 8.6.3 Decoding process of ibc block
[0335] 8.6.3.1 General
[0336] This process is used to decode coding units coded in ibc prediction mode. This is called when
[0337] [ka]
[0338] [ka]
[0339] [ka]
[0340] 8.7.5 Picture Reconstruction Process
[0341] 8.7.5.1 General
[0342] The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. The position to be specified (xCurr, yCurr), - The variables nCurrSw and nCu, which define the width and height of the current block, respectively. rrSh, - the variable cIdx, which specifies the color components of the current block, - an(nCurrSw)×(nCurrS h) array predSamples, - an(nCurrSw)×(nCurrSh) specifies the residual samples of the current block. )array.
[0343] The output of this process is the reconstructed picture sample arrays recSamples and IBC Buffer Array ibcBuf L , ibcBuf Cb , ibcBuf Cr It is.
[0344] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array. S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C To handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cr The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0345] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, the position (xCur (nCurrSw) × (r,yCurr) of the reconstructed samples recSamples (nCurrSh) block is i=0..nCurrSw-1,j=0..nCurr For Sh-1, the derivation is 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 size with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the pull array resSamples as input, and the output is the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the The picture reconstruction is performed by luminance-dependent chroma residual scaling of the chroma samples that are The position of the roma (xCurr, yCurr), the width nCurrSw and height n of the transformation block CurrSh, coding block flag of the current chroma transformation block tuCbfCh roma, predicted chroma sample array predSamples, residual chroma sample array It is called with resSamples as input and returns the reconstructed chroma sample array rec The output is Samples.
[0346] [ka]
[0347] 5.20 Example #20
[0348] In this specification, the changes in some examples are shown in bold, underlined, and italicized type. .
[0349] 7.3.7 Slice Data Syntax
[0350] 7.3.7.1 General slice data syntax
[0351] [Table 12]
[0352] 7.4.8.5 Coding unit syntax
[0353] If all of the following conditions are true, set NumHmvpSmrIbcCand to N Set it equal to umHmvpIbcCand and HmvpSmrIbcCandList[ Set HmvpIbcCandList[i] equal to HmvpIbcCandList[i] for i=0..NumHmv pIbcCand-1 will be used to add history to the shared merge candidate list area. The based motion vector predictor is updated. - IsInSmr[x0][y0] is equal to TRUE. - SmrX[x0][y0] is equal to x0. - SmrY[x0][y0] is equal to y0.
[0354] x=x0..x0+cbWidth-1 and y=y0..y0+cbHeight- For 1, the following allocation is made: CbPosX[x][y]=x0 (7-135) CbPosY[x][y]=y0 (7-136) CbWidth[x][y]=cbWidth (7-137) CbHeight[x][y]=cbHeight (7-138)
[0355] [ka]
[0356] [ka]
[0357] [ka]
[0358] 8.6.2 Derivation of motion vector components for IBC blocks
[0359] 8.6.2.1 General
[0360] The inputs to this process are: - the left of the current luma coding block relative to the top-left luma sample of the current picture Luminance position of the upper sample (xCb, yCb), - The variable cbWidt that specifies the width of the current coding block in luma samples. h, - The variable cbHei that specifies the height of the current coding block in luma samples. ght.
[0361] The output of this process is: - Luminance motion vectors at 1 / 16 fractional sample accuracy mvL.
[0362] The luminance motion vector mvL is derived as follows. - The IBC luma motion vector prediction derivation process specified in subclause 8.6.2.2 is It is called with inputs (xCb,yCb), variables cbWidth and cbHeight. and the output is the luminance motion vector mvL. - If general_merge_flag[xCb][yCb] is equal to 0, The below applies. 10. The variable mvd is derived as follows: mvd[0]=MvdL0[xCb][yCb][0] (8-883) mvd[1]=MvdL0[xCb][yCb][1] (8-884) 11. The motion vector rounding process as specified in 8.5.2.14 shall be applied to mvL. mvX set equal, rightSh set equal to MvShift+2 Enter ift set, leftShift set equal to MvShift+2 and the rounded mvL is the output. 12. The luma motion vector mvL is modified as follows: u[0]=(mvL[0]+mvd[0]+2 18 )%2 18 (8-885 ) mvL[0]=(u[0]>=2 17 )?(u[0]-2 18 ):u[0] ( 8-886) u[1]=(mvL[1]+mvd[1]+2 18 )%2 18 (8-887 ) mvL[1]=(u[1]>=2 17 )?(u[1]-2 18 ):u[1] ( 8-888) NOTE 1 - The result value of mvL[0] and mvL[1] specified above is always -2. 17 ~2 17 Included in the range -1.
[0363] A history-based motion vector predictor list update process as specified in 8.6.2.6. The process is invoked using the luminance motion vector mvL.
[0364] [ka]
[0365] 8.6.3 Decoding process of ibc block
[0366] 8.6.3.1 General
[0367] This process is used to decode coding units coded in ibc prediction mode. This is called when
[0368] [ka]
[0369] [ka]
[0370] [ka]
[0371] 8.7.5 Picture Reconstruction Process
[0372] 8.7.5.1 General
[0373] The inputs to this process are: - defines the top-left sample of the current block relative to the top-left sample of the current picture component. The position to be specified (xCurr, yCurr), - The variables nCurrSw and nCu, which define the width and height of the current block, respectively. rrSh, - the variable cIdx, which specifies the color components of the current block, - an(nCurrSw)×(nCurrS h) array predSamples, - an(nCurrSw)×(nCurrSh) specifies the residual samples of the current block. ) array.
[0374] The output of this process is the reconstructed picture sample array recSamples. and IBC Buffer Array ibcBuf L , ibcBuf Cb , ibcBuf Cr is .
[0375] Based on the value of the color component cIdx, the following assignments are made: - If cIdx is equal to 0, recSamples is the reconstructed picture sample array. S L The function clipCidx1 corresponds to Clip1 Y Corresponds to. - Otherwise, if cIdx is equal to 1, then tuCbfChroma is equal to tu_cb f_cb[xCurr][yCurr] is set equal to recSamples. The resulting chroma sample array S Cb The function clipCidx1 corresponds to Clip1 C To handle. - Otherwise, if (cIdx is equal to 2, tuCbfChroma is tu_c bf_cb[xCurr][yCurr] is set equal to The configured chroma sample array S Cr The function clipCidx1 corresponds to Clip1 C Corresponds to.
[0376] Depending on the value of slice_lmcs_enabled_flag, the following applies: - If slice_lmcs_enabled_flag is equal to 0, the position (xCu (rr,yCurr) of the reconstructed samples recSamples in (nCurrSw) The x(nCurrSh) block is i=0..nCurrSw-1, j=0..nCur For rSh-1, the derivation is 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 size with luminance sample mapping as specified in 8.7.5.2 The reconstruction is done by the luminance position (xCurr, yCurr), the block width nCurrSw and The height nCurrSh, the predicted luminance sample array preSamples, and the residual luminance sample It is called with the pull array resSamples as input, and the output is the reconstructed luminance sample array It becomes reCamples. - Otherwise (cIdx is greater than 0), the A picture reconstruction is performed by a luminance-dependent chroma residual scaling process of the chroma samples that are Chroma position (xCurr,yCurr), width nCurrSw and height of the transformation block nCurrSh, coding block flag of the current chroma transformation block tuCbfC hroma, predicted chroma sample array predSamples, residual chroma sample array It is called with resSamples as input and returns the reconstructed chroma sample array rec The output is Samples.
[0377] [ka]
[0378] FIG. 6 is a flow chart illustrating an example of an exemplary method for processing visual media (video or images). The method 600 includes: To convert between the current and the current Determining a buffer size for storing reference samples for the video block (602); ), and performing this transformation using the reference samples stored in this buffer (604). Includes.
[0379] The following sections provide some example implementations of the method 600 and other methods. Examples of preferred features are described below. Additional examples are provided in Section 4 of this specification.
[0380] 1. Between a current video block and a bitstream representation of the current video block. In order to convert the current image block, an intra block copy coding mode is used. determining a buffer size for storing reference samples for locking; and performing said transformation using said reference samples stored in said .
[0381] 2. The method of claim 1, wherein the buffer size is a predetermined constant.
[0382] 3. Any of paragraphs 1 to 2, wherein the size is M×N, and M and N are integers. The method according to any one of the preceding claims.
[0383] 4. M × N is equal to 64 × 64 or 128 × 128 or 64 × 128, third term The method described above.
[0384] 5. The buffer size is determined based on the coding tree unit of the current video block. 2. The method according to claim 1, wherein the size of
[0385] 6. The buffer size is a virtual pipeline data unit used for the transformation. 2. The method according to claim 1, wherein the size of
[0386] 7. The buffer size is specified in a field in the bitstream representation. The corresponding method according to paragraph 1.
[0387] 8. The field is a video parameter set, a sequence parameter set or Picture Parameter Set, or Picture Header, Slice Header, or Tile Group 8. The method according to claim 7, which is included in a bitstream representation at group header level.
[0388] 9. The size of the buffer is determined based on the reference sample of the luma component and the reference sample of the chroma component. 9. The method according to any one of claims 1 to 8, wherein the method is different from the pull method.
[0389] 10. The size of the buffer is determined based on the chroma subsampling of the current image block. 9. The method according to any one of items 1 to 8, which depends on the encoding format.
[0390] 11. Any of claims 1 to 8, wherein the reference samples are stored in RGB format. The method described above.
[0391] 12. The buffer includes a pre-loop filtering and a post-loop filtering replay. 12. A method according to any one of claims 1 to 11, used for storing configuration samples.
[0392] 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.
[0393] 14. Between a current video block and a bitstream representation of the current video block. For the conversion in, the initial value of the reference sample is used to perform intra-block copy coding. a buffer for storing reference samples for the current video block using a matching mode; and performing the transformation using the reference samples stored in the buffer. and performing a process for detecting a difference between the image and the video.
[0394] 15. The method of claim 14, wherein the initial value corresponds to a constant.
[0395] 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.
[0396] 17. The method of claim 15, wherein the constant corresponds to a median gray value.
[0397] 18. The initial values correspond to pixel values of a previously decoded video block. The method described above.
[0398] 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
[0399] 20. The buffer size is as set forth in any one of items 14 to 19. Item 14. The method according to any one of items 1 to 3.
[0400] 21. The x and y numbers are used to address a pixel location within the buffer. The method according to any one of items 1 to 20,
[0401] 22. Represent pixel positions in the buffer using a single number ranging from 0 to M*N-1. and M and N are the pixel width and pixel height of the buffer. 10. The method according to any one of claims 1 to 0.
[0402] 23. The current bitstream representation includes block vectors for said transform; The block vector, represented as (BVx, BVy), is expressed as (x-x0, y-y0). Equally, (x0, y0) is the left coding tree unit of the current video block. 21. The method according to any one of claims 1 to 20, which corresponds to the above position.
[0403] 24. The current bitstream representation includes block vectors for said transform; The block vector, represented as (BVx, BVy), is expressed as (x-x0+Tx, yy 0+Ty), (x0, y0) is the coding tree of the current video block. Corresponding to the upper left position of the unit, Tx and Ty are offset values. Any method as described above.
[0404] 25. The method according to claim 24, wherein Tx and Ty are predefined offset values. .
[0405] 26. During the transformation, at position (x0,y0), there is a block vector (BVx,BV For a pixel with reference position (x0+BV x, y0+BVy).
[0406] 27. If the reference position is outside the buffer, 27. The method according to claim 26, wherein the value of the first pixel is determined by clipping the first pixel to the boundaries of the buffer. method.
[0407] 28. If the reference position is outside the buffer, 27. The method of claim 26, wherein is determined to have a predetermined value.
[0408] 29. During the transformation, at position (x0,y0), there is a block vector (BVx,BV For a pixel with a pixel location (x0+B Vx) mod M, (y0+BVy) mod N), where "mod" is the modulo where M and N are integers representing the x and y dimensions of the buffer. The method according to claim 0.
[0409] 30. During conversion between the image and the bitstream representation of the current image block, A buffer for storing reference samples for intra-block copy coding at boundaries. This resets the filter and uses the reference sample stored in this buffer to perform this transformation. and performing the steps of:
[0410] 31. The image boundary corresponds to a new picture or a new tile. The method described.
[0411] 32. The conversion is performed by converting the buffer into a virtual pipeline data unit after the reset. 30, by updating the reconstructed value of the VPDU. method.
[0412] 33. The conversion includes, after the reset, transferring the buffer to a coding tree unit 31. The method of claim 30, wherein the method is performed by updating the reconfigured value of
[0413] 34. The reset is performed at the beginning of each coding tree unit row. The method according to claim 5.
[0414] 35. The size of the buffer is set to L previously decoded blocks of 64×64. 2. The method of claim 1, wherein L is an integer.
[0415] 36. To read or store samples in the buffer during the conversion, 36. The method of any of clauses 1-35, wherein a vertical scan order is used.
[0416] 37. Between a current video block and a bitstream representation of the current video block. For conversion, the current image is converted using intra block copy coding mode. Using a buffer for storing reference samples for a block, The first bit depth of the buffer is different from the second bit depth of the coded data. and using the reference sample stored in the buffer to perform the transformation. and performing a conversion.
[0417] 38. The method according to claim 37, wherein the first bit depth is greater than the second bit depth. How to.
[0418] 39. The first bit depth is the same as the bit depth of a reconstruction buffer used during conversion. 39. The method according to any one of items 37 to 38, wherein the method is the same.
[0419] 40. The first bit depth is a value or a difference value in the bitstream representation. 40. The method according to any one of items 37 to 39, wherein the signal is transmitted as a signal.
[0420] 41. The conversion uses different bit depths for chroma and luminance components, the method according to any one of claims 37 to 40.
[0421] Additional embodiments and examples up to claims 37 to 41 are described in item 7 of Chapter 4 .
[0422] 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.
[0423] 43. The method according to claim 43, wherein the prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the prediction sample accuracy.
[0424] Additional embodiments and examples up to claims 42 to 43 are described in items 28 to 31 and 34 of Chapter 4.
[0425] 44. A method including 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 size nM × nM is used for a coding tree unit size M × M, n and N are integers, the current video block is positioned in the coding tree unit, and the reference region is the coding tree unit closest to and available for the current video block corresponding to the current video block The image processing method includes the step of:
[0426] Additional embodiments and examples of Section 4 are provided in Chapter 4, Section 35.
[0427] 45. Use intrablock copy mode to copy the current video block to the current video block. The size of the block is nM × nM. A loading tree unit size other than M×M is used, n and N are integers, The current video block is located in the coding tree unit, and the reference The region is the closest available coding tree unit corresponding to the current video block. A video processing method, comprising the steps of:
[0428] Additional embodiments and examples of Section 4 are described in Chapter 4, Section 36. Further exemplary embodiments are shown in FIGS.
[0429] 46. M=mW, N=H, and W and H are the coding of the current image block. The width and height of a tree unit (CTU), and m is a positive integer, as described in claim 3. Method of posting.
[0430] 47. M=W and N=nH, where W and H are coding tree units (C 4. The method of claim 3, wherein n is the width and height of the TU, and n is a positive integer.
[0431] 48. M=mW, N=nH, and W and H are coding tree units (C 4. The method of claim 3, wherein m and n are the width and height of the TU, and m and n are positive integers.
[0432] 49. The method according to any one of claims 46 to 48, wherein n and m depend on the size of the CTU. How to.
[0433] 50. Between the current video block and a bitstream representation of the current video block For the transformation, the component x of the image is used to transform the current image block of the component c of the image. determining the validity of a corresponding block vector, said component X being a determining whether the block vector is different from the luminance component of the current image block; If it is determined that the block vector is valid for and, where a block vector, denoted as (BVx, BVy), is (x-x0,y-y0), where (x0,y0) is the coding of the current video block. This corresponds to the top left position of the tag tree unit.
[0434] 51. The method of claim 50, wherein the component c corresponds to a luminance component of the image.
[0435] 52. The current image block is a chroma block, and the image is in 4:4:4 format. 51. The method according to claim 50, wherein the compound is a medicament.
[0436] 53. The image is in 4:2:0 format, and the current image block is at position (x, y), and the determining step is Vx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32) , if ((y+BVy)>>5<<5)+(y%32)) is true, 51. The method of claim 50, comprising determining that the check vector is invalid.
[0437] 54. The image is in 4:2:0 format, and the current image block is at position (x, y), and the determining is performed by isRec(c,x+BV If x+Chroma_CTU_size,y) is true, 51. The method of claim 50, further comprising determining that the vector is invalid.
[0438] 55. Current image in the current Virtual Pipeline Data Unit (VPDU) of the image area Selectively converting between blocks and a bitstream representation of the current video block. Then, K1 is the preprocessed VPDU from the first row of the video area and K2 is the preprocessed VPDU from the second row. The method determines whether to use K2, which is a VPDU, and performs a conversion. The conversion includes the conversion of the remaining VPDUs, which excludes the use of the current VPDU. Image processing methods.
[0439] 56. The method of claim 55, wherein K1=1 and K2=2.
[0440] 57. The current picture block is determined based on the dimensions of the picture area or the size of the current VPDU. 57. The method according to claim 55-56, wherein the processing is selectively performed based on size.
[0441] 58. A method for decoding a current video block and a bitstream representation of the current video block. performing a validity check of a block vector for conversion between said block vectors; The vector is used in intra block copy mode and is subject to validity checking. a result of said validity check is used to selectively use said block vectors during said transformation; and using the same.
[0442] 59. An intra block copy (IBC) buffer is used during the conversion, and the IBC Let Wbuf and Hbuf be the width and height of the C buffer, respectively. is W × H, the block vector is expressed as (BVx, BVy), and the current A video block is in the current picture with dimensions Wpic and Hpic and is coded The wing tree unit has a width and height Wctu and Hctu. 59. The method of claim 58, wherein the compatibility check uses predetermined rules.
[0443] 60. The current image block is a luminance block, a chroma block, a coding unit, Unit CU, transformation unit TU, 4x4 block, 2x2 block, or pixel coordinate (X 59. The block according to any one of claims 58 to 59, which is a subblock of a parent block starting with method.
[0444] 61. The validity check is performed to determine whether the block vector is outside the boundaries of the current picture. 61. The method according to any one of claims 58 to 60, wherein the toll is deemed valid.
[0445] 62. The validity check is performed on blocks that are outside the boundaries of a coding tree unit. 61. A method according to any one of claims 58 to 60, wherein the vector is considered valid.
[0446] Paragraphs 23 to 30 of the previous chapter provide additional examples and variations of paragraphs 58 to 62 above.
[0447] 63. The transform generates the bitstream representation from the current video block. 63. The method according to any one of items 1 to 62, comprising:
[0448] 64. The conversion comprises converting pixel values of the current image block from the bitstream representation to Item 3. The method according to any one of items 1 to 62, comprising producing
[0449] 65. A video encoder apparatus comprising a processing device configured to implement a method according to one or more of clauses 1 to 62.
[0450] 66. A processing device configured to implement the method according to any one or more of claims 1 to 62. A video decoder device comprising:
[0451] 67. A computer readable medium having a code stored thereon, the code being 1 to 62 20. A method for implementing the method of claim 19, comprising: A computer-readable medium.
[0452] FIG. 7 is a block diagram showing the hardware platform of a video / image processing device 700. The apparatus 700 may be used to implement one or more of the methods described herein. The device 700 may be a smartphone, a tablet, a computer, an IoT (Internet The apparatus 700 may be implemented by one or more The system includes a processing unit 702, one or more memories 704, and video processing hardware 706. The one or more processing units 702 may perform one or more of the methods described herein. (including but not limited to method 600). The library(s) 704 may be used to implement the methods and techniques described herein. The video processing hardware 706 may be used to store data and code that is , the techniques described herein may be used to implement in hardware circuits.
[0453] The bitstream representation corresponding to the current video block is a contiguous set of bits. Instead, the header, parameter sets, and Network Abstraction Layer (NAL) packets are The data may be distributed across multiple servers.
[0454] Section A: Additional Exemplary Embodiments
[0455] In Section A, the VVC standard is used to implement some of the technology described herein. Another exemplary embodiment is presented in which the current version of the case may be modified.
[0456] In this section, we analyze some of the issues in the current IBC reference buffer design and We present a different design to address these issues. Instead of mixing the decoded memory In this paper, an independent IBC reference buffer is proposed. Compared with the current anchors, the proposed skip buffer The team has an AI / RA / LD-B rating of -0.99% / -0.71% / -0.79% for Class F. The brightness BD ratio of 4:2:0 TGM is -2.57% / -1.81% / -1.36%. A 6.7% decrease in memory, or -1.31% / -1.01% / -0 for class F. 81%, 4:2:0 TGM -3.23% / -2.33% / -1.71%, 6.7 This shows a % memory increase.
[0457] A1. Introduction
[0458] Intra Block Copy, or IBC (or Current Picture Reference, or Previous CP The IBC reference samples are stored in the on-chip memory. The buffer must be stored, thus defining a limited reference area of one CTU. To limit the amount of extra on-chip memory required for the processor, the current design is limited to 64x64 memory. It reuses memory to decode current VPDUs, so it does not require IBC support. The only memory available is three additional 64x64 blocks of memory. The CTU size is 128. The current reference region, when ×128, is shown in FIG.
[0459] In the current draft (VVC Draft 4), the territories are defined as follows:
[0460] [Table 13]
[0461] Thus, the total reference size is the CTU.
[0462] A2. Potential issues with the current design
[0463] 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, so there are too many bitstream conformance Constraints are introduced to ensure efficient use of reference regions and legal bitstreams. In order to avoid generating a different module, For example, the probability of having invalid BVs in the merge list increases. Handling them may introduce extra logic or extra conformance constraints. This not only puts a strain on the encoder or decoder, but also reduces the BV coding and This may cause discrepancies with the MV coding. 3. The design does not scale well. VPDU decoding is mixed with the IBC buffer. Therefore, it is not possible to increase or decrease the reference area for the current single 128x128 CTU design. It is not easy. Utilizing the The development of the 32-bit LSIs effectively utilizes the trade-off between better coding efficiency and on-chip memory. This can limit the flexibility with which the system can be used. 4. The bit depth of the IBC reference buffer is connected to the decoding buffer. Although the bit depth of the lean content is smaller than the bit depth of the internal decoding, the buffer Still used to store bits that represent noise that is mostly rounded or quantized. This problem becomes more noticeable when considering higher decoding bit depth configurations. becomes even more serious.
[0464] A3. Clear IBC buffer design
[0465] To address the issues described in the above subsection, we use a decoded memory and a mixed We propose to have a dedicated IBC buffer that is not
[0466] For 128x128 CTU, the buffer is 128x128 with 8-bit samples. When a CU(x,y) of size w×h is decoded, the loop filter The restructuring of the buffer before encoding is converted to 8-bit and begins at position (x%128,y%128). The modulo operator % always returns a positive number. If x<0 and x%L is defined as -(-x%L), then, for example, -3%128=12 The number is 5.
[0467] Assume that pixel (x,y) is coded in IBC mode with BV=(BVx,BVy). Then, the predicted sample in the IBC reference buffer is ((x+BVx)%128, ( y+BVy)%128), and pixel values are converted to 10-bit before prediction.
[0468] Considering a buffer as (W,H), decode the CTU or CU starting at (x,y) Then, the reconstructed pixels before loop filtering are filtered by the buffer starting from (x%W,y%H). Thus, after decoding a CTU, the corresponding IBC reference buffer is Such settings will be updated accordingly if the CTU size is not 128x128. For example, for a 64x64 CTU, the current buffer size is , which can be considered as a 256x64 buffer. Buffer for 64x64 CTU The state is shown in Figure 2.
[0469] FIG. 12 shows the IBC reference buffer status. One block is 64×6 Indicates 4 CTU.
[0470] In such a design, the IBC buffer is different from the VPDU decoding memory. All IBC reference buffers can be used as references.
[0471] If the IBC buffer bit depth is 8 bits, then three additional 10-bit 64x6 Compared to the current design, which requires 4 buffers, the increase in on-chip memory is (8*4) / ( 10*3)-100%=6.7%.
[0472] Further reduction in bit depth can further reduce memory requirements. For example, For a 7-bit buffer, the on-chip memory savings is 100%-(7*4) / (10* 3)=6.7%.
[0473] In this design, the only bitstream compatibility constraint is that the reference block must match the current tile. That is, the pixel should be within the reconstructed region of the current CTU row.
[0474] If initialization to 512 is allowed at the start of each CTU row, all bitstreams The compatibility constraints can be removed.
[0475] A4. Experimental results
[0476] In some embodiments, the disclosed methods use VTM-4.0 software. It may be implemented as
[0477] With 10-bit buffer implementation and CTC, this decoder supports the current VTM4.0 emulator. This means that the proposed decoder is fully compatible with VTM-4.0 This means that the CTC bitstream can be decoded correctly.
[0478] A 7-bit buffer implementation gives the results shown in Table 1.
[0479] For an 8-bit buffer implementation, the results are shown in Table 2.
[0480] [Table 14]
[0481] [Table 15]
[0482] FIG. 17 is an exemplary video processing system in which various techniques disclosed herein may be implemented. 17 is a block diagram illustrating a system 1700. Various implementations may include The system 1700 may include an input for receiving video content. The video content may include a video output unit 1702. The video content may be in a raw or uncompressed format. For example, the image may be received as 8 or 10 bit multi-module pixel values, or may be compressed or The input unit 1702 may receive the network interface signal in an encoded format. It may represent a peripheral bus interface, a peripheral bus interface, or a storage interface. Examples of network interfaces are Ethernet, Passive Optical Networks, Wired interfaces such as Passive Optical Network (PON) and Wi-Fi or Cellular - This includes wireless interfaces such as an interface.
[0483] The system 1700 may implement various coding or encoding methods described herein. The coding module 1704 may include a coding module 1704 that can The coding module 1704 calculates the average bit rate of the video from the input unit 1702 as a coding model. The signal may be reduced to an output of module 1704 to generate a coded representation of the video. This coding technique is sometimes called video compression or video transcoding. The output of the loading module 1704, as represented by module 1706, is The input unit 1702 may store the information and transmit it via a connected communication. bitstream (or codec) of video received, stored or communicated in The representation is used by the module 1708 to display the The bitstream may generate pixel values or displayable images that are sent to 1710. The process of generating images that can be viewed by the user from a remote location is called image expansion. Furthermore, certain video processing operations are sometimes referred to as "coding" operations or tools. A coding tool or operation is used in an encoder to reverse the result of the coding. It will be understood that corresponding decoding tools or operations are performed by the decoder.
[0484] An example of a peripheral bus interface unit or a display interface unit is a Universal Serial Bus (USB) or High-Definition Multimedia Interface (HDM Storage Interface Examples of interfaces are Serial Advanced Technology Attachment (SATA), PCI, The technology described in this specification is applicable to mobile phones, laptops, etc. Computers, smartphones, or other devices capable of digital data processing and / or image display The present invention may be implemented in a variety of electronic devices, such as computer-implemented devices.
[0485] FIG. 18 is a flowchart illustrating an example of a video data processing method. This step is described in connection with Example Example 18 in Section 4 of this application. In 02, the process includes: Intra-block copy mode is used to convert to and from the bitstream representation of blocks. The transformation determines a buffer for storing reference samples for predicting the current image. Intra-block based on motion information about reconstruction blocks located in the same image region as the block. In step 1804, the current image block is copied in the locked copy mode. The position of the current video block relative to the top left position of the coding tree unit (x0, y0 ) and have block vectors (BVx, BVy). Then, the process calculates the corresponding reference in the buffer at reference position (P,Q), This reference position (P,Q) is the block vector (BVx,BVy) and the position (x0,y0). If the reference position (P,Q) is determined to be outside the buffer, the step In step 1805, for the coding tree unit including the current video block, Based at least in part on the position of the current video block, the process determines a reference position. Recalculate.
[0486] FIG. 19 is a flowchart illustrating an example of a video data processing method. Step 19 is described in connection with Example Example 29 in Chapter 4 of this application. In 02, the process includes: Intra-block copy mode is used to convert to and from the bitstream representation of blocks. The transformation determines a buffer for storing reference samples for predicting the current image. Intra-block based on motion information about reconstruction blocks located in the same image region as the block In step 1904, the current image block is copied in the locked copy mode. The current video block is spatially located at the position (x,y) relative to the top left corner of the picture. For a sample with block vector (BVx, BVy), the process is Current video block position (x,y), current video block dimensions, picture dimensions, current The size of the coding tree unit that contains the current video block, or the size of the buffer. at least in part due to the satisfaction of one or more conditions associated with at least one of Based on this, assign the block vector (BVx, BVy) as valid. In step 1906, the process checks whether the block vector (BVx, BVy) is valid. In step 1908, a check is made to determine whether the block vector is If the data (BVx, BVy) is valid, the process The corresponding reference in the block is calculated at the reference position (P,Q). It is determined using the vector (BVx,BVy), the position (x,y), and the dimensions of the buffer. can be.
[0487] FIG. 20 is a flowchart illustrating an example of a video data processing method. Step 20 is described in connection with Example Example 19 in Chapter 4 of this application. In 02, the process includes: For conversion to and from the bitstream representation of the block, Block vector (BVx, BVy) or block vector difference (BVDx, BVDy ), which is then transformed to a reconstruction block located in the same image domain as the current image block. Step 2004 is performed in an intra block copy mode based on motion information about the In this process, at least one of the block vectors (BVx, BVy) At least one component of the block vector difference (BVDx, BVDy) Normalize minutes to fit within range.
[0488] FIG. 21 is a flowchart illustrating an example of a video data processing method. The steps of step 21 are described in connection with the exemplary embodiment 40 in Chapter 4 of this application. At 02, the process combines the current video block and the bitstream of the current video block. Revision for prediction in intra-block copy mode for conversion between stream representations Determine the buffer to be used to store the composition samples, and this transformation is performed on the current video block. Intra-block based on motion information about reconstruction blocks located in the same image region as the block. In step 2104, the process starts with the buffer being written. The stored reconstructed samples are updated in sequence.
[0489] FIG. 22 is a flowchart illustrating an example of a video data processing method. The steps of step 22 are described in connection with Example Example 57 in Chapter 4 of this application. At 02, the process combines the current video block and the bitstream of the current video block. The transformation is performed between the stream representation and the current video block, which is located in the same video domain as the current video block. The block copy is performed in an intra-block copy mode based on the motion information of the reconstruction block to be placed. During the transformation, the first precision used for the prediction calculation is higher than the second precision used for the reconstruction calculation. It will also be lower.
[0490] FIG. 23 is a flowchart illustrating an example of a video data processing method. Step 23 is described in connection with Example Example 59 in Chapter 4 of this application. At 02, the process includes: The conversion between the current video block and the stream representation is performed by a reconstruction block located in the same video region as the current video block. This is done using an intra-block copy mode based on the motion information of the block. When converting, a reference region of size nM × nM is used where n and M are integers, and the current The current video block is located in the coding tree unit, and the reference region is the current The n × n nearest available coding tree units in the sequence corresponding to the video block are It contains samples from the loading tree unit.
[0491] FIG. 24 is a flowchart illustrating an example of a video data processing method. Step 24 is described in connection with the exemplary embodiment 60 in Section 4 of this application. At 02, the process includes: The conversion between the current video block and the stream representation is performed by a reconstruction block located in the same video region as the current video block. This is done using an intra-block copy mode based on the motion information of the block. When converting, a reference region of size nM × pM is used where n, p and M are integers. The current video block is located in a coding tree unit, and the reference region is the current The n×p-1 most recent used coding tree units in the sequence corresponding to the current video block It contains samples from possible coding tree units.
[0492] FIG. 25 is a flowchart illustrating an example of a video data processing method. Step 25 is described in connection with Example Example 61 in Chapter 4 of this application. At 02, the process generates a video domain virtual pipeline data unit (VPDU). ) to and from a bitstream representation of the current video block. Based on the motion information about the reconstruction block located in the same image region as the current image block, In this transformation, k, n, and M are If the nM x nM size reference area is used, and the VPDU dimensions are kM x k, M, the current video block is located in the coding tree unit, and the reference region The area is the n×nk rows of the coding tree unit sequence corresponding to the current video block. It contains samples from the nearest available coding tree unit.
[0493] FIG. 26 is a flowchart illustrating an example of a video data processing method. The steps are described in conjunction with exemplary embodiments 62-66 in Chapter 4 of this application. In step 2602, the process generates a current video block of w×h dimensions of the visual media data. For conversion between the intra-frame and the bitstream representation of the current video block, A buffer for storing reference samples for prediction in a block copy mode is determined, The transformation is performed by subtracting motion information about a reconstruction block located in the same image region as the current image block. In step 2604, the current The current video block relative to the top left position of the coding tree unit (CTU) that contains the video block. The image block is spatially located at the position (x0, y0) and has a block vector (BVx, For a sample with a reference position (P, Calculate the corresponding reference region starting from (P,Q) and the reference position (P,Q) is the block vector (B Step 26: In step 06, the process includes one or more reference regions and / or reference positions (P, Q). We apply rule-based constraints to restrict the overlap between the reference and image regions.
[0494] FIG. 27 is a flowchart illustrating an example of a video data processing method. Step 27 is described in connection with Example Example 68 in Chapter 4 of this application. In 02, the process includes: Intra-block copy mode is used to convert to and from the bitstream representation of blocks. The transformation determines a buffer for storing reference samples for predicting the current image. Intra-block based on motion information about reconstruction blocks located in the same image region as the block In step 2704, the current image block is copied in the locked copy mode. For the coding unit (CU), an empty For samples located in between, the process starts from the reference position in the buffer. In step 2706, the process calculates the corresponding reference region for the previous processing. In order to determine which of the blocks obtained by the prediction is used for prediction, the reference region and the reference position are Adjust.
[0495] FIG. 28 is a flowchart illustrating an example of a video data processing method. The steps are described in conjunction with exemplary Examples 69-75 in Chapter 4 of this application. In step 2802, the process includes: To convert between the bitstream representation of Determine the validity of the block vector corresponding to the current image block of component c, and use this component X In step 2804, the process continues by If it is determined that the block vector is valid for the image block, it uses the block vector. The transformation is performed using the reconstructed block located in the same image region as the current image block. Intra-block copy (IBC) mode based on the movement information of the lock can be.
[0496] Some embodiments of the present specification are presented in a section-based format.
[0497] A1. A method for processing visual media, comprising: A current video block of visual media data and a bitstream representation of the current video block For conversion between the current and future data, the reference sample is used to predict in intra-block copy mode. and determining a buffer to store the transformation in the same way as the current video block. Intra-block copy model based on motion information for reconstruction blocks located in the video domain The process is carried out in a The current image relative to the top left position of the coding tree unit that contains the current image block. The block is spatially located at the position (x0, y0) and has a block vector (BVx, B For a sample with Vy, the corresponding reference in the buffer is reference position (P,Q) The reference position (P,Q) is calculated as the block vector (BVx,BVy) determining the position (x0, y0) using the calculated If it is determined that the reference position (P,Q) is outside the buffer, the current video block is at least partially at the location of the current video block relative to the coding tree unit that contains and recalculating the reference position based on the
[0498] A2. The reference position (P, Q) is determined as P = x0 + BVx, Q = y0 + BVy. The method according to paragraph A1,
[0499] A3. Recalculation is The current video block is located horizontally relative to the coding tree unit, or depends at least in part on whether it is located vertically to the coding tree unit. 2. The method of claim 1, comprising recalculating the reference position (P,Q) based on
[0500] A4. The current video block is located horizontally relative to the coding tree unit. The method according to any one or more of A1 to A3.
[0501] A5. The current video block is located vertically to the coding tree unit. The method according to any one or more of A1 to A3.
[0502] A6. Recalculation is Determine whether the current video block is within a predefined distance from the boundary of the visual media data. recalculating the reference position (P,Q) based at least in part on the method.
[0503] A7. The current video block is within a predefined distance from the boundary of the visual media data. The method according to any one or more of paragraphs A1-A2 and A6,
[0504] A8. N is an integer representing the y-dimension of the buffer, and (y0+BVy) is in the range [0,.. , N-1], a predefined reference position (P, Q) is determined to be outside the range of the reference position (P, Q). The method according to any one or more of paragraphs A1-A2, wherein a determined value is assigned.
[0505] A9. M is an integer representing the y-dimension of the buffer, and (x0+BVx) is in the range [0,.. , M-1], a predefined reference position (P, Q) is determined to be outside the range of the reference position (P, Q). The method according to any one or more of paragraphs A1-A2, wherein a determined value is assigned.
[0506] A10. The reference position (P, Q) is ((x0+BVx)mod M, y0+BVy). where "mod" is xmod y=xy*floor(x / y) ,floor(a) is the largest integer less than or equal to a, and M is an integer representing the x-dimension of the buffer. The method according to any one or more of paragraphs A1-A2, wherein a modulo operation is performed.
[0507] A11. Reference position (P, Q) is (x0+BVx,(y0+BVy)mod N)) where "mod" is xmod y=xy*floor(x / y ), floor(a) is the largest integer less than or equal to a, and N is an integer representing the y-dimension of the buffer. The method according to any one or more of A1-A2, wherein the modulo operation is defined as
[0508] A12. (x0+BVx)mod M,y0+BVy) is determined to be outside the buffer. The method according to claim A10, in which further processing is performed depending on whether the
[0509] A13. (x0+BVx,(y0+BVy)mod N)) is outside the buffer The method of claim A12, further processing is performed in response to determining that
[0510] B1. A visual media processing method comprising: A current video block of visual media data and a bitstream representation of the current video block For conversion between the current and future data, the reference sample is used to predict in intra-block copy mode. and determining a buffer to store the transformation in the same way as the current video block. Intra-block copy model based on motion information for reconstruction blocks located in the video domain The process is carried out in a The position of the current video block relative to the top-left position of the picture that contains the current video block. Samples spatially arranged at (x,y) and with block vector (BVx,BVy) For the current video block position (x,y), the dimensions of the current video block, the size of the coding tree unit that contains the current video block, or the size of the buffer at least one of the dimensions of the Assign block vector (BVx,BVy) as valid based in part on And, Checks to determine if a block vector (BVx,BVy) is valid. and Verify that the block vector (BVx, BVy) is valid and and calculating a corresponding reference at a reference position (P,Q) where the reference position (P,Q) is It uses the block vector (BVx,BVy), the position (x,y) and the buffer dimensions. and calculating, where the difference is determined by:
[0511] B2. Reference position (P,Q) is ((x+BVx)%Wbuf,(x+BVy)%Hbu f), where Wbuf × Hbuf is the size of the buffer and "%" is the modulus. indicates a floor operation, and "x%y" where x<0 is defined as xy*floor(x / y). where floor(a) is the largest integer not greater than a.
[0512] C1. A visual media processing method comprising: A current video block of visual media data and a bitstream representation of the current video block For conversion between current and current, the block vector (BVx,B Vy) or block vector difference (BVDx, BVDy), is based on the motion information about the reconstruction block located in the same image region as the current image block. determining whether the block is an intra block copy mode based on the block size; At least one component of the block vector (BVx, BVy) or the block At least one component of the vector difference (BVDx, BVDy) is within the range. and normalizing.
[0513] C2. Normalizing means Based on the buffer dimensions, at least one of the block vectors (BVx, BVy) component, or at least one component of the block vector difference (BVDx, BVDy) is in range The buffer is then normalized as in The method according to claim C1, further comprising storing a reference sample for the prediction.
[0514] C3. The component BVx is normalized to (BVxmod M), where M is the xth order of the buffer. It is an integer that represents the element, and "mod" is xmod y=xy*floor(x / y). where floor(a) is the largest integer less than or equal to a. 2. The method according to claim 2.
[0515] C4. The component BVDx is normalized to ((BVDy+x0) mod M)-V, where: M is an integer representing the x-dimension of the buffer, and "mod" is xmod y=xy*flo or(x / y), where floor(a) is the number of and V is a predefined value.
[0516] C5. The method of C4, wherein V is 64.
[0517] C6. The method of C4, wherein V is M / 2.
[0518] C7. The method of C4, wherein V is x0.
[0519] C8. The component BVy is normalized to (BVy mod N), where N is the y component of the buffer. It is an integer that represents the dimension, and "mod" is xmod y=xy*floor(x / y). where floor(a) is the largest integer less than or equal to a. The method according to paragraph C2.
[0520] C9. The component BVy is normalized to ((BVy+y0)mod N)-V, where N is An integer representing the y dimension of the buffer, where "mod" is xmod y=xy*floor (x / y), where floor(a) is the number of digits less than or equal to a. The method of clause C2, wherein V is a maximum integer and V is a predefined value.
[0521] C10. The method of C9, wherein V is 64.
[0522] C11. The method of C9, wherein V is N / 2.
[0523] C12. The method of C9, wherein V is y0.
[0524] C13. Components BVx and BVy are normalized to be in different ranges, C1 term The method described.
[0525] C14. The component BVDx is normalized to (BVDxmod M), where M is the buffer is an integer that represents the x-dimension of the ), where floor(a) is the largest integer less than or equal to a. The method according to claim C2,
[0526] C15. The component BVDx is normalized to ((BVDx+x0)mod M)-V, where , M is an integer representing the x-dimension of the buffer, and "mod" is xmod y=xy*fl The modulo operation is defined as floor(x / y), where floor(a) is the sum of a The method of claim C2, wherein V is the largest integer below V, and V is a predefined value.
[0527] C16. The method of C15, wherein V is 64.
[0528] C17. The method of C15, wherein V is M / 2.
[0529] C18. The method of paragraph C15, wherein V is x0.
[0530] C19. The component BVDy is normalized to (BVDy mod N), where N is the buffer and "mod" is a modulo operation. .
[0531] C20. The component BVDy is normalized to ((BVDy+y0)mod N)-V, where , N is an integer representing the y dimension of the buffer, "mod" is the modulo operation, and V is The method according to claim C2, wherein the value is a predefined value.
[0532] C21. The method of C20, wherein V is 64.
[0533] C22. The method of C20, wherein V is N / 2.
[0534] C23. The method of C20, wherein V is y0.
[0535] C24. Components BVDx and BVDy are normalized to be in different ranges, C1 The method according to claim 5.
[0536] D1. A visual media processing method comprising: For conversion between the current video block and a bitstream representation of the current video block In order to store the reconstructed samples for prediction in intra block copy mode, Determining which buffer to use, where the transformation is performed on the same video area as the current video block. The intra-block copy mode is based on the motion information of the reconstruction block located at To be judged, and updating the reconstructed samples stored in the buffer in sequence. Law.
[0537] D2. The method of claim D1, wherein the buffer is updated in order.
[0538] D3. The buffer is updated according to the order of the reconstructed blocks, as described in D1. Method of posting.
[0539] D4. When it is determined that the buffer is full, the reconstructed samples stored in the buffer are The method of claim D1, further comprising replacing with a recently reconstructed sample.
[0540] D5. Replace the reconstructed samples stored in the buffer in a first-in, first-out order, D1. The method described above.
[0541] D6. Replace the oldest set of reconstructed samples stored in the buffer. The method described.
[0542] D7. The reconstructed samples stored in the buffer are assigned priority values; D1, replacing the reconstructed samples stored in the buffer according to their priority values. method.
[0543] D8. A subset of the reconstructed samples stored in the buffer is reconstructed for future replacement. Mark samples as , and replace samples that are not included in the subset first, as described in section D1. Method of posting.
[0544] D9. Flags included in a bitstream representation may be ordered according to priority to satisfy one or more conditions. The method according to claim D7, wherein the value is indicated.
[0545] D10. A priority value is assigned based on the characteristics of the current video block, clause D7 The method described above.
[0546] D11. One or more conditions may affect the palette mode and / or intrablock coding. Coded using Interleaved Block Coding (IBC) mode and / or Transform Skip mode The method according to paragraph D9, wherein the percentage of reconstituted samples that have been reconstituted is related to the percentage of reconstituted samples that have been reconstituted.
[0547] D12. Palette mode and / or Intra-Block Coding (IBC) mode of reconstructed samples coded using transform skip mode and / or In response to determining that the percentage exceeds the threshold, The method of claim D11, wherein all samples in the
[0548] D13. The threshold is based on the size of the current video block and / or the The coding tree unit (CTU) that contains the color component and / or the current video block ) based on the size of the method described in paragraph D12.
[0549] D14. The threshold is included as a field in the bitstream representation, as described in D13. How to.
[0550] D15. Fields include Sequence Parameter Set (SPS), Picture Parameter Set (PPP), data set (PPS), sequence header, slice header, tile group, tile level The method according to claim D14, wherein the image is included in a region of the image.
[0551] D16. Determine if the number of available samples in the buffer is greater than or equal to a threshold The method according to item D4, which indicates that the buffer is full.
[0552] D17. The method according to item D16, wherein the threshold is 64×64×3 luminance samples.
[0553] E1. A visual media processing method, performing a conversion between a current video block and a bitstream representation of the current video block, wherein the conversion is performed in an intra-block copy mode based on motion information related to a reconstructed block located in the same video region as the video block, and at the time of conversion, a first accuracy used for prediction calculation is lower than a second accuracy used for reconstruction calculation, the method including performing the conversion.
[0554] E2. The prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1)]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shift value, bitdepth is the predicted sample accuracy, and clip is a clipping operation defined as clip(x, y, z) = (x < y)? y : (x > z? z : x), the method according to item E1.
[0555] E3. The prediction calculation includes determining a predicted sample value from a reconstructed sample value using clip{{p + [1 << (b - 1) - 1]} >> b, 0, (1 << bitdepth) - 1} << b, where p is the reconstructed sample value, b is a predefined bit shi ft value, bitdepth is the predicted sample accuracy, and clip is a clipping operation defined as clip( x, y, z) = (x < y)? y : (x > z? z : x). The method according to item E1.
[0556] E4. The prediction calculation includes determining a predicted sample value from a reconstructed sample value using ((p >> b) + (1 << (bitdepth - 1))) << b, where p is the reconstructed sample value, b is a predefined bit shift value, and bitdepth is the predicted sample accuracy, the method according to item E1. The method according to item E1.
[0557] E5. The prediction calculation includes determining a predicted sample value from a reconstructed sample value using (clip((p >> b), 0, (1 << (bitdepth - b))) + (1 << (bitdepth - 1))) << b, where p is the reconstructed sample value, b is a predefined bit shift value, bitdepth is the predicted sample accuracy, and clip is the clipping operation defined as clip(x, y, z) = (x < y)? y : (x > z? z : x), the method according to item E1. The method according to item E1.
[0558] E6. The prediction calculation includes determining a predicted sample value from the reconstructed sample value using a clipping operation based on whether an in-loop reshaping (ILR) step is applied, the method according to item E1. The method according to item E1.
[0559] E7. The method according to any one or more of items E1 to E5, where b is the difference between the bit depth of the reconstructed sample and the current video block. The method according to any one or more of items E1 to E5.
[0560] E8. The method according to item E1, where the first accuracy and / or the second accuracy, and / or the difference between the first accuracy and the second accuracy are signaled as a field in the bitstream representation. The method according to item E1. The method according to item E1.
[0561] E9. Prediction calculation involves determining predicted sample values from reconstructed sample values. a first portion of the predicted sample values having a first accuracy and a second portion of the predicted sample values having a second accuracy; The method according to claim E1, having an accuracy of 2.
[0562] E10. The current video block is a coding tree unit that contains samples of different precision. The method according to paragraph E9, wherein the device is located within the unit.
[0563] E11. Samples with different precision are allowed for the current video block. The method according to paragraph E10, wherein the target region is included in the target region.
[0564] E12. The first associated coding tree unit containing another video block The first reference area uses the first precision, and the second reference area uses the code containing the current image block. The second reference region associated with the ding tree unit uses a second precision, E 10. The method according to item 9.
[0565] E13. The first reference area corresponds to the first color component and the second reference area corresponds to the second color component. The corresponding method according to paragraph E12.
[0566] F1. A visual media processing method comprising: Converts between the current video block and a bitstream representation of the current video block. Based on the motion information about the reconstruction block located in the same image region as the current image block, The conversion is performed using intrablock copy mode, and n and M is an integer, a reference region of size nM×nM is used and the current video block is The reference region is located in the coding tree unit and corresponds to the current video block. The n × n nearest available coding tree units in the sequence of coding tree units The method includes performing a sample from a sample collection.
[0567] F2. The size of the reference region is 128 × 128 samples, and the coding tree unit The size of each block is 64x64, and the buffer is the same codec containing the current video block. Contains the four closest available coding tree units in a coding tree unit row. , The method according to paragraph F1.
[0568] F3. The size of the reference region is 128 × 128 samples, and the coding tree unit The size of each block is 32x32, and the buffer is the same codec containing the current video block. Contains the 16 closest available coding tree units in a coding tree unit row. 9. The method according to claim F1.
[0569] G1. A visual media processing method comprising: Converts between the current video block and a bitstream representation of the current video block. Based on the motion information about the reconstruction block located in the same image region as the current image block, The conversion is performed using intra block copy mode, and n, p and If nM×pM is an integer, a reference region of size nM×pM is used, and the current video block The reference region is located in the coding tree unit and is relative to the current video block. The n × p-1 nearest available coding tree units of the corresponding coding tree unit sequence are Including samples from Lee units, including doing.
[0570] G2. The size of the reference region is 128x128 samples or 256x64 samples. The size of the coding tree unit is 64x64, and the buffer is The three closest available coding tree units in the same coding tree unit row that contains the block. The method of claim G1, further comprising a fetching tree unit.
[0571] G3. The size of the reference region is 128x128 samples or 512x32 samples. The size of the coding tree unit is 32x32, and the buffer is The 15 closest available coding trees in the same coding tree unit row that contains the block. The method of claim G1, further comprising a coding tree unit.
[0572] G4. The method of claim G1, wherein the size of the coding tree unit is M×M.
[0573] G5. Samples outside the buffer are not allowed to be used during the transformation, see G1. The method of any one of paragraphs G4.
[0574] H1. A visual media processing method comprising: The current video block of the video domain Virtual Pipeline Data Unit (VPDU) and the current Converts between the bitstream representation of the current video block and the bitstream representation of the current video block. Intra-block copy model based on motion information for reconstruction blocks located in the video domain In the conversion, k, n and M are integers, and n A reference region of size M × nM is used, the VPDU dimensions are kM × kM, and the current video The block is located in the coding tree unit, and the reference region is the current video block. The n × nk nearest available coding tree units in the sequence corresponding to the block are The method includes performing, including a sampling from a fringe tree unit.
[0575] H2. The size of the reference region is 128 × 128 samples, and the coding tree unit The size of the bit is 64x64, the dimensions of the VPDU are 64x64, and the buffer is The three closest available blocks in the same coding tree unit row that contains the current video block. The method according to claim G1, further comprising:
[0576] H3. The size of the reference region is 128 × 128 samples, and the coding tree unit The size of the bit is 32x32, the size of the VPDU is 64x64, and the buffer is The 12 closest available blocks in the same coding tree unit row that contains the current video block. The method of claim H1, including a coding tree unit that can be
[0577] I1. A visual media processing method comprising: A w×h sized current video block of visual media data and a bitmap of the current video block For conversion between the 3D stream representation and the 3D stream representation, prediction is performed in intra block copy mode. determining a buffer for storing reference samples for the current video block; Intra-block based on motion information about reconstruction blocks located in the same image region as the block. determining whether the copy mode is selected; The coding tree unit (CTU) of size M × M contains the current video block. The current video block is spatially located at the position (x0, y0) of the current video block relative to the top-left position, and For a sample with lock vector (BVx, BVy), the reference position in the buffer Calculating the corresponding reference region starting from the reference position (P,Q), is determined using the block vector (BVx, BVy) and / or the position (x0, y0). determining, calculating, Apply one or more rule-based constraints to the reference region and / or reference position (P, Q) , limiting overlap between the reference region and the image region.
[0578] I2. If the size of the CTU is 128×128, (x0,y0) is (m×64, n×64), the reference area has the upper left corner represented by ((m-2)×64,n×64). The image area is limited to 64x64 and does not overlap with the image area. m and n are integers. The method according to claim I1,
[0579] I3. If the size of the CTU is 128×128, (x0,y0) is (m×64, n×64), the reference region is a pixel with its upper left corner represented by (x0-128,y0). The image area is limited to a size of w × h, and m and n are integers. The method described.
[0580] I4. If the size of the buffer is kM×M, the reference region is (x0-kM y0) The image is constrained to not overlap with an image region of size w×h with its top left corner represented as The method according to paragraph I1.
[0581] I5. The top left position of the current image block is represented as (2m*64, 2n*64). Then the top left position of the reconstructed block is ((2m-2)*64, 2n*64). where m and n are integers and the size of the current image block is 64×64. The method according to claim I1,
[0582] I6. The top left position of the current image block is represented as (2m*64, 2n*64). Then the top left position of the reconstructed block is ((2m-1)*64, 2n*64). where m and n are integers and the size of the current image block is 64×64. The method according to claim I1,
[0583] I7. The top left position of the current image block is represented as (2m*64, 2n*64). Then the top left position of the reconstructed block is ((2m-1)*64,(2n+1)* 64), where m and n are integers and the size of the current video block is 6 The method according to claim I1, wherein the number of bits is 4×64.
[0584] I8. The top left position of the current image block is represented as (2m*64, 2n*64). If the current image block is reconstructed, the top left position of the reconstructed block is located at the top left position of the current image block. where m and n are integers, and the size of the current image block is 64x64. The method according to claim 5.
[0585] I9. The top left position of the current image block is ((2m+1)*64,(2n+1)*6 4), the top left position of the reconstructed block is Located at the top left position, m and n are integers, and the size of the current image block is 64× 64. The method according to claim 11,
[0586] I10. The top left position of the current image block is ((2m+1)*64,2n*64). If the top left position of the reconstructed block is expressed as ((2m-1)*64,2n *64), where m and n are integers and the size of the current video block is The method according to claim I1, wherein the pixel size is 64×64.
[0587] I11. The top left position of the current image block is ((2m+1)*64,2n*64). If the pixel is expressed as ((2m-1)*64,(2 n+1)*64), where m and n are integers, and the The method according to claim I1, wherein the size is 64×64.
[0588] I12. The top left position of the current image block is ((2m+1)*64,2n*64). If the pixel is expressed as (2m*64,2n*64), the top left position of the reconstructed block is (2m*64,2n*64) where m and n are integers and the size of the current image block is 64×6 4. The method according to claim 11,
[0589] I13. The top left position of the current image block is ((2m+1)*64,2n*64). If the previous reconstructed block is expressed as the top left position of the current image block, where m and n are integers and the size of the current image block is 64x64. The method according to claim I1,
[0590] I14. The top left position of the current image block is (2m*64,(2n+1)*64). If the pixel is expressed as ((2m-1)*64,(2 n+1)*64), where m and n are integers, and the The method according to claim I1, wherein the size is 64×64.
[0591] I15. The top left position of the current image block is (2m*64,(2n+1)*64). If the pixel is expressed as (2m*64,2n*64), the top left position of the reconstructed block is (2m*64,2n*64) where m and n are integers and the size of the current image block is 64×6 4. The method according to claim 11,
[0592] I16. The top left position of the current image block is (2m*64,(2n+1)*64). If the top left position of the reconstructed block is expressed as ((2m+1)*64,2n *64), where m and n are integers and the size of the current video block is The method according to claim I1, wherein the pixel size is 64×64.
[0593] I17. The top left position of the current image block is (2m*64,(2n+1)*64). If the reconstructed block is represented as the top left corner of the current image block, then the top left corner of the reconstructed block is where m and n are integers and the size of the current image block is 64x64. The method according to claim I1.
[0594] J1. A visual media processing method comprising: A current video block of visual media data and a bitstream representation of the current video block For conversion between the current and future data, the reference sample is used to predict in intra-block copy mode. and determining a buffer to store the transformation in the same way as the current video block. Intra-block copy model based on motion information for reconstruction blocks located in the video domain The process is carried out in a For a coding unit (CU) that contains the current video block, For a sample located spatially at position (x0,y0) in the buffer, calculating a corresponding reference region starting from the position; To determine which previously processed block to use for prediction, the reference region and and adjusting the reference position.
[0595] J2. When (y0>>6)&1==0, up to two previously processed blocks are predicted. The top left corner positions of the two previously processed blocks are ((x>>6<<6)-12 8,y>>6<<6) and ((x>>6<<6)-64,y>>6<<6) The method according to paragraph J1.
[0596] J3. If (y0>>6)&1==1, the top left position is ((x>>6<<6)-6 4,y>>6<<<6) is used for prediction. 2. The method according to claim 1.
[0597] K1. A video processing method comprising: Conversion between the current video block of a video and a bitstream representation of the current video block. For the conversion, we use the image component x to find the block of image component c that corresponds to the current image block. Determining the validity of the lock vector, where component X is different from the luminance component of the image. , determining If it is determined that the block vector is valid for the current video block, the block vector is a vector for performing a transformation, the transformation being performed on the same image domain as the current image block; Intra-block copy (IBC) based on motion information for the reconstruction block located at and performing the method in a mode.
[0598] K2. The current video block starts at position (x,y) and isRe c((x+BVx)>>6<<6)+128-((y+BVy)>>>6)&1)*64 Invalid if +(x%64),((y+BVy)>>6<<6)+(y%64)) is true. The sample (x,y) is reconstructed in IBC mode and the block is If the block vector is written as (BVx,BVy), isRec(x,y) is true. The method according to claim K1,
[0599] K3. The method of clause K1, wherein component c corresponds to a luminance component of an image.
[0600] K4. The current video block is a chroma block and the video is in 4:4:4 format. The method according to claim K1,
[0601] K5. The method according to claim K1, wherein the current image block includes a luminance component and a chrominance component. .
[0602] K6. The video is in 4:2:0 format and the current video block is at position (x,y ) is the chroma block starting from the block vector isRec (c.((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*3 If 2+(x%32),((y+BVy)>>5<<5)+(y%32)) is true If sample (x,y) is reconstructed in IBC mode, including determining that it is invalid, If x, y, then isRec(x, y) is true.
[0603] K7. The decision is based at least in part on the availability of a sample of video component X , the method described in paragraph K1.
[0604] K8. The current video block starts at position (x,y) and it is determined that the block The vector is isRec(c.((x+BVx)>>6<<6)+128-(((y+B Vy)>>6)&1)*64+(x%64),((y+BVy)>>6<<6)+(y% 64) is true, isRec(c,x,y) is the substring of component c. A sample (x,y) is available and reconstructed by IBC mode to obtain a block vector. The method according to claim K7, wherein the rule is denoted as (BVx,BVy).
[0605] K9. The method of clause K8, wherein the current video block is a luminance block.
[0606] K10. The current image block is a chroma block and the image is in 4:4:4 format. The method according to claim K8,
[0607] K11. The determining step determines availability of samples of component X of the video. The method of claim K7, comprising:
[0608] K12. The current video block starts at position (x,y), and the steps of determining are: If isRec(c,x+BVx+Chroma_CTU_size,y) is true, The check vector is invalid, sample (x,y) of component c is available, and I If the block is reconstructed in BC mode, isRec(c,x,y) is true and the block The vector is (BVx,BVy), and Chroma_CTU_size is the chroma component The method of claim K7, further comprising: indicating a size of a coding tree unit of
[0609] K13. The size of the coding tree unit for the chroma components is 64. 13. The method according to claim 12.
[0610] K14. A method for determining a characteristic of a current video block, comprising: In intra-block copy mode, a buffer for storing reference samples for prediction is provided. determining whether For the top left position of the coding tree unit (CTU) that contains the current video block Then, for the sample spatially located at the position (x0, y0) of the current video block, Calculating the corresponding reference region starting from the reference position (P,Q) in the buffer; The method according to claim K1, further comprising:
[0611] K15. The method of claim K14, wherein the buffer stores blocks of size M×M.
[0612] K16. A buffer stores blocks of size N × M, where M and N are not equal. , The method according to paragraph K14.
[0613] K17. The use of buffers is restricted if one or more conditions are met, clause K14 The method according to
[0614] K18. Buffer is in the same brick / tile / tilegroup / as the current video block The method of clause K14, in which buffer usage is restricted if within a slice.
[0615] L1. Transformation involves generating a bitstream representation from the current video block A method according to any one of items A1 to K18.
[0616] L2. Transformation is the process of generating pixel values for the current video block from its bitstream representation. A method according to any one of A1 to K18, comprising:
[0617] L3. A process configured to carry out the method according to any one or more of A1 to K18. A video encoder device having a processing device.
[0618] L4. A method according to any one or more of claims A1 to K18. A video decoder device comprising a processing unit.
[0619] L5. A computer readable medium having a code stored thereon, the code being A1 to K18. embodied processor executable instructions for carrying out the method according to any one or more of the claims; Computer-readable medium.
[0620] As used herein, the term "video processing" includes video encoding, video decoding, video compression, and For example, a video compression algorithm converts a pixel representation of an image into It may be applied during conversion to a corresponding bitstream representation or vice versa. A bitstream representation of a current video block may be, for example, as specified by the syntax: This may correspond to bits spread to the same or different locations in the bitstream. For example, a macroblock can be expressed in terms of transformed and coded error residual values. from, and using bits in the header and other fields in the bitstream The signal may be encoded as:
[0621] While specific embodiments of the disclosed technology have been described for purposes of illustration, it is understood that such modifications may fall within the scope of the present invention. It will be understood that various modifications are possible without departing from the spirit and scope of the present disclosure. The technology is not limited except as by the appended claims.
[0622] The implementation of the subject matter and functional operations described in this patent specification may be implemented using the structures disclosed herein. Any system, digital electronic circuit, or computer structure, including its structural equivalents. may be implemented in computer software, firmware, or hardware, or One or more combinations thereof may be implemented. is implemented as one or more computer program products, i.e. programs executed by a data processing device. A tangible, non-portable computer is used to store, store, or control the operation of a data processing device. Implemented as one or more modules of computer program instructions encoded on a readable medium. The computer-readable medium may be implemented as a machine-readable storage device, a machine-readable storage medium, a board, a memory device, a composition of matter that provides a machine-readable propagated signal, or one or more of these. The term "data processing unit" or "data processing device" may be used in combination. The term may refer, for example, to a programmable processing device, a computer, or a plurality of processing devices or processors. Includes all apparatus, devices and machines for processing data, including computers In addition to the hardware, this device also contains the code that creates the execution environment for the computer program. processor firmware, protocol stacks, database management systems , an operating system, or any combination of one or more of these. It is possible to do so.
[0623] Computer programs (programs, software, software applications) , script, or code) is a compiled or interpreted language. It can be written in any form of programming language, including Modules suitable for use as standalone programs or in a computing environment may be deployed in any form, including as a component, subroutine, or other unit. A computer program does not necessarily have to be a file in a file system. The program may not necessarily support other programs or files that hold data. recorded in one or more scripts stored in a markup language document The program may be stored in a single file dedicated to the program, or in multiple files. A tuning file (e.g., a file that stores one or more modules, subprograms, or parts of code) A computer program may be stored in a single subprogram. It may be a single computer located at one site or distributed across several sites and connected via a communication network. It is also possible to deploy the program so that it runs on multiple computers interconnected by a single processor.
[0624] The processes and logic flows described herein operate on input data and produce output. execute one or more computer programs to perform functions by creating The process and logic flow may be implemented using one or more programmable processing devices. Also, application-specific logic circuits, such as FPGAs (field programmable gate arrays) The device may also be implemented by a microprocessor (microprocessor array) or an ASIC (application specific integrated circuit), It may be implemented as special purpose logic circuitry.
[0625] Suitable processors for the execution of a computer program include, for example, general purpose and special purpose microprocessors. both the processor and any one or more processors of any kind of digital computer Typically, a processing device includes a read-only memory or a random access memory or The essential elements of a computer are the and one or more memory devices for storing instructions and data. Generally, a computer has one or more mass storage devices, e.g. For example, it may include a magnetic, magneto-optical, or optical disk, or any of these mass storage devices. operatively coupled to receive data from or transfer data to the device However, a computer need not have such devices. A computer readable medium suitable for storing computer program instructions and data is , including all forms of non-volatile memory, media, and memory devices, such as EPR Includes semiconductor memory devices such as ROM, EEPROM, and flash memory devices. The devices and memories may be supplemented by special purpose logic circuitry, or may be implemented in special purpose It may be incorporated into a logic circuit.
[0626] This description, together with the drawings, are given by way of illustration only, and by illustration I mean examples. It is intended that the use of "or" herein be interpreted as meaningless unless the context dictates otherwise. "And / or" is intended to be inclusive unless expressly indicated otherwise.
[0627] This patent specification contains many details which may be misleading in any respect as to the scope or scope of any claim. The present invention should not be construed as limiting the scope of the present invention, but rather as being specific to particular embodiments of a particular invention. The description of the possible features of the present invention should be interpreted as a description of the possible features of the present invention. Certain features described in the context may be implemented in combination in one example. Various features that are described in the context of one example may be used separately or in any combination in multiple embodiments. In addition, features may be implemented in any suitable subcombination. Although it may be stated above as being used for the purpose and may be initially claimed as such, One or more features from the combination may, in some cases, be extracted from the combination. The claimed combination may be a subcombination or a variation of a subcombination. The signal may be directed toward the target.
[0628] Similarly, although operations may be shown in a particular order in the figures, this is not intended to be limiting as to how the desired results are achieved. that such actions be performed in the particular order or sequential order shown, It should not be construed as requiring that all operations shown be performed. Also, the separation of the various system components in the examples described in this patent specification is It should not be understood that all embodiments require such separation.
[0629] Only certain implementations and examples are described and illustrated in this patent document. Other embodiments, extensions, and variations are possible based on the teachings herein.
Claims
1. 1. A method for processing visual media, comprising: determining that a first coding mode is to be applied to a current video block of a video for conversion between the current video block and a bitstream of the video; deriving a first block vector (BVx, BVy) for the current image block; generating predicted samples of the current video block based on the first block vector and a sample buffer, where no filtering operation is applied and reconstructed samples of a previous video block are stored in a sample buffer, where in the first coding mode, the predicted samples are derived from the same picture that contains the current video block, and where a bit depth of the sample buffer is the same as a bit depth of a reconstruction buffer used during the transform; performing the transformation based on the prediction samples; having to generate a predicted sample of a first sample (x0, y0) in the current video block, a position transformation operation is applied to (x0+BVx, y0+BVy) to derive a position within the sample buffer of the first predicted sample; the position conversion operation is a modulo operation; The position of the first predicted sample is expressed as ((x0+BVx) mod M, (y0+BVy) mod N), where mod is a modulo function; M denotes the width of the sample buffer, and N denotes the height of the sample buffer. method.
2. The sample buffer is updated in a first order. The method of claim 1.
3. the first order being an order of reconstructed samples upon the transformation; The method of claim 2.
4. the first order is based on a first-in, first-out rule; The method of claim 2.
5. If the sample buffer is full, the sample that was added to the sample buffer earliest is replaced with the most recently reconstructed sample. The method according to claim 4.
6. the sample buffer is a rectangular region; the size of the sample buffer is indicated based on a field included in the bitstream; The method of claim 1.
7. the portion of the previous video block is placed in a coding tree block different from a current coding tree block that contains the current video block. The method of claim 1.
8. the transforming includes encoding the current video block into the bitstream.
8. The method according to any one of claims 1 to 7.
9. the converting includes decoding the current video block from the bitstream.
8. The method according to any one of claims 1 to 7.
10. 1. An apparatus for processing video data comprising a processor and a non-transitory memory having instructions stored thereon, the apparatus comprising: The instructions, when executed by the processing device, cause the processing device to: determining that a first coding mode is to be applied to a current video block of a video for conversion between the current video block and a bitstream of the video; deriving a first block vector (BVx, BVy) for the current image block; generating predicted samples of the current video block based on the first block vector and a sample buffer, where no filtering operation is applied and reconstructed samples of a previous video block are stored in a sample buffer, where in the first coding mode, the predicted samples are derived from the same picture that contains the current video block, and where a bit depth of the sample buffer is the same as a bit depth of a reconstruction buffer used during the transform; performing the transformation based on the prediction samples; to generate a predicted sample of a first sample (x0, y0) in the current video block, a position transformation operation is applied to (x0+BVx, y0+BVy) to derive a position within the sample buffer of the first predicted sample; the position conversion operation is a modulo operation; The position of the first predicted sample is expressed as ((x0+BVx) mod M, (y0+BVy) mod N), where mod is a modulo function; M denotes the width of the sample buffer, and N denotes the height of the sample buffer. Device.
11. A non-transitory computer-readable storage medium storing instructions, comprising: The instructions may be for causing a processor to: determining that a first coding mode is to be applied to a current video block of a video for conversion between the current video block and a bitstream of the video; deriving a first block vector (BVx, BVy) for the current image block; generating predicted samples of the current video block based on the first block vector and a sample buffer, where no filtering operation is applied and reconstructed samples of a previous video block are stored in a sample buffer, where in the first coding mode, the predicted samples are derived from the same picture that contains the current video block, and where a bit depth of the sample buffer is the same as a bit depth of a reconstruction buffer used during the transform; performing the transformation based on the prediction samples; to generate a predicted sample of a first sample (x0, y0) in the current video block, a position transformation operation is applied to (x0+BVx, y0+BVy) to derive a position within the sample buffer of the first predicted sample; the position conversion operation is a modulo operation; The position of the first predicted sample is expressed as ((x0+BVx) mod M, (y0+BVy) mod N), where mod is a modulo function; M denotes the width of the sample buffer, and N denotes the height of the sample buffer. A non-transitory computer-readable storage medium.
12. 1. A method for storing a video bitstream, comprising the steps of: determining, for a current video block of the video, that a first coding mode is to be applied to the current video block; deriving a first block vector (BVx, BVy) for the current image block; generating prediction samples of the current video block based on the first block vector and a sample buffer, where no filtering operation is applied and reconstructed samples of a previous video block are stored in a sample buffer, where in the first coding mode, the prediction samples are derived from the same picture that contains the current video block, and where a bit depth of the sample buffer is the same as a bit depth of a reconstruction buffer used in the generating; generating the bitstream based on the predicted samples; storing the bitstream on a non-transitory computer-readable recording medium; to generate a predicted sample of a first sample (x0, y0) in the current video block, a position transformation operation is applied to (x0+BVx, y0+BVy) to derive a position within the sample buffer of the first predicted sample; the position conversion operation is a modulo operation; The position of the first predicted sample is expressed as ((x0+BVx) mod M, (y0+BVy) mod N), where mod is a modulo function; M denotes the width of the sample buffer, and N denotes the height of the sample buffer. method.
Citation Information
Patent Citations
Features of intra block copy prediction mode for video and image coding and decoding
US20160241868A1