IBC chroma block vector search range verification

By verifying and correcting the chroma block vector in the processing circuit system in the video encoding technology, the problem of low chroma block vector verification and correction efficiency in the prior art is solved, and higher encoding efficiency and video quality are achieved.

CN119698831APending Publication Date: 2025-03-25TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380058035.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-03
Filing Date
2023-10-04
Publication Date
2025-03-25

AI Technical Summary

Technical Problem

Existing video encoding technologies are difficult to effectively verify and correct chroma block vectors (BV) in intra-block copy (IBC) mode, resulting in poor encoding efficiency and quality.

Method used

By receiving the bit stream of the current region of the picture in the processing circuit system, it is determined whether the chromaticity block vector of the current chromaticity block in the chromaticity coding region is valid, the chromaticity BV is corrected in response to the invalidation, and the current chromaticity block is reconstructed based on the effective chromaticity BV.

Benefits of technology

The chroma block vector verification and correction efficiency in intra-block copy mode in video encoding is improved, and the encoding efficiency and video quality are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119698831A_ABST
    Figure CN119698831A_ABST
Patent Text Reader

Abstract

Aspects of the present disclosure include methods and apparatus for video encoding. One of the devices includes processing circuitry that receives a bitstream of a current region in a picture. The current region includes a luma coding region and a chroma coding region. The luma coding region and the chroma coding region are partitioned using a separate coding tree structure. The processing circuitry determines a chroma block vector (BV) for a current chroma block in the chroma coding region. The chroma BV indicates a chroma reference block in the picture. The processing circuitry determines whether the chroma BV is valid based on whether the collocated luma sample of the chroma reference block is within an allowable range of a luma region that includes the collocated luma sample of the current chroma block. If the chroma BV is valid, the processing circuitry reconstructs the current chroma block based on the chroma reference block.
Need to check novelty before this filing date? Find Prior Art

Description

Incorporated by Reference

[0001] This application claims the benefit of priority to U.S. Patent Application No. 18 / 376,352, filed on October 3, 2023, entitled "IBC CHROMABLOCK VECTOR SEARCH RANGE VALIDATION," which claims the benefit of priority to U.S. Provisional Application No. 63 / 434,398, filed on December 21, 2022, entitled "IBC CHROMA BLOCK VECTOR SEARCH RANGE VALIDATION." The entire contents of the disclosures of the prior applications are incorporated herein by reference. Technical Field

[0002] This disclosure generally describes implementations related to video encoding. Background Art

[0003] The background description provided herein is for the purpose of generally presenting the context of the present disclosure. To the extent the work is described in this background section, the work of the presently named inventors and aspects of the description that may not otherwise be qualified as prior art at the time of filing are neither explicitly nor implicitly admitted to be prior art against the present disclosure.

[0004] Image / video compression can help transmit image / video data between different devices, storage devices, and networks with minimal quality degradation. In some examples, video codec technology can compress video based on spatial and temporal redundancy. In an example, a video codec can use a technique called intra-frame prediction, which can compress an image based on spatial redundancy. For example, intra-frame prediction can use reference data from the current picture being reconstructed for sample prediction. In another example, a video codec can use a technique called inter-frame prediction, which can compress an image based on temporal redundancy. For example, inter-frame prediction can predict samples in the current picture based on a previously reconstructed picture with motion compensation. Motion compensation can be indicated by a motion vector (MV). Summary of the invention

[0005] Aspects of the present disclosure include methods and apparatus for video encoding / decoding. In some examples, an apparatus for video decoding includes a processing circuit system. The processing circuit system receives a bitstream of a current region in a picture. The current region includes a luma coding region and a chroma coding region. The encoding information in the bitstream indicates that the luma coding region and the chroma coding region are segmented using separate coding tree structures. The processing circuit system determines a chroma block vector (BV) of a current chroma block in the chroma coding region. The chroma BV indicates a chroma reference block in the picture. The processing circuit system determines whether the chroma BV is valid based on collocated luma samples of the current chroma block and collocated luma samples of the chroma reference block. In response to determining that the chroma BV is valid, the processing circuit system reconstructs the current chroma block based on the chroma reference block indicated by the chroma BV. In an example, the processing circuit system determines whether the chroma BV is valid based on whether the collocated luma samples of the chroma reference block are within an allowable range of the luma region including the collocated luma samples of the current chroma block.

[0006] In an embodiment, the current chroma block is predicted in one of: (i) Intra Block Copy (IBC) mode, (ii) Intra Template Matching Prediction (IntraTMP) mode, and (iii) Direct Block Vector (DBV) mode.

[0007] In an embodiment, the processing circuitry determines that the chroma BV is valid in response to (i) the collocated luma samples of the chroma reference block being within an allowed IBC reference range of a luma region including the collocated luma samples of the current chroma block and (ii) the chroma samples in the chroma reference block have been reconstructed. The allowed range may be an allowed IBC reference range.

[0008] In an example, in response to determining that the chroma BV is invalid, the processing circuitry corrects the chroma BV to obtain a valid chroma BV, and reconstructs the current chroma block based on another chroma reference block indicated by the valid chroma BV. (i) The collocated luma samples of the other chroma reference block are within the allowed IBC reference range of the luma region, and (ii) The chroma samples in the other chroma reference block have been reconstructed.

[0009] In an example, the processing circuit system (i) explicitly decodes the chroma BV according to the coding information; or (ii) obtains the chroma BV using the IntraTMP mode or the DBV mode. In an example, the current region is a current coding tree unit (CTU), the luma coding region is a luma coding tree block (CTB) in the current CTU, and the chroma coding region is a chroma CTB in the current CTU.

[0010] In an example, a current CTU in a picture is split into four coding units using quadtree splitting, and the current region is a coding unit among the four coding units.

[0011] In an example, the allowed IBC reference range includes at least one of reconstructed luma samples in a current coding tree unit (CTU) or one or more previously reconstructed CTUs, the current CTU including the current region.

[0012] In an example, the coding information in the bitstream includes a flag indicating that the luma coding region and the chroma coding region are partitioned using two separate coding tree structures.

[0013] In an embodiment, the processing circuit system may determine whether the chroma BV is valid based on (i) whether the chroma samples in the chroma reference block have been reconstructed and (ii) whether the chroma reference block is within an allowed intra-block copy (IBC) reference range of the current chroma block, the allowed IBC reference range being scaled according to an allowed IBC reference range of a luma region including collocated luma samples of the current chroma block. In response to determining that the chroma BV is valid, the processing circuit system reconstructs the current chroma block based on the chroma reference block indicated by the chroma BV.

[0014] In an embodiment, the processing circuitry scales the allowed IBC reference range for a luma region that includes collocated luma samples of the current chroma block to determine the allowed IBC reference range for the current chroma block.

[0015] In an embodiment, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region depends on the chroma sampling format.

[0016] In an example, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region is different for different dimensions.

[0017] In an example, the scaling factor includes a horizontal scaling factor and a vertical scaling factor. In response to the chroma sampling format being 4:2:0, the horizontal scaling factor and the vertical scaling factor are 2 and 2, respectively. In response to the chroma sampling format being 4:2:2, the horizontal scaling factor and the vertical scaling factor are 2 and 1, respectively. In response to the chroma sampling format being 4:4:4, the horizontal scaling factor and the vertical scaling factor are 1 and 1, respectively.

[0018] In an embodiment, the processing circuitry determines that the chroma BV is valid in response to (i) chroma samples in the chroma reference block having been reconstructed and (ii) the chroma reference block being within an allowed IBC reference range for the current chroma block.

[0019] In an example, in response to determining that the chroma BV is invalid, the processing circuitry corrects the chroma BV to obtain a valid chroma BV, and reconstructs the current chroma block based on another chroma reference block indicated by the valid chroma BV. (i) chroma samples in the chroma reference block have been reconstructed, and (ii) the other chroma reference block is within an allowed IBC reference range for the current chroma block.

[0020] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions which, when executed by a computer, cause the computer to perform a method for video encoding / decoding. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] Additional features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which:

[0022] Figure 1 is a schematic illustration of an exemplary block diagram of a communication system (100).

[0023] Figure 2 is a schematic illustration of an exemplary block diagram of a decoder.

[0024] Figure 3 is a schematic illustration of an exemplary block diagram of an encoder.

[0025] Figure 4 The BV associated with the current CU (401) is shown according to some embodiments of the present disclosure.

[0026] Figure 5 A reference sample memory (RSM) update process is shown at four intermediate times during a reconstruction process in accordance with an embodiment of the present disclosure.

[0027] Figure 6 A left neighboring CTU and a current CTU representing a valid reference area according to an embodiment of the present disclosure are shown.

[0028] Figure 7 An example of a prediction region of an intra block copy (IntraBC) mode in super block prediction according to an embodiment of the present disclosure is shown.

[0029] Figure 8 An example of a memory reuse mechanism or a memory update process in an RSM during decoding of a CTU or SB in a current picture according to an embodiment of the present disclosure is shown.

[0030] FIG. 9A to FIG. 9B An example of memory update processing in RSM during decoding of the current SB (or CTU) according to an embodiment of the present disclosure is shown, where (a) the horizontal split at the SB root ( Fig.9A ) or (b) vertical split at the SB root ( Fig. 9B ).

[0031] Fig.10 An example of an intra template matching prediction (IntraTMP) mode according to an embodiment of the present disclosure is shown.

[0032] Fig.11 An exemplary allowed reference range for the current chrominance block according to some embodiments of the present disclosure is shown.

[0033] Fig.12 A flowchart outlining a decoding process according to some embodiments of the present disclosure is shown.

[0034] Fig.13 A flowchart outlining an encoding process according to some implementations of the present disclosure is shown.

[0035] Fig.14 A flowchart outlining a decoding process according to some embodiments of the present disclosure is shown.

[0036] Fig.15 A flowchart outlining an encoding process according to some implementations of the present disclosure is shown.

[0037] Fig.16 is a schematic illustration of a computer system according to an embodiment. DETAILED DESCRIPTION

[0038] Figure 1 A block diagram of a video processing system (100) in some examples is shown. The video processing system (100) is an example of an application for the disclosed subject matter, video encoders, and video decoders in a streaming environment. The disclosed subject matter can be equally applicable to other video-enabled applications including, for example, video conferencing, digital TV, streaming services, storing compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0039] The video processing system (100) includes a capture subsystem (113) that may include a video source (101), such as a digital camera, that creates, for example, an uncompressed video picture stream (102). In an example, the video picture stream (102) includes samples captured by the digital camera. The video picture stream (102) is depicted as a thick line to emphasize the high amount of data when compared to the encoded video data (104) (or encoded video bitstream), which may be processed by an electronic device (120) coupled to the video source (101) including a video encoder (103). The video encoder (103) may include hardware, software, or a combination thereof to implement or embody aspects of the disclosed subject matter as described in more detail below. The encoded video data (104) (or encoded video bitstream) is depicted as a thin line to emphasize the lower amount of data when compared to the video picture stream (102), which can be stored on the streaming server (105) for future use. One or more streaming client subsystems such as Figure 1 The client subsystems (106) and (108) in the streaming server (105) can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) can 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 video picture stream (111) that can be presented on a display (112) (e.g., a display screen) or another presentation device (not depicted). In some streaming systems, the encoded video data (104), (107) and (109) (e.g., a video bitstream) can be encoded according to certain video encoding / compression standards. Examples of such standards include ITU-T Recommendation H.265. In examples, the video coding standard under development is informally referred to as Versatile Video Coding (VVC). The disclosed subject matter can be used in the context of VVC.

[0040] Note 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 also include a video encoder (not shown).

[0041] Figure 2 An exemplary block diagram of a video decoder (210) is shown. The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., receiving circuitry). The video decoder (210) may be used to replace Figure 1 A video decoder (110) is shown in an example.

[0042] The receiver (231) may receive one or more encoded video sequences to be decoded by the video decoder (210). In an embodiment, the encoded video sequences are received one at a time, wherein the decoding of each encoded video sequence is independent of the decoding of other encoded video sequences. The encoded video sequence may be received from a channel (201), which may be a hardware / software link to a storage device storing the encoded video data. The receiver (231) may receive the encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams, which may be forwarded to their respective consuming entities (not depicted). The receiver (231) may separate the encoded video sequence from the other data. To prevent network jitter, a buffer memory (215) may be coupled between the receiver (231) and an entropy decoder / parser (220) (hereinafter referred to as "parser (220)"). In some applications, the buffer memory (215) is part of the video decoder (210). In other applications, the buffer memory (215) may be external to the video decoder (210) (not depicted). In still other applications, there may be a buffer memory (not depicted) external to the video decoder (210) to, for example, prevent network jitter, and there may be another buffer memory (215) internal to the video decoder (210) to, for example, handle playout timing. When the receiver (231) receives data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network, the buffer memory (215) may not be needed, or the buffer memory (215) may be smaller. In order to use a packet network such as the Internet as much as possible, a buffer memory (215) may be needed, which may be relatively large and may advantageously have an adaptive size, and may be implemented at least in part in an operating system or similar element (not depicted) external to the video decoder (210).

[0043] The video decoder (210) may include a parser (220) to reconstruct symbols (221) from the encoded video sequence. The categories of these symbols include information for managing the operation of the video decoder (210) and potential information for controlling a presentation device such as a presentation device (212) (e.g., a display screen) that is not part of the electronic device (230) but can be coupled to the electronic device (230), such as Figure 2As shown. The control information for the rendering device may be in the form of a supplemental enhancement information (SEI) message or a video usability information (VUI) parameter set fragment (not depicted). The parser (220) may parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may be performed according to a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract a subgroup parameter set for at least one of the subgroups of pixels in the video decoder from the encoded 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, quantizer parameter values, motion vectors, etc. from the encoded video sequence.

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

[0045] Depending on the type of the coded video picture or part of the coded video picture (e.g., inter-frame and intra-frame pictures, inter-frame blocks and intra-frame blocks) and other factors, the reconstruction of the symbol (221) may involve multiple different units. Which units are involved and how they are involved can be controlled by subgroup control information parsed by the parser (220) from the coded video sequence. For the sake of simplicity, such subgroup control information flow between the parser (220) and the following multiple units is not depicted.

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

[0047] The first unit is a sealer / inverse transform unit (251). The sealer / inverse transform unit (251) receives quantized transform coefficients as symbols (221) from the parser (220) and control information including which transform to use, block size, quantization factor, quantization scaling matrix, etc. The sealer / inverse transform unit (251) can output a block including sample values, which can be input into an aggregator (255).

[0048] In some cases, the output samples of the scaler / inverse transform unit (251) may belong to an intra-coded block. An intra-coded block is a block that does not use predictive information from a previously reconstructed picture, but may use predictive information from a previously reconstructed portion of a current picture. Such predictive information may be provided by an intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) uses surrounding already reconstructed information obtained from a current picture buffer (258) to generate a block of the same size and shape as the block being reconstructed. For example, the current picture buffer (258) buffers a partially reconstructed current picture and / or a fully reconstructed current picture. In some cases, the aggregator (255) adds the prediction information already generated by the intra-prediction unit (252) to the output sample information as provided by the scaler / inverse transform unit (251) on a per-sample basis.

[0049] In other cases, the output samples of the scaler / inverse transform unit (251) may belong to an inter-frame coded block and potentially a motion compensated block. In this case, the motion compensated prediction unit (253) may access the reference picture memory (257) to obtain samples for prediction. After motion compensation of the obtained samples according to the symbols (221) belonging to the block, these samples may be added to the output of the scaler / inverse transform unit (251) (in this case referred to as residual samples or residual signals) by the aggregator (255) to generate output sample information. The address in the reference picture memory (257) at which the motion compensated prediction unit (253) obtains the predicted samples may be controlled by a motion vector, which may be used for the motion compensated prediction unit (253) in the form of a symbol (221), which may have, for example, an X component, a Y component and a reference picture component. Motion compensation may also include interpolation of sample values ​​such as those obtained from the reference picture memory (257) when using sub-sample accurate motion vectors, motion vector prediction mechanisms, etc.

[0050] The output samples of the aggregator (255) may be subjected to various loop filtering techniques in a loop filter unit (256). The video compression techniques may include in-loop filter techniques controlled by parameters included in the coded video sequence (also referred to as the coded video bitstream) and available to the loop filter unit (256) as symbols (221) from the parser (220). The video compression may also be responsive to meta-information obtained during decoding of a coded picture or a previous (in decoding order) portion of the coded video sequence, and to previously reconstructed and loop filtered sample values.

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

[0052] Once fully reconstructed, certain coded pictures may be used as reference pictures for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) may become part of the reference picture memory (257) and a new current picture buffer may be reallocated before starting to reconstruct a subsequent coded picture.

[0053] The video decoder (210) may perform decoding operations according to a predetermined video compression technology or standard such as ITU-T H.265 Recommendation. The encoded video sequence may conform to the syntax specified by the video compression technology or standard used in the sense that the encoded video sequence follows both the syntax of the video compression technology or standard and the profile recorded in the video compression technology or standard. Specifically, the profile may select certain tools from all the tools available in the video compression technology or standard as tools available only under the profile. For compliance, the complexity of the encoded video sequence is also required to be within a range as defined by the hierarchy of the video compression technology or standard. In some cases, the hierarchy limits the maximum picture size, the maximum frame rate, the maximum reconstruction sampling rate (measured in, for example, mega samples per second), the maximum reference picture size, etc. In some cases, the limits set by the hierarchy may be further defined by the hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.

[0054] In an embodiment, the receiver (231) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The video decoder (210) may use the additional data 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.

[0055] Figure 3 An exemplary block diagram of a video encoder (303) is shown. The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmission circuit system). The video encoder (303) can be used to replace Figure 1 A video encoder (103) in an example.

[0056] The video encoder (303) can be obtained from a video source (301) (not Figure 3 In another example, the video source (301) is a part of the electronic device (320).

[0057] The video source (301) may provide a source video sequence in the form of a digital video sample stream to be encoded by the video encoder (303), which may have 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., YCrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the video source (301) may be a storage device storing previously prepared videos. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual pictures that are given motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels, where each pixel may include one or more samples, depending on the sampling structure, color space, etc. used. The following description focuses on the sample.

[0058] According to an embodiment, the video encoder (303) can encode and compress the pictures of the source video sequence into an encoded video sequence (343) in real time or under any other time constraints as required. Implementing the appropriate encoding speed is a function of the controller (350). In some embodiments, the controller (350) controls other functional units as described below and is functionally coupled to the other functional units. For the sake of brevity, the coupling is not depicted. The parameters set by the controller (350) may include rate control related parameters (picture skipping, quantizer, lambda value of rate distortion optimization technology, ...), picture size, picture group (GOP) layout, maximum motion vector search range, etc. The controller (350) can be configured to have other suitable functions belonging to the video encoder (303) optimized for a specific system design.

[0059] In some embodiments, the video encoder (303) is configured to operate in an encoding loop. As a simplified description, in an example, the encoding loop may include a source encoder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be encoded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols and creates sample data in a manner similar to what the (remote) decoder will also create. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Since the decoding of the symbol stream produces a bit-accurate result that is independent of the decoder location (local or remote), the contents of the reference picture memory (334) are also bit-accurate between the local encoder and the remote encoder. In other words, the reference picture samples "seen" by the prediction part of the encoder are exactly the same as the sample values ​​that the decoder will "see" when using prediction during decoding. The basic principles of reference picture synchronization (and drift caused when synchronization cannot be maintained, such as due to channel errors) are also used in some related technologies.

[0060] The operation of the "local" decoder (333) can be combined with the "remote" decoder such as has been described above. Figure 2 The operation of the video decoder (210) described in detail is the same. However, reference is also briefly made to Figure 2 , since the symbols are available and the encoding of the symbols into an encoded video sequence by the entropy encoder (345) and the decoding of the symbols by the parser (220) can be lossless, the entropy decoding portion of the video decoder (210) including the buffer memory (215) and the parser (220) may not be fully implemented in the local decoder (333).

[0061] In an embodiment, decoder techniques other than the parsing / entropy decoding present in the decoder are present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on the decoder operation. The description of encoder techniques can be simplified because encoder techniques are contrary to the decoder techniques described comprehensively. A more detailed description is provided below in some parts.

[0062] In some examples, during operation, the source encoder (330) may perform motion compensated predictive coding that predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence designated as "reference pictures." In this manner, the encoding engine (332) encodes the differences between pixel blocks of the input picture and pixel blocks of a reference picture that may be selected as a prediction reference for the input picture.

[0063] The local video decoder (333) can decode the encoded video data of the picture that can be designated as the reference picture based on the symbol created by the source encoder (330). The operation of the encoding engine (332) can advantageously be a lossy process. When the encoded video data can be decoded at the video decoder ( Figure 3 When the video encoder (303) is decoded at a remote location (not shown), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (333) replicates the decoding process that may be performed by the video decoder on the reference picture and may cause the reconstructed reference picture to be stored in the reference picture memory (334). In this way, the video encoder (303) may locally store a copy of the reconstructed reference picture that has common content (absent transmission errors) with the reconstructed reference picture to be obtained by the remote video decoder.

[0064] The predictor (335) may perform a prediction search for the encoding engine (332). That is, for a new picture to be encoded, the predictor (335) may search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc. that may be used as appropriate prediction references for the new picture. The predictor (335) may operate on a pixel block by pixel block basis to find an appropriate prediction reference. In some cases, as determined by the search results obtained by the predictor (335), the input picture may have prediction references taken from multiple reference pictures stored in the reference picture memory (334).

[0065] The controller (350) can manage encoding operations of the source encoder (330), including, for example, setting parameters and subgroup parameters for encoding video data.

[0066] The outputs of all the above-mentioned functional units may be subjected to entropy coding in an entropy encoder (345). The entropy encoder (345) converts the symbols generated 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, arithmetic coding, etc.

[0067] The transmitter (340) can buffer the encoded video sequence created by the entropy encoder (345) in preparation for transmission via a communication channel (360), which can be a hardware / software link to a storage device where the encoded video data will be stored. The transmitter (340) can combine the encoded video data from the video encoder (303) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown).

[0068] The controller (350) may manage the operation of the video encoder (303). During encoding, the controller (350) may assign a certain encoding picture type to each encoded picture, which may affect the encoding techniques that may be applied to the corresponding picture. For example, a picture may generally be assigned one of the following picture types:

[0069] Intra pictures (I pictures) can be encoded and decoded without using any other pictures in the sequence as a prediction source.Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh ("IDR") pictures.

[0070] A predictive picture (P picture) may be encoded and decoded using inter prediction or intra prediction that predicts sample values ​​of each block using a motion vector and a reference index.

[0071] Bi-directional predictive pictures (B pictures) can be encoded and decoded using inter-prediction or intra-prediction that predicts sample values ​​for each block using two motion vectors and reference indices. Similarly, multi-predictive pictures can use more than two reference pictures and associated metadata for reconstructing a single block.

[0072] The source picture may typically be spatially subdivided into a number of blocks of samples (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples, respectively), and encoded block by block. The blocks may be predictively encoded with reference to other (already encoded) blocks, which are determined by the coding allocation applied to the corresponding picture of the block. For example, blocks of an I picture may be non-predictively encoded, or may be predictively encoded (spatial prediction or intra-frame prediction) with reference to already encoded blocks of the same picture. Pixel blocks of a P picture may be predictively encoded via spatial prediction or via temporal prediction with reference to one previously encoded reference picture. Blocks of a B picture may be predictively encoded via spatial prediction or via temporal prediction with reference to one or two previously encoded reference pictures.

[0073] The video encoder (303) may perform encoding operations according to a predetermined video encoding technique or standard, such as ITU-T H.265 Recommendation. In the operation of the video encoder (303), the video encoder (303) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in an input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard used.

[0074] In an embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source encoder (330) may include such data as part of the encoded 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.

[0075] Video can be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often referred to simply as intra-picture prediction) exploits spatial correlation in a given picture, while inter-picture prediction exploits (temporal or other) correlations between pictures. In an example, a particular picture in encoding / decoding, which is referred to as the current picture, is divided into blocks. In the case where a block in the current picture is similar to a reference block in a reference picture that has been previously encoded in the video and is still buffered, the block in the current picture can be encoded by a vector called a motion vector. The motion vector points to a reference block in a reference picture, and in the case of using multiple reference pictures, the motion vector may have a third dimension that identifies the reference picture.

[0076] In some embodiments, a bidirectional prediction technique may be used in inter-picture prediction. According to the bidirectional prediction technique, two reference pictures are used, for example, a first reference picture and a second reference picture that are both before the current picture in the video in decoding order (but may be in the past and future in display order, respectively). A block in the current picture may be encoded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.

[0077] In addition, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.

[0078] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, a picture in a video picture sequence is divided into coding tree units (CTUs) for compression, and the CTUs in the picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), each of which is a luminance CTB and two chrominance CTBs. Each CTU can be recursively split into one or more coding units (CUs) in a quadtree. For example, a 64×64 pixel CTU can be split into a 64×64 pixel CU, or 4 32×32 pixel CUs, or 16 16×16 pixel CUs. In the example, each CU is analyzed to determine the prediction type for the CU, such as an inter-prediction type or an intra-prediction type. The CU is split into one or more prediction units (PUs) according to temporal and / or spatial predictability. Typically, each PU includes a luminance prediction block (PB) and two chrominance PBs. In an embodiment, the prediction operation in decoding (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), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.

[0079] Note that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In an 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.

[0080] An example of an intra block copy mode (also referred to as IntraBC mode or IBC mode) such as used in HEVC and VVC is described below.

[0081] Some IBC coding tools are used as current picture reference (CPR) in the HEVC screen content coding (SCC) extension. The IBC mode can use coding techniques for inter-frame prediction, where in the IBC mode, the current picture (also referred to as the current frame) is used as a reference picture (also referred to as a reference frame). The benefit of using the IBC mode is the reference structure of the IBC mode, in which a two-dimensional (2D) space vector can be used as a representation of the addressing mechanism of the reference sample. The benefit of the architecture of the IBC mode is that the integration of IBC requires relatively minor changes to the specification, and if the manufacturer has implemented certain prediction techniques, such as HEVC version 1, the implementation burden can be reduced. The CPR in the HEVC SCC extension can be a special inter-frame prediction mode, resulting in a syntax structure that is the same as or similar to the syntax structure of the inter-frame prediction mode, and a decoding process similar to the decoding process of the inter-frame prediction mode.

[0082] The IBC mode can be integrated into the inter-frame prediction process. In some examples, the IBC mode (or CPR) is an inter-frame prediction mode, and only intra-frame prediction slices will be prediction slices that allow the use of the IBC mode. When the IBC mode is applicable, the encoder can extend the reference picture list by one entry so that the pointer points to the current picture. For example, the current picture uses a picture-sized buffer of the shared decoded picture buffer (DPB). IBC mode signaling can be implicit. For example, when the selected reference picture points to the current picture, the CU can adopt the IBC mode. In various embodiments, the reference samples used in the IBC process are not filtered, which is different from conventional inter-frame prediction. The corresponding reference picture used in the IBC process is a long-term reference. In order to minimize memory requirements, the encoder can release the buffer after reconstructing the current picture, for example, the encoder releases the buffer immediately after reconstructing the current picture. When the reconstructed picture is a reference picture, the encoder can put the filtered version of the reconstructed picture back into the DPB as a short-term reference.

[0083] In block vector (BV) coding, reference to the reconstructed area can be performed via a 2D BV, which is similar to the MV used in inter prediction. The prediction and coding of the BV can reuse the MV prediction and coding in the inter prediction process. In some examples, the luma BV is integer resolution, rather than the 1 / 4 (or 1 / 4 pixel) precision of the MV used for conventional inter-coded CTUs.

[0084] Figure 4A BV associated with a current CU (401) according to an embodiment of the present disclosure is shown. Each square (400) can represent a CTU. The gray shaded area represents an already encoded area or an already encoded region, and the white unshaded area represents an area or region to be encoded. The current CTU (400(4)) under reconstruction includes the current CU (401), the encoded region (402), and the region to be encoded (403). In the example, after the current CU (401) is encoded, the region (403) will be encoded.

[0085] In an example, for example, in HEVC, the gray shaded area excluding the two CTUs (400(1) to 400(2)) located to the upper right of the current CTU (400(4)) can be used as a reference area in IBC mode to allow wavefront parallel processing (WPP). The BV allowed in HEVC can point to a block within the reference area (e.g., the gray shaded area excluding the two CTUs (400(1) to 400(2))). For example, the BV (405) allowed in HEVC points to the reference block (411).

[0086] In an example, for example, in VVC, in addition to the current CTU (400(4)), in IBC mode, only the left adjacent CTU (400(3)) on the left side of the current CTU (400(4)) is allowed as a reference area. In the example, the reference area used in IBC mode in VVC is within the dotted area (415) and includes the samples being coded. For example, the BV (406) allowed in VVC points to the reference block (412). In the example, the decoded motion vector difference (MVD) or block vector difference (BVD) of the BV is left shifted (e.g., 2 units) before being added to the BV predictor to determine the final BV.

[0087] The IBC mode may be different from the inter prediction mode, and therefore, special processing may be used for implementation and performance reasons as described below. In an embodiment, the IBC reference samples are unfiltered, for example, the reconstructed samples before the in-loop filtering process including but not limited to the deblocking filter (DBF) and the sample adaptive offset (SAO) filter are used as reference samples in the IBC mode, where other inter prediction modes, such as the inter prediction modes used in HEVC, use filtered samples as reference samples. In an embodiment, there is no luma sample interpolation for the IBC mode. In an embodiment, when the chroma BV is a non-integer when the chroma BV is derived from the luma BV, chroma sample interpolation is used. In an embodiment, the chroma BV is a non-integer and the reference block is close to the boundary of the available area. For example, the surrounding reconstructed samples are outside the boundary to perform chroma sample interpolation. BVs pointing to a single line adjacent to the boundary may not be able to avoid such a situation.

[0088] An exemplary IBC architecture, such as used in VVC, can be described as follows. The valid reference area for an IBC mode, such as used in the HEVC SCC extension, may include almost the entire reconstructed area of ​​the current picture, with some exceptions for parallel processing purposes, such as in Figure 4 Described in . Figure 4 The reference area for IBC mode in HEVC and configuration in VVC is shown. Figure 4 , only the CTU (400(3)) to the left of the current CTU (400(4)) can be used as a reference sample area at the start of the reconstruction process of the current CTU (400(4)). In some examples, a disadvantage of the concept in HEVC is that additional memory is required in the DPB, for which the hardware implementation uses external memory. In the example, the additional access to the external memory results in an increase in memory bandwidth, making the use of DPB less attractive. In some embodiments, for example, the IBC mode in VVC can use fixed memory that can be implemented on the chip, and thus significantly reduces the complexity of implementing the IBC mode in the hardware architecture. In an embodiment, significant modifications address signaling concepts that deviate from integration within inter-frame prediction processing, for example in the HEVC SCC extension.

[0089] Figure 5 The reference sample memory (RSM) (510) update process of four intermediate times (501) to (504) during the reconstruction process according to an embodiment of the present disclosure is shown. The light gray shaded area may represent the reference samples of the left neighboring CTU. The dark gray shaded area may represent the reference samples of the current CTU. The white and unshaded area may represent the area to be encoded (e.g., the upcoming encoding area).

[0090] For example, an example of the syntax and semantics of the IBC mode used in VVC can be described as follows. For example, the IBC architecture used in VVC can form a dedicated coding mode, in which the IBC mode is a third prediction mode in addition to the intra prediction mode and the inter prediction mode. For example, when the block size is 64×64 or smaller, the bitstream may carry an IBC syntax element (e.g., an sIBC syntax element) indicating the IBC mode of the coding unit. In an embodiment, the maximum CU size of the IBC mode is 64×64 to implement the continuous memory update mechanism of the RSM. The reference sample addressing mechanism can be the same as the mechanism used in the HEVC SCC extension by representing a two-dimensional offset and reusing a vector encoding process for the inter prediction mode. In the example, the chroma separation tree (CST) is active, and the encoder cannot derive the chroma BV from the luma BV, resulting in the use of the IBC mode only for the luma coding block.

[0091] The reference area and sample memory in the IBC mode used, for example, in VVC may be described below. For example, the IBC design used in VVC may use a fixed memory size (e.g., 128×128) for each color component to store reference samples, thereby making it possible to implement on-chip placement in a hardware implementation. In the example, the maximum CTU size in VVC is 128×128. In an embodiment, when the maximum CTU size configuration is equal to 128×128, the RSM may store samples of a single CTU. In the example, features of the RSM include a continuous update mechanism that may replace the reconstructed samples of the left adjacent CTU with the reconstructed samples of the current CTU.

[0092] Figure 5 An RSM example (eg, a simplified RSM example) of an update mechanism is shown at four intermediate times (501) to (504) during the reconstruction process. Figure 5 , at the first intermediate time (501) indicating the start of reconstruction of the current CTU, in the example, the RSM (510) includes only reference samples of the left adjacent CTU. At the other three intermediate times (502) to (504), the reconstruction process has replaced the samples of the left adjacent CTU with a variant of the current CTU. An implicit partitioning of the RSM (510) can be applied, and the RSM (510) can be divided into four non-overlapping 64×64 regions (511) to (514). When the encoder processes the first coding unit that will be located in the corresponding region when the RSM is mapped to the CTU, a reset of the region can occur, thereby reducing the hardware implementation work.

[0093] exist Figure 5 In the example shown, a fixed memory (e.g., RSM (510)) may be allocated to store reference regions used in IBC mode. A portion of the RSM may be updated at different intermediate times (e.g., (501) to (504)) during an encoding process (e.g., an encoding process or a reconstruction process). Figure 5 Reference areas for IBC mode in VVC and configuration in VVC are shown.

[0094] Reference Figure 5 , the RSM (510) may include a portion of the current CTU and / or a portion of the left adjacent CTU. Figure 5 In the example shown, the size of the RSM is equal to the size of the CTU. The RSM (510) may include parts (511) to (514).

[0095] At the first intermediate time (501) of the encoding process which is the start of the encoding process of the current CTU, the RSM (510) includes the entire left neighboring CTU, and the entire left neighboring CTU can be used as a reference area in the IBC mode at the start of the encoding process of the current CTU. The RSM (510) at the start of the encoding process of the current CTU does not include the current CTU, and the parts (511) to (514) include reconstructed samples of the left neighboring CTU.

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

[0097] At the third intermediate time (503) of the encoding process of the current CTU, the upper left area of ​​the current CTU has been reconstructed. The upper right area of ​​the current CTU includes sub-areas (541) to (543). Sub-area (541) (dark gray shading) has been encoded (e.g., encoded or reconstructed), sub-area (542) is the current CU being encoded (e.g., being encoded or reconstructed), and sub-area (543) (white and unshaded) will be encoded subsequently. Portions (513) to (514) in the RSM (510) store reconstructed samples in the same left adjacent CTU as the first intermediate time (501), while portions (511) to (512) are updated so that portion (511) stores reconstructed samples of the upper left area of ​​the current CTU, and portion (512) stores sub-area (541) of the current CTU. The reference area at the third intermediate time (503) may include (i) reconstructed samples of the left adjacent CTU stored in portions (513) to (514) and (ii) reconstructed samples of the upper left area of ​​the current CTU stored in portion (511) and a sub-area (541) of the current CTU stored in portion (512).

[0098] At the fourth intermediate time (504) of the encoding process of the current CTU, the upper left area, upper right area, and lower left area of ​​the current CTU have been reconstructed. The lower right area of ​​the current CTU includes sub-areas (551) to (553). Sub-area (551) (dark gray shading) has been encoded (e.g., encoded or reconstructed), sub-area (552) is the current CU being encoded (e.g., being encoded or reconstructed), and sub-area (553) (white and unshaded) will be encoded subsequently. Portion (511) stores the reconstructed samples of the upper left area in the same current CTU as the third intermediate time (503), while portions (512) to (514) are updated so that portions (512) to (513) respectively store the reconstructed samples of the upper right area and the lower left area of ​​the current CTU, and portion (514) stores the sub-area (551) of the current CTU. The reference region at the fourth intermediate time (504) may include reconstructed samples of the current CTU stored in portions (511) to (514). The RSM (510) at the fourth intermediate time (504) does not include a region in a left neighboring CTU.

[0099] Figure 6 The left neighboring CTU (601) and the current CTU (602) are shown to represent the valid reference area due to the RSM design and continuous update mechanism. The left neighboring CTU (601) may include areas (611) to (614). The current CTU (602) may include areas (621) to (624). The area (623) in the current CTU (602) includes the current CU (603) being encoded, the sub-area (651) that has been encoded, and the sub-area (653) to be encoded. The gray shaded area may include samples stored in the RSM, and the white and unshaded area may include replaced samples or unreconstructed samples.

[0100] Figure 6 An example of the continuous update concept of RSM is shown in space. Figure 6 At reconstruction time in the example shown, the RSM update process has replaced the samples covered by the white and unshaded regions (611) to (613) in the left neighboring CTU (601) with the gray shaded regions (e.g., regions (621) to (622) and sub-region (651)) of the current CTU (602). Figure 6 , the RSM may include (i) the region (614) in the left adjacent CTU (601) and (ii) the regions (621) to (622) and the sub-region (651) of the current CTU (602).

[0101] For example, when the maximum CTU size is smaller than the RSM size (e.g., 128×128), the RSM may include more than a single left-neighboring CTU, and in IBC mode, multiple left-neighboring CTUs may be used as reference regions. For example, when the maximum CTU size is equal to 32×32, an RSM with a size of 128×128 may store samples of 15 left-neighboring CTUs.

[0102] An example block vector (BV) encoding of the IBC mode, for example, used in VVC, is described below. The BV encoding may employ processing specified for inter prediction. The BV encoding of the IBC mode may 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 history-based candidates to avoid duplicate entries in the final candidate list. In addition, in inter prediction, candidate list construction may include paired average candidates. In an embodiment, the IBC list construction process considers only the BVs of two spatial neighbors and five history-based BVs (HBVPs), where only the first HBVP is compared to the spatial candidate when added to the candidate list. Although conventional inter prediction may use two different candidate lists, one for merge mode and the other for regular mode, the candidate list in the IBC mode is used for both cases. In the IBC mode, the merge mode may use up to six candidates in the candidate list, and the regular mode only uses the first two candidates in the candidate list. Block vector difference (BVD) encoding in IBC mode may employ the motion vector difference (MVD) process used in inter prediction, thereby producing a final BV of any suitable size. In an embodiment, the reconstructed BV may point to an area outside the reference sample area, and therefore, correction is performed on the reconstructed BV, for example, by removing the absolute offset in each direction (e.g., each of the horizontal and vertical directions) using a modulo operation using the width and height of the RSM.

[0103] The derivation process of chroma BV may include the following. When the current coding tree type is SINGLE_TREE, the chroma block corresponds to the luma block. By considering the chroma sampling format (e.g., 4:2:0, 4:2:2) and the appropriate scaling of the chroma BV precision, the BV of the chroma block encoded in IBC mode can be derived from the BV of the luma block. The derivation process can be described as follows. The input of the process may include a luma BV with a 1 / 16 fractional sample precision bvL. The output of the process may include a chroma BV with a 1 / 32 fractional sample precision bvC. The chroma BV can be derived from the corresponding luma BV. The chroma BV bvC can be derived as follows: bvC[0]=((bvL[0]>>(3+SubWidthC))*32 Equation (1) bvC[1]=((bvL[1]>>(3+SubWidthC))*32 Equation (2)

[0104] The variables SubWidthC and SubHeightC may be specified in Table 1 according to the chroma format sampling structure, and the chroma format sampling structure may be specified by sps_chroma_format_idc. Table 1 - SubWidthC and SubHeightC values ​​derived from sps_chroma_format_idc sps_chroma_format_idc Chroma Format SubWidthC SubHeightC 0 monochrome 1 1 1 4:2:0 2 2 2 4:2:2 2 1 3 4:4:4 1 1

[0105] In monochrome sampling (eg, the chroma format is monochrome), there is only one array of samples, which is nominally considered to be the luma array.

[0106] In 4:2:0 sampling, each of the two chroma arrays may have half the height and half the width of the luma array.

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

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

[0109] The number of bits required to represent each of the samples in the luma array and the chroma array in the video sequence may be in the range of 8 to 16, inclusive.

[0110] The IntraBC mode used, for example, in AV1 is described below. In an embodiment, for example in AV1, the intra block copy (IntraBC) mode may use a vector to locate a prediction block in the same picture of the current block. The vector is called a block vector (BV). The BV may be signaled in the bitstream, and the precision of representing the BV may be integer points. The prediction process in IntraBC mode is similar to inter-picture prediction. The difference between IntraBC mode and inter-picture prediction is that in IntraBC mode, the predictor block may be formed by reconstructed samples of the current picture before loop filtering is applied. Therefore, the IntraBC mode may be considered as "motion compensation" within the current picture using the BV as the MV.

[0111] For the current block, a flag indicating whether the IntraBC mode is enabled for the current block may first be sent in the bitstream. Then, if the current block is encoded with the IntraBC mode, the BV difference may be obtained by subtracting the predicted BV from the current BV. The BV difference may be classified into multiple types (e.g., four types) based on the horizontal and vertical components of the BV difference. The type information may be signaled into the bitstream, and the BV difference values ​​of the two (horizontal and vertical) components may then be signaled.

[0112] IntraBC mode is very effective for encoding certain content such as screen content. In the example, IntraBC mode also brings challenges to hardware design. In order to facilitate hardware design, the following modifications can be adopted. When IntraBC mode is allowed, the loop filter is disabled. The loop filter may include DBF, Constrained Directional Enhancement Filter (CDEF), Loop Recovery (LR) filter, etc. By disabling the loop filter, a second picture buffer dedicated to enabling IntraBC mode can be avoided.

[0113] To facilitate parallel decoding, the prediction cannot exceed the restricted area. In an implementation, for a super block or CTU, if the coordinates of the upper left position of the super block (or CTU) are (x0, y0), the prediction at position (x, y) can be accessed through the IntraBC mode only when the vertical coordinate is less than y0 and the horizontal coordinate is less than x0+2(y0-y).

[0114] To allow for hardware writeback latency, the area to be reconstructed immediately cannot be accessed by IntraBC prediction. The restricted area to be reconstructed immediately can be 1 to n Super Blocks (or CTUs). Therefore, in addition to the above modifications, if the coordinates of the upper left position of the Super Block (or CTU) are (x0, y0), then the prediction at position (x, y) can be accessed by IntraBC mode if the vertical coordinate is less than y0 and the horizontal coordinate is less than x0+2(y0-y)-D, where D represents the area to be reconstructed immediately restricted for IntraBC mode. When D is, for example, two Super Blocks specified in AVM, the prediction area is as follows: Figure 7 shown.

[0115] Figure 7An example of a prediction area of ​​the IntraBC mode in a super block prediction according to an embodiment of the present disclosure is shown. Each square may represent a super block or a CTU. The gray shaded area may include an allowed search area, for example, an allowed search area accessible in IBC mode for the current super block (710) in the corresponding reconstruction. For example, when D includes two super blocks (or two CTUs), the black shaded area may include an unallowed search area that is inaccessible in IBC mode for the corresponding current super block (710). The white unshaded area includes the super block to be encoded (e.g., reconstructed). In the example, for the current super block (710 (1)), the area to be reconstructed immediately includes two super blocks (721) to (722) located to the left of the current super block (710 (1)) (e.g., D is 2 super blocks). Super blocks (721) to (722) are inaccessible to the current super block (710 (1)). The allowed search area (730) is accessible to the current super block (710 (1)).

[0116] In the following, an IntraBC mode utilizing local reference ranges such as in AV1 may be described. The IntraBC mode may utilize local reference ranges such as in the AV1 codec. In an embodiment, one super block (SB) size of an "on-chip" memory (referred to as RSM) is allocated to store reference samples, wherein a 64×64 based memory reuse mechanism is applied, e.g. Figure 8 and FIG. 9A to FIG. 9B As shown in . For example, the following changes (1) to (3) are made on top of the design of the IntraBC mode in AV1. (1) The maximum block size in the IntraBC mode can be limited to 64×64. (2) The reference block and the current block are in the same SB row. In the example, the reference block can only be located in the current SB or in one SB to the left of the current SB. (3) When any of the 64×64 unit reference sample memories starts to be updated with reconstructed samples from the current SB, the previously stored reference samples in the entire 64×64 unit (e.g., from the left SB) are marked as unavailable for generating prediction samples for the IntraBC mode.

[0117] Figure 8An example of a memory reuse mechanism or memory update process in an RSM during decoding of a CTU or SB (e.g., current SB (801)) in a current picture according to an embodiment of the present disclosure is shown. Rows 1 to 2 show examples from the perspective of an RSM. Row 1 shows an RSM (810) in state (0). Row 2 shows an RSM (810) in states (1) to (4). Row 3 shows an example from the perspective of a picture such as a current SB (801) being encoded and a left adjacent SB (802) in states (0) to (4) in the current picture. Quadtree splitting can be used at the SB root. An SB can include four regions. In the example, the size of each of the four regions is 64×64. In the example, the current SB (801) includes four regions 4 to 7, and the left adjacent SB (802) includes four regions 0 to 3.

[0118] Reference Figure 8 , at the beginning of encoding each SB (state (0)), the RSM stores samples of the previously encoded SB (e.g., the left adjacent SB (802)). When the current block is located in one of the four regions (e.g., four 64×64 regions) in the current SB (801) (e.g., as shown in one of the states (1) to (4)), the corresponding region in the RSM (810) can be cleared and used to store samples of the current encoding region (e.g., the current 64×64 encoding region). Therefore, the samples in the RSM (810) can be gradually updated by the samples in the current SB (801), as shown from state (1) to state (4).

[0119] Referring to state (1), the current block (811) is located in region 4 in the current SB (801), and the corresponding region (e.g., the upper left region) in the RSM (810) can be cleared and used to store samples of region 4, which is the current region being encoded. Referring to row 3, a BV (e.g., an encoded BV or a 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 marked 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) in the RSM (810). At state (1), the search range (841) includes regions 1 to 3 in the left adjacent SB (802) and an encoded sub-region (861) in region 4. The search range (841) does not include region 0 in the left adjacent SB (802).

[0120] Referring to state (2), the current block (812) is located in region 5 in the current SB (801), and the corresponding region (e.g., the upper right region) in the RSM (810) can be cleared and used to store samples of region 5, which is the current region being encoded. 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 marked by a dotted line). The corresponding offset (852) in the RSM (810) can point from the current block (812) to the reference block (832) in the RSM (810). At state (2), the search range (842) includes (i) regions 2 to 3 in the left adjacent SB (802) and (ii) regions 4 and coded sub-regions (862) in region 5 in the current SB (801). The search range (842) does not include regions 0 to 1 in the left adjacent SB (802).

[0121] Referring to state (3), the current block (813) is located in region 6 in the current SB (801), and the corresponding region (e.g., the lower left region) in the RSM (810) can be cleared and used to store samples of region 6, which is the current region being encoded. 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 marked by a dotted line). The corresponding offset (853) in the RSM (810) can point from the current block (813) to the reference block (833) in the RSM (810). At state (3), the search range (843) includes (i) region 3 in the left adjacent SB (802) and (ii) regions 4 to 5 in the current SB (801) and the encoded sub-region (863) in region 6. The search range (843) does not include regions 0 to 2 in the left adjacent SB (802).

[0122] Referring to state (4), the current block (814) is located in region 7 in the current SB (801), and the corresponding region (e.g., the lower right region) in the RSM (810) can be cleared and used to store samples of region 7, which is the current region being encoded. 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 marked by a dotted line). The corresponding offset (854) in the RSM (810) can point from the current block (814) to the reference block (834) in the RSM (810). At state (4), the search range (844) includes regions 4 to 6 in the current SB (801) and the encoded sub-region (864) in region 7. The search range (844) does not include regions 0 to 3 in the left adjacent SB (802).

[0123] When the current SB (801) has been completely encoded (state (4)), the entire RSM (810) may be filled with samples (eg, all samples) of the current SB (801).

[0124] exist Figure 8 In the example shown, the current SB (801) is first segmented using quadtree splitting. The coding order of the four 64×64 regions may be 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), where the upper left region is encoded first, and the lower right region is encoded after the upper left region, the upper right region, and the lower left region are encoded. In a case such as Fig. 9B In the other block splitting decisions shown, the RSM update process can be similar, for example, replacing the corresponding area in the RSM with the reconstructed samples in the current SB.

[0125] FIG. 9A to FIG. 9B An example of memory update processing in RSM during decoding of a current SB (or CTU) (901) according to an embodiment of the present disclosure is shown, wherein (a) horizontal splitting at the SB root ( Fig.9A ) or (b) vertical split at the SB root ( Fig. 9B ).

[0126] exist FIG. 9A to FIG. 9B , the left adjacent SB (902) has been encoded. The current SB (901) is being encoded (e.g., encoded or decoded). In the example, the size of each of the current SB (901) and the left adjacent SB (902) is 128×128. Each of the current SB (901) and the left adjacent SB (902) may include four regions (e.g., four blocks) of a size of 64×64. The current SB (901) may include blocks 4 to 7, and the left adjacent SB (902) may include blocks 0 to 3.

[0127] exist Fig.9A In the example, horizontal splitting is performed at the SB root, followed by vertical splitting. 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 an upper left block (state 1), an upper right block (state 2), a lower left block (state 3), and a lower right block (state 4).

[0128] exist Fig. 9B In the example, vertical splitting is performed at the SB root, followed by horizontal splitting. The coding order of the current SB (901) may be the upper left block (state 1), the lower left block (state 2), the upper right block (state 3), and the lower right block (state 4).

[0129] Reference FIG. 9A to FIG. 9B , depending on the position of the current coding block relative to the current SB (901), the following items may be applied:

[0130] 1.Reference FIG. 9A to FIG. 9B In state (1) in , if the current block (931) falls into the upper left block (e.g., block 4) (e.g., 64×64 block) of the current SB (901), the current block (931) may refer to reference samples in lower right block 3 (e.g., 64×64 block), lower left block 2 (e.g., 64×64 block), and upper right block 1 (e.g., 64×64 block) of the left SB (902) in addition to the already reconstructed samples in block (961) in the current SB (901). The search range of the current block (931) may include blocks 1 to 3 and block (961).

[0131] 2.Reference Fig.9A Status (2) or Fig. 9B In state (3), if the current block (932) falls into the upper right block 5 (e.g., 64×64 block) of the current SB (901), in addition to the samples that have been reconstructed in the current SB (901), (a) if the luma sample located at (0,64) relative to the current SB (901) has not been reconstructed, for example, Fig.9A As shown in state (2) in , the current block (932) can refer to the reference samples in the lower left block 2 (e.g., 64×64 block) and the lower right block 3 (e.g., 64×64 block) of the left SB (902), and the search range of the current block (932) can include blocks 2 to 4 and block (962); (b) Otherwise, if the luminance sample located at the upper left corner (e.g., (0,64) relative to the current SB (901)) has been reconstructed, for example Fig. 9B As shown in state (3) in , the current block (932) can refer to the reference sample in the lower right block 3 (e.g., 64×64 block) of the left SB (902), and the search range of the current block (932) may include blocks 3, 4 and 6 and block (962).

[0132] 3.Reference Fig.9A Status (3) or Fig. 9B In state (2), if the current block (933) falls into the lower left block of the current SB (901), in addition to the samples that have been reconstructed in the current SB (901), (a) if the luminance position (64,0) relative to the current SB (901) has not been reconstructed, for example, in Fig. 9BAs shown in state (2) in , the current block (933) can refer to the reference samples in the upper right block 1 (e.g., 64×64 block) and the lower right block 3 (e.g., 64×64 block) of the left SB (902), and the search range of the current block (933) can include blocks 1, 3 and 4 and block (963); (b) Otherwise, if the luminance sample of block 5 located at the upper left corner (e.g., relative to (64,0) of the current SB (901)) has been reconstructed, for example Fig.9A As shown in state (3) in , the current block (933) can refer to the reference sample in the lower right block 3 (e.g., 64×64 block) of the left SB (902), and the search range of the current block (933) can include blocks 3 to 5 and block (963).

[0133] 4. If the current block (934) falls into the lower right block 7 of the current SB (901), the current block (934) can only refer to the reconstructed samples in the current SB (901), such as the reconstructed samples in blocks 4 to 6 and block (964), and the search range of the current block (934) may include blocks 4 to 6 and block (964).

[0134] Fig.10 An example of an intra-frame template matching prediction (IntraTMP) mode according to an embodiment of the present disclosure is shown. In an embodiment, for example in ECM software, IntraTMP is a special intra-frame prediction mode that can copy the best prediction block (1021) from a reconstructed portion of a current frame (or current picture), where a template (e.g., an L-shaped template) (1020) of the best prediction block (1021) can match a current template (1010) of a current block (1011). For a predefined search range, the encoder can search for a template (1020) that is most similar to the current template (1010) in the reconstructed portion of the current frame, and can use the corresponding block (1021) as a prediction block. The encoder can signal the use of the IntraTMP mode, and can perform the same prediction operation at the decoder side.

[0135] The prediction signal may be generated by matching a current template (1010), eg, an L-shaped causal neighbor of the current block (1011), with a template (eg, (1020)) of another block (eg, (1021)) in a predefined search area. Fig.10 The exemplary search area shown may include multiple CTUs (or SBs). Fig.10 , the search area may include the current CTU R1 (eg, a portion of the current CTU R1), the upper left CTU R2, the upper CTU R3, and the left CTU R4. The cost function may include any suitable cost function, such as the sum of absolute differences (SAD).

[0136] Within each region, the decoder can search for a template (e.g., (1020)) having a minimum cost (e.g., minimum SAD) relative to the current template (1010), and can use a block (e.g., (1021)) associated with the template having the minimum SAD as a prediction block.

[0137] The dimensions of the region indicated by (SearchRange_w, SearchRange_h) can be set to be proportional to the block dimensions (BlkW, BlkH) to have a fixed number of SAD comparisons per pixel. SearchRange w=a*BlkW Equation (3) SearchRange h=a*BlkH Equation (4)

[0138] The parameter "a" may be a constant that controls the trade-off between gain and complexity. In the example, "a" is 5.

[0139] The intra template matching tool may be enabled for CUs with a certain size, e.g., width and height less than or equal to 64. The maximum CU size for the IntraTMP mode may be configured.

[0140] For example, when decoder-side intra mode derivation (DIMD) is not used for the current CU, the IntraTMP mode may be signaled at the CU level through a dedicated flag.

[0141] In the context of a dual tree block structure, the chroma IBC mode may be enabled. In an embodiment, for example in VVC, when the coding tree type is a dual tree type such as a chroma separation tree (e.g., DUAL_TREE_CHORMA), the IBC mode is applied only to luma coding blocks, and chroma intra coding blocks may only use other intra prediction modes, and the coding efficiency of intra chroma coding blocks for chroma separation trees (e.g., DUAL_TREE_CHORMA) is limited. In some examples, the chroma IBC mode may be enabled for the chroma separation tree case.

[0142] In an embodiment, all reconstructed reference samples within the same slice or tile may be used for IBC prediction. In various examples, a stricter restriction is applied such that only a subset of samples in the reference region is allowed, e.g. Figures 4 to 8 , Fig.9A and Fig. 9B Described in .

[0143] For example, when the CTU size in the luma sample is 128×128, in addition to the reconstructed portion of the current CTU, multiple left CTUs (e.g., previously encoded CTUs in the same row as the current CTU) and two CTU rows above the current row may be referenced. The search range of the IBC mode may include the reconstructed portion of the current CTU, multiple left CTUs, and two CTU rows above the current row.

[0144] In another example, when the CTU size in the luma sample is 256×256, in addition to the reconstructed portion of the current CTU, multiple left CTUs (e.g., previously encoded CTUs in the same row as the current CTU) and one CTU row above the current row may be referenced. The search range of the IBC mode may include the reconstructed portion of the current CTU, multiple left CTUs, and one CTU row above the current row.

[0145] The difference between the above two cases ensures that the memory used to store the reference samples for IBC prediction is roughly the same.

[0146] In some embodiments, when the chroma IBC mode is used for the CST case, for the chroma coding block, the corresponding luma samples may not be aligned with the same coding block size and the same position. For example, the corresponding luma samples are collocated with the chroma coding block and may include luma samples from multiple luma blocks. Therefore, the verification of the chroma BV may be different from the verification of the luma BV. In some examples, an effective method is needed to determine whether the chroma BV is valid for the CST case. The present disclosure relates to enabling IBC mode on chroma components, such as verification of chroma BV of chroma coding blocks, when using separate intra-frame luma / chroma coding tree structures (e.g., intra-frame dual trees). For example, an effective method is provided in the present disclosure to determine whether the chroma BV of a chroma block is valid in the case of a chroma separation tree, and the method (e.g., in Figures 11 to 15 ) can be effective in the case of chroma separation trees and improve coding efficiency.

[0147] In an embodiment, the verification of the BV of a block includes two criteria: a) whether the reference block pointed to by the BV has been reconstructed; and b) whether the reference block can be allowed to be used for IBC prediction or IBC mode. When these two criteria are met, for example, the reference block pointed to by the BV has been reconstructed and the reference block is allowed to be used in IBC mode, the BV is a valid BV. Otherwise, the BV is an invalid BV.

[0148] The second criterion—for example, that the reference block may be allowed for IBC mode—may include that the reference block is within an allowed IBC reference range for the block. The allowed IBC reference range for the block may include any suitable coded region (e.g., a reconstructed region) in the current picture that includes the block. Various examples of allowed IBC reference ranges for blocks are described in the present disclosure, for example (i) in addition to Figure 4 The two CTUs shown are for the current CU (401) used, for example, in HEVC (i) the gray shaded area outside (400(1) to 400(2)); (ii) the coded samples (eg, reconstructed samples) in the dashed area (415), which includes Figure 4 The current CTU (400(4)) and the left adjacent CTU (400(3)) shown, for example, used in VVC; (iii) the current CTU (400(4)) and the left adjacent CTU (400(3)) shown, for example, used in VVC Figures 5 and 6 , where RSM and RSM update processing with fixed memory size are used; (iv) such as used in AV1 and in Figure 7 (v) a search range such as that used in AV1 (e.g., Figure 8 (841) to (844) in AV1) or in FIG. 9A to FIG. 9B one of the search ranges described in; (vi) for example in Fig.10 and (vii) any suitable search scope for IBC mode, IntraBC mode or IntraTMP mode, such as the search scope described in the present disclosure.

[0149] The allowed IBC reference range of a block may also be referred to as a reference range, reference region, search range, search region, etc. In some examples, when the allowed IBC reference range is restricted, such as to the current CTU, the allowed IBC reference range of a block is referred to as a local reference range.

[0150] In an embodiment, a region (or coding region) (1102) in a picture being encoded (e.g., being reconstructed) or a current picture (1101) includes a luma coding region (1120) and a chroma coding region (1110). The chroma coding region (1110) is juxtaposed with the luma coding region (1120), for example, the chroma coding region (1110) and the luma coding region (1120) correspond to the same physical region (1102) in the current picture (1101). The dimensions (e.g., width and / or height) of the chroma coding region (1110) and the luma coding region (1120) may be related by variables SubWidthC and SubHeightC, such as specified in Table 1. The variables SubWidthC and SubHeightC may depend on a chroma format sampling structure (or chroma sampling format), such as 4:2:0, 4:2:2, etc., such as specified in Table 1. In Fig.11 In the example shown, the chroma format sampling structure is 4:2:0, and the width and height of the chroma coding area (1110) are 1 / 2 of the width and height of the luma coding area (1120).

[0151] The coding tree type may be a dual tree type, such as the dual tree type used in VVC. For the dual tree type of region (1102), the luma coding region (1120) and the chroma coding region (1110) may be partitioned using two separate coding tree structures. In an example, region (1102) is encoded using reconstructed samples in picture (1101) using IBC mode, IntraBC mode, IntraTMP mode, etc. In an example, picture (1101) is an intra picture (I picture). The luma coding region (1120) and the chroma coding region (1110) may be partitioned using separate intra luma / chroma coding tree structures (e.g., intra dual trees).

[0152] The luma coding region (1120) may be partitioned using any suitable coding tree structure. The chroma coding region (1110) may be partitioned using any suitable coding tree structure. Fig.11 In the example shown, the chroma coding area (1110) is divided into chroma blocks (1111) to (1112) by, for example, a binary tree. The chroma block (1111) will be encoded (e.g., encoded or reconstructed) and can be referred to as a current chroma block. In the example, the chroma block (1112) will be encoded after the current chroma block (1111) is encoded. Fig.11In the example shown, the luma coding area (1120) is divided into luma blocks (1121) to (1129) by, for example, quadtree splitting, binary tree, etc. For example, the luma coding area (1120) is divided into 4 blocks using quadtree splitting. The upper left block of the luma coding area (1120) is also divided into luma blocks (1121) to (1122) using a binary tree. The upper right block of the luma coding area (1120) is also divided into luma blocks (1127) to (1128) using a binary tree. The lower left block of the luma coding area (1120) is also divided into luma blocks (1123) to (1126) using quadtree splitting. The lower right block of the luma coding area (1120) is not divided and is a luma block (1129).

[0153] In an embodiment, the region (1102) may be a current CTU being encoded (e.g., being reconstructed) in the picture (1101), the luma coding region (1120) is a luma coding tree block (CTB) in the current CTU (1102), and the chroma coding region (1110) is a chroma CTB in the current CTU (1102). The luma CTB and the chroma CTB may be partitioned using separate coding tree structures, such as described above.

[0154] In an embodiment, a current CTU being encoded (e.g., being reconstructed) in a picture (1101) may be partitioned into coding units, such as four coding units using a quadtree split. The region (1102) may be a coding unit of the four coding units. The luma coding region (1120) and the chroma coding region (1110) in the coding unit (or region (1102)) may be partitioned using separate coding tree structures, such as those described above.

[0155] A chroma block vector (BV) (1113) of a current chroma block (1111) in a chroma coding area (1110) may be determined. The current chroma block (1111) may be encoded using an IBC mode, an IntraBC mode, or an IntraTMP mode. The chroma BV (1113) may indicate a chroma reference block (1131) in a picture (1101). Whether the chroma BV (1113) is valid may be determined based on collocated luma samples of the current chroma block (1111) and collocated luma samples of the chroma reference block (1131).

[0156] When dual trees are used for region (1102), the current chroma block (1111) may be collocated with one or more luma blocks in the luma coding region (1120). The number of luma blocks collocated with the current chroma block (1111) may depend on the coding tree structure used to partition region (1102). Fig.11, the current chroma block (1111) may be collocated with the luma blocks (1121) to (1126). The luma area (1141) in the luma coding area (1120) includes the luma blocks (1121) to (1126) and is collocated with the current chroma block (1111). The collocated luma samples of the current chroma block (1111) may include luma samples in the luma area (1141) (or in the luma blocks (1121) to (1126)).

[0157] The chroma reference block (1131) may be collocated with the luma region (1132), for example, the chroma reference block (1131) and the luma region (1132) correspond to the same physical region (1103) in the current picture (1101). The region (1103) may include the chroma reference block (1131) and the luma region (1132). The collocated luma samples of the chroma reference block (1131) may include luma samples in the luma region (1132). The luma region (1132) may include, for example, one or more luma blocks according to a coding tree structure for partitioning (i) the luma region (1132) or (ii) a luma CTU including the luma region (1132).

[0158] In an embodiment, before encoding the current chroma block (1111), luma samples in the luma coding area (1120) and the luma area (1132) have been encoded (eg, reconstructed).

[0159] In response to determining that the chroma BV (1113) is valid, the current chroma block (1111) may be encoded (e.g., encoded or reconstructed) based on the chroma reference block (1131) indicated by the chroma BV (1113). In an example, if the chroma BV (1113) is invalid, the chroma BV (1113) may be corrected to obtain a valid chroma BV (e.g., using a modulo operation of the width and height of the RSM corrected by the scaling factor as described above to remove the absolute offset in each direction). The valid chroma BV may be used to reconstruct the current chroma block (1111).

[0160] According to an embodiment of the present disclosure, the chroma BV is determined to be valid if the following two criteria are met: (i) the collocated luma samples (e.g., luma samples in luma region (1132)) of the chroma reference block (1131) are located within the allowed IBC reference range of the luma region (1141) including the collocated luma samples of the current chroma block (1111), and (ii) the chroma samples in the chroma reference block (1131) have been reconstructed. In e.g. Fig.11In the example shown, the first standard requires that if the luma region (1141) is a luma block to be encoded using IBC mode, IntraBC mode, IntraTMP mode, or similar modes, then the luma samples in the luma region (1132) are within the allowed IBC reference range for the luma region (1141). In the present disclosure, for example, Figures 4 to 8 , FIG. 9A to FIG. 9B and Fig.10 An example of an allowable IBC reference range for the brightness zone (1141) is described in .

[0161] In an embodiment, the allowed IBC reference range includes reconstructed luma samples in a current CTU and / or one or more previously reconstructed CTUs.The current CTU includes a region (1102).

[0162] In an embodiment, if the chroma BV (1113) is invalid, the chroma BV (1113) may be corrected to obtain a valid chroma BV. The current chroma block (1111) may be encoded (e.g., encoded or reconstructed) based on another chroma reference block indicated by the valid chroma BV. For example, (i) the collocated luma samples of the other chroma reference block are within the allowed IBC reference range of the luma region (1141), and (ii) the chroma samples in the other chroma reference block have been reconstructed.

[0163] In an embodiment, the chroma BV (1113) can be determined by explicitly decoding the chroma BV (1113) from the bitstream (e.g., from the encoding information in the bitstream), which is similar to decoding the MV used in inter-frame prediction. The prediction and encoding of the chroma BV (1113) can reuse the MV prediction and encoding in the inter-frame prediction process.

[0164] In an embodiment, the chroma BV (1113) may be determined by deriving the chroma BV (1113), for example, implicitly using an IntraTMP mode, a derived block vector mode, a direct block vector (DBV) mode, or the like.

[0165] An example of direct block vector (DBV) mode is described below. When the chroma dual tree is activated in an intra slice, for a chroma CU encoded in direct block vector (DBV) mode, if one of the luma blocks in multiple positions (e.g., 5 positions) of the luma component is encoded in IBC mode or IntraTmp mode, a block vector (e.g., luma BV bvL) is used to derive the chroma BV (bvC) of the chroma CB. The block vector scaling process may be determined based on template matching.

[0166] In an example, the coding information in the bitstream includes a flag (e.g., sps_qtbtt_dual_tree_intra_flag) indicating that the luma coding region (1120) and the chroma coding region (1110) are partitioned using two separate coding tree structures. The flag can be signaled at any suitable level, such as a sequence level in a sequence parameter set (SPS). In an example, the flag sps_qtbtt_dual_tree_intra_flag equal to 1 specifies that: for an I slice, each CTU is split into coding units with 64×64 luma samples using implicit quadtree splitting, and these coding units are roots of two independent coding_tree syntax structures for luma components and chroma components. The flag sps_qtbtt_dual_tree_intra_flag equal to 0 specifies that a separate coding_tree syntax structure is not used for an I slice. When sps_qtbtt_dual_tree_intra_flag is not present, it is inferred to be equal to 0.

[0167] According to another embodiment of the present disclosure, whether the chroma BV (1113) is valid may be determined based on (i) whether the chroma samples in the chroma reference block (1131) have been reconstructed and (ii) whether the chroma reference block (1131) is within the allowed IBC reference range of the current chroma block (1111). In an embodiment, the allowed IBC reference range of the current chroma block (1111) is scaled according to the allowed IBC reference range of the corresponding luma region. The corresponding luma region may include collocated luma samples of the current chroma block (1111) (e.g., luma samples in luma region (1141)). In the example, the corresponding luma region is luma region (1141).

[0168] The scaling factor between the allowed IBC reference range of the current chroma block (1111) and the allowed IBC reference range of the luma region (1141) may depend on the chroma format sampling structure.

[0169] The scaling factor may include a horizontal scaling factor and a vertical scaling factor. In response to the chroma format sampling structure being 4:2:0, the horizontal scaling factor and the vertical scaling factor are 2 and 2, respectively. For example, when used in the chroma case, the luma width and luma height are scaled down by a factor of 2. In the 4:2:0 format, the dimension in the horizontal direction (e.g., the horizontal dimension) of the allowed IBC reference range along the current chroma block (1111) is 1 / 2 of the horizontal dimension of the allowed IBC reference range of the luma region (1141), and the dimension in the vertical direction (e.g., the vertical dimension) of the allowed IBC reference range along the current chroma block (1111) is 1 / 2 of the vertical dimension of the allowed IBC reference range of the luma region (1141). The shape of the allowed IBC reference range of the luma region (1141) may be any suitable shape, such as Figure 4 Rectangular shape as shown or Figure 6 , Figure 8 , Fig.9A and Fig. 9B Irregular shape shown.

[0170] In response to the chroma format sampling structure being 4:2:2, the horizontal scaling factor and the vertical scaling factor are 2 and 1, respectively. For example, in the 4:2:2 format, in the chroma case, the luma width will be scaled down by a factor of 2, and the luma height may remain unchanged. In response to the chroma format sampling structure being 4:4:4, the horizontal scaling factor and the vertical scaling factor are 1 and 1, respectively.

[0171] In an embodiment, in order to determine whether the chroma BV (1113) of the current chroma block (1111) is valid, the parameters designed for the luma case (e.g., parameters related to the width and / or height of the region) may be scaled to the chroma case accordingly. For chroma channels or components (e.g., U and V channels), as described above, the scaling factors may be the same or different for different dimensions (e.g., width and / or height).

[0172] Fig.12 A flow chart outlining a process (1200) according to an embodiment of the present disclosure is shown. The process (1200) may be used for a video decoder. In various embodiments, the process (1200) is performed by a processing circuit system, such as a processing circuit system that performs the functions of a video decoder (110), a processing circuit system that performs the functions of a video decoder (210), etc. In some embodiments, the process (1200) is implemented as software instructions, so when the processing circuit system executes the software instructions, the processing circuit system performs the process (1200). The process (1200) starts at (S1201) and proceeds to (S1210).

[0173] At (S1210), a bitstream of a current region (e.g., region (1102)) in a picture (e.g., picture (1101)) is received. The current region (e.g., (1102)) to be reconstructed includes a luma coding region (e.g., (1120)) and a chroma coding region (e.g., (1110)). Coding information in the bitstream may indicate that the luma coding region and the chroma coding region are split using two separate coding tree structures. In an example, the coding information in the bitstream includes a flag (e.g., sps_qtbtt_dual_tree_intra_flag) indicating that the luma coding region and the chroma coding region are split using two separate coding tree structures.

[0174] In an example, the current region is a current CTU to be reconstructed, the luma coding region is a luma coding tree block (CTB) in the current CTU, and the chroma coding region is a chroma CTB in the current CTU.

[0175] In another example, a current CTU in a picture is split into four coding units using quadtree splitting, and the current region is a coding unit among the four coding units.

[0176] At (S1220), a chroma block vector (BV) (e.g., (1113)) of a current chroma block (e.g., (1111)) in reconstruction in a chroma coding region (e.g., (1110)) may be determined, e.g., Fig.11 The chroma BV may indicate a chroma reference block (eg, (1131)) in a picture (eg, (1101)).

[0177] In an example, BV encoding adopts the process specified for inter prediction, but uses simpler rules for candidate list construction. In an example, the IBC BV can be derived from the BV of the luma block.

[0178] In an example, the current chroma block is predicted in one of (i) IBC mode, (ii) IntraTMP mode, and (iii) DBV mode.

[0179] The chroma BV may be determined by, for example, explicitly decoding the chroma BV based on the encoding information. In an example, in response to predicting the current chroma block in IBC mode, the chroma BV is explicitly decoded based on the encoding information. The chroma BV may be determined by, for example, implicitly deriving the chroma BV using an IntraTMP mode, a DBV mode, or other mode. In an example, in response to predicting the current chroma block in IntraTMP mode or DBV mode, the chroma BV is derived using the IntraTMP mode or the DBV mode, respectively.

[0180] The above method can be applied not only to explicitly decode chrominance BV verification, but also to other derived BV modes, such as IntraTMP mode, DBV mode, etc.

[0181] At (S1230), it may be determined whether the chroma BV is valid based on the collocated luma samples of the current chroma block and the collocated luma samples of the chroma reference block, e.g. Fig.11 Described in .

[0182] In an example, in order to determine whether the chroma block vector is valid, the collocated luma samples of the current chroma block can be used for evaluation. In an example, the collocated luma block should be within the allowed IBC reference range or within the current CTU, and the reference chroma block should have been reconstructed. In an example, whether the chroma BV is valid is determined based on whether the collocated luma samples of the chroma reference block are within the allowed range of the luma region including the collocated luma samples of the current chroma block. For example, the disclosed method may determine whether the chroma BV is valid based on whether the collocated luma samples of the current chroma block and the collocated luma samples of the chroma reference block are within the allowed range. In response to determining that the chroma BV is valid, the disclosed method may reconstruct the current chroma block based on the chroma reference block indicated by the chroma BV.

[0183] In an embodiment, the chroma BV is determined to be valid in response to (i) the collocated luma samples of the chroma reference block being within an allowed intra block copy (IBC) reference range of a luma region including the collocated luma samples of the current chroma block and (ii) the chroma samples in the chroma reference block have been reconstructed.

[0184] In an example, the allowed IBC reference range includes reconstructed luma samples in a current CTU and / or one or more previously reconstructed CTUs.The current CTU includes the current region.

[0185] At (S1240), if the chroma BV is valid, the current chroma block may be reconstructed based on the chroma reference block indicated by the chroma BV.

[0186] Then, the process proceeds to (S1299) and ends.

[0187] The process (1200) may be adjusted appropriately. Steps in the process (1200) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0188] In an example, if the chroma BV is invalid, the chroma BV is corrected to obtain a valid chroma BV. The current chroma block may be reconstructed based on another chroma reference block indicated by the valid chroma BV. In an example, (i) the collocated luma samples of the other chroma reference blocks are within the allowed IBC reference range of the luma region, and (ii) the chroma samples in the other chroma reference blocks have been reconstructed.

[0189] Fig.13 A flow chart outlining a process (1300) according to an embodiment of the present disclosure is shown. The process (1300) may be used for a video encoder. In various embodiments, the process (1300) is performed by a processing circuit system, such as a processing circuit system that performs the functions of a video encoder (103), a processing circuit system that performs the functions of a video encoder (303), etc. In some embodiments, the process (1300) is implemented as software instructions, so when the processing circuit system executes the software instructions, the processing circuit system performs the process (1300). The process starts at (S1301) and proceeds to (S1310).

[0190] At (S1310), a chroma BV (e.g., (1113)) of a current chroma block (e.g., (1111)) in reconstruction in a chroma coding region (e.g., (1110)) may be determined. The chroma BV may indicate a chroma reference block (e.g., (1131)) in a picture (e.g., (1101)). Two separate coding tree structures may be used to partition a luma coding region and a chroma coding region in a current region (e.g., (1102)) of a picture.

[0191] At (S1320), it may be determined whether the chroma BV is valid based on the collocated luma samples of the current chroma block and the collocated luma samples of the chroma reference block, e.g. Figure 11 to Figure 12 Described in .

[0192] At (S1330), in response to determining that the chroma BV is valid, the current chroma block may be encoded based on the chroma reference block indicated by the chroma BV.

[0193] Then, the process proceeds to (S1399) and ends.

[0194] The process (1300) may be adjusted appropriately. Steps in the process (1300) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0195] In an example, the encoded chroma coding region is included in the bitstream and sent to the decoder. The encoding information can be encoded to indicate that the luma coding region and the chroma coding region are split using two separate coding tree structures. In an example, a flag indicating that the luma coding region and the chroma coding region are split using two separate coding tree structures is encoded and included in the bitstream.

[0196] Fig.14A flow chart outlining a process (1400) according to an embodiment of the present disclosure is shown. The process (1400) may be used for a video decoder. In various embodiments, the process (1400) is performed by a processing circuit system, such as a processing circuit system that performs the functions of a video decoder (110), a processing circuit system that performs the functions of a video decoder (210), etc. In some embodiments, the process (1400) is implemented in software instructions, so when the processing circuit system executes the software instructions, the processing circuit system performs the process (1400). The process (1400) starts at (S1401) and proceeds to (S1410).

[0197] At (S1410), a bitstream of a current region (e.g., region (1102)) in a picture (e.g., picture (1101)) is received. The current region (e.g., (1102)) includes a luma coding region (e.g., (1120)) and a chroma coding region (e.g., (1110)). Coding information in the bitstream may indicate that the luma coding region and the chroma coding region are split using two separate coding tree structures. In an example, the coding information in the bitstream includes a flag indicating that the luma coding region and the chroma coding region are split using two separate coding tree structures.

[0198] In an example, the current region is a current coding tree unit (CTU) in reconstruction, the luma coding region is a luma coding tree block (CTB) in the current CTU, and the chroma coding region is a chroma CTB in the current CTU.

[0199] In another example, a current CTU in a picture is split into four coding units using quadtree splitting, and the current region is a coding unit among the four coding units.

[0200] At (S1420), a chroma block vector (BV) (e.g., (1113)) of a current chroma block (e.g., (1111)) in a chroma coding region (e.g., (1110)) may be determined, e.g., Figure 11 to Figure 12 The chroma BV may indicate a chroma reference block (eg, (1131)) in a picture (eg, (1101)).

[0201] The chroma BV may be determined by explicitly decoding the chroma BV. The chroma BV may be determined by implicitly deriving the chroma BV, for example, using the IntraTMP mode, the DBV mode, or other modes.

[0202] At (S1430), whether the chroma BV is valid may be determined based on (i) whether the chroma samples in the chroma reference block have been reconstructed and (ii) whether the chroma reference block is within an allowed IBC reference range of the current chroma block, the allowed IBC reference range being scaled according to an allowed IBC reference range of a luma region including collocated luma samples of the current chroma block, e.g. Fig.11 Described in .

[0203] In an example, whether a chroma block vector is valid can be determined by scaling all parameters designed for the luma case (e.g., parameters related to the width or height of the zone) to the chroma accordingly. For example, the disclosed method can scale the allowed IBC reference range of the luma zone including the collocated luma samples of the current chroma block to determine the allowed IBC reference range of the current chroma block. In addition, the disclosed method can determine whether the chroma BV is valid based on (i) whether the chroma samples in the chroma reference block have been reconstructed and (ii) whether the chroma reference block is within the allowed intra-block copy (IBC) reference range of the current chroma block. In response to determining that the chroma BV is valid, the disclosed method can reconstruct the current chroma block based on the chroma reference block indicated by the chroma BV.

[0204] In an embodiment, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region depends on the chroma format sampling structure. The scaling factor may include a horizontal scaling factor and a vertical scaling factor. In response to the chroma format sampling structure being 4:2:0, the horizontal scaling factor and the vertical scaling factor are 2 and 2, respectively. In response to the chroma format sampling structure being 4:2:2, the horizontal scaling factor and the vertical scaling factor are 2 and 1, respectively. In response to the chroma format sampling structure being 4:4:4, the horizontal scaling factor and the vertical scaling factor are 1 and 1, respectively.

[0205] In examples, the scaling factors for different dimensions may be different for U and V channels (e.g. in a 4:2:2 format). For example, in a 4:2:0 format, all luma widths and luma heights are scaled down by a factor of 2 when used in the chroma case. In other examples, in a 4:2:2 format, in the chroma case, the luma width will be scaled down by a factor of 2, and the luma height may remain unchanged.

[0206] In an example, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region is different for different dimensions.

[0207] In an example, the allowed IBC reference range includes reconstructed luma samples in a current CTU and / or one or more previously reconstructed CTUs.The current CTU includes the current region.

[0208] At (S1440), in response to determining that the chroma BV is valid, the current chroma block may be reconstructed based on the chroma reference block indicated by the chroma BV.

[0209] Then, the process proceeds to (S1499) and ends.

[0210] The process (1400) may be adjusted appropriately. Steps in the process (1400) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0211] In an example, in response to determining that the chroma BV is invalid, the chroma BV is corrected to obtain a valid chroma BV. The current chroma block may be reconstructed based on another chroma reference block indicated by the valid chroma BV. In an example, (i) the chroma samples in the chroma reference block have been reconstructed, and (ii) the other chroma reference block is within an allowed IBC reference range of the current chroma block.

[0212] Fig.15 A flow chart outlining a process (1500) according to an embodiment of the present disclosure is shown. The process (1500) may be used for a video encoder. In various embodiments, the process (1500) is performed by a processing circuit system, such as a processing circuit system that performs the functions of a video encoder (103), a processing circuit system that performs the functions of a video encoder (303), etc. In some embodiments, the process (1500) is implemented as software instructions, so when the processing circuit system executes the software instructions, the processing circuit system performs the process (1500). The process starts at (S1501) and proceeds to (S1510).

[0213] At (S1510), a chroma block vector (BV) of a current chroma block in a chroma coding region may be determined. The chroma BV may indicate a chroma reference block in a picture. Two separate coding tree structures may be used to partition a luma coding region and a chroma coding region in a current region of a picture.

[0214] At (S1520), whether the chroma BV is valid may be determined based on (i) whether the chroma samples in the chroma reference block have been reconstructed and (ii) whether the chroma reference block is within an allowed intra-block copy (IBC) reference range of the current chroma block, the allowed IBC reference range being scaled according to an allowed IBC reference range of a luma region including collocated luma samples of the current chroma block, e.g. Fig.11 and Fig.14 Described in .

[0215] In an example, to determine whether a chroma block vector is valid, parameters designed for the luma case (e.g., parameters related to the width or height of a region) are scaled to the chroma accordingly. For the U and V channels, the scaling factors for different dimensions may be different (e.g., in a 4:2:2 format). For example, if in a 4:2:0 format, all luma widths and luma heights need to be scaled down by a factor of 2 when used in the chroma case. In another example, in a 4:2:2 format, for chroma, the luma width needs to be scaled down by a factor of 2, and the luma height may remain unchanged.

[0216] In an embodiment, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region depends on the chroma format sampling structure. The scaling factor may include a horizontal scaling factor and a vertical scaling factor. In response to the chroma format sampling structure being 4:2:0, the horizontal scaling factor and the vertical scaling factor are 2 and 2, respectively. In response to the chroma format sampling structure being 4:2:2, the horizontal scaling factor and the vertical scaling factor are 2 and 1, respectively. In response to the chroma format sampling structure being 4:4:4, the horizontal scaling factor and the vertical scaling factor are 1 and 1, respectively.

[0217] At (S1530), in response to determining that the chroma BV is valid, the current chroma block may be encoded based on the chroma reference block indicated by the chroma BV.

[0218] Then, the process proceeds to (S1599) and ends.

[0219] The process (1500) may be adjusted appropriately. Steps in the process (1500) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0220] In an example, the encoded current chroma block is included in the bitstream and sent to the decoder. The encoding information can be encoded to indicate that the luma coding area and the chroma coding area are split using two separate coding tree structures. In an example, a flag indicating that the luma coding area and the chroma coding area are split using two separate coding tree structures is encoded and included in the bitstream.

[0221] The embodiments in the present disclosure may be used alone or in combination in any order. In addition, each of the method (or embodiment), encoder, and decoder may be implemented by a processing circuit system (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-transitory computer-readable medium.

[0222] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media. Fig.16 A computer system (1600) suitable for implementing certain embodiments of the disclosed subject matter is shown.

[0223] Computer software may be encoded using any suitable machine code or computer language, which may be subjected to mechanisms such as assembly, compilation, linking, etc. to create code comprising instructions that may be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or through interpretation, microcode execution, etc.

[0224] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, etc.

[0225] Fig.16 The components for the computer system (1600) shown in the example are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. Nor should the configuration of components be interpreted as having any dependency or requirement relating to any one or combination of components shown in the exemplary embodiment of the computer system (1600).

[0226] The computer system (1600) may include certain human-machine interface input devices. Such human-machine interface input devices may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, tapping), visual input (e.g., gestures), olfactory input (not depicted). Human-machine interface devices may also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., voice, 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).

[0227] Input human-machine interface devices may include one or more of the following (only one of each is depicted): keyboard (1601), mouse (1602), touchpad (1603), touch screen (1610), data gloves (not shown), joystick (1605), microphone (1606), scanner (1607), camera (1608).

[0228] The computer system (1600) may also include certain human-computer interface output devices. Such human-computer interface output devices may stimulate one or more senses of a human user through, for example, tactile output, sound, light, and smell / taste. Such human-computer interface output devices may include: tactile output devices (e.g., tactile feedback through a touch screen (1610), a data glove (not shown), or a joystick (1605), but there may also be tactile feedback devices that are not used as input devices); audio output devices (e.g., speakers (1609), headphones (not depicted)); visual output devices (e.g., screens (1610), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capabilities, each with or without tactile feedback capabilities - some of which may be able to output two-dimensional visual output or more than three-dimensional output through means such as stereoscopic image output; virtual reality glasses (not depicted); holographic displays and cigarette cans (not depicted)); and printers (not depicted).

[0229] The computer system (1600) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1620) with CD / DVD etc. media (1621), thumb drives (1622), removable hard drives or solid-state drives (1623), legacy magnetic media such as tapes and floppy disks (not depicted), dedicated ROM / ASIC / PLD based devices such as security dongles (not depicted), etc.

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

[0231] The computer system (1600) may also include an interface (1654) to one or more communication networks (1655). The network may be, for example, wireless, wired, optical. The network may also be local, wide, metropolitan, vehicular and industrial, real-time, delay-tolerant, etc. Examples of networks include: local area networks such as Ethernet; wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, etc.; TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; vehicle and industrial networks including CANBus, etc. Some networks typically require an external network interface adapter attached to some common data port or peripheral bus (1649) (such as, for example, a USB port of the computer system (1600)); other networks are typically integrated into the core of the computer system (1600) by attaching to a system bus as described below (e.g., to an Ethernet interface in a PC computer system or to a cellular network interface in a smartphone computer system). Using any of these networks, the computer system (1600) can communicate with other entities. Such communications can be one-way receive only (e.g., broadcast TV), one-way send only (e.g., a CAN bus to certain CAN bus devices), or two-way, for example, to other computer systems using a local area digital network or a wide area digital network. Certain protocols and protocol stacks can be used on each of these networks and network interfaces as described above.

[0232] The above-mentioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core ( 1640 ) of the computer system ( 1600 ).

[0233] The core (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (1643), hardware accelerators for certain tasks (1644), graphics adapters (1650), etc. These devices, along with read-only memory (ROM) (1645), random access memory (1646), internal mass storage devices (1647) such as internal non-user accessible hard drives, SSDs, etc., may be connected via a system bus (1648). In some computer systems, the system bus (1648) may be accessible in the form of one or more physical plugs to enable expansion by additional CPUs, GPUs, etc. Peripheral devices may be attached to the core's system bus (1648) directly or via a peripheral bus (1649). In an example, a screen (1610) may be connected to a graphics adapter (1650). The architecture of the peripheral bus includes PCI, USB, etc.

[0234] The CPU (1641), GPU (1642), FPGA (1643) and accelerator (1644) can execute certain instructions, which can be combined to form the above-mentioned computer code. The computer code can be stored in ROM (1645) or RAM (1646). Transient data can also be stored in RAM (1646), while permanent data can be stored in, for example, an internal mass storage device (1647). Fast storage and retrieval of any storage device in the storage device can be achieved by using a cache memory, which can be closely associated with one or more CPUs (1641), GPUs (1642), mass storage devices (1647), ROMs (1645), RAMs (1646), etc.

[0235] The computer readable medium may have computer code thereon 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 the medium and computer code may be of a type well known and available to those skilled in the art of computer software.

[0236] As an example and not limitation, a computer system (1600) having an architecture and in particular a core (1640) can provide functionality due to a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software contained in one or more tangible computer-readable media. Such a computer-readable medium can be a medium associated with a user-accessible mass storage device as described above, and certain storage devices of the core (1640) having non-transitory properties, such as a core internal mass storage device (1647) or a ROM (1645). Software implementing various embodiments of the present disclosure can be stored in such a device and executed by the core (1640). Depending on specific needs, the computer-readable medium may include one or more memory devices or chips. The software can enable the core (1640) and in particular the processor therein (including a CPU, GPU, FPGA, etc.) to perform a specific process or a specific part of a specific process described herein, including defining a data structure stored in the RAM (1646) and modifying such a data structure according to a process defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (1644)) that may operate in place of or in conjunction with software to perform a particular process or a particular portion of a particular process described herein. Where appropriate, references to software may include logic, and references to logic may also include software. Where appropriate, references to computer-readable media may include circuitry (e.g., an integrated circuit (IC)) storing software for execution, circuitry implementing logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.

[0237] The use of "at least one of" or "one of" in the present disclosure is intended to include any one or combination of the elements. For example, references 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; and at least one of A through C are intended to include only A, only B, only C, or any combination thereof. References to one of A or B and one of A and B are intended to include A or B or (A and B). Where applicable, such as when the elements are not mutually exclusive, the use of "one of" does not exclude any combination of the elements.

[0238] Although the present disclosure has described several exemplary embodiments, there are changes, permutations, and various alternative equivalents that fall within the scope of the present disclosure. It will therefore be appreciated that those skilled in the art will be able to conceive of many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.

Claims

1. A method for video decoding in a decoder, comprising: Receiving a bitstream of a current region in a picture, the current region comprising a luma coding region and a chroma coding region, encoding information in the bitstream indicating that the luma coding region and the chroma coding region are split using separate coding tree structures; determining a chroma block vector (BV) for a current chroma block in the chroma coding region, the chroma BV indicating a chroma reference block in the picture; determining whether the chroma BV is valid based on whether the collocated luma samples of the chroma reference block are within an allowed range of a luma region including the collocated luma samples of the current chroma block; as well as In response to determining that the chroma BV is valid, reconstructing the current chroma block based on the chroma reference block indicated by the chroma BV.

2. The method according to claim 1, wherein: The current chroma block is predicted in one of: (i) intra block copy (IBC) mode, (ii) intra template matching prediction (IntraTMP) mode, and (iii) direct block vector (DBV) mode.

3. The method according to claim 2, wherein: In response to predicting the current chroma block in the IBC mode, determining whether the chroma BV is valid comprises: In response to (i) the collocated luminance samples of the chrominance reference block being within an allowed IBC reference range of the luminance region including the collocated luminance samples of the current chrominance block and (ii) the chrominance samples in the chrominance reference block having been reconstructed, it is determined that the chrominance BV is valid, and the allowed range is an allowed IBC reference range.

4. The method according to claim 3, further comprising: In response to determining that the chroma BV is invalid, Correcting the chromaticity BV to obtain an effective chromaticity BV; as well as The current chroma block is reconstructed based on another chroma reference block indicated by the valid chroma BV, wherein: (i) the collocated luma samples of another chroma reference block are within the allowed IBC reference range of the luma region, and (ii) the chroma samples in the another chroma reference block have been reconstructed.

5. The method according to claim 2, wherein: In response to predicting the current chroma block in the IBC mode, determining the chroma BV comprises: The chroma BV is explicitly decoded according to the encoding information.

6. The method according to claim 2, wherein: In response to predicting the current chroma block in the IntraTMP mode or the DBV mode, determining whether the chroma BV is valid comprises: The chroma BV is determined to be valid in response to (i) the collocated luma samples of the chroma reference block being within the allowed range of the luma region including the collocated luma samples of the current chroma block and (ii) the chroma samples in the chroma reference block having been reconstructed.

7. The method according to claim 2, wherein: In response to predicting the current chroma block in the IntraTMP mode or the DBV mode, determining the chroma BV comprises: The chromaticity BV is derived using the IntraTMP mode or the DBV mode, respectively.

8. The method according to claim 1, wherein: The current region is a current coding tree unit (CTU), The luma coding region is a luma coding tree block (CTB) in the current CTU, and The chroma coding region is the chroma CTB in the current CTU.

9. The method according to claim 1, wherein: Splitting a current coding tree unit (CTU) in the picture into four coding units using quadtree splitting, and The current region is a coding unit among the four coding units.

10. The method according to claim 2, wherein: The allowed range includes at least one of reconstructed luma samples in a current coding tree unit (CTU) or one or more previously reconstructed CTUs, the current CTU including the current region.

11. The method according to claim 1, wherein: The coding information in the bitstream includes a flag indicating that the luma coding region and the chroma coding region are partitioned using the separate coding tree structures.

12. A method for video decoding in a decoder, comprising: Receiving a bitstream of a current region in a picture, the current region comprising a luma coding region and a chroma coding region, encoding information in the bitstream indicating that the luma coding region and the chroma coding region are split using separate coding tree structures; determining a chroma block vector (BV) for a current chroma block in the chroma coding region, the chroma BV indicating a chroma reference block in the picture; scaling an allowed intra block copy (IBC) reference range of a luma region including collocated luma samples of the current chroma block to determine an allowed IBC reference range of the current chroma block; determining whether the chroma BV is valid based on (i) whether chroma samples in the chroma reference block have been reconstructed and (ii) whether the chroma reference block is within the allowed IBC reference range of the current chroma block; as well as In response to determining that the chroma BV is valid, reconstructing the current chroma block based on the chroma reference block indicated by the chroma BV.

13. The method according to claim 12, wherein: The scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region depends on the chroma sampling format.

14. The method according to claim 13, wherein: The scaling factor includes a horizontal scaling factor and a vertical scaling factor, In response to the chroma sampling format being 4:2:0, the horizontal scaling factor and the vertical scaling factor are 2 and 2 respectively, In response to the chroma sampling format being 4:2:2, the horizontal scaling factor and the vertical scaling factor are 2 and 1, respectively, and In response to the chroma sampling format being 4:4:4, the horizontal scaling factor and the vertical scaling factor are 1 and 1, respectively.

15. The method according to claim 12, wherein: For different dimensions, the scaling factor between the allowed IBC reference range of the current chroma block and the allowed IBC reference range of the luma region is different.

16. The method according to claim 12, wherein: Determining whether the chroma BV is valid includes: The chroma BV is determined to be valid in response to (i) the chroma samples in the chroma reference block having been reconstructed and (ii) the chroma reference block being within the allowed IBC reference range of the current chroma block.

17. The method according to claim 16, further comprising: In response to determining that the chroma BV is invalid, Correcting the chromaticity BV to obtain an effective chromaticity BV; as well as The current chroma block is reconstructed based on another chroma reference block indicated by the valid chroma BV, wherein: (i) the chroma samples in the chroma reference block have been reconstructed, and (ii) another chroma reference block is within the allowed IBC reference range of the current chroma block.

18. The method according to claim 12, wherein: Determining the chromaticity BV includes: (i) explicitly decoding the chroma BV according to the encoding information; or (ii) The chroma BV is derived using the intra template matching prediction (IntraTMP) mode or the direct block vector (DBV) mode.

19. The method according to claim 12, wherein: The current region is a current coding tree unit (CTU), The luma coding region is a luma coding tree block (CTB) in the current CTU, and The chroma coding region is the chroma CTB in the current CTU.

20. An apparatus for video decoding, comprising: processing circuitry configured to: Receiving a bitstream of a current region in a picture, the current region comprising a luma coding region and a chroma coding region, encoding information in the bitstream indicating that the luma coding region and the chroma coding region are split using separate coding tree structures; determining a chroma block vector (BV) for a current chroma block in the chroma coding region, the chroma BV indicating a chroma reference block in the picture; determining whether the chroma BV is valid based on whether the collocated luma samples of the chroma reference block are within an allowed range of a luma region including the collocated luma samples of the current chroma block; as well as In response to determining that the chroma BV is valid, reconstructing the current chroma block based on the chroma reference block indicated by the chroma BV.