Video decoding method, video decoding device, and computer-readable medium

By reconstructing overlapping regions using reconstructed samples from reference blocks and optimizing memory management, the solution addresses inefficiencies in video coding with duplicate reference blocks, enhancing encoding and decoding efficiency.

JP2025537217AInactive Publication Date: 2025-11-14TENCENT AMERICA LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2025526333
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-10-03
Filing Date
2023-10-04
Publication Date
2025-11-14
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently handling duplicate reference blocks for intra block copy prediction, leading to inefficiencies in video encoding and decoding processes.

Method used

The proposed solution involves reconstructing overlapping regions of a current block using reconstructed samples from a reference block, with specific methods for determining and utilizing block vectors to copy predicted values in copy units, and managing memory updates during the decoding process.

Benefits of technology

This approach enhances the efficiency of video encoding and decoding by optimizing the use of duplicate reference blocks, reducing memory requirements and improving processing speed.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025537217000001_ABST
    Figure 2025537217000001_ABST
Patent Text Reader

Abstract

Aspects of the present disclosure include methods and devices. One of the devices includes a processing circuit that receives a bitstream of a current block in a picture. The bitstream includes coding information indicating that the current block is coded with a block vector (BV) according to a prediction mode. The processing circuit determines a reference block in the picture based on the BV of the current block. The reference block and the current block have an overlapping area. The reference block includes both (i) unreconstructed samples within the overlapping area and (ii) reconstructed samples outside the overlapping area. The processing circuit reconstructs the overlapping area in the current block based on the reconstructed samples in the reference block that are outside the overlapping area. In one example, the width of the overlapping area and the height of the overlapping area are multiples of four.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 438,239, filed January 10, 2023, entitled "Motion Compensation of Duplicate Reference Blocks for IBC Prediction," which claims the benefit of priority to U.S. Patent Application No. 18 / 376,345, filed October 3, 2023, entitled "Intra Block Copy Prediction for Duplicate Reference Blocks," the disclosures of which are incorporated herein by reference in their entireties.

[0002] This disclosure describes embodiments generally related to video coding. [Background technology]

[0003] The "Background" discussion provided herein is intended to generally present the context for the present disclosure. To the extent described in this Background section, the work of the current inventors, as well as aspects of the disclosure that may not otherwise be admitted as prior art at the time of filing, are not expressly or implicitly admitted as prior art to the present disclosure.

[0004] Image / video compression can help transmit image / video data across different devices, storage, and networks with minimal quality loss. In some examples, video codec techniques can compress video based on spatial and temporal redundancy. In one example, a video codec can use a technique called intra-prediction, which can compress images based on spatial redundancy. For example, intra-prediction can use reference data from a current picture during reconstruction for sample prediction. In another example, a video codec can use a technique called inter-prediction, which can compress images based on temporal redundancy. For example, inter-prediction can predict samples in a current picture from previously reconstructed pictures using motion compensation. Motion compensation can be indicated by a motion vector (MV). Summary of the Invention [Means for solving the problem]

[0005] Aspects of the present disclosure include methods and apparatus for video encoding / decoding. In some examples, a video decoding apparatus includes a processing circuit that receives a bitstream of a current block in a picture. The bitstream includes coding information indicating that the current block is coded with a block vector (BV) according to a prediction mode. The processing circuit determines a reference block in the picture based on the BV of the current block. The reference block and the current block may have an overlapping region. The reference block includes both (i) unreconstructed samples within the overlapping region and (ii) reconstructed samples outside the overlapping region. The processing circuit reconstructs the overlapping region in the current block based on the reconstructed samples in the reference block that are outside the overlapping region.

[0006] In one embodiment, the processing circuit determines predicted values ​​of the unreconstructed samples in the overlap region by copying each predicted sample in the reference block indicated by the BV, and reconstructs the overlap region based on the predicted values ​​of the unreconstructed samples in the overlap region.

[0007] In one example, the processing circuitry performs motion compensation on the current block by reconstructing the overlap region in the current block based on the reconstructed samples in the reference block that are outside the overlap region.

[0008] In one example, the width of the overlapping area and the height of the overlapping area are multiples of four.

[0009] In one embodiment, the processing circuit determines a predicted value P'(x,y) of one of the unreconstructed samples at location (x,y) by copying the reconstructed sample value P(x+bvX,y+bvY) of each predicted sample at location (x+bvX,y+bvY). P'(x,y) is equal to P(x+bvX,y+bvY), where bvX is the x-component of the BV and bvY is the y-component of the BV.

[0010] In one embodiment, the processing circuit copies each of the predicted samples in the reference block as the predicted values ​​of the unreconstructed samples in the overlap region in copy units having a size of M×N samples, where at least one of M or N is greater than 1.

[0011] In one example, at least one of the width of the overlapping region is a multiple of M or the height of the overlapping region is a multiple of N.

[0012] In one example, the size of the MxN samples of the copy unit depends on the color components associated with the current block.

[0013] In one example, the x component of the BV is less than or equal to 0, the y component of the BV is less than or equal to 0, and one of the x component of the BV or the y component of the BV is not equal to 0.

[0014] In one example, the BV is represented by the vector (bvX, bvY), where bw is the width of the current block, bh is the height of the current block, the overlap area is rectangular, the top left coordinate of the overlap area is (bx, by), and the bottom right coordinate of the overlap area is (bx+bw-1+bvX, by+bh-1+bvY).

[0015] In one example, the current block includes a first area and a second area outside the first area, the BV indicates the overlap region from the first area, the processing circuit determines a predicted value for the first area by copying each predicted sample in the reference block indicated by 2×BV, and reconstructs the overlap region based on the predicted value for the first area.

[0016] In one example, the current block is a first sub-block among the sub-blocks in a coding block, and the BV of the first sub-block is different from another BV of a second sub-block among the sub-blocks in the coding block.

[0017] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform the method for video encoding / decoding.

[0018] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]

[0019] [Figure 1] FIG. 1 is a schematic diagram illustrating an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram illustrating an exemplary block diagram of a decoder. [Figure 3] FIG. 1 is a schematic diagram illustrating an exemplary block diagram of an encoder. [Figure 4] 4 illustrates a BV associated with a current CU (401) according to an embodiment of the present disclosure. [Figure 5] 1 illustrates a reference sample memory ("RSM") update process at four intermediate points during the reconstruction process, according to an embodiment of the present disclosure. [Figure 6]1 illustrates a left neighbor CTU and a current CTU according to one embodiment of the present disclosure, showing the valid reference area. [Figure 7] 1 illustrates an example of a prediction area for an Intra Block Copy ("IntraBC") mode in a super-block prediction according to one embodiment of the present disclosure. [Figure 8] 10 illustrates an example of a memory reclamation mechanism or memory update process in an RSM during decoding of a CTU or SB in a current picture according to one embodiment of the present disclosure. [Figure 9A-9B] 9A and 9B illustrate examples of memory update processes in the RSM during decoding of the current SB (or CTU) according to an embodiment of the present disclosure, performed in (a) horizontal splitting at the SB root (FIG. 9A) or (b) vertical splitting at the SB root (FIG. 9B). [Figure 10] 1 illustrates an example of an intra template matching prediction ("IntraTMP") mode according to one embodiment of the present disclosure. [Figure 11] 1 illustrates an example of an intra block copy (IBC) mode or an intra template matching prediction (IntraTMP) mode according to one embodiment of the present disclosure, used to code a current block in a current picture when the current block overlaps with its reference block. [Figure 12] 1 illustrates an example of copying a predicted sample of each unreconstructed sample as a predicted value of an unreconstructed sample in an overlap area in units of copy units having a size of M×N samples according to one embodiment of the present disclosure. [Figure 13] 10 illustrates an example of performing IBC mode or IntraTMP mode on a sub-block in a current block when the current block overlaps a reference block, according to one embodiment of the present disclosure. [Figure 14] 10 illustrates an example of performing IBC mode or IntraTMP mode on a sub-block in a current block when the current block overlaps a reference block, according to one embodiment of the present disclosure. [Figure 15] 1 is a flowchart outlining a decoding process according to some embodiments of the present disclosure. [Figure 16] 1 is a flowchart outlining an encoding process according to some embodiments of the present disclosure. [Figure 17] 1 is a flowchart outlining a decoding process according to some embodiments of the present disclosure. [Figure 18] 1 is a flowchart outlining an encoding process according to some embodiments of the present disclosure. [Figure 19] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0020] 1 illustrates a block diagram of a video processing system 100 in some examples. The video processing system 100 is an example of an application of the disclosed subject matter, a video encoder and video decoder in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storing compressed video on digital media such as CDs, DVDs, memory sticks, etc.

[0021] The video processing system 100 includes a capture subsystem 113, which may include a video source 101, such as a digital camera, that creates a stream of uncompressed video pictures 102. In one example, the stream of video pictures 102 includes samples captured by the digital camera. The stream of video pictures 102, shown in bold to emphasize its high data volume compared to the encoded video data 104 (or coded video bitstream), can be processed by an electronic device 120 that includes a video encoder 103 coupled to the video source 101. The video encoder 103 can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data 104 (or coded video bitstream), shown in thin to emphasize its low data volume compared to the stream of video pictures 102, can be stored on a streaming server 105 for future use. One or more streaming client subsystems, such as the client subsystems 106 and 108 of FIG. 1, can access the streaming server 105 to retrieve copies 107 and 109 of the encoded video data 104. The client subsystem 106 may include, for example, a video decoder 110 in an electronic device 130. The video decoder 110 decodes the incoming copy 107 of the encoded video data and creates an outgoing stream of video pictures 111 that can be rendered on a display 112 (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data 104, 107, and 109 (e.g., a video bitstream) may be encoded according to a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265.In one example, an evolving video coding standard is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in the context of VVC.

[0022] It should be noted that the electronic devices 120 and 130 may include other components (not shown). For example, the electronic device 120 may include a video decoder (not shown), and the electronic device 130 may include a video encoder (not shown).

[0023] 2 shows an exemplary block diagram of a video decoder (210). The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., a receiving circuit). The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.

[0024] The receiver (231) may receive one or more coded video sequences in a bitstream, for example, to be decoded by the video decoder (210). In one embodiment, the receiver receives one coded video sequence at a time, with the decoding of each coded video sequence being independent of the decoding of the other coded video sequences. The coded video sequences may be received from a channel (201), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (231) may receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). The receiver (231) may separate the coded video sequences from other data. To prevent network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter, "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other cases, the buffer memory (215) may be external to the video decoder (210) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (210), for example, to prevent network jitter, and another buffer memory (215) internal to the video decoder (210), for example, to handle playback timing. When the receiver (231) receives data from a store-and-forward device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (215) may not be necessary and may be small. For use with best-effort packet networks such as the Internet, the buffer memory (215) may be necessary, may be relatively large, may advantageously be adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (210).

[0025] The video decoder (210) may include a parser (220) that reconstructs symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and potentially include information to control a rendering device, such as a rendering device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but can be coupled to the electronic device (230) as shown in FIG. 2. Control information for the rendering device may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence can be aligned with a video coding technique or standard and can follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract a set of subgroup parameters for at least one subgroup of pixels in a video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.

[0026] The parser (220) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (215) to create symbols (221).

[0027] The reconstruction of the symbols (221) can involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter-picture and intra-picture, inter-block and intra-block) and other factors. Which units are involved and how can be controlled by subgroup control information parsed from the coded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following units is not shown for clarity.

[0028] In addition to the functional blocks already mentioned, the video decoder (210) may be conceptually subdivided into several functional units, as described below. In an actual implementation operating within commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.

[0029] The first unit is a scalar / inverse transform unit (251), which receives control information from the parser (220) including the transform to be used, block size, quantization factor, quantization scaling matrix, etc., as well as quantized transform coefficients as symbols (221). The scalar / inverse transform unit (251) can output blocks containing sample values ​​that can be input to the aggregator (255).

[0030] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates a block of the same size and shape as the block being reconstructed using surrounding, already reconstructed information retrieved from the current picture buffer (258). The current picture buffer (258), for example, buffers the partially reconstructed and / or fully reconstructed current picture. The aggregator (255) may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251).

[0031] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to retrieve samples used for prediction. After motion-compensating the retrieved samples according to the symbols (221) related to the block, these samples may be added to the output of the scalar / inverse transform unit (251) by the aggregator (255) to generate output sample information (in this case, referred to as residual samples or residual signals). The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) retrieves prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (253), for example, in the form of symbols (221) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​retrieved from the reference picture memory (257) when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.

[0032] The output samples of the aggregator (255) may be applied to various loop filtering techniques in a loop filter unit (256). Video compression techniques can include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression can also depend on meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as on previously reconstructed, loop-filtered sample values.

[0033] The output of the loop filter unit (256) may be a sample stream that can be output to a rendering device (212) and stored in a reference picture memory (257) for use in future inter-picture prediction.

[0034] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257), and a new current picture buffer can be reallocated before beginning reconstruction of the following coded picture.

[0035] The video decoder (210) can perform decoding operations according to a given video compression technology or standard, such as ITU-T Recommendation H.265. A coded video sequence may comply with the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile may select specific tools from all tools available in the video compression technology or standard as the only tools available in that profile. Compliance also requires that the complexity of the coded video sequence be within the range limited by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level may be further limited by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled in the coded video sequence.

[0036] In one embodiment, the receiver (231) can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (210) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0037] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmission circuit). The video encoder (303) can be used in place of the video encoder (103) in the example of FIG. 1.

[0038] The video encoder (303) can receive video samples from a video source (301) (not part of the electronic device (320) in the example of FIG. 3) that can capture video images to be encoded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).

[0039] The video source (301) may provide a source video sequence to be coded by the video encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media delivery system, the video source (301) may be a storage device that stores prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. Video data may be provided as multiple individual pictures that, when viewed in sequence, give the appearance of motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. The following discussion focuses on samples.

[0040] According to one embodiment, the video encoder (303) can encode and compress pictures of a source video sequence into a coded video sequence (343) in real time or under any other required time constraints. Enforcing the appropriate coding rate is one of the functions of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units as described below. For clarity, coupling is not shown. Parameters set by the controller (350) can include rate control-related parameters (picture skip, quantization, lambda value for rate-distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) can be configured with other appropriate functions related to the video encoder (303) optimized for a particular system design.

[0041] In some embodiments, the video encoder (303) is configured to operate in a coding loop. As an overly simplified explanation, in one example, the coding loop can include a source coder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a manner similar to that created by the (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding the symbol stream produces bit-exact results regardless of the location of the (local or remote) decoder, the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained due to, for example, channel errors) is also used in several related technologies.

[0042] The operation of the "local" decoder (333) may be similar to the operation of a "remote" decoder, such as the video decoder (210), already described in detail above in connection with Figure 2. However, and with brief reference also to Figure 2, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).

[0043] In one embodiment, decoder technology other than parsing / entropy decoding present in the decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on the operation of the decoder. A description of the encoder technology can be omitted, as it is the reverse of the decoder technology described generically. In certain areas, more detailed descriptions are provided below.

[0044] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as prediction references for the input picture.

[0045] The local video decoder (333) can decode coded video data for pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the coding engine (332) can advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence may typically be a replica of the source video sequence, with some errors. The local video decoder (333) can replicate the decoding process that may be performed on the reference pictures by the video decoder and store the reconstructed reference pictures in the reference picture memory (334). In this way, the video encoder (303) can locally store copies of reconstructed reference pictures that have content in common (without transmission errors) with the reconstructed reference pictures obtained by the far-end video decoder.

[0046] The predictor (335) can perform the prediction search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) can search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata that can serve as suitable prediction criteria for the new picture, such as the reference picture's motion vectors, block shapes, etc. The predictor (335) can operate on a sample block / pixel block basis to find a suitable prediction criteria. In some cases, as determined by the search results obtained by the predictor (335), the input picture may have prediction criteria drawn from multiple reference pictures stored in the reference picture memory (334).

[0047] The controller (350) may manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0048] The output of all of the aforementioned functional units may be entropy coded by an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.

[0049] The transmitter (340) can buffer the coded video sequence created by the entropy coder (345) in preparation for transmission over a communication channel (360), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (340) can also merge the coded video data from the video encoder (303) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).

[0050] The controller (350) may manage the operation of the video encoder (303). During coding, the controller (350) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned one of the following picture types:

[0051] Intra-pictures (I-pictures) can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, Independent Decoder Refresh ("IDR") pictures.

[0052] Predictive pictures (P pictures) can be coded and decoded by intra-prediction or inter-prediction using motion vectors and reference indices to predict the sample values ​​of each block.

[0053] Bidirectionally predicted pictures (B pictures) can be coded and decoded by intra- or inter-prediction using two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multi-predicted pictures can use two or more reference pictures and associated metadata for the reconstruction of a single block.

[0054] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to each picture of the block. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial or temporal prediction with reference to one pre-coded reference picture. Blocks of a B-picture may be predictively coded via spatial or temporal prediction with reference to one or two pre-coded reference pictures.

[0055] The video encoder (303) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. During operation, the video encoder (303) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard used.

[0056] In one embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0057] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as "intra-prediction") exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block in the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0058] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. Bi-prediction techniques use two reference pictures, such as a first reference picture and a second reference picture, each of which is earlier in decoding order than a current picture in a video (but can be earlier and later in display order, respectively). A block in the current picture can be coded with a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted from a combination of the first reference block and the second reference block.

[0059] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.

[0060] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed on a block-by-block basis. For example, according to the HEVC standard, a picture in a sequence of video pictures is divided into coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree-divided into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is analyzed to determine the prediction type of the CU, such as inter-prediction type or intra-prediction type. The CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Generally, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values) of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0061] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.

[0062] Examples of intra block copy modes (also called IntraBC modes or IBC modes), such as those used in HEVC and VVC, are described below.

[0063] Some IBC coding tools are used as current picture referencing (CPR) in the HEVC Screen Content Coding ("SCC") extension. The IBC mode can use coding techniques used for inter prediction, in which the current picture (also called the current frame) is used as the reference picture (also called the reference frame) in the IBC mode. The advantage of using the IBC mode is the reference structure of the IBC mode, which allows two-dimensional (2D) spatial vectors to be used as a representation of the addressing mechanism to reference samples. The advantage of the IBC mode architecture is that the specification changes required to integrate IBC are relatively small, which can ease the implementation burden for manufacturers who have already implemented a given prediction technique, such as in HEVC Version 1. The CPR in the HEVC SCC extension can be a spatial inter prediction mode, with a syntax structure identical to or similar to that of the inter prediction mode and a decoding process similar to that of the inter prediction mode.

[0064] IBC mode can be integrated into inter prediction processing. In some examples, IBC mode (or CPR) is an inter prediction mode, and an intra-only predicted slice should be the predicted slice to allow the use of IBC mode. If IBC mode is applicable, the coder can extend the reference picture list by adding a pointer to the current picture. For example, the current picture uses a one-picture-sized buffer in the shared decoded picture buffer ("DPB"). IBC mode signaling can be implicit. For example, if the selected reference picture points to the current picture, the CU can adopt IBC mode. In various embodiments, the reference samples used in IBC processing are unfiltered, which differs from regular inter prediction. The corresponding reference picture used in IBC processing is a long-term reference. To minimize memory requirements, the coder can release the buffer after reconstructing the current picture, for example, the coder releases the buffer immediately after reconstructing the current picture. The filtered reconstructed picture can be added back into the DPB as a short-term reference by the coder when the reconstructed picture is a reference picture.

[0065] In block vector (BV) coding, reference to the reconstructed area can be made via 2D BVs, which are similar to the MVs used in inter prediction. Prediction and coding of BVs can reuse MV prediction and coding in the inter prediction process. In some examples, luma BVs are integer resolution, rather than the quarter (or 1 / 4-pel) precision of the MVs used in typical inter-coded CTUs.

[0066] FIG. 4 illustrates a BV associated with a current CU (401) according to an embodiment of the present disclosure. Each rectangle (400) may represent a CTU. Gray shaded areas represent areas or regions that have already been coded, while white unshaded areas represent areas or regions to be coded. The current CTU (400(4)) being reconstructed includes the current CU (401), a coded area (402), and an area to be coded (403). In one example, the area (403) is coded after coding the current CU (401).

[0067] For example, in HEVC, the gray shaded area excluding the two CTUs (400(1)-400(2)) to the upper right of the current CTU (400(4)) can be used as a reference area in IBC mode, allowing Wavefront Parallel Processing (WPP). BVs allowed in HEVC can refer to blocks within the reference area (e.g., the gray shaded area excluding the two CTUs (400(1)-400(2))). For example, BVs allowed in HEVC (405) refer to the reference block (411).

[0068] In an example such as in VVC, in addition to the current CTU (400(4)), only the left-neighboring CTU (400(3)) to the left of the current CTU (400(4)) is allowed as a reference area in IBC mode. In one example, the reference area used in IBC mode in VVC is within the dotted area (415) and includes coded samples. For example, the BV (406) allowed in VVC refers to the reference block (412). In one example, the decoded motion vector difference ("MVD") or block vector difference ("BVD") of the BV is shifted left (e.g., by two) before being added to the BV predictor to determine the final BV.

[0069] IBC mode may differ from inter-prediction modes and may use special operations for implementation and performance reasons, such as those described below. In an embodiment, IBC reference samples are unfiltered; for example, reconstructed samples before in-loop filtering processes, including but not limited to deblocking filters ("DBF") and sample adaptive offsets ("SAO"), are used as reference samples in IBC mode. Other inter-prediction modes, such as those used in HEVC, employ filtered samples as reference samples. In an embodiment, there is no luma sample interpolation for IBC mode. In an embodiment, chroma BV is derived from luma BV, and chroma sample interpolation is used when the chroma BV is non-integer. In an embodiment, the chroma BV is non-integer and the reference block is near the boundary of the available region. For example, surrounding reconstructed samples are outside the boundary, and chroma sample interpolation is performed. A BV pointing to a line near one boundary would not be able to avoid such a case.

[0070] An exemplary IBC architecture, such as that used in VVC, is described below. For an IBC mode, such as that used in the HEVC SCC extension, the valid reference area can include substantially the entire already reconstructed area of ​​the current picture, with a partial exception for parallel processing purposes, such as that described in FIG. 4. FIG. 4 illustrates the reference area for the IBC mode in HEVC and its configuration in VVC. For example, referring to FIG. 4, only the CTU (400(3)) to the left of the current CTU (400(4)) can serve as the reference sample area at the start of the reconstruction process for the current CTU (400(4)). In some examples, a reversion of the concept in HEVC is a requirement for additional memory in DPBs whose hardware implementations employ external memory. In one example, the additional access to external memory increases memory bandwidth, making the use of DPBs less attractive. In some embodiments, an IBC mode, such as that in VVC, can be implemented on-chip and use fixed memory, which can significantly reduce the complexity of implementing the IBC mode in a hardware architecture. In one embodiment, the key modification corresponds to a signaling concept away from integration within the inter prediction process, such as in the HEVC SCC extension.

[0071] 5 illustrates a reference sample memory (RSM) (510) update process at four intermediate points (501)-(504) during the reconstruction process, according to an embodiment of the present disclosure. The light gray shaded area may represent the reference sample of the left adjacent CTU. The dark gray shaded area may represent the reference sample of the current CTU. The white and unshaded area may represent the area to be coded (e.g., the next coding area).

[0072] Examples of syntax and semantics for IBC modes, such as those used in VVC, are described below. An IBC architecture, such as that used in VVC, can form a dedicated coding mode in which the IBC mode is a third prediction mode in addition to intra- and inter-prediction modes. The bitstream can carry an IBC syntax element (e.g., an sIBC syntax element) indicating the IBC mode of a coding unit, for example, when the block size is 64x64 or smaller. In one embodiment, the maximum CU size that can utilize the IBC mode is 64x64, implementing the continuous memory update mechanism of the RSM. The reference sample addressing mechanism can be identical to that used in the HEVC SCC extension by indicating a two-dimensional offset and reusing the vector coding process of the inter-prediction mode. In one example, a chroma separate tree ("CST") is active, and the coder cannot derive chroma BVs from luma BVs, resulting in the use of IBC mode only for luma coding blocks.

[0073] The reference area and sample memory in an IBC mode, such as that used in VVC, are described below. An IBC design, such as that used in VVC, can employ a fixed memory size (e.g., 128x128) per color component to store reference samples, thus providing the possibility of on-chip placement in hardware implementation. In one example, the maximum CTU size in VVC is 128x128. In one embodiment, when the maximum CTU size setting is equal to 128x128, the RSM can store samples for one CTU. In one example, the RSM features include a continuous update mechanism that can replace the reconstructed samples of the current CTU with the reconstructed samples of the left-neighboring CTU.

[0074] FIG. 5 illustrates an example RSM (e.g., a simplified RSM example) for an update mechanism at four intermediate points (501)-(504) during the reconstruction process. Referring to FIG. 5, at the first intermediate point (501), which represents the start of reconstruction of the current CTU, in one example, the RSM (510) includes only reference samples from the left-neighboring CTU. At the other three intermediate points (502)-(504), the reconstruction process replaces samples from the left-neighboring CTU with variants from the current CTU. An implicit partitioning of the RSM (510) can be applied, dividing the RSM (510) into four disjoint 64×64 areas (511)-(514). When mapping the RSM to a CTU, a reset of the area can occur when the coder processes the first coding unit in the corresponding area, reducing hardware implementation effort.

[0075] In the example shown in Figure 5, a fixed memory (e.g., RSM (510)) can be allocated to store the reference areas used in IBC mode. During the coding process (e.g., encoding process or reconstruction process), parts of the RSM can be updated at different intermediate points (e.g., (501)-(504)). Figure 5 shows the reference areas for IBC mode in VVC and their settings in VVC.

[0076] 5, the RSM (510) can include a portion of the current CTU and / or a portion of the CTU to the left. In the example shown in FIG. 5, the size of the RSM is equal to the size of the CTU. The RSM (510) can include portions (511)-(514).

[0077] At the first intermediate point (501) of the coding process, which is the start of the coding process for the current CTU, the RSM (510) includes the entire left-neighboring CTU, which can serve as a reference area in IBC mode at the start of the coding process for the current CTU. The RSM (510) at the start of the coding process for the current CTU does not include the current CTU, and portions (511)-(514) include reconstructed samples of the left-neighboring CTU.

[0078] At a second intermediate point (502) in the coding process for the current CTU, a sub-area (531) in the upper left region of the current CTU has already been coded (e.g., encoded or reconstructed), a sub-area (532) in the upper left region of the current CTU is the current CU being coded (e.g., being encoded or reconstructed), and a sub-area (533) in the upper left region of the current CTU will be coded in the future. The RSM (510) is updated to include a portion of the CTU to the left and a portion of the current CTU. For example, portions (512)-(514) in the RSM (510) store the same reconstructed samples in the CTU to the left as at the first intermediate point (501), while portion (511) is updated to store the sub-area (531) of the current CTU. The reference area at the second intermediate point (502) may include the reconstructed samples of the left-neighboring CTU stored in portions (512)-(514) and the reconstructed samples of the sub-area (531) of the current CTU stored in portion (511).

[0079] At the third intermediate point (503) in the coding process for the current CTU, the upper left region of the current CTU has already been reconstructed. The upper right region of the current CTU includes sub-areas (541)-(543). Sub-area (541) (shaded dark gray) has already been coded (e.g., encoded or reconstructed), sub-area (542) is the current CU being coded (e.g., being encoded or reconstructed), and sub-area (543) (white and unshaded) will be coded in the future. While portions (513)-(514) of RSM (510) store the reconstructed samples in the CTU to the left as in the first intermediate point (501), portions (511)-(512) have been updated so that portion (511) stores the reconstructed samples in the upper left region of the current CTU and portion (512) stores sub-area (541) of the current CTU. The reference area at the third intermediate point (503) may include (i) reconstructed samples of the neighboring CTU to the left stored in portions (513)-(514), and (ii) reconstructed samples of the upper left region of the current CTU stored in portion (511) and reconstructed samples of a sub-area (541) of the current CTU stored in portion (512).

[0080] At a fourth intermediate point (504) in the coding process for the current CTU, the upper-left, upper-right, and lower-left regions of the current CTU have already been reconstructed. The lower-right region of the current CTU includes sub-areas (551)-(553). Sub-area (551) (shaded dark gray) has already been coded (e.g., encoded or reconstructed), sub-area (552) is the current CU being coded (e.g., being encoded or reconstructed), and sub-area (553) (white and unshaded) will be coded in the future. While portion (511) stores the same reconstructed samples for the upper-left region of the current CTU as at the third intermediate point (503), portions (512)-(514) have been updated so that portions (512)-(513) store reconstructed samples for the upper-right and lower-left regions of the current CTU, respectively, and portion (514) stores sub-area (551) of the current CTU. The reference area at the fourth intermediate point (504) can include the reconstructed samples of the current CTU stored in portions (511)-(514). At the fourth intermediate point (504), the RSM (510) does not include the area in the CTU to the left.

[0081] Figure 6 illustrates the left-neighbor CTU (601) and the current CTU (602), showing the valid reference areas according to the RSM design and continuous update mechanism. The left-neighbor CTU (601) can include areas 611-614. The current CTU (602) can include areas 621-624. Area 623 within the current CTU (602) includes the current CU (603) being coded, the sub-area (651) that has already been coded, and the sub-area (653) to be coded. The gray-shaded areas can include samples stored in the RSM, while the white and unshaded areas can include replaced or unreconstructed samples.

[0082] Figure 6 spatially illustrates an example of the continuous update concept of the RSM. During reconstruction in the example shown in Figure 6, the RSM update process replaced samples covered by the white and unshaded areas 611-613 in the left-neighbor CTU (601) with the gray shaded areas (e.g., areas 621-622 and subarea 651) of the current CTU (602). In Figure 6, the RSM can include (i) area 614 in the left-neighbor CTU (601) and (ii) areas 621-622 and subarea 651 of the current CTU (602).

[0083] An RSM may include more than one CTU to the left, for example, when the maximum CTU size is smaller than the RSM size (e.g., 128x128), multiple CTUs to the left can be used as reference areas in IBC mode. For example, when the maximum CTU size is equal to 32x32, an RSM with a size of 128x128 may store samples of 15 CTUs to the left.

[0084] An exemplary block vector (BV) for IBC mode, such as that used in VVC, is described below. BV coding can adopt the process defined for inter prediction. BV coding for IBC mode can use simpler rules for candidate list construction. For example, candidate list construction for inter prediction may include five spatial candidates, one temporal candidate, and six history-based candidates. In inter prediction, multiple candidate comparisons are used for the history-based candidates to avoid duplicate entries in the final candidate list. Also, in inter prediction, candidate list construction may include pairwise averaged candidates. In one embodiment, the IBC list construction process considers only two spatially neighboring BVs and five history-based BVs ("HBVPs"), and compares only the first HBVP with a spatial candidate when added to the candidate list. While two different candidate lists can be used, one for regular inter prediction merge mode and the other for regular modes, the candidate list in IBC mode accommodates both cases. In IBC mode, merge mode may use up to six candidates in the candidate list, while normal mode uses only the first and second candidates in the candidate list. Block vector difference (BVD) coding in IBC mode can employ the motion vector difference (MVD) process used in inter prediction, resulting in a final BV of any appropriate size. In one embodiment, the reconstructed BV may point to an area outside the reference sample area, and correction is applied to the reconstructed BV, for example, by removing the absolute offset in each direction (e.g., horizontally and vertically, respectively) modulo the width and height of the RSM.

[0085] The chroma BV derivation process may include the following: When the current coding tree type is SINGLE_TREE, a chroma block corresponds to a luma block. The BV of a chroma block coded in IBC mode may be derived from the BV of a luma block with appropriate scaling taking into account the chroma sampling format (e.g., 4:2:0, 4:2:2) and the chroma BV precision. The derivation process is described below. The input to the process may include a luma BV at 1 / 16th piece sample precision bvL. The output to the process may include a chroma BV at 1 / 32nd piece sample precision bvC. The chroma BV may be derived from the corresponding luma BV. The chroma BV bvC may be derived as follows: bvC[0]=((bvL[0]>>(3+SubWidthC))*32 Formula (1) bvC[1]=((bvL[1]>>(3+SubHeightC))*32 Formula (2)

[0086] The variables SubWidthC and SubHeightC can be specified in Table 1 according to the chroma format sampling structure, which can be specified by sps_chroma_format_idc. [Table 1]

[0087] In monochrome sampling (e.g., chroma format is monochrome), there is only one sample array that is nominally considered to be the luma array.

[0088] With 4:2:0 sampling, each of the two chroma arrays can have half the height and half the width of the luma array.

[0089] In 4:2:2 sampling, each of the two chroma arrays can have the same height and half the width of the luma array.

[0090] In 4:4:4 sampling, each of the two chroma arrays can have the same height and width as the luma array.

[0091] The number of bits required to represent each sample in the luma and chroma arrays in a video sequence can range from 8 to 16, inclusive.

[0092] IntraBC modes, such as those used in AV1, are described below. In one embodiment, such as in AV1, intra block copy (IntraBC) mode can use a vector to place a prediction block within the same picture of the current block. This vector is called a block vector (BV). The BV can be signaled in the bitstream, and the precision for representing the BV can be integer points. The prediction process in IntraBC mode is similar to inter-picture prediction. The difference between IntraBC mode and inter prediction is that in IntraBC mode, the predictor block can be formed from reconstructed samples of the current picture before applying loop filtering. Therefore, IntraBC mode can be thought of as "motion compensation" within the current picture using the BV as the MV.

[0093] For a current block, a flag indicating whether the IntraBC mode is possible for the current block can be first transmitted in the bitstream. Then, if the current block is coded in IntraBC mode, the BV difference can be derived by subtracting the predicted BV from the current BV. Depending on the horizontal and vertical components of the BV difference value, the BV difference can be classified into multiple types (e.g., four types). The type information can be signaled in the bitstream, and then the BV difference values ​​of the two (horizontal and vertical) components can be signaled.

[0094] IntraBC mode may be exceptionally useful for coding certain content, such as screen content. In one example, IntraBC mode also introduces challenges to hardware design. To facilitate hardware design, the following modifications may be employed: When IntraBC mode is enabled, the loop filter is disabled. The loop filter may include a DBF and / or a constrained directional enhancement filter ("CDEF") and / or a loop restoration ("LR") filter, etc. Disabling the loop filter avoids the need for a dedicated second picture buffer to enable IntraBC mode.

[0095] To facilitate parallel decoding, prediction cannot exceed a limited area. In one embodiment, for a superblock or CTU, if the coordinates of the top-left position of the superblock (or CTU) are (x0, y0), the prediction at position (x, y) can be accessed by IntraBC mode only if the vertical coordinate is less than y0 and the horizontal coordinate is less than x0+2(y0-y).

[0096] To allow for hardware write-back delays, IntraBC prediction cannot access the nearest reconstruction area. The limited nearest reconstruction area can be 1 to n superblocks (or CTUs). Thus, in addition to the above-mentioned modifications, if the coordinates of the top-left position of a superblock (or CTU) are (x0, y0), IntraBC mode can access prediction at position (x, y) if the vertical coordinate is less than y0 and the horizontal coordinate is less than x0+2(y0-y)-D, where D indicates the limited nearest reconstruction area for IntraBC mode. The prediction area when D is two superblocks, such as those specified in AVM, is shown in Figure 7.

[0097] FIG. 7 illustrates an example of a prediction area for IntraBC mode in one superblock prediction according to an embodiment of the present disclosure. Each rectangle may represent a superblock or a CTU. The gray shaded area may include a permitted search area accessible in IBC mode for each current superblock (710) being reconstructed, for example. The black shaded area may include a disallowed search area inaccessible in IBC mode for each current superblock (710) being reconstructed, for example, when D includes two superblocks (or two CTUs). The white unshaded area includes the superblock to be coded (e.g., to be reconstructed). In one example, for a current superblock (710(1)), the nearest reconstruction area includes the two superblocks (721)-(722) to the left of the current superblock (710(1)) (e.g., D is two superblocks). The superblocks (721)-(722) are not accessible to the current superblock (710(1)). The allowed search area (730) is accessible to the current superblock (710(1)).

[0098] The IntraBC mode with a local reference range, such as in AV1, is described below. The IntraBC mode can be used with a local reference range, such as in the AV1 codec. In one embodiment, a memory reuse mechanism for a 64x64-based application, such as that shown in Figures 8, 9A-9B, allocates one superblock (SB) size of "on-chip" memory (referred to as RSM) to store reference samples. For example, in addition to the design of the IntraBC mode in AV1, the following modifications (1)-(3) are made: (1) The maximum block size in IntraBC mode can be limited to 64x64. (2) The reference block and the current block are in the same SB row. In one example, the reference block can only be placed in the current SB or one SB to the left of the current SB. (3) When any of the 64x64 units of reference sample memory starts updating with reconstructed samples from the current SB, reference samples previously stored in the entire 64x64 unit (e.g., from the left SB) are marked as unusable for generating predicted samples in IntraBC mode.

[0099] FIG. 8 shows an example of a memory reclamation mechanism or memory update mechanism in an RSM during decoding of a CTU or SB (e.g., the current SB (801)) in a current picture according to an embodiment of the present disclosure. Rows 1-2 show an example from the perspective of the RSM. Row 1 shows the RSM (810) in state (0). Row 2 shows the RSM (810) in states (1)-(4). Row 3 shows an example from the perspective of pictures, such as the current SB (801) and the left-neighboring SB (802) being coded in the current picture in states (0)-(4). A quadtree can be used at the SB root. An SB can contain four regions. In one example, the size of each of the four regions is 64x64. In one example, the current SB (801) contains four regions 4-7, and the left-neighboring SB (802) contains four regions 0-3.

[0100] Referring to Figure 8, at the start of coding each SB (state (0)), the RSM stores samples from the previously coded SB (e.g., the neighboring SB (802) to the left). If the current block is in one of the four regions (e.g., four 64x64 regions) in the current SB (801) (e.g., as shown in one of states (1)-(4)), the corresponding region in the RSM (810) is emptied and can be used to store samples from the current coding region (e.g., the current 64x64 coding region). In this way, the samples in the RSM (810) can be gradually updated by the samples in the current SB (801), as shown in states (1) to (4), etc.

[0101] Referring to state (1), the current block (811) is in region 4 in the current SB (801), leaving the corresponding region (e.g., the upper left region) in the RSM (810) empty and available for storing samples of region 4, the current region being coded. Referring to row 3, a BV (e.g., encoded BV or decoded BV) (821) can point from the current block (811) to a reference block (831) within a search range 841 of the current block (811) (the boundary of the search range (841) is shown by a dotted line). Referring to row 2, a corresponding offset (851) in the RSM (810) can point from the current block (811) to a reference block (831) within the RSM (810). In state (1), the search range (841) includes regions 1-3 of the left neighboring SB (802) and the coded sub-region (861) within region 4. The search range (841) does not include area 0 of the SB (802) to the left.

[0102] Referring to state (2), the current block (812) is in region 5 in the current SB (801), and the corresponding region in the RSM (810) (e.g., the upper right region) is emptied and can be used to store samples for region 5, the current region being coded. The BV (822) can point from the current block (812) to a reference block (832) within a search range 842 of the current block (812) (the boundary of the search range (842) is shown by a dotted line). The corresponding offset (852) in the RSM (810) can point from the current block (812) to the reference block (832) within the RSM (810). In state (2), the search range (842) includes (i) regions 2-3 of the left-neighboring SB (802) and (ii) coded sub-regions (862) within regions 4 and 5 in the current SB (801). The search range (842) does not include the area 0-1 of the left adjacent SB (802).

[0103] Referring to state (3), the current block (813) is in region 6 in the current SB (801), leaving the corresponding region in the RSM (810) (e.g., the bottom-left region) empty and available for storing samples of region 6, the current region being coded. The BV (823) can point from the current block (813) to a reference block (833) within a search range 843 of the current block (813) (the boundary of the search range (843) is shown by a dotted line). The corresponding offset (853) in the RSM (810) can point from the current block (813) to the reference block (833) within the RSM (810). In state (3), the search range (843) includes (i) region 3 in the neighboring SB (802) to the left, and (ii) regions 4-5 in the current SB (801) and the coded sub-region (863) within region 6. The search range (843) does not include the area 0-2 of the neighboring SB (802) on the left.

[0104] Referring to state (4), the current block (814) is in region 7 in the current SB (801), leaving the corresponding region in the RSM (810) (e.g., the bottom-right region) empty and available for storing samples of region 7, the current region being coded. The BV (824) can point from the current block (814) to a reference block (834) within a search range 844 of the current block (814) (the boundary of the search range (844) is shown by a dotted line). The corresponding offset (854) in the RSM (810) can point from the current block (814) to the reference block (834) within the RSM (810). In state (4), the search range (844) includes regions 4-6 in the current SB (801) and the coded sub-region (864) within region 7. The search range (844) does not include regions 0-3 in the neighboring SB (802) to the left.

[0105] Once the current SB (801) is fully coded (state (4)), the entire RSM (810) can be filled with samples (e.g., all samples) of the current SB (801).

[0106] In the example shown in Figure 8, the current SB (801) is first divided using quadtree division. The coding order of the four 64x64 regions is the upper-left region (e.g., region 4), the upper-right region (e.g., region 5), the lower-left region (e.g., region 6), and the lower-right region (e.g., region 7), with the upper-left region coded first, followed by the upper-left, upper-right, and lower-left regions, and then the lower-right region. For other block division decisions, such as that shown in Figure 9B, the RSM update process may be similar, for example, by replacing each region of the RSM with a reconstructed sample in the current SB.

[0107] 9A-9B illustrate examples of memory update operations in the RSM during decoding of the current SB (or CTU) (901) according to an embodiment of the present disclosure, performed in either (a) horizontal splitting at the SB root (FIG. 9A) or (b) vertical splitting at the SB root (FIG. 9B).

[0108] In Figures 9A-9B, the left neighboring SB (902) has already been coded. The current SB (901) is currently being coded (e.g., encoded or decoded). In one example, the size of each of the current SB (901) and the left neighboring SB (902) is 128x128. Each of the current SB (901) and the left neighboring SB (902) can include four regions (e.g., four blocks) of size 64x64. The current SB (901) can include blocks 4-7, and the left neighboring SB (902) can include blocks 0-3.

[0109] In Figure 9A, horizontal division is performed at the SB route, followed by vertical division. The current SB (901) may include four blocks: an upper left block (e.g., block 4), a lower left block (e.g., block 6), an upper right block (e.g., block 5), and a lower right block (e.g., block 7). The coding order of the current SB (901) may be the upper left block (state 1), the upper right block (state 2), the lower left block (state 3), and the lower right block (state 4).

[0110] In Figure 9B, vertical division is performed at the SB route, followed by horizontal division. The coding order of the current SB (901) can be the top left block (state 1), the bottom left block (state 2), the top right block (state 3), and the bottom right block (state 4).

[0111] Referring to Figures 9A-9B, depending on the relative position of the current coding block with respect to the current SB (901), the following may apply:

[0112] 1. Referring to state (1) in Figures 9A-9B, if the current block (931) corresponds to the upper left block (e.g., block 4) (e.g., a 64x64 block) of the current SB (901), the current block (931) can refer to reference samples in the lower right block 3 (e.g., a 64x64 block), the lower left block 2 (e.g., a 64x64 block), and the upper right block 1 (e.g., a 64x64 block) of the left SB (902) in addition to the already reconstructed samples in block (961) of the current SB (901). The search range of the current block (931) can include blocks 1-3 and block (961).

[0113] 2. Referring to state (2) of FIG. 9A or state (3) of FIG. 9B, if the current block (932) corresponds to block 5 (e.g., a 64×64 block) to the upper right of the current SB (901), in addition to the already reconstructed samples of the current SB (901), (a) if the luminance sample at the relative position (0,64) with respect to the current SB (901) has not been reconstructed, as shown in state (2) of FIG. 9A, the current block (932) can refer to reference samples in block 2 (e.g., a 64×64 block) to the lower left and block 3 (e.g., a 64×64 block) to the lower right of the left SB (902), and the search range of the current block (932) can include blocks 2-4 and block (962). (b) Otherwise, if the luminance sample in the upper left corner (e.g., at a relative position of (0,64) relative to the current SB (901)) has been reconstructed, then the current block (932) can refer to a reference sample in block 3 (e.g., a 64x64 block) at the bottom right of the left SB (902), as shown in state (3) of Figure 9B, and the search range of the current block (932) can include blocks 3, 4, 6, and block (962).

[0114] 3. Referring to state (3) of FIG. 9A or state (2) of FIG. 9B, if the current block (933) corresponds to the lower left block of the current SB (901), in addition to the already reconstructed samples of the current SB (901), (a) if the relative luminance position (64,0) has not yet been reconstructed for the current SB (901), as shown in state (2) of FIG. 9B, the current block (933) can refer to reference samples within block 1 (e.g., a 64x64 block) in the upper right corner of the left SB (902) and block 3 (e.g., a 64x64 block) in the lower right corner, and the search range of the current block (933) can include blocks 1, 3, 4 and block (963). (b) Otherwise, if the luminance sample in the upper left corner of block 5 (e.g., relative position (64,0) to the current SB (901)) has been reconstructed, then, as shown in state (3) of Figure 9A, the current block (933) can refer to a reference sample in block 3 (e.g., a 64x64 block) at the bottom right of the left SB (902), and the search range of the current block (933) can include blocks 3-5 and block (963).

[0115] 4. If the current block (934) corresponds to block 7 at the bottom right of the current SB (901), the current block (934) can only refer to already reconstructed samples in the current SB (901), such as already reconstructed samples in blocks 4-6 and block (964), and the search range of the current block (934) can include blocks 4-6 and block (964).

[0116] FIG. 10 illustrates an example of an intra template matching prediction ("IntraTMP") mode according to an embodiment of the present disclosure. In one embodiment, such as ECM software, IntraTMP is a spatial intra prediction mode that can copy a best prediction block (1021) from a reconstructed portion of the current frame (or current picture), and the template (e.g., an L-shaped template) (1020) of the best prediction block (1021) can match the current template (1010) of the current block (1011). For a predetermined search range, the encoder can search the reconstructed portion of the current frame for a template (1020) that is most similar to the current template (1010) and use the corresponding block (1021) as the prediction block. The encoder can signal the use of IntraTMP mode, and the same prediction operation can be performed at the decoder side.

[0117] A prediction signal can be generated by matching a current template (1010), such as an L-shaped causal neighborhood of the current block (1011), with a template (e.g., (1020)) of another block (e.g., (1021)) within a predetermined search area. The exemplary search area shown in FIG. 10 can include multiple CTUs (or SBs). Referring to FIG. 10, the search area can include the current CTU R1 (e.g., a portion of the current CTU R1), the upper-left CTU R2, the upper CTU R3, and the left CTU R4. The cost function can include any suitable cost function, such as the sum of absolute differences ("SAD").

[0118] Within each region, the decoder can search for the template (e.g., (1020)) that has the smallest cost (e.g., smallest SAD) relative to the current template (1010), and can use the block (e.g., (1021)) associated with the template with the smallest SAD as the predicted block.

[0119] The size of the area indicated by (SearchRange_w, SearchRange_h) can be set to be proportional to the block dimensions (BlkW, BlkH) so that the number of SAD comparisons per pixel is fixed. For example, SearchRange_w=a*BlkW Equation (3) SearchRange_h=a*BlkH Equation (4)

[0120] The parameter "a" may be a constant that controls the tradeoff between gain and complexity. In one example, "a" is 5.

[0121] The intra template matching tool may be enabled for CUs of a given size, such as width and height sizes up to 64. The maximum CU size for IntraTMP mode may be configurable.

[0122] When decoder-side intra mode derivation ("DIMD") is not used for the current CU, the IntraTMP mode can be signaled, for example, via a dedicated flag at the CU level.

[0123] In some examples, such as in ECM, prediction techniques such as IBC mode and IntraTMP mode are used, which use the current frame (also referred to as the current picture) as a reference frame. The prediction mode can determine a reference block according to a block vector (BV), and can perform IBC prediction or IntraTMP prediction to derive a predicted value of the current block in the current picture. In various examples, the reference block of the prediction mode cannot overlap with the current block; for example, if the reference block overlaps with the current block, the IBC mode and the IntraTMP mode are not used. By removing the restriction (i.e., the reference block cannot overlap with the current block), a wider reference region (or wider reference range) can be used in the IBC mode, the IntraTMP mode, or a mode that predicts the current block based on a reference block in the same picture, which may be beneficial to coding performance.

[0124] This disclosure includes aspects related to IBC mode, IntraTMP mode, or modes that can code a current block within a picture based on reference blocks within the picture when the reference blocks of the current block to be coded overlap with the current block. The disclosed embodiments may be used in IBC mode, IntraTMP mode, or other prediction modes that use compensation or compression techniques with the current frame as a reference frame.

[0125] Embodiments may be used in coding blocks, which may include a set of pixels (or samples) for processing purposes, and may be referred to as prediction blocks, transform blocks, coding units, prediction units, or transform units, etc.

[0126] For the current coding block, bv = (bvX, bvY) denotes the block vector. (bx, by) denotes the top-left position, and (bw, bh) denote the width and height. The x component of BV is bvX, and the y component of BV is bvY. The top-left position of the current block can be denoted as (bx, by), the width of the current block as bw, and the height of the current block as bh.

[0127] In one aspect of the present disclosure, motion compensation is performed when a reference block overlaps a current block, and non-reconstructed samples in the overlap area are padded by copying their predicted samples. Then, motion compensation is performed on the current block. For example, a disclosed method according to an embodiment of the present disclosure can determine a reference block in a picture based on the BV of the current block, a reference block having an overlap area, the current block, and a reference block that includes both (i) samples not reconstructed in the overlap area and (ii) samples reconstructed outside the overlap area. Furthermore, the disclosed method can perform motion compensation on the current block by reconstructing the overlap area in the current block based on reconstructed samples in the reference block that are outside the overlap area.

[0128] According to an embodiment of the present disclosure, when a reference block overlaps a current block, a prediction mode using block vectors (BVs), such as an IBC mode, an IntraTMP mode, or a mode that can code a current block in the same picture based on a reference block in the same picture (e.g., motion compensation in the current picture), can be performed. Unreconstructed samples in the overlap region (also referred to as an overlap region or overlap area) can be padded. For example, the unreconstructed samples can be padded by copying each predicted sample. For example, IBC prediction or IntraTMP prediction (e.g., motion compensation in the current picture) can then be performed on the current block.

[0129] 11 illustrates an example of an IBC or IntraTMP mode used to code (e.g., encode or reconstruct) a current block (1111) in a current picture (1101) when the current block (1111) overlaps with its reference block (1112). The reference block (1112) in the current picture (1101) can be determined based on the BV (1113) of the current block (1111). The BV (1113) can point the current block (1111) to the reference block (1112) in the current picture (1101). The reference block (1112) and the current block (1111) overlap in an overlapping area (1120) (shaded in gray). The reference block (1112) may include (i) uncoded samples (e.g., unreconstructed samples) within the overlap area (1120) and (ii) coded samples (e.g., reconstructed samples) outside the overlap area (1120). For example, the current block (1111) may be coded (e.g., encoded or reconstructed) based on the BV (1113) and the reconstructed samples outside the overlap area (1120).

[0130] In one embodiment, the unreconstructed samples in the overlap area (1120) can be determined as follows: Based on a predicted sample for each unreconstructed sample, a predicted value for the unreconstructed samples in the overlap area (1120) can be determined. Referring to FIG. 11 , for example, the predicted value for each unreconstructed sample (1121) in the overlap area (1120) is determined by copying a predicted sample (e.g., a reconstructed sample in the reference block (1112)) (1122) for each unreconstructed sample (1121). Each predicted sample can be one of the reconstructed samples (e.g., (1122)) in the reference block (1112), and each predicted sample can be represented by a BV (1113) from each unreconstructed sample (e.g., (1121)). For example, the BV (1113) can refer to the reconstructed sample (or predicted sample) (1122) from the unreconstructed sample (1121).

[0131] The current block (1111) can be coded (encoded or reconstructed) based on the reference block (1112) as follows: The current block (1111) is reconstructed based on (i) predicted values ​​of unreconstructed samples within the overlap area (1120) and reconstructed samples outside the overlap area (1120), and (ii) the BV (1113). For example, referring to FIG. 11, the current block (1111) includes a first area (1140) and a second area outside the first area (1140). The first area (1140) has the same shape (e.g., rectangular) and size as the overlap area (1120). The first area (1140) can be reconstructed based on (i) predicted values ​​of unreconstructed samples within the overlap area (1120) and (ii) the BV (1113), using, for example, IBC mode or IntraTMP mode. The unreconstructed samples in the overlap area (1120) can have respective predicted values, for example, the unreconstructed sample (1121) has a predicted value that is the sample value of the reconstructed sample (1122). The second area can be reconstructed based on (i) the reconstructed samples in the reference block (1112) and (ii) the BV (1113), for example, using IBC mode or IntraTMP mode.

[0132] In one aspect of the present disclosure, this method is applicable only when both bvX and bvY are less than or equal to 0. However, bvX and bvY should not be 0 at the same time. In this case, the overlap area is a rectangle whose top left and bottom right coordinates are as follows: (i) The coordinates of the top left corner of the overlapping area are (x, y), and (ii) The coordinates of the bottom right of the overlapping region are (bx+bw-1+bvX, by+bh-1+bvY).

[0133] In one example, when the reference block and the current block overlap, the IBC mode or IntraTMP mode can be applied to the current block only when both bvX and bvY are equal to or less than 0. Also, bvX and bvY are not equal to 0 simultaneously. For example, referring to FIG. 11, when the x component (bvX) of BV (1113) is equal to or less than 0, the y component (bvY) of BV (1113) is equal to or less than 0, and one of the x component (bvX) of BV (1113) or the y component (bvY) of BV (1113) is not equal to 0, the current block (1111) can be coded in the IBC mode or IntraTMP mode when the reference block (1112) and the current block (1111) overlap. In this case, referring to FIG. 11, the overlap area (1120) is rectangular. The top left coordinate and bottom right coordinate of the overlap area (1120) can be described as follows: The top left coordinate of the overlap region (1120) may be (bx, by). The bottom right coordinate of the overlap region (1120) may be (bx+bw-1+bvX, by+bh-1+bvY). As mentioned above, bw and bh may represent the width of the current block (1111) and the height of the current block (1111), respectively.

[0134] In one aspect of the present disclosure, the unreconstructed samples in the overlap region may be padded by copying their predicted samples as follows: P'(x,y)=P(x+BVx,y+BVy) Equation (5) where P'(x,y) is the sample to be padded at position (x,y) and P(x+bvX,y+bvY) is the predicted sample.

[0135] In one example, the unreconstructed samples (1121) in the overlap region (1120) can be obtained (e.g., padded) by copying predicted samples such as those shown in equation (5) above. P'(x,y) may be the predicted value (e.g., copied or padded sample) at location (x,y), and P(x+bvX,y+bvY) may be the predicted sample (1122) used to predict the unreconstructed sample (1121).

[0136] Referring to FIG. 11, the predicted value P′(x,y) of the unreconstructed sample (1121) at location (x,y) can be determined by copying the reconstructed sample value P(x+bvX,y+bvY) of each predicted sample (or reconstructed sample) (1122) at location (x+bvX,y+bvY), such as shown in equation (5).

[0137] In one example, as described above, unreconstructed samples in the overlap area (1120) are predicted from reconstructed samples in the area (1130), which is designated from the overlap area (1120) by the BV (1113). After predicting the unreconstructed samples in the overlap area (1120), a first area (1140) can be reconstructed based on the predicted overlap area (1120).

[0138] In another example, the first area (1140) can be predicted directly from the area (1130) based on a vector that is 2×BV (1113). For example, the sample (1123) can be predicted directly from the sample (1122) with the vector 2×BV (1113). According to one embodiment of the present disclosure, the current block (1111) can be reconstructed as follows: A predicted value for the second area in the current block (1111) can be determined based on the reconstructed samples in the reference block (1112) and the BV (1113). A predicted value for the first area (1140) can be determined by copying each predicted sample (e.g., a reconstructed sample) in the area (1130). Each predicted sample can be one of the reconstructed samples in the reference block (1112) (e.g., a reconstructed sample in the area (1130)), and each predicted sample can be represented by the BV (1113) from each unreconstructed sample in the overlap area (1120). The current block (1111) can be reconstructed based on the predicted value of the first area (1140) and the predicted value of the second area. In one example, the reconstructed samples in the current block (1111) can be the predicted value of the first area (1140) and the predicted value of the second area in the current block (1111). In one example, the reconstructed samples in the current block (1111) can be the sum of (i) the predicted value of the first area (1140) and the predicted value of the second area in the current block (1111) and (ii) residual samples.

[0139] In one embodiment of the present disclosure, the padding method is performed in units of M×N blocks (called basic padding units). In one example, M is a multiple of 4, and N is a multiple of 4. Compared with padding performed in units of samples, this method can perform padding in a more efficient manner and can facilitate hardware implementation. To ensure that the overlapping region can be divided into multiple complete basic padding units, a constraint is imposed, which means that the following condition should be satisfied: (i) the width of the overlap area must be an integer multiple of the width of the basic padding unit, and / or (ii) The height of the overlap area must be an integer multiple of the height of the basic padding unit.

[0140] In one example, the copying method (or padding method) can be performed in units of M×N blocks (referred to as basic copy units or basic padding units). For example, the basic copy unit is M×N blocks in the overlap area. In some examples, performing the copying method in units of copy units (e.g., including multiple samples) can further improve efficiency and facilitate hardware implementation compared to performing copying in units of samples. In one example, a constraint is set to ensure that the overlap area can be divided into multiple basic copy units (e.g., multiple complete basic copy units). For example, at least one of the following conditions should be satisfied: (i) the width of the overlap area is an integer multiple of the width of the basic copy unit; and (ii) the height of the overlap area is an integer multiple of the height of the basic copy unit. In one example, the width of the overlap area and the height of the overlap area are multiples of four. In one example, at least one of the following conditions should be satisfied: (i) the width of the overlap area is an integer multiple of the width of the basic copy unit, and the width of the basic copy unit is a multiple of four; and (ii) the height of the overlap area is an integer multiple of the height of the basic copy unit, and the height of the basic copy unit is a multiple of four.

[0141] FIG. 12 illustrates an example of the above copying method in units of copy units (e.g., having a size of M×N samples) according to one embodiment of the present disclosure. One of M or N is greater than 1. In one example, the overlap area (1120) includes multiple copy units, such as A-F. Each copy unit includes multiple samples (e.g., M×N). The unreconstructed samples in copy units A-F can be determined by copying the sample values ​​of the reconstructed samples in corresponding units A'-F'. The copying method illustrated in FIG. 12 is performed in units of copy units A-F.

[0142] In one embodiment, copy unit A is predicted by copying the sample values ​​of the reconstructed samples in the corresponding unit A' indicated by BV (1113). Then, area A" in the current block (1111) is predicted from copy unit A. BV (1113) points from area A" to copy unit A. Area A", copy unit A, and unit A' can have the same shape and size.

[0143] In another embodiment, area A" is predicted directly from unit A'. For example, area A" is predicted by copying the sample values ​​of the reconstructed samples in the corresponding unit A' indicated by 2×BV (1113), as shown in FIG. 12.

[0144] In one example, to copy the reconstructed sample values ​​in units of copy units, for example from copy unit A' to copy unit A (or directly to area A"), the width of the overlap area (1120) should be a multiple of M, or the height of the overlap area (1120) should be a multiple of N. Referring to Figure 12, the width of the overlap area (1120) is 2 x M, and the height of the overlap area (1120) is 3 x N.

[0145] In one aspect, the width M and height N of a basic padding unit should be integers, e.g., values ​​of M may include but are not limited to {2, 4, 8, 16, 32, 64, 128}, and values ​​of N may include but are not limited to {1, 2, 3, ..., 128}. For example, the width M and height N of a basic copy unit may be integers, e.g., values ​​of M may include but are not limited to {2, 4, 8, 16, 32, 64, 128}. For example, values ​​of N may include but are not limited to {1, 2, 3, ..., 128}.

[0146] In one embodiment, the size of the basic copy unit is 4x4 (eg, M=4, N=4).

[0147] In one embodiment, the size of the basic copy unit is 4x1 (eg, M=4, N=1).

[0148] In one embodiment, the size of the basic copy unit is 2x2 (eg, M=2, N=2).

[0149] In one embodiment, the size of the basic copy unit is 2x1 (eg, M=2, N=1).

[0150] In one embodiment, the size of the basic copy unit is related to the color components of the current block, for example, the size of the basic copy unit is different for luma coding blocks and chroma coding blocks.

[0151] In one embodiment, a 4x1 basic padding unit is used for luma coding blocks and a 2x1 basic padding unit is used for chroma coding blocks. In one embodiment, a 4x4 basic padding unit is used for luma coding blocks and a 2x2 basic padding unit is used for chroma coding blocks. In one embodiment, the size of the luma basic padding unit is ML x NL and the size of the chroma basic padding unit is MC x NC, and the relationship between (ML,NL) and (MC,NC) is as follows: MC=ML / ScaleX formula (6) NC=MC / ScaleY Equation (7) where ScaleX is the horizontal scale factor and ScaleY is the vertical scale factor, which depends on the chroma subsampling format.

[0152] In one example, the size of the MxN samples of the copy unit depends on the color components associated with the current block (1111).

[0153] The size of the elementary copy unit for the luma coding block and for the chroma coding block may depend on the chroma subsampling format (or chroma sampling structure), such as 4:2:0 or 4:4:4.

[0154] In one embodiment, a 4x1 basic padding unit is used for luma coding blocks and a 2x1 basic copy unit is used for chroma coding blocks, e.g., a 4x1 basic padding unit is used when the current block is a luma coding block and a 2x1 basic copy unit is used when the current block is a chroma coding block.

[0155] In one embodiment, a 4x4 basic padding unit is used for luma coding blocks and a 2x2 basic copy unit is used for chroma coding blocks.

[0156] In one embodiment, ML×NL is the size of a luma basic copy unit (or a basic copy unit used in a luma coding block), and MC×NC is the size of a chroma basic copy unit (or a basic copy unit used in a chroma coding block), and the relationship between (ML,NL) and (MC,NC) can correspond to, for example, equations (6) and (7).

[0157] ScaleX is the horizontal scale factor and ScaleY is the vertical scale factor. ScaleX and ScaleY can depend on the chroma subsampling format.

[0158] In one aspect of the present disclosure, in order to perform motion compensation when a reference block overlaps the current block, it is proposed to divide the current block into several smaller sub-blocks and then perform motion compensation for each sub-block.

[0159] According to one embodiment of the present disclosure, the above method of performing IBC mode or IntraTMP mode when a current block overlaps with a reference block can be appropriately adapted when the current block is coded in sub-block mode. The current block can include sub-blocks, and the sub-blocks can be coded with BVs. The BV of one sub-block can be different from the BV of another sub-block. In one example, the IBC mode or IntraTMP mode can be applied to each sub-block. In one example, for example, when the current block overlaps with a reference block, the current block is divided into several smaller sub-blocks, and then the IBC mode or IntraTMP mode is performed for each sub-block.

[0160] Figure 13 shows an example of performing IBC mode or IntraTMP mode on sub-block SB5 in current block (1311) when the current block (1311) overlaps with reference block (1312). The current block (1311) and reference block (1312) are in the current picture (1301). The current block (1311) may include sub-blocks SB5-SB8. Sub-blocks SB5-SB8 can be coded in IBC mode or IntraTMP mode using their respective BVs (BV5-BV8). BV5-BV8 can point to reference sub-blocks SB5'-SB8', respectively. The reference block (1312) may include reference sub-blocks SB5'-SB8'. In the example shown in Figure 13, one of BV5-BV8 is different from the other sub-blocks BV5-BV8, and the reference block (1312) is not rectangular.

[0161] In the example shown in FIG. 13, reference sub-blocks SB6'-SB8' have already been coded (e.g., encoded or reconstructed). Reference sub-block SB5' and corresponding sub-block SB5 overlap in the overlap area (1320). Reference sub-block SB5' may be partially coded. For example, reference sub-block SB5' includes uncoded samples (e.g., unreconstructed samples) within the overlap area (1320) and coded samples (e.g., reconstructed samples) outside the overlap area (1320). Sub-block SB5 can be coded by adapting the methods described in FIGS. 11-12, for example, treating sub-block SB5 in FIG. 13 as the current block (1111) and reference block SB5' as the reference block (1112).

[0162] FIG. 14 shows an example of performing IBC mode or IntraTMP mode on a current block (1411) (e.g., sub-block SB4 in the current block (1411)) when the current block (1411) overlaps a reference block (1412). The current block (1411) and the reference block (1412) are in the current picture (1401). The current block (1411) may include sub-blocks SB1-SB4. The sub-blocks SB1-SB4 may be coded in IBC mode or IntraTMP mode using their respective BVs, such as BV1-BV4. BV1-BV4 may point to reference sub-blocks SB1'-SB4', respectively. The reference block (1412) may include reference sub-blocks SB1'-SB4'. In the example shown in FIG. 14, one of BV1-BV4 is different from the other sub-blocks BV1-BV4, and the reference block (1412) is not rectangular. One of the reference sub-blocks SB1'-SB4' may overlap at least one of the sub-blocks SB1-SB4. In the example shown in FIG. 14, reference sub-block SB4' overlaps sub-block SB1. Referring to FIG. 14, reference sub-blocks SB1'-SB3' have already been coded (e.g., encoded or reconstructed). Reference sub-block SB4' may be partially coded. For example, reference sub-block SB4' includes uncoded samples (e.g., unreconstructed samples) within the overlap area (1420) and coded samples (e.g., reconstructed samples) outside the overlap area (1420).

[0163] Subblock SB4 can be coded by adapting the methods described in Figures 11-13. In one embodiment, non-coded samples (e.g., non-reconstructed samples) in the overlap area (1420) are predicted and then used to predict area (1440) in subblock SB4. Area (1440) can have the same shape and size as overlap area (1420). BV4 can point from subblock SB4 to reference subblock SB4'. BV4 can point from area (1440) to overlap area (1420). For example, non-coded samples (e.g., non-reconstructed samples) in overlap area (1420) are predicted by copying reconstructed samples in area (1430) of reference subblock SB1' indicated by BV1. Then, BV4 is used to predict area (1440) in subblock SB4 using the predicted values ​​of overlap area (1420).

[0164] In another embodiment, area (1440) is predicted directly from coded samples (e.g., reconstructed samples) in area (1430) in reference sub-block SB1′ based on BV1 and BV4, similar to the method shown in Figure 12. In one example, coded samples (e.g., reconstructed samples) in area (1430) are copied to area (1440) and used as predicted samples for area (1440).

[0165] From the coded samples in SB4' indicated by BV4, the remaining area in SB4 outside of area (1440) can be coded using IBC or IntraTMP mode.

[0166] From the reference sub-blocks SB1'-SB3' indicated by BV1-BV3, sub-blocks SB1-SB3 can be coded using IBC mode or IntraTMP mode, respectively.

[0167] In one embodiment of the present disclosure, this method is applicable only when both bvX and bvY are less than or equal to 0. However, both bvX and bvY should not be 0 at the same time.

[0168] In one embodiment, the method described in FIG. 13 or FIG. 14 can be applied only when the x-component bvX and the y-component bvY of BV are less than or equal to 0. The x-component bvX and the y-component bvY of BV (e.g., one of BV1-BV8) cannot be 0 simultaneously. For example, (i) the x-component and the y-component of BV5 in FIG. 13 are less than or equal to 0, and (ii) the x-component or the y-component of BV5 in FIG. 13 is not 0. For example, (i) the x-component and the y-component of BV1 in FIG. 14 are less than or equal to 0, and (ii) the x-component or the y-component of BV1 in FIG. 14 is not 0.

[0169] In the present case illustrated in Figure 13, the overlap area (1320) is a rectangle whose top-left and bottom-right coordinates are described as follows: (i) the top-left coordinate of the overlap area is (bx0, by0), and (ii) the bottom-right coordinate of the overlap area is (bx0 + bws-1 + bvX5, by0 + bhs-1 + bvY5). The parameters bws and bhs represent the width and height of the sub-block (e.g., SB5), and bvX5 and bvY5 are the x and y components of BV5.

[0170] In one aspect of the present disclosure, the width M and height N of a sub-block should be integers. For example, the values ​​of M may include, but are not limited to, {2, 4, 8, 16, 32, 64, 128}, and the values ​​of N may include, but are not limited to, {1, 2, 3, ..., 128}.

[0171] 13-14, the width Ms and height Ns of a sub-block (e.g., SB1-SB8) may be integers. For example, values ​​of Ms may include, but are not limited to, {2, 4, 8, 16, 32, 64, 128}, and values ​​of Ns may include, but are not limited to, {1, 2, 3, ..., 128}.

[0172] In one embodiment, the size of the sub-blocks is 4x4.

[0173] In one embodiment, the size of the sub-blocks is 4x1.

[0174] In one embodiment, the size of the sub-blocks is 2x2.

[0175] In one embodiment, the size of the sub-blocks is 2x1.

[0176] In one aspect of the present disclosure, the size of the sub-blocks relates to the color components of the coding block. For example, the sub-block sizes are different for luma and chroma coding blocks. In one embodiment, a 4x1 basic padding unit is used for luma coding blocks, and a 2x1 basic padding unit is used for chroma coding blocks. In one embodiment, a 4x4 basic padding unit is used for luma coding blocks, and a 2x2 basic padding unit is used for chroma coding blocks. In one embodiment, the size of a luma sub-block is MLxNL, and the size of a chroma sub-block is MCxNC, and the relationship between (ML,NL) and (MC,NC) is as follows: MC=ML / ScaleX formula (8) NC=MC / ScaleY Equation (9) where ScaleX is the horizontal scale factor and ScaleY is the vertical scale factor, which depends on the chroma subsampling format.

[0177] In one embodiment, the size of the sub-blocks relates to the color components of the coding block (e.g., (1311) or (1411)). For example, the size of the sub-blocks is different for luma coding blocks and chroma coding blocks.

[0178] In one embodiment, 4x1 sub-blocks are used for luma coding blocks and 2x1 sub-blocks are used for chroma coding blocks.

[0179] In one embodiment, 4x4 sub-blocks are used for luma coding blocks and 2x2 sub-blocks are used for chroma coding blocks.

[0180] In one embodiment, MLs×NLs is the size of a luma sub-block, and MCs×NCs is the size of a chroma sub-block, and the relationship between (MLs,NLs) and (MCs,NCs) can be described as follows: MCs=MLs / ScaleXs Equation (10) NCs=MCs / ScaleYs Equation (11)

[0181] ScaleXs is the horizontal scale factor and ScaleYs is the vertical scale factor. ScaleXs and ScaleYs can depend on the chroma subsampling format.

[0182] 15 is a flowchart outlining a process (1500) according to an embodiment of the present disclosure. The process (1500) may be used in a video decoder. In various embodiments, the process (1500) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110) and a processing circuit performing the functions of the video decoder (210). In some embodiments, the process (1500) is implemented in software instructions, such that the processing circuit performs the process (1500) when executing the software instructions. The process (1500) begins at (S1501) and proceeds to (S1510).

[0183] At (S1510), a bitstream of a current block in a picture can be received. The bitstream includes coding information indicating that the current block is coded with block vectors (BVs) according to a prediction mode, such as an IBC-related mode. The IBC-related mode includes, but is not limited to, an IBC mode, an intra-template matching prediction (IntraTMP) mode, or a mode that can code the current block based on a reference block in the picture.

[0184] In one example, the prediction mode is an IBC mode, an IntraTMP mode, or an IBC-related mode such as a mode that can code the current block based on a reference block in a picture. In one example, for the current block, a flag indicating whether IntraBC is possible for the current block is first transmitted in the bitstream.

[0185] In (S1520), a reference block in a picture can be determined based on the block vector (BV) of the current block. The reference block and the current block may overlap in an overlap area (or overlap region). The reference block can include (i) unreconstructed samples within the overlap area and (ii) reconstructed samples outside the overlap area.

[0186] In one example, when a reference block overlaps a current block, the unreconstructed samples in the overlapping area are padded by copying their predicted samples.

[0187] In (S1530), when a reference block (e.g., (1112)) and a current block (e.g., (1111)) overlap in an overlap area (e.g., (1120)), such as illustrated in FIG. 11-12, the current block (e.g., (1111)) can be reconstructed based on the reconstructed samples outside the overlap area and the BV (e.g., (1113)). For example, the overlap area (e.g., 1120) in the current block can be reconstructed based on the reconstructed samples in the reference block (e.g., 1112) outside the overlap area (e.g., in area (1130)).

[0188] In one example, motion compensation is performed on a current block by reconstructing an overlap region in the current block based on reconstructed samples in a reference block that is outside the overlap region. Generally, motion compensation can refer to predicting frames (also called pictures) in a video from past and / or future frames by accounting for camera and / or object motion in the video. In some examples, motion compensation can also refer to block prediction or block compensation from another block in the same picture (e.g., the current picture) using block vectors as motion vectors.

[0189] In one example, the overlap region width and the overlap region height are multiples of four.

[0190] In one embodiment, the predicted values ​​of the unreconstructed samples in the overlap region can be determined by copying the respective predicted samples in the reference block indicated by the BV, and the overlap region can be reconstructed based on the predicted values ​​of the unreconstructed samples in the overlap region.

[0191] In one embodiment, predicted values ​​of the unreconstructed samples (e.g., including (1121) in FIG. 11 ) within the overlap area can be determined by copying the predicted samples (e.g., including (1122) in FIG. 11 ) of each unreconstructed sample (e.g., including (1121) in FIG. 11 ). Each predicted sample can be one of the reconstructed samples (e.g., including (1122) in FIG. 11 ) within the reference block (e.g., including (1112) in FIG. 11 ) and denoted by BV from each unreconstructed sample (e.g., including (1121) in FIG. 11 ). The current block (e.g., including (1111) in FIG. 11 ) can be reconstructed based on (i) the predicted values ​​of the unreconstructed samples within the overlap area and the reconstructed samples outside the overlap area, and (ii) the BV.

[0192] In one example, a predicted value P'(x,y) of one of the unreconstructed samples at location (x,y) (e.g., including (1121) in FIG. 11) is determined by copying the reconstructed sample value P(x+bvX,y+bvY) of each predicted sample at location (x+bvX,y+bvY) (e.g., including (1122) in FIG. 11), where bvX and bvY are the x and y components of BV. P'(x,y) can be equal to P(x+bvX,y+bvY).

[0193] 12, determining the predicted value includes copying each predicted sample in the reference block as a predicted value of a non-reconstructed sample in the overlap area in units of copy units having a size of M×N samples, where one of M or N is greater than 1. For example, a reconstructed sample value in unit A′ can be copied to unit A as a predicted sample in unit A. In one example, M and N are multiples of 4.

[0194] The width of the overlap area may be a multiple of M, or the height of the overlap area may be a multiple of N.

[0195] The size of the MxN samples may depend on the color components associated with the current block.

[0196] Thereafter, the process proceeds to (S1599) and ends.

[0197] The process 1500 may be adapted as appropriate. Steps of the process 1500 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0198] In one embodiment, the x component of BV is less than or equal to 0, the y component of BV is less than or equal to 0, and one of the x component of BV or the y component of BV is not equal to 0.

[0199] In one example, BV is represented by the vector (bvX, bvY), where bw is the width of the current block, bh is the height of the current block, the overlap area is rectangular, the top left coordinate of the overlap area is (bx, by), and the bottom right coordinate of the overlap area is (bx+bw-1+bvX, by+bh-1+bvY).

[0200] In one embodiment, a current block (e.g., (1111) in Figures 11-12) includes a first area (e.g., (1140) in Figure 11) and a second area outside the first area, and BV refers to the overlapping area (e.g., (1120) in Figure 11) from the first area. Reconstructing the current block may include (i) determining a predicted value of the second area based on a reconstructed sample in the reference block and the BV, and (ii) determining a predicted value of the first area by copying each predicted sample (e.g., including (1122) in Figure 11) of the unreconstructed sample (e.g., including (1121) in Figure 11). Each predicted sample may be one of the reconstructed samples in the reference block (e.g., (1122) in Figure 11) indicated by BV from the respective unreconstructed sample (e.g., including (1121) in Figure 11). Based on the predicted value of the first area and the predicted value of the second area, the current block can be reconstructed.

[0201] In one example, the predicted value of the first area can be determined by copying each predicted sample in the reference block indicated by 2×BV, and the overlap region can be reconstructed based on the predicted value of the first area.

[0202] In one example, the current block is a first sub-block of the sub-blocks in the coding block, and the BV of the first sub-block is different from another BV of a second sub-block of the sub-blocks in the coding block.

[0203] 16 is a flowchart illustrating an overview of process (1600) according to an embodiment of the present disclosure. Process (1600) can be used in a video encoder. In various embodiments, process (1600) is performed by a processing circuit, such as a processing circuit performing the functions of video encoder (103), a processing circuit performing the functions of video encoder (303), or the like. In some embodiments, process (1600) is implemented in software instructions, such that the processing circuit performs process (1600) when executing the software instructions. Processing begins at (S1601) and proceeds to (S1610).

[0204] In (S1610), a reference block in the picture is determined based on the block vector (BV) of the current block in the picture. The current block is coded with the BV according to a prediction mode. The prediction mode is an IBC-related mode, such as an IBC mode, an IntraTMP mode, or a mode that can code the current block based on a reference block in the picture. The reference block and the current block overlap in an overlap region, such as shown in Figures 11-14. The reference block may include (i) unreconstructed samples within the overlap region and (ii) reconstructed samples outside the overlap region.

[0205] In (S1620), the current block can be encoded based on the coded samples (e.g., reconstructed samples) outside the overlap area and the BV, such as illustrated in Figures 11-12.

[0206] In one example, the overlap region in the current block is encoded based on reconstructed samples in the reference block that are outside the overlap region.

[0207] In one example, coding information can be encoded and included in the bitstream to indicate that the current block is coded in a predictive mode such as IBC mode, IntraTMP mode, or a mode that allows the current block to be coded based on reference blocks within the picture.

[0208] Thereafter, the process proceeds to (S1699) and ends.

[0209] The process 1600 may be adapted as appropriate. Steps of the process 1600 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0210] In one example, the current block is a first sub-block of the sub-blocks in the coding block, and the BV of the first sub-block is different from another BV of a second sub-block of the sub-blocks in the coding block.

[0211] 17 is a flowchart illustrating an overview of a process (1700) according to an embodiment of the present disclosure. The process (1700) can be used in a video decoder. In various embodiments, the process (1700) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110) and a processing circuit performing the functions of the video decoder (210). In some embodiments, the process (1700) is implemented in software instructions, such that the processing circuit performs the process (1700) when executing the software instructions. The process (1700) begins at (S1701) and proceeds to (S1710).

[0212] At (S1710), a bitstream including a current block in a picture is received. The current block may include sub-blocks. Coding information in the bitstream may indicate that each sub-block is coded in an intra block copy (IBC) mode, an intra template matching prediction (IntraTMP) mode, or a mode that allows coding of the sub-block based on a respective reference sub-block in the picture.

[0213] In one example, the size of each sub-block is M×N samples, where M and N are integers.

[0214] At (S1720), reference sub-blocks within the picture may be determined based on the block vectors (BVs) of the respective sub-blocks. A first one of the reference sub-blocks may overlap the current block in the overlap area. The first reference sub-block may include (i) unreconstructed samples within the overlap area and (ii) reconstructed samples outside the overlap area.

[0215] In (S1730), when the first reference sub-block and the current block overlap in the overlap area, a first sub-block of the sub-blocks can be reconstructed based on predicted samples of reconstructed and unreconstructed samples in the first reference sub-block. A first BV of the BVs can point from the first sub-block to the first reference sub-block.

[0216] In one embodiment, the subblock includes a first subblock and a second subblock. The first reference subblock and the second subblock overlap in an overlap area. The first subblock can be reconstructed as follows: A predicted value of each unreconstructed sample can be determined by copying a predicted sample of the unreconstructed sample. Each predicted sample can be a reconstructed sample in a second reference subblock of the second subblock, indicated by a second BV from the second subblock to the second reference subblock of the BV. The first subblock can be reconstructed based on (i) the predicted values ​​of the unreconstructed samples in the overlap area and the reconstructed samples outside the overlap area, and (ii) the first BV.

[0217] In one embodiment, the first reference sub-block and the first sub-block overlap in an overlap area. The first sub-block can be reconstructed as follows: A predicted value of each unreconstructed sample in the overlap area can be determined by copying a predicted sample of the unreconstructed sample. Each predicted sample can be a reconstructed sample in the first reference sub-block. The first sub-block can be reconstructed based on (i) the predicted values ​​of the unreconstructed samples in the overlap area and the reconstructed samples outside the overlap area, and (ii) the first BV.

[0218] In one example, the x component of the first BV is less than or equal to 0, the y component of the first BV is less than or equal to 0, and one of the x component of the first BV or the y component of the first BV is not equal to 0.

[0219] In one example, the first BV is represented by the vector (bvX1, bvY1), where bw1 is the width of the first sub-block, bh1 is the height of the first sub-block, the overlap area is rectangular, the top left coordinate of the overlap area is (bx1, by1), and the bottom right coordinate of the overlap area is (bx1+bw1-1+bvX1, by1+bh1-1+bvY1).

[0220] Thereafter, the process proceeds to (S1799) and ends.

[0221] The process 1700 may be adapted as appropriate. Steps of the process 1700 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0222] FIG. 18 is a flowchart illustrating an overview of a process (1800) according to an embodiment of the present disclosure. The process (1800) can be used in a video encoder. In various embodiments, the process (1800) is performed by a processing circuit, such as a processing circuit performing the functions of the video encoder (103) or a processing circuit performing the functions of the video encoder (303). In some embodiments, the process (1800) is implemented in software instructions, such that the processing circuit performs the process (1800) when executing the software instructions. The process starts at (S1801) and proceeds to (S1810). A current block in a picture includes sub-blocks. Each sub-block can be coded in an intra-block copy (IBC) mode, an intra-template matching prediction (IntraTMP) mode, or a mode in which the sub-blocks can be coded based on their respective reference sub-blocks in the picture.

[0223] At (S1810), reference sub-blocks within the picture may be determined based on the block vectors (BVs) of the respective sub-blocks. A first one of the reference sub-blocks may overlap the current block in an overlap area. The first reference sub-block may include (i) uncoded samples (e.g., unreconstructed samples) within the overlap area and (ii) coded samples (e.g., reconstructed samples) outside the overlap area.

[0224] In (S1820), a first sub-block of the sub-blocks may be encoded based on coded samples (e.g., reconstructed samples) in the first reference sub-block and predicted samples of unreconstructed samples. A first BV of the BVs may point from the first sub-block to the first reference sub-block.

[0225] In one example, coding information can be encoded and included in the bitstream to indicate that the current block is coded in IBC mode, IntraTMP mode, or a mode that allows the current block to be coded based on reference blocks within the picture.

[0226] Thereafter, the process proceeds to (S1899) and ends.

[0227] The process 1800 may be adapted as appropriate. Steps of the process 1800 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0228] The embodiments of the present disclosure may be used separately or combined in any order. Also, each of the methods (or embodiments), encoders, and decoders may be implemented in processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a non-transitory computer-readable medium.

[0229] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 19 illustrates a computer system (1900) suitable for implementing certain embodiments of the disclosed subject matter.

[0230] Computer software can be coded using any suitable machine code or computer language that can be assembled, compiled, linked, or similar mechanisms to create code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc. directly, or by interpretation, microcode execution, etc.

[0231] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0232] 19 for computer system 1900 are exemplary in nature and are not intended to suggest any limitation on the use or scope of functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be construed as having any dependency or requirement regarding any one or combination of components shown in the exemplary embodiment of computer system 1900.

[0233] The computer system (1900) may include certain human interface input devices that can respond to input by one or more human users, for example, through tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). The human interface devices may also be used to capture certain media that are not necessarily directly associated with conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).

[0234] The input human interface devices may include one or more of a keyboard (1901), a mouse (1902), a trackpad (1903), a touchscreen (1910), a data glove (not shown), a joystick (1905), a microphone (1906), a scanner (1907), and a camera (1908) (only one of each is shown).

[0235] The computer system (1900) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (1910), data gloves (not shown), or joystick (1905), but may also be haptic feedback devices that do not function as input devices), audio output devices (e.g., speakers (1909), headphones (not shown), etc.), visual output devices (e.g., screens (1910), including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touchscreen input and haptic feedback capabilities, some capable of outputting two-dimensional visual output or three-dimensional or higher-dimensional output via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0236] The computer system (1900) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1920) or similar media (1921) with CDs / DVDs, thumb drives (1922), and removable hard drives or solid state drives (1923), legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown), etc.

[0237] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other transitory signals.

[0238] The computer system 1900 may also include an interface 1954 to one or more communications networks 1955. The networks may be, for example, wireless, wired, or optical networks. The networks may further include local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant networks, and the like. Examples of networks include local area networks such as Ethernet and wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, and the like; TV wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicular and industrial networks including CAN buses and the like. Particular networks typically require an external network interface adapter connected to a particular general-purpose data port or peripheral bus 1949 (e.g., a USB port on the computer system 1900). Other networks are typically integrated into the core of the computer system 1900 by connecting to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system 1900 can communicate with other entities. Such communications may be unidirectional receive-only (e.g., broadcast TV), unidirectional transmit-only (e.g., from a CAN bus to a particular CAN bus device), or bidirectional with other computer systems, for example, using local or wide-area digital networks. As noted above, specific protocols and protocol stacks may be used for each of these networks and network interfaces.

[0239] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be connected to the core (1940) of the computer system (1900).

[0240] The core (1940) may include one or more central processing units (CPUs) (1941), graphics processing units (GPUs) (1942), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (1943), hardware accelerators for specific tasks (1944), and graphics adapters (1950). These devices may be connected via a system bus (1948), along with read-only memory (ROM) (1945), random access memory (1946), and internal mass storage devices (1947) such as non-user-accessible internal hard drives or SSDs. In some computer systems, the system bus (1948) is accessible in the form of one or more physical plugs, allowing expansion with additional CPUs, GPUs, and the like. Peripheral devices may be connected directly to the core's system bus (1948) or via a peripheral bus (1949). In one example, a screen (1910) may be connected to the graphics adapter (1950). Peripheral bus architectures include PCI, USB, and the like.

[0241] The CPU (1941), GPU (1942), FPGA (1943), and accelerator (1944) can combine to execute specific instructions that can constitute the aforementioned computer code. The computer code can be stored in a ROM (1945) or a RAM (1946). Transient data can also be stored in the RAM (1946), while permanent data can be stored, for example, in an internal mass storage device (1947). A cache memory, which can be closely associated with one or more of the CPU (1941), GPU (1942), mass storage device (1947), ROM (1945), RAM (1946), etc., can be used to enable fast storage and retrieval from any memory device.

[0242] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0243] By way of example and not limitation, a computer system having the architecture (1900), and in particular the core (1940), can provide functionality as a result of the processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with a user-accessible mass storage device, as introduced above, in addition to specific storage of the core (1940) that is non-transitory in nature, such as the core's internal mass storage device (1947) or ROM (1945). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1940). The computer-readable media may include one or more memory devices or chips, depending on particular needs. The software can cause the core (1940), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform certain processes or portions of certain processes described herein, including defining data structures stored in RAM (1946) and modifying such data structures according to the software-defined processes. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerators (1944)) that can operate in place of or together with software to perform particular processes or portions of particular processes described herein. References to software may, where appropriate, include logic, and vice versa. References to computer-readable media may, where appropriate, include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.

[0244] The use of "at least one of" or "one of" in this disclosure contemplates any one or combination of the listed elements. For example, reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; at least one of A through C is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B and one of A and B is intended to include A or B or (A and B). The use of "one of" does not exclude any combination of the listed elements, where applicable, such as when the elements are not mutually exclusive.

[0245] While this disclosure has described certain exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It should thus be understood that those skilled in the art can devise numerous systems and methods that embody the principles of the disclosure, but which are within its spirit and scope.

Claims

1. receiving a bitstream of a current block in a picture, the bitstream including coding information indicating that the current block is coded with a block vector (BV) according to a prediction mode; determining a reference block in the picture based on the BV of the current block, wherein the reference block and the current block have an overlapping area, and the reference block includes both (i) unreconstructed samples within the overlapping area and (ii) reconstructed samples outside the overlapping area; motion-compensating the current block by reconstructing the overlap region in the current block based on the reconstructed samples in the reference block that are outside the overlap region; Including, the width of the overlapping region and the height of the overlapping region are multiples of 4; Video decoding methods.

2. Reconstructing the overlap region comprises: determining predictions of the unreconstructed samples in the overlap region by copying respective prediction samples in the reference block indicated by the BV; The method of claim 1 , comprising reconstructing the overlap region based on the predicted values ​​of the unreconstructed samples within the overlap region.

3. Determining the predicted value comprises:

3. The method of claim 2, comprising determining a predicted value P'(x, y) of one of the unreconstructed samples at location (x, y) by copying a reconstructed sample value P(x+bvX, y+bvY) of a respective predicted sample at location (x+bvX, y+bvY), where P'(x, y) is equal to P(x+bvX, y+bvY), bvX is the x-component of the BV, and bvY is the y-component of the BV.

4. Determining the predicted value comprises:

3. The method of claim 2, comprising copying each of the predicted samples in the reference block as the predicted values ​​of the unreconstructed samples in the overlap region in copy units having a size of M×N samples, wherein at least one of M or N is greater than 1.

5. The method of claim 4 , wherein at least one of the width of the overlapping region is a multiple of M or the height of the overlapping region is a multiple of N.

6. Determining the predicted value comprises: The method of claim 4 , wherein the size of the M×N samples of the copy unit depends on the color components associated with the current block.

7. The x component of the BV is 0 or less, the y component of the BV is 0 or less, The method of claim 1 , wherein one of the x component of the BV or the y component of the BV is not equal to zero.

8. The BV is represented by a vector (bvX, bvY), bw is the width of the current block, bh is the height of the current block, the overlap region is rectangular; The upper left coordinate of the overlapping area is (bx, by), The method of claim 7, wherein the bottom right coordinate of the overlap region is (bx+bw-1+bvX, by+bh-1+bvY).

9. the current block includes a first area and a second area outside the first area, and the BV points from the first area to the overlap region; Reconstructing the overlap region comprises: determining a prediction value for the first area by copying each prediction sample in the reference block denoted by 2×BV; and reconstructing the overlap region based on the predicted value of the first area. The method of claim 1.

10. 2. The method of claim 1, wherein the current block is a first sub-block of sub-blocks in a coding block, and the BV of the first sub-block is different from another BV of a second sub-block of the sub-blocks in the coding block.

11. receiving a bitstream of a current block in a picture, the bitstream including coding information indicating that the current block is coded with a block vector (BV) according to a prediction mode; determining a reference block in the picture based on the BV of the current block, wherein the reference block and the current block have an overlapping area, and the reference block includes both (i) unreconstructed samples within the overlapping area and (ii) reconstructed samples outside the overlapping area; performing motion compensation on the current block by reconstructing the overlap region in the current block based on the reconstructed samples in the reference block that are outside the overlap region; a processing circuit for performing the width of the overlapping region and the height of the overlapping region are multiples of 4; Video decoding device.

12. The processing circuitry determining predictions of the unreconstructed samples in the overlap region by copying respective prediction samples in the reference block indicated by the BV; The apparatus of claim 11 , further comprising: reconstructing the overlap region based on the predicted values ​​of the unreconstructed samples within the overlap region.

13. The processing circuitry 13. The apparatus of claim 12, further comprising: determining a predicted value P'(x, y) of one of the unreconstructed samples at location (x, y) by copying a reconstructed sample value P(x + bvX, y + bvY) of a respective predicted sample at location (x + bvX, y + bvY), where P'(x, y) is equal to P(x + bvX, y + bvY), where bvX is the x-component of the BV, and bvY is the y-component of the BV.

14. The processing circuitry Copying each of the predicted samples in the reference block as the predicted values ​​of the unreconstructed samples in the overlap region in units of copy units having a size of M×N samples, where at least one of M or N is greater than 1; 13. The apparatus of claim 12.

15. The apparatus of claim 14 , wherein at least one of the width of the overlap region is a multiple of M or the height of the overlap region is a multiple of N.

16. The x component of the BV is 0 or less, the y component of the BV is 0 or less, The apparatus of claim 11 , wherein one of the x component of the BV or the y component of the BV is not equal to zero.

17. The BV is represented by a vector (bvX, bvY), bw is the width of the current block, bh is the height of the current block, the overlap region is rectangular; The upper left coordinate of the overlapping area is (bx, by), The apparatus of claim 16, wherein the bottom right coordinate of the overlap region is (bx+bw-1+bvX, by+bh-1+bvY).

18. the current block includes a first area and a second area outside the first area, and the BV points from the first area to the overlap region; The processing circuitry determining a prediction value for the first area by copying each prediction sample in the reference block denoted by 2×BV; reconstructing the overlap region based on the predicted value of the first area; 12. The apparatus of claim 11.

19. 12. The apparatus of claim 11, wherein the current block is a first sub-block of sub-blocks in a coding block, and the BV of the first sub-block is different from another BV of a second sub-block of the sub-blocks in the coding block.

20. A non-transitory computer-readable medium storing instructions that, when executed by at least one processor, cause the at least one processor to receiving a bitstream of a current block in a picture, the bitstream including coding information indicating that the current block is coded with a block vector (BV) according to a prediction mode; determining a reference block in the picture based on the BV of the current block, wherein the reference block and the current block have an overlapping area, and the reference block includes both (i) unreconstructed samples within the overlapping area and (ii) reconstructed samples outside the overlapping area; performing motion compensation for the current block by reconstructing the overlap region in the current block based on the reconstructed samples outside the overlap region in the reference block; Execute The computer-readable medium, wherein the width of the overlapping region and the height of the overlapping region are multiples of four.

Citation Information

Patent Citations

  • Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area

    US20150195526A1

  • Features of intra block copy prediction mode for video and image coding and decoding

    US20160241868A1

  • Methods and apparatus for intra picture block copy in video compression

    US20160269746A1

  • Method and apparatus for video coding

    US20220182650A1