Method and apparatus for intra block copy

By adjusting the motion precision set and skipping unavailable sample padding in intra-block copy mode, the video encoding and decoding process is optimized, solving the problems of low efficiency and high redundancy in the intra-block copy process and improving the video compression effect.

CN120982103APending Publication Date: 2025-11-18BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480026505.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-04-18
Filing Date
2024-04-17
Publication Date
2025-11-18

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies suffer from inefficiency and high redundancy during intra-frame block copying, especially when processing fractional motion information, making it difficult to effectively utilize the redundancy of video data.

Method used

By using intra-frame block copy mode, the decoder and encoder jointly instruct the motion precision set, adjust the precision of the block vector, and skip the filling process of unavailable samples in specific directions to optimize the generation of prediction blocks.

Benefits of technology

It improves the efficiency and quality of the video encoding and decoding process, reduces data redundancy, and enhances video compression performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120982103A_ABST
    Figure CN120982103A_ABST
Patent Text Reader

Abstract

Methods and apparatus for video decoding and encoding are provided. In a method for video decoding, a decoder may obtain a motion precision syntax element that jointly indicates a set of motion precision supported for all luma and chroma components of a current block. Further, the decoder may determine a context adaptive binary arithmetic coding (CABAC) context window for each context model according to a set of motion precision supported for all luma and chroma components of the current block.
Need to check novelty before this filing date? Find Prior Art

Description

Cross-references to related applications

[0001] This application is based on and claims priority to U.S. Provisional Application No. 63 / 460,294, filed April 18, 2023, entitled “Methods and Devices for IntraBlock Copy,” the disclosure of which is incorporated herein by reference for all purposes. Technical Field

[0002] This disclosure relates to video encoding, decoding, and compression, and specifically, but not limited to, methods and apparatus for improving intra-block copying (IBC) methods in the video encoding or decoding process. Background Technology

[0003] Various electronic devices (such as digital televisions, laptops or desktop computers, tablets, digital cameras, digital recording devices, digital media players, video game consoles, smartphones, video conferencing equipment, video streaming devices, etc.) support digital video. Electronic devices send and receive, or otherwise transmit, digital video data via communication networks, and / or store digital video data on storage devices. Due to the limited bandwidth capacity of communication networks and the limited memory resources of storage devices, video data can be compressed using one or more video codec standards before it is transmitted or stored. Examples of video codec standards include Universal Video Codec (VVC), Joint Explore Test Model (JEM), High Efficiency Video Codec (HEVC / H.265), Advanced Video Codec (AVC / H.264), Moving Picture Experts Group (MPEG) codec, etc. Video codecs typically employ prediction methods that utilize the inherent redundancy in video data (e.g., inter-frame prediction, intra-frame prediction, etc.). Video codecs aim to compress video data into a form using a lower bitrate while avoiding or minimizing degradation in video quality. Summary of the Invention

[0004] This disclosure provides examples of techniques related to improving intra-frame block copying methods in video encoding or decoding processes.

[0005] According to a first aspect of this disclosure, a method for video decoding is provided. In this method, a decoder can obtain motion precision syntax elements that jointly indicate the set of motion precision supported for all luma and chroma components of the current block. Furthermore, the decoder can determine a context-adaptive binary arithmetic coding (CABAC) context window for each context model based on the set of motion precision supported for all luma and chroma components of the current block.

[0006] According to a second aspect of this disclosure, a method for video decoding is provided. In this method, the decoder can obtain fractional motion information of the current block in intra-block copy (IBC) mode. Furthermore, the decoder can obtain the block vector (BV) of the current block based on the fractional motion information, obtain a final BV by adjusting the precision of the BV, and obtain the final predicted block of the current block based on the final BV.

[0007] According to a third aspect of this disclosure, a method for video decoding is provided. In this method, the decoder can obtain fractional motion information of the current block in IBC mode and obtain a prediction block of the current block based on BV. Furthermore, the decoder can skip the filling process for unavailable samples of the prediction block in a certain direction in response to determining that the number of unavailable samples associated with the interpolation filter in a certain direction is less than a threshold.

[0008] According to a fourth aspect of this disclosure, a method for video coding is provided. In this method, an encoder can signal-transmit motion precision syntax elements that jointly indicate the set of motion precision supported for all luma and chroma components of the current block. Furthermore, the encoder can determine a CABAC context window for each context model based on the set of motion precision supported for all luma and chroma components of the current block.

[0009] According to a fifth aspect of this disclosure, a method for video coding is provided. In this method, the encoder can obtain fractional motion information of the current block in IBC mode. Furthermore, the encoder can obtain the block size (BV) of the current block based on the fractional motion information, obtain a final BV by adjusting the precision of the BV, and obtain a final predicted block for the current block based on the final BV.

[0010] According to a sixth aspect of this disclosure, a method for video coding is provided. In this method, an encoder can obtain fractional motion information of the current block in IBC mode. Additionally, the encoder can obtain the block size (BV) of the current block based on the fractional motion information, and obtain a prediction block of the current block based on the BV. Furthermore, the encoder can skip the filling process for unavailable samples of the prediction block in a certain direction in response to determining that the number of unavailable samples associated with the interpolation filter in that direction is less than a threshold.

[0011] According to a seventh aspect of this disclosure, an apparatus for video decoding is provided. The apparatus includes one or more processors; and a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors, wherein the one or more processors, when executing the instructions, are configured to perform a method according to the first, second, or third aspect.

[0012] According to an eighth aspect of this disclosure, a non-transitory computer-readable storage medium is provided for storing computer-executable instructions that, when executed by one or more computer processors, cause the one or more computer processors to perform the method according to the first aspect, the second aspect, or the third aspect.

[0013] According to a ninth aspect of this disclosure, an apparatus for video encoding is provided. The apparatus includes one or more processors; and a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors, wherein the one or more processors, when executing the instructions, are configured to perform a method according to a fourth, fifth, or sixth aspect.

[0014] According to a tenth aspect of this disclosure, a non-transitory computer-readable storage medium is provided for storing computer-executable instructions that, when executed by one or more computer processors, cause the one or more computer processors to perform the method according to the fourth, fifth, or sixth aspect.

[0015] According to the eleventh aspect of this disclosure, a non-transitory computer-readable storage medium is provided for storing a bit stream to be decoded by a method according to the first aspect, the second aspect, or the third aspect.

[0016] According to the twelfth aspect of this disclosure, a non-transitory computer-readable storage medium is provided for storing a bit stream generated by the method according to the fourth, fifth or sixth aspect.

[0017] It should be understood that the foregoing general description and the following detailed description are merely examples and not limitations of this disclosure. Attached Figure Description

[0018] Examples consistent with this disclosure are illustrated in conjunction with the accompanying drawings, which are included in and form part of this specification, and together with the description, serve to explain the principles of this disclosure.

[0019] Figure 1 This is a block diagram illustrating an exemplary system for encoding and decoding video blocks according to some embodiments of the present disclosure.

[0020] Figure 2 This is a block diagram illustrating an exemplary video encoder according to some embodiments of the present disclosure.

[0021] Figure 3 This is a block diagram illustrating an exemplary video decoder according to some embodiments of the present disclosure.

[0022] Figures 4A-4EThis is a block diagram illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes according to some embodiments of this disclosure.

[0023] Figures 5A-5B An example of a 4-parameter affine model is shown, based on some examples of this disclosure.

[0024] Figure 5C An example of a 6-parameter affine model is shown, based on some examples of this disclosure.

[0025] Figure 6 Examples of adjacent neighbor blocks for affine merge candidates for inheritance are shown, according to some examples of this disclosure.

[0026] Figure 7 Examples of adjacent neighbor blocks for constructing affine merge candidates are shown, according to some examples of this disclosure.

[0027] Figure 8 The current CTU processing order and its available reference points in the current CTU and the left CTU are shown in some examples according to this disclosure.

[0028] Figure 9 The following are examples of filling candidates for replacing zero vectors in the IBC list, according to some examples of this disclosure.

[0029] Figure 10 The reference area of ​​IBC when encoding CTU(m,n) is shown according to some examples of this disclosure.

[0030] Figure 11 An IBC reference area of ​​camera-captured content is shown as some examples according to this disclosure.

[0031] Figures 12A-12B The following are examples of methods for dividing angular patterns according to this disclosure.

[0032] Figure 13A The following are examples of spatial neighbor blocks used by ATVMP according to this disclosure.

[0033] Figure 13B Examples of obtaining a sub-CU motion field by applying motion shifts from spatial neighbors and scaling motion information from corresponding co-located sub-CUs are shown, according to some examples of this disclosure.

[0034] Figure 14 This is a flowchart illustrating the decoding of binary bits based on some examples of this disclosure.

[0035] Figure 15 The intra-frame template matching search regions used in some examples of this disclosure are shown.

[0036] Figure 16A Examples of BV adjustments for horizontal flipping are shown according to some examples of this disclosure.

[0037] Figure 16B Examples of BV adjustments for vertical flipping are shown according to some examples of this disclosure.

[0038] Figure 17 Examples of five locations in a reconstructed brightness sample are shown according to some examples of this disclosure.

[0039] Figure 18 An example of the prediction process of the DBV method according to some examples of this disclosure is shown.

[0040] Figure 19 Examples of AMVP IBC candidate clustering based on L2 distance and TM cost are shown according to some examples of this disclosure.

[0041] Figure 20 This is a simplified diagram illustrating a computing environment coupled to a user interface according to some examples of this disclosure.

[0042] Figure 21 This is a flowchart illustrating a method for video decoding according to some examples of this disclosure.

[0043] Figure 22 The illustrations show some examples of the present disclosure. Figure 21 The flowchart shown corresponds to the video encoding method used in the video decoding method.

[0044] Figure 23 This is a flowchart illustrating a method for video decoding according to some examples of this disclosure.

[0045] Figure 24 The illustrations show some examples of the present disclosure. Figure 23 The flowchart shown corresponds to the video encoding method used in the video decoding method.

[0046] Figure 25 This is a flowchart illustrating a method for video decoding according to some examples of this disclosure.

[0047] Figure 26 The illustrations show some examples of the present disclosure. Figure 25 The flowchart shown corresponds to the video encoding method used in the video decoding method. Detailed Implementation

[0048] Referring now to the detailed description, examples of which are illustrated in the accompanying drawings. Numerous non-limiting details are set forth in the following detailed description to aid in understanding the subject matter presented herein. However, various alternatives may be used without departing from the scope of the claims, and the subject matter may be practiced without these specific details. For example, the subject matter presented herein can be implemented on many classes of electronic devices with digital video capabilities.

[0049] It should be noted that the terms "first," "second," etc., in the specification, claims, and drawings of this disclosure are used to distinguish objects and are not used to describe any specific order or sequence. It should be understood that such data can be interchanged where appropriate so that the embodiments of this disclosure described herein can be implemented in sequences other than those shown in the drawings or described in this disclosure.

[0050] Figure 1 This is a block diagram illustrating an exemplary system 10 for encoding and decoding video blocks in parallel, according to some embodiments of the present disclosure. Figure 1 As shown, system 10 includes a source device 12 that generates and encodes video data that will later be decoded by a target device 14. The source device 12 and target device 14 can include any electronic device from a wide variety of electronic devices, including cloud servers, server computers, desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some embodiments, the source device 12 and target device 14 are equipped with wireless communication capabilities.

[0051] In some implementations, target device 14 may receive encoded video data to be decoded via link 16. Link 16 may include any type of communication medium or device capable of moving encoded video data from source device 12 to target device 14. In one example, link 16 may include a communication medium enabling source device 12 to transmit encoded video data directly to target device 14 in real time. The encoded video data may be modulated according to communication standards, such as wireless communication protocols, and transmitted to target device 14. The communication medium may include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other means that may facilitate communication from source device 12 to target device 14.

[0052] In some other implementations, encoded video data can be sent from output interface 22 to storage device 32. The target device 14 can then access the encoded video data in storage device 32 via input interface 28. Storage device 32 can include any data storage medium of various distributed or locally accessed data storage media, such as hard disk drives, Blu-ray discs, digital universal discs (DVDs), compact disc read-only memory (CD-ROMs), flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, storage device 32 can correspond to a file server or another intermediate storage device that can hold the encoded video data generated by source device 12. Target device 14 can access the stored video data from storage device 32 via streaming or downloading. The file server can be any type of computer capable of storing and sending encoded video data to target device 14. Exemplary file servers include web servers (e.g., for websites), file transfer protocol (FTP) servers, network attached storage (NAS) devices, or local disk drives. Target device 14 can access the encoded video data via any standard data connection suitable for accessing encoded video data stored on the file server. Standard data connections include wireless channels (e.g., Wi-Fi connections), wired connections (e.g., digital subscriber line (DSL), cable modems, etc.), or a combination of both. Transfer of encoded video data from storage device 32 can be streaming, downloading, or a combination of both.

[0053] like Figure 1 As shown, source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 may include sources or combinations of such sources, such as: a video capture device (e.g., a camera), a video archive containing previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as source video. As an example, if video source 18 is a camera in a security monitoring system, source device 12 and target device 14 may form a camera phone or video phone. However, the embodiments described in this application are generally applicable to video encoding and decoding and can be applied to wireless and / or wired applications.

[0054] The captured, pre-captured, or computer-generated video can be encoded by the video encoder 20. The encoded video data can be sent directly to the target device 14 via the output interface 22 of the source device 12. Alternatively, the encoded video data can be stored on the storage device 32 for later access by the target device 14 or other devices for decoding and / or playback. The output interface 22 may further include a modem and / or transmitter.

[0055] Target device 14 includes an input interface 28, a video decoder 30, and a display device 34. Input interface 28 may include a receiver and / or a modem, and receives encoded video data via link 16. The encoded video data transmitted via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use by video decoder 30 when decoding the video data. Such syntax elements may be included within encoded video data transmitted on a communication medium, stored on a storage medium, or stored on a file server.

[0056] In some embodiments, the target device 14 may include a display device 34, which may be an integrated display device or an external display device configured to communicate with the target device 14. The display device 34 displays decoded video data to a user and may include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.

[0057] Video encoder 20 and video decoder 30 can operate according to proprietary or industry standards (e.g., VVC, HEVC, MPEG-4 Part 10, AVC) or extensions of such standards. It should be understood that this application is not limited to any particular video encoding / decoding standard and can be applied to other video encoding / decoding standards. It is generally understood that the video encoder 20 of source device 12 can be configured to encode video data according to any of these current or future standards. Similarly, it is also generally understood that the video decoder 30 of target device 14 can be configured to decode video data according to any of these current or future standards.

[0058] The video encoder 20 and video decoder 30 can be implemented as any circuit of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic devices, software, hardware, firmware, or any combination thereof. When partially implemented in software, the electronic device may store instructions for the software in a suitable non-transitory computer-readable medium and use one or more processors to execute the instructions in the hardware to perform the video encoding / decoding operations disclosed in this disclosure. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, either of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device.

[0059] In some implementations, components of source device 12 (e.g., video source 18, video encoder 20, or the following references) Figure 2 The components described include at least a portion of the components in the video encoder 20 and the output interface 22) and / or the components of the target device 14 (e.g., the input interface 28, the video decoder 30, or the following references). Figure 3At least a portion of the components included in the video decoder 30 and the display device 34 described herein can operate in a cloud computing service network such as Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS), where the cloud computing service network can provide software, platform, and / or infrastructure. In some embodiments, one or more components of the source device 12 and / or the target device 14 not included in the cloud computing service network may be located in one or more client devices, and these client devices may communicate with server computers in the cloud computing service network via wireless communication networks (e.g., cellular communication networks, short-range wireless communication networks, or Global Navigation Satellite System (GNSS) communication networks) or wired communication networks (e.g., local area network (LAN) communication networks or power line communication (PLC) networks). In embodiments, at least a portion of the operations described herein may be implemented as cloud-based services provided by one or more server computers, wherein the one or more server computers are implemented by at least a portion of the components of the source device 12 and / or at least a portion of the components of the target device 14 in the cloud computing service network; and one or more other operations described herein may be implemented by one or more client devices. In some implementations, the cloud computing service network may be a private cloud, a public cloud, or a hybrid cloud. Without departing from the scope of this disclosure, terms such as “cloud,” “cloud computing,” and “cloud-based” are used interchangeably as appropriate. It should be understood that this disclosure is not limited to implementation within the aforementioned cloud computing service networks. Rather, this disclosure may be implemented in any other type of computing environment currently known or developed in the future.

[0060] Figure 2 This is a block diagram illustrating an exemplary video encoder 20 according to some embodiments described in this application. The video encoder 20 can perform intra-frame predictive coding and inter-frame predictive coding on video blocks within a video frame. Intra-frame predictive coding relies on spatial prediction to reduce or remove spatial redundancy in the video data within a given video frame or picture. Inter-frame predictive coding relies on temporal prediction to reduce or remove temporal redundancy in the video data within neighboring video frames or pictures of a video sequence. It should be noted that in the field of video encoding and decoding, the term "frame" can be used as a synonym for the terms "image" or "picture".

[0061] like Figure 2As shown, the video encoder 20 includes a video data memory 40, a prediction processing unit 41, a decoded picture buffer (DPB) 64, an adder 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 further includes a motion estimation unit 42, a motion compensation unit 44, a segmentation unit 45, an intra-frame prediction processing unit 46, and an intra-frame block copying (BC) unit 48. In some embodiments, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and an adder 62 for video block reconstruction. A loop filter 63, such as a deblocking filter, can be located between the adder 62 and the DPB 64 to filter block boundaries to remove block artifacts from the reconstructed video. In addition to the deblocking filter, another loop filter (e.g., a sample adaptive offset (SAO) filter, a cross-component sample adaptive offset (CCSAO) filter, and / or an adaptive loop filter (ALF)) can be used to filter the output of the adder 62. It should be noted that, regarding the CCSAO technology, this application is not limited to the embodiments described herein, but can also be applied to situations where an offset is selected for any other component among the luminance, Cb, and Cr chrominance components based on any one of the luminance, Cb, and Cr chrominance components to modify that other component based on the selected offset. Furthermore, it should be noted that the first component mentioned herein can be any one of the luminance, Cb, and Cr chrominance components, the second component mentioned herein can be any other one of the luminance, Cb, and Cr chrominance components, and the third component mentioned herein can be the remaining components among the luminance, Cb, and Cr chrominance components. In some examples, the loop filter can be omitted, and the decoded video block can be directly provided to the DPB 64 by the adder 62. The video encoder 20 can take the form of a fixed or programmable hardware unit, or can be distributed among one or more of the described fixed or programmable hardware units.

[0062] The video data storage device 40 can store video data encoded by the components of the video encoder 20. For example, it can store data from... Figure 1 The video source 18 shown receives video data from the video data memory 40. The DPB 64 is a buffer that stores reference video data (e.g., reference frames or pictures) used by the video encoder 20 (e.g., in intra-frame or inter-frame predictive coding modes) when encoding the video data. The video data memory 40 and DPB 64 can be formed from any of a variety of memory devices. In various examples, the video data memory 40 may be on-chip along with other components of the video encoder 20, or off-chip relative to those components.

[0063] like Figure 2As shown, after receiving video data, the segmentation unit 45 within the prediction processing unit 41 segments the video data into video blocks. This segmentation may also include segmenting the video frame into strips, tiles (e.g., a collection of video blocks) or other larger coding units (CUs) according to a predefined splitting structure associated with the video data (e.g., a quadtree (QT) structure). A video frame is, or can be considered, a two-dimensional array or matrix of sample points with sample values. Sample points in the array may also be referred to as pixels or image elements (pel). The number of sample points in the horizontal and vertical directions (or axes) of the array or image defines the size and / or resolution of the video frame. For example, a video frame can be divided into multiple video blocks using QT segmentation. A video block is again, or can be considered, a two-dimensional array or matrix of sample points with sample values, but its dimension is smaller than that of the video frame. The number of sample points in the horizontal and vertical directions (or axes) of the video block defines the size of the video block. Video blocks can be further divided into one or more block partitions or sub-blocks (which can then re-form blocks) by iteratively using, for example, QT partitioning, binary tree (BT) partitioning, or ternary tree (TT) partitioning, or any combination thereof. It should be noted that the term "block" or "video block" as used herein can be a portion of a frame or image, particularly a rectangular (square or non-square) portion. Referring, for example, to HEVC and VVC, a block or video block can be or corresponds to a coding tree unit (CTU), CU, prediction unit (PU), or transform unit (TU) and / or can be or corresponds to a corresponding block (e.g., coding tree block (CTB), coding block (CB), prediction block (PB), or transform block (TB)) and / or sub-block.

[0064] The prediction processing unit 41 can select one of several feasible predictive coding modes for the current video block based on error results (e.g., coding rate and distortion level), such as one or more inter-frame predictive coding modes among multiple intra-frame predictive coding modes. The prediction processing unit 41 can provide the resulting intra-frame or inter-frame predictive coding block to adder 50 to generate a residual block, and to adder 62 to reconstruct the coding block for subsequent use as part of a reference frame. The prediction processing unit 41 also provides syntax elements (e.g., motion vectors, intra-frame mode indicators, segmentation information, and other such syntax information) to entropy coding unit 56.

[0065] To select a suitable intra-predictive coding mode for the current video block, the intra-predictive processing unit 46 within the prediction processing unit 41 can perform intra-predictive coding of the current video block in relation to one or more neighboring blocks in the same frame as the current block to be encoded to provide spatial prediction. The motion estimation unit 42 and motion compensation unit 44 within the prediction processing unit 41 perform inter-predictive coding of the current video block in relation to one or more prediction blocks in one or more reference frames to provide temporal prediction. The video encoder 20 can execute multiple coding channels, for example, to select a suitable coding mode for each block of video data.

[0066] In some implementations, motion estimation unit 42 determines an inter-frame prediction mode for the current video frame by generating motion vectors based on a predetermined pattern within the video frame sequence. The motion vectors indicate the displacement of a video block within the current video frame relative to a prediction block within a reference video frame. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors that estimate the motion of video blocks. For example, the motion vectors may indicate the displacement of a video block within the current video frame or picture relative to a prediction block within a reference frame associated with the current block being encoded in the current frame. The predetermined pattern may designate video frames in the sequence as P-frames or B-frames. Intra-frame BC unit 48 may determine vectors (e.g., block vectors) for intra-frame BC coding in a similar manner to how motion estimation unit 42 determines motion vectors for inter-frame prediction, or the block vectors may be determined using motion estimation unit 42.

[0067] Regarding pixel differences, the predicted block for a video block can be, or can correspond to, a block or reference block of a reference frame considered to closely match the video block to be encoded. Pixel differences can be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics. In some implementations, the video encoder 20 can compute values ​​for sub-integer pixel positions of the reference frame stored in the DPB 64. For example, the video encoder 20 can interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference frame. Therefore, the motion estimation unit 42 can perform motion search relative to full-pixel positions and fractional pixel positions and output a motion vector with fractional pixel accuracy.

[0068] The motion estimation unit 42 calculates the motion vector for a video block in an inter-frame predictive coding frame by comparing the position of the video block with the position of the predicted block in a reference frame selected from either a first reference frame list (list 0) or a second reference frame list (list 1), each of the first and second reference frame lists identifying one or more reference frames stored in the DPB 64. The motion estimation unit 42 sends the calculated motion vector to the motion compensation unit 44, and then to the entropy coding unit 56.

[0069] Motion compensation performed by motion compensation unit 44 may involve acquiring or generating prediction blocks based on motion vectors determined by motion estimation unit 42. Upon receiving motion vectors for the current video block, motion compensation unit 44 may locate the prediction block pointed to by the motion vector in a reference frame list within a reference frame list, retrieve the prediction block from DPB 64, and forward the prediction block to adder 50. Adder 50 then forms a residual video block of pixel differences by subtracting the pixel values ​​of the prediction block provided by motion compensation unit 44 from the pixel values ​​of the currently encoded video block. The pixel differences forming the residual video block may include luminance component differences or chrominance component differences, or both. Motion compensation unit 44 may also generate syntax elements associated with video blocks of a video frame for use by video decoder 30 when decoding video blocks of a video frame. Syntax elements may include, for example, syntax elements defining motion vectors for identifying prediction blocks, any flags indicating prediction modes, or any other syntax information described herein. It should be noted that motion estimation unit 42 and motion compensation unit 44 may be highly integrated, but are described separately for conceptual purposes.

[0070] In some implementations, the intra-BC unit 48 can generate vectors and acquire prediction blocks in a manner similar to that described above in conjunction with the motion estimation unit 42 and the motion compensation unit 44; however, these prediction blocks are in the same frame as the current block being encoded, and these vectors are referred to as block vectors rather than motion vectors. Specifically, the intra-BC unit 48 can determine the intra-prediction mode to be used for encoding the current block. In some examples, the intra-BC unit 48 can, for example, use various intra-prediction modes to encode the current block during a separate encoding pass and test their performance through rate-distortion analysis. Next, the intra-BC unit 48 can select a suitable intra-prediction mode from the various tested intra-prediction modes to use and generate an intra-mode indicator accordingly. For example, the intra-BC unit 48 can use rate-distortion analysis to calculate rate-distortion values ​​for the various tested intra-prediction modes and select the intra-prediction mode with the best rate-distortion characteristics from the tested modes as the suitable intra-prediction mode to use. Rate-distortion analysis generally determines the amount of distortion (or error) between the coded block and the original uncoded block that was encoded to produce the coded block, as well as the bit rate (i.e., the number of bits) used to produce the coded block. Intra-frame BC unit 48 can calculate the ratio based on the distortion and rate for various coded blocks to determine which intra-frame prediction mode exhibits the optimal rate-distortion value for the block.

[0071] In other examples, the intra-frame BC unit 48 may use, in whole or in part, the motion estimation unit 42 and the motion compensation unit 44 to perform such functions for intra-frame BC prediction according to the embodiments described herein. In any case, for intra-frame block copying, in terms of pixel differences, the predicted block may be a block considered to closely match the block to be encoded, the pixel differences may be determined by SAD, SSD, or other difference metrics, and identifying the predicted block may include calculating values ​​for sub-integer pixel positions.

[0072] Regardless of whether the predicted block comes from the same frame predicted intra-frame or from a different frame predicted inter-frame, the video encoder 20 can form a residual video block by subtracting the pixel value of the predicted block from the pixel value of the current video block being encoded. The pixel difference forming the residual video block can include both luma component difference and chroma component difference.

[0073] As an alternative to the inter-frame prediction performed by the motion estimation unit 42 and the motion compensation unit 44 as described above, or the intra-block copy prediction performed by the intra-BC unit 48, the intra-prediction processing unit 46 can perform intra-frame prediction on the current video block. Specifically, the intra-prediction processing unit 46 can determine an intra-prediction mode for encoding the current block. To this end, the intra-prediction processing unit 46 can, for example, use various intra-prediction modes to encode the current block during a separate encoding pass, and the intra-prediction processing unit 46 (or, in some examples, a mode selection unit) can select a suitable intra-prediction mode from the tested intra-prediction modes for use. The intra-prediction processing unit 46 can provide information indicating the intra-prediction mode selected for the block to the entropy coding unit 56. The entropy coding unit 56 can encode the information indicating the selected intra-prediction mode into the bitstream.

[0074] After prediction processing unit 41 determines the prediction block for the current video block via inter-frame prediction or intra-frame prediction, adder 50 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more TUs and provided to transform processing unit 52. Transform processing unit 52 uses a transform (e.g., discrete cosine transform (DCT) or a conceptually similar transform) to transform the residual video data into residual transform coefficients.

[0075] The transform processing unit 52 can send the resulting transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can also reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting the quantization parameters. In some examples, the quantization unit 54 can subsequently perform a scan on the matrix including the quantized transform coefficients. Alternatively, the entropy coding unit 56 can perform the scan.

[0076] After quantization, the entropy coding unit 56 entropy codes the quantized transform coefficients into a video bitstream using, for example, context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probabilistic interval segmented entropy (PIPE) coding, or another entropy coding method or technique. The encoded bitstream can then be sent to, for example,... Figure 1 The video decoder 30 shown, or archived in, for example Figure 1 The data is stored in storage device 32 for later transmission to or retrieval by video decoder 30. Entropy coding unit 56 can also entropy code the motion vectors and other syntax elements used for the current video frame being encoded.

[0077] The inverse quantization unit 58 and the inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct residual video blocks in the pixel domain for generating reference blocks to predict other video blocks. As noted above, the motion compensation unit 44 can generate motion-compensated prediction blocks from one or more reference blocks of frames stored in the DPB 64. The motion compensation unit 44 can also apply one or more interpolation filters to the prediction blocks to compute sub-integer pixel values ​​for use in motion estimation.

[0078] Adder 62 adds the reconstructed residual block to the motion-compensated prediction block generated by motion compensation unit 44 to generate a reference block for storage in DPB 64. The reference block can then be used as a prediction block by intra-frame BC unit 48, motion estimation unit 42, and motion compensation unit 44 for inter-frame prediction of another video block in subsequent video frames.

[0079] Figure 3 This is a block diagram illustrating an exemplary video decoder 30 according to some embodiments of this application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, and a DPB 92. The prediction processing unit 81 further includes a motion compensation unit 82, an intra-frame prediction unit 84, and an intra-frame BC unit 85. The video decoder 30 can perform operations in conjunction with the above. Figure 2 The decoding process described for the video encoder 20 is essentially the inverse of the encoding process. For example, the motion compensation unit 82 can generate prediction data based on the motion vectors received from the entropy decoding unit 80, while the intra-frame prediction unit 84 can generate prediction data based on the intra-frame prediction mode indicator received from the entropy decoding unit 80.

[0080] In some examples, units of the video decoder 30 may be assigned tasks to perform embodiments of this application. Furthermore, in some examples, embodiments of this disclosure may be distributed across one or more units of the video decoder 30. For example, the intra-frame BC unit 85 may perform embodiments of this application individually or in combination with other units of the video decoder 30 (e.g., motion compensation unit 82, intra-frame prediction unit 84, and entropy decoding unit 80). In some examples, the video decoder 30 may not include the intra-frame BC unit 85, and the functionality of the intra-frame BC unit 85 may be performed by other components of the prediction processing unit 81 (e.g., motion compensation unit 82).

[0081] Video data memory 79 can store video data, such as encoded video bitstreams, that will be decoded by other components of video decoder 30. The video data stored in video data memory 79 can be obtained, for example, from storage device 32, from a local video source (e.g., a camera), via wired or wireless network communication of video data, or by accessing a physical data storage medium (e.g., a flash drive or hard disk). Video data memory 79 may include an encoded picture buffer (CPB) that stores encoded video data from the encoded video bitstream. The DPB 92 of video decoder 30 stores reference video data for use by video decoder 30 (e.g., in intra-frame or inter-frame predictive coding modes) when decoding video data. Video data memory 79 and DPB 92 can be formed of any memory device from a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For illustrative purposes, video data memory 79 and DPB 92 are shown in... Figure 3 The video data memory 79 and DPB 92 are depicted as two distinct components of the video decoder 30. However, it will be apparent to those skilled in the art that the video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, the video data memory 79 may be on-chip along with other components of the video decoder 30, or off-chip relative to those components.

[0082] During the decoding process, the video decoder 30 receives an encoded video bitstream representing video blocks of encoded video frames and associated syntax elements. The video decoder 30 may receive syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 performs entropy decoding on the bitstream to generate quantization coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. The entropy decoding unit 80 then forwards the motion vectors or intra-prediction mode indicators, and other syntax elements to the prediction processing unit 81.

[0083] When a video frame is encoded as an intra-predictive coded (I) frame or used as an intra-coded prediction block in other types of frames, the intra-predictive unit 84 of the prediction processing unit 81 can generate prediction data for the video block of the current video frame based on the intra-predictive mode transmitted by the signal and reference data from the previous decoded block of the current frame.

[0084] When a video frame is encoded as an inter-frame predictive coded (i.e., B or P) frame, the motion compensation unit 82 of the prediction processing unit 81 generates one or more prediction blocks for the current video frame based on motion vectors and other syntax elements received from the entropy decoding unit 80. Each of the prediction blocks can be generated from a reference frame within a reference frame list. The video decoder 30 can construct the reference frame list, i.e., list 0 and list 1, based on the reference frames stored in the DPB 92 using a default construction technique.

[0085] In some examples, when a video block is encoded according to the intra-frame BC mode described herein, the intra-frame BC unit 85 of the prediction processing unit 81 generates a prediction block for the current video block based on the block vector and other syntax elements received from the entropy decoding unit 80. The prediction block can be located within a reconstructed region of the same image as the current video block, as defined by the video encoder 20.

[0086] Motion compensation unit 82 and / or intra-frame prediction (BC) unit 85 determine prediction information for video blocks in the current video frame by parsing motion vectors and other syntax elements, and then use this prediction information to generate prediction blocks for the current video block being decoded. For example, motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g., intra-frame prediction or inter-frame prediction) used to encode video blocks in the video frame, the inter-frame prediction frame type (e.g., B or P), construction information for one or more reference frames in the reference frame list for the frame, motion vectors for each inter-frame prediction encoded video block in the frame, the inter-frame prediction state for each inter-frame prediction encoded video block in the frame, and other information for decoding video blocks in the current video frame.

[0087] Similarly, the intra-BC unit 85 can use some of the received syntax elements, such as flags, to determine which video blocks in the frame are predicted using the intra-BC mode, which video blocks in the frame are in the reconstruction region and should be stored in the DPB 92, the block vector for each intra-BC predicted video block in the frame, the intra-BC prediction state for each intra-BC predicted video block in the frame, and other information for decoding video blocks in the current video frame.

[0088] The motion compensation unit 82 can also perform interpolation using interpolation filters, such as those used by the video encoder 20 during encoding of video blocks, to calculate interpolated values ​​for sub-integer pixels of the reference block. In this case, the motion compensation unit 82 can determine the interpolation filters used by the video encoder 20 based on the received syntax elements and use these interpolation filters to generate the prediction block.

[0089] The dequantization unit 86 dequantizes the quantized transform coefficients provided in the bitstream and entropy-decoded by the entropy decoding unit 80 using the same quantization parameters calculated by the video encoder 20 for each video block in the video frame to determine the degree of quantization. The inverse transform processing unit 88 applies an inverse transform (e.g., inverse DCT, inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients in order to reconstruct the residual block in the pixel domain.

[0090] After the motion compensation unit 82 or the intra-frame BC unit 85 generates a prediction block for the current video block based on vectors and other syntax elements, the adder 90 reconstructs the decoded video block for the current video block by adding the residual block from the inverse transform processing unit 88 to the corresponding prediction block generated by the motion compensation unit 82 and the intra-frame BC unit 85. A loop filter 91 (e.g., a deblocking filter, SAO filter, CCSAO filter, and / or ALF) may be located between the adder 90 and the DPB 92 for further processing of the decoded video block. In some examples, the loop filter 91 may be omitted, and the decoded video block may be directly provided to the DPB 92 by the adder 90. The decoded video block in a given frame is then stored in the DPB 92, which stores reference frames for subsequent motion compensation of the next video block. The DPB 92 or a separate memory device may also store the decoded video for later presentation on a display device (e.g., ...). Figure 1 On the display device 34).

[0091] In a typical video encoding and decoding process, a video sequence usually consists of an ordered set of frames or images. Each frame may include three sample arrays, denoted as SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of chroma samples (Cb). SCr is a two-dimensional array of chroma samples (Cr). In other instances, a frame may be monochrome and therefore consist of only a two-dimensional array of luma samples.

[0092] like Figure 4AAs shown, the video encoder 20 (or more specifically, the segmentation unit 45) generates an encoded representation of a frame by first segmenting the frame into a set of CTUs. A video frame may include an integer number of CTUs ordered consecutively from left to right and top to bottom in raster scan order. Each CTU is the largest logical coding unit, and the width and height of the CTU are signaled by the video encoder 20 in a sequence parameter set such that all CTUs in the video sequence have the same size, one of 128×128, 64×64, 32×32, and 16×16. However, it should be noted that this application is not limited to a specific size. Figure 4B As shown, each CTU may include a CTB for luma samples, two corresponding coding tree blocks for chroma samples, and syntax elements for encoding the samples of the coding tree blocks. The syntax elements describe the properties of different types of units in the coded pixel block and how the video sequence can be reconstructed at the video decoder 30, including inter-frame prediction or intra-frame prediction, intra-frame prediction mode, motion vectors, and other parameters. In a monochrome image or an image with three separate color planes, the CTU may include a single coding tree block and syntax elements for encoding the samples of that coding tree block. The coding tree block may be an N×N sample block.

[0093] To achieve better performance, the video encoder 20 can recursively perform tree splitting on the coding tree blocks of the CTU, such as binary tree splitting, ternary tree splitting, quadtree splitting, or combinations thereof, and divide the CTU into smaller CUs. Figure 4C As described, the 64×64 CTU 400 is first divided into four smaller CUs, each with a block size of 32×32. Of these four smaller CUs, CU 410 and CU 420 are each divided into four CUs with a block size of 16×16. The two 16×16 CUs, 430 and CU 440, are further divided into four CUs with a block size of 8×8. Figure 4D Depicting as shown Figure 4C The final result of the CTU 400 partitioning process described in the figure is a quadtree data structure, where each leaf node of the quadtree corresponds to a CU of a corresponding size ranging from 32×32 to 8×8. Similar to... Figure 4B The CTU depicted in the image can include, for example, two corresponding coding blocks (CBs) of luminance and chrominance samples of the same frame size, as well as syntax elements for encoding the samples of the coding blocks. In monochrome images or images with three separate color planes, a CU can include a single coding block and a syntax structure for encoding the samples of the coding block. It should be noted that... Figure 4C and Figure 4DThe quadtree partitioning depicted is for illustrative purposes only, and a CTU can be split into multiple CUs based on quadtree / ternary / binary partitioning to adapt to varying local characteristics. In multi-type tree structures, a CTU is partitioned according to a quadtree structure, and each quadtree leaf CU can be further partitioned according to binary and ternary tree structures. Figure 4E As shown, a coded block with width W and height H has five possible segmentation types: quad segmentation, horizontal binary segmentation, vertical binary segmentation, horizontal triple segmentation, and vertical triple segmentation.

[0094] In some implementations, the video encoder 20 may further segment the coded blocks of the CU into one or more (M×N) PBs. A PB is a rectangular (square or non-square) block of samples to which the same prediction (inter-frame or intra-frame) is applied. The PU of the CU may include a PB of luma samples, two corresponding PBs of chroma samples, and syntax elements for predicting the PBs. In a monochrome image or an image with three separate color planes, a PU may include a single PB and a syntax structure for predicting the PBs. The video encoder 20 may generate predicted luma blocks, predicted Cb blocks, and predicted Cr blocks for each PU of the CU, representing the luma PB, Cb PB, and Cr PB.

[0095] Video encoder 20 can use intra-frame prediction or inter-frame prediction to generate prediction blocks for the PU. If video encoder 20 uses intra-frame prediction to generate prediction blocks for the PU, then video encoder 20 can generate prediction blocks for the PU based on decoded samples of the frame associated with the PU. If video encoder 20 uses inter-frame prediction to generate prediction blocks for the PU, then video encoder 20 can generate prediction blocks for the PU based on decoded samples of one or more frames other than the frame associated with the PU.

[0096] After the video encoder 20 generates a predicted luminance block, a predicted Cb block, and a predicted Cr block for one or more PUs of the CU, the video encoder 20 can generate a luminance residual block for the CU by subtracting the predicted luminance block of the CU from the original luminance coding block of the CU, such that each sample in the luminance residual block of the CU indicates the difference between a luminance sample in one of the predicted luminance blocks of the CU and a corresponding sample in the original luminance coding block of the CU. Similarly, the video encoder 20 can generate Cb residual blocks and Cr residual blocks for the CU, respectively, such that each sample in the Cb residual block of the CU indicates the difference between a Cb sample in one of the predicted Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU, and each sample in the Cr residual block of the CU indicates the difference between a Cr sample in one of the predicted Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.

[0097] In addition, such as Figure 4CAs shown, the video encoder 20 can use quadtree partitioning to decompose the luminance residual block, Cb residual block, and Cr residual block of the CU into one or more luminance transform blocks, Cb transform blocks, and Cr transform blocks, respectively. A transform block is a rectangular (square or non-square) sample block to which the same transform is applied. A TU of the CU can include a transform block of luminance samples, two corresponding transform blocks of chrominance samples, and syntax elements for transforming the samples of the transform block. Therefore, each TU of the CU can be associated with a luminance transform block, a Cb transform block, and a Cr transform block. In some examples, the luminance transform block associated with a TU can be a sub-block of the CU's luminance residual block. A Cb transform block can be a sub-block of the CU's Cb residual block. A Cr transform block can be a sub-block of the CU's Cr residual block. In a monochrome image or an image with three separate color planes, a TU can include a single transform block and syntax structures for transforming the samples of that transform block.

[0098] The video encoder 20 can apply one or more transforms to the luminance transform block of the TU to generate a luminance coefficient block for the TU. The coefficient block can be a two-dimensional array of transform coefficients. The transform coefficients can be scalars. The video encoder 20 can apply one or more transforms to the Cb transform block of the TU to generate a Cb coefficient block for the TU. The video encoder 20 can apply one or more transforms to the Cr transform block of the TU to generate a Cr coefficient block for the TU.

[0099] After generating coefficient blocks (e.g., luminance coefficient blocks, Cb coefficient blocks, or Cr coefficient blocks), video encoder 20 can quantize the coefficient blocks. Quantization typically refers to the process of quantizing transform coefficients to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. After quantizing the coefficient blocks, video encoder 20 can entropy encode the syntax elements indicating the quantized transform coefficients. For example, video encoder 20 can perform CABAC on the syntax elements indicating the quantized transform coefficients. Finally, video encoder 20 can output a bitstream comprising a bit sequence that forms a representation of coded frames and associated data; the bitstream is stored in storage device 32 or transmitted to target device 14.

[0100] After receiving the bitstream generated by the video encoder 20, the video decoder 30 can parse the bitstream to obtain syntax elements. The video decoder 30 can reconstruct frames of video data, at least in part, based on the syntax elements obtained from the bitstream. The process of reconstructing the video data is generally the inverse of the encoding process performed by the video encoder 20. For example, the video decoder 30 can perform an inverse transform on the coefficient block associated with the TU of the current CU to reconstruct the residual block associated with the TU of the current CU. The video decoder 30 also reconstructs the coded blocks of the current CU by adding the samples of the prediction block of the PU for the current CU to the corresponding samples of the transform block of the TU of the current CU. After reconstructing the coded blocks for each CU of the frame, the video decoder 30 can reconstruct the frame.

[0101] As mentioned above, video coding primarily uses two modes (i.e., intra-frame prediction and inter-frame prediction) to achieve video compression. It should be noted that IBC can be considered either intra-frame prediction or a third mode. Between the two modes, inter-frame prediction contributes more to coding efficiency than intra-frame prediction because it uses motion vectors to predict the current video block based on a reference video block.

[0102] However, with continuously improving video data capture technologies and finer video tile sizes used to preserve details in video data, the amount of data required to represent the motion vectors for the current frame has also increased significantly. One way to overcome this challenge benefits from the fact that not only do a set of neighboring CUs in both the spatial and temporal domains have similar video data for prediction purposes, but the motion vectors between these neighboring CUs are also similar. Therefore, the motion information of spatially neighboring CUs and / or temporally co-located CUs can be used as an approximation of the motion information (e.g., motion vectors) of the current CU (also known as the "Motion Vector Prediction" (MVP) of the current CU) by exploring their spatial and temporal correlations.

[0103] Instead of the above combination Figure 2 The method described involves encoding the actual motion vector of the current CU, determined by the motion estimation unit 42, into the video bitstream, and subtracting the predicted motion vector value of the current CU from the actual motion vector of the current CU to produce the motion vector difference (MVD) for the current CU. By doing so, it is not necessary to encode the motion vector determined by the motion estimation unit 42 for each CU of the frame into the video bitstream, and the amount of data used to represent motion information in the video bitstream can be significantly reduced.

[0104] Similar to the process of selecting a prediction block in a reference frame during inter-frame prediction of a coded block, both the video encoder 20 and the video decoder 30 need to employ a set of rules to construct a motion vector candidate list (also known as a "merging list") for the current CU using those potential candidate motion vectors associated with spatially neighboring CUs and / or temporally co-located CUs. Then, a member is selected from the motion vector candidate list as the motion vector prediction value for the current CU. By doing so, it is not necessary to send the motion vector candidate list itself from the video encoder 20 to the video decoder 30, and the index of the selected motion vector prediction value within the motion vector candidate list is sufficient for both the video encoder 20 and the video decoder 30 to encode and decode the current CU using the same motion vector prediction value from the motion vector candidate list.

[0105] The main focus of this disclosure is to further enhance intra-block copying methods by improving encoding / decoding efficiency and / or reducing their encoding / decoding complexity.

[0106] Affine model In HEVC, only the translational motion model is applied to motion compensation prediction. However, in the real world, many types of motion exist, such as zooming in / out, rotation, perspective motion, and other irregular motions. In VVC, affine motion compensation prediction is applied by signaling a flag for each inter-frame coded block to indicate whether a translational or affine motion model is applied to inter-frame prediction. In current VVC, an affine coded block supports two affine modes: a 4-parameter affine mode and a 6-parameter affine mode.

[0107] The 4-parameter affine model has the following parameters: two parameters for translational motion in the horizontal and vertical directions, one parameter for scaling motion, and one parameter for rotational motion in both directions. In this model, the horizontal scaling parameter is equal to the vertical scaling parameter, and the horizontal rotation parameter is equal to the vertical rotation parameter. To better accommodate the motion vectors and affine parameters, these affine parameters are derived from the two MVs (also known as control point motion vectors (CPMVs)) located at the top left and top right corners of the current block. Figures 5A-5B As shown, the affine motion field of a block is described by two CPMVs (V0, V1). Based on the control point motion, the motion field of an affine-coded block ( v x ,v y It is described as:

[0108] The 6-parameter affine model has the following parameters: two parameters for translational motion in the horizontal and vertical directions, two parameters for scaling and rotational motion in the horizontal direction, and two parameters for scaling and rotational motion in the vertical direction. The 6-parameter affine motion model is encoded using three CPMVs. As shown in Figure 5, the three control points of a 6-parameter affine block are located at the top left, top right, and bottom left corners of the block. The motion at the top left control point is related to translational motion, the motion at the top right control point is related to horizontal rotational and scaling motion, and the motion at the bottom left control point is related to vertical rotational and scaling motion. Compared to the 4-parameter affine motion model, the horizontal rotational and scaling motions in the 6-parameter model may differ from those in the vertical direction. Assuming (V0, V1, V2) are the MVs of the top left, top right, and bottom left corners of the current block in Figure 5, the motion vector of each sub-block can be obtained using these three MVs at the control points. v x ,v y )for:

[0109] Affine Merge Pattern In affine merging mode, the CPMV of the current block is not explicitly transmitted via signaling, but rather derived from neighboring blocks. Specifically, in this mode, motion information from spatially neighboring blocks is used to generate the CPMV of the current block. The size of the affine merging candidate list is limited. For example, in current VVC designs, there may be a maximum of five candidates. The encoder can evaluate and select the best candidate index based on a rate-distortion optimization algorithm. The selected candidate index is then transmitted via signaling to the decoder. Affine merging candidates can be determined in three ways: • Inherit from neighboring affine code blocks • Constructed by translation MV from neighboring blocks • Zero MV For inheritance methods, there can be at most two candidates. These candidates are the neighboring blocks located to the lower left of the current block (e.g., ...). Figure 6 As shown, the scan order is from A0 to A1) and obtained from the neighboring block located to the upper right of the current block (e.g., as shown). Figure 6 As shown, the scan order is from B0 to B2 (if available).

[0110] For the construction method, the candidates are combinations of translational MVs of neighboring blocks, which are generated through two steps.

[0111] • Step 1: Obtain four translation MVs from available neighbors.

[0112] oMV1: The MV from one of the three neighboring blocks closest to the top-left corner of the current block. For example...Figure 7 As shown, the scanning order is B2, B3, and A2.

[0113] oMV2: The MV from one of the two neighboring blocks closest to the top right corner of the current block. For example... Figure 7 As shown, the scanning order is B1 and B0.

[0114] oMV3: The MV from one of the two neighboring blocks closest to the bottom left corner of the current block. For example... Figure 7 As shown, the scanning order is A1 and A0.

[0115] oMV4: The MV of the time-coordinated block from the nearest block to the bottom right corner of the current block. For example... Figure 7 As shown, the neighboring block is T.

[0116] • Step 2: Derive the combination based on the four translation MVs from Step 1.

[0117] Group 1: MV1, MV2, MV3 Group 2: MV1, MV2, MV4 Group 3: MV1, MV3, MV4 Group 4: MV2, MV3, MV4 Group 5: MV1, MV2 Group 6: MV1, MV3 If the merge candidate list is not full after being filled with inherited and constructed candidates, insert zero MV at the end of the list.

[0118] Affine AMVP mode The Affine AMVP (Advanced Motion Vector Prediction) mode can be applied to CUs with both width and height greater than or equal to 16. A CU-level affine flag is signaled in the bitstream to indicate whether the Affine AMVP mode is used, and another flag is signaled to indicate whether it is a 4-parameter or 6-parameter affine. In this mode, the difference between the current CU's CPMV and its predicted CPMVP is signaled in the bitstream. The Affine AMVP candidate list is 2 in size and is generated by using the following four types of CPMV candidates in the following order: – An inherited affine AMVP candidate derived from the CPMV of the neighboring CU. – Constructed affine AMVP candidate CPMVP using translational MV derivation of neighboring CUs – Translation MV from neighboring CU –Time MV from the same CU -Zero MV The checking order for inherited affine AMVP candidates is the same as that for inherited affine merge candidates. The only difference is that, for AMVP candidates, only affine CUs with the same reference image as those in the current block are considered. No pruning process is applied when inserting inherited affine motion predictions into the candidate list.

[0119] The constructed AMVP candidate is derived from the same spatial neighbors as in the affine merging mode. The same checking order as in the affine merging candidate construction is used. Additionally, the reference image index of neighboring blocks is checked. The first block in the checking order that is inter-coded and has the same reference image as in the current CU is used. When the current CU is encoded using a 4-parameter affine mode and... and When both are available, and Add them as candidates to the affine AMVP candidate list. If the current CU uses 6-parameter affine mode encoding and all three CPMVs are available, add them as candidates to the affine AMVP candidate list. Otherwise, the constructed AMVP candidates will be set to unavailable.

[0120] If the number of affine AMVP candidates is still less than 2 after inserting valid inherited affine AMVP candidates and constructed AMVP candidates, then add them sequentially. , and As a translation MV, predict all control point MVs of the current CU (if available). Finally, if the affine AMVP list is still not full, use zero MV to fill the list.

[0121] Intra-block copying in Universal Video Coding (VVC) Intra-Block Copy (IBC) is a tool used in HEVC extensions on SCC. It is well known to significantly improve the encoding and decoding efficiency of screen content material. Since IBC mode is implemented as a block-level coding mode, block matching (BM) is performed at the encoder to find the optimal block vector (or motion vector) for each CU. Here, the block vector is used to indicate the displacement from the current block to a reference block that has already been reconstructed within the current image. The luma block vector of the IBC-coded CU has integer precision. The chroma block vector is also rounded to integer precision. When combined with AMVR, IBC mode can switch between 1-pixel motion vector precision and 4-pixel motion vector precision. IBC-coded CUs are considered a third prediction mode, distinct from intra-prediction or inter-prediction modes. IBC mode is suitable for CUs with a width and height of 64 luma samples or less.

[0122] On the encoder side, hash-based motion estimation is performed on the IBC. The encoder performs RD checks on blocks with a width or height no greater than 16 luminance samples. For non-merging modes, a block vector search is first performed using a hash-based search. If the hash search does not return any valid candidates, a local search based on block matching is performed.

[0123] In hash-based search, hash key matching (32-bit CRC) between the current block and reference blocks is extended to all allowed block sizes. Hash key calculation for each location in the current image is based on 4 × 4 sub-blocks. For larger current blocks, a hash key is determined to match the hash key of a reference block when all hash keys of all 4 × 4 sub-blocks match the hash key at the corresponding reference location. If multiple reference blocks are found to match the hash key of the current block, the block vector cost of each matching reference is calculated, and the reference with the minimum cost is selected.

[0124] In block matching search, the search scope is set to cover both the previous CTU and the current CTU.

[0125] At the CU level, IBC mode is transmitted using flag signals, and it can be transmitted as either IBC AMVP mode or IBC skip / merge mode: –IBC Skip / Merge Mode: The merge candidate index is used to indicate which block vectors from the list of neighboring candidate IBC blocks are used to predict the current block. The merge list consists of spatial candidates, HMVP candidates, and paired candidates.

[0126] –IBC AMVP mode: Encodes and decodes block vector differences in the same way as motion vector differences. The block vector prediction method uses two candidates as prediction values, one from the left neighbor and one from the top neighbor (if IBC encoding is used). When neither neighbor is available, the default block vector is used as the prediction value. A flag indicating the index of the block vector prediction value is transmitted via signaling.

[0127] IBC Reference Area To reduce memory consumption and decoder complexity, IBC in VVC only allows the reconstruction of predefined regions that include the current CTU region and a certain region of the left CTU. Figure 8 The diagram illustrates the reference area for the IBC mode, where each block represents a 64 × 64 luminance sample unit.

[0128] Based on the current location of the encoding CU within the current CTU, the following applies: – If the current block falls within the top-left 64 × 64 block of the current CTU, then in addition to the samples already reconstructed in the current CTU, using CPR mode, the current block can also reference reference samples in the bottom-right 64 × 64 block of the left CTU. Using CPR mode, the current block can also reference reference samples in the bottom-left 64 × 64 block of the left CTU and the top-right 64 × 64 block of the left CTU.

[0129] – If the current block falls within the upper right 64 × 64 block of the current CTU, then in addition to the samples already reconstructed in the current CTU, the current block can also reference the reference samples in the lower left 64 × 64 block and the lower right 64 × 64 block of the left CTU when the brightness position (0, 64) has not yet been reconstructed relative to the current CTU, using CPR mode; otherwise, the current block can also reference the reference samples in the lower right 64 × 64 block of the left CTU.

[0130] – If the current block falls within the lower left 64 × 64 block of the current CTU, then in CPR mode, besides the samples already reconstructed in the current CTU, the current block can also reference reference samples in the upper right and lower right 64 × 64 blocks of the left CTU, provided the brightness position (64, 0) has not yet been reconstructed relative to the current CTU. Otherwise, using CPR mode, the current block can also reference reference samples in the lower right 64 × 64 block of the left CTU.

[0131] – If the current block falls within the bottom right 64 × 64 block of the current CTU, then CPR mode is used, where the current block can only reference samples that have already been reconstructed in the current CTU.

[0132] This restriction allows the IBC mode to be implemented using local on-chip memory in a hardware implementation.

[0133] Interaction between IBC and other codec tools The interaction between IBC mode and other inter-frame coding / decoding tools in VVC (such as Paired Merge Candidate, History-Based Motion Vector Prediction (HMVP), Combined Intra / Inter-Frame Prediction Mode (CIIP), Merge Mode Utilizing Motion Vector Difference (MMVD), and Geometric Partitioning Mode (GPM)) is as follows: IBC can be used with pairwise merge candidates and HMVP. New pairwise IBC merge candidates can be generated by averaging two IBC merge candidates. For HMVP, IBC movements are inserted into a history buffer for future reference.

[0134] –IBC cannot be used with the following inter-frame tools: affine motion, CIIP, MMVD, and GPM.

[0135] – When using DUAL_TREE partitions, IBC is not allowed for chroma-coded blocks.

[0136] Unlike HEVC screen content encoding extension, the current image is no longer included as one of the reference images in the IBC prediction reference image list 0. The derivation of motion vectors in IBC mode excludes all neighboring blocks in inter-frame mode, and vice versa. The following IBC design aspects are applied: –IBC shares the same process as regular MV merging, including pairwise merging candidates and historical motion predictions, but does not allow TMVP and zero vectors because they are invalid for IBC mode.

[0137] – Separate HMVP buffers (5 candidates each) were used for traditional MV and IBC.

[0138] – Block vector constraints are implemented in the form of bitstream consistency constraints. The encoder needs to ensure that there are no invalid vectors in the bitstream, and that merging should not be used if a merging candidate is invalid (out of range or 0). This bitstream consistency constraint is represented by a virtual buffer, as described below.

[0139] – For deblocking, IBC is treated as an inter-frame mode.

[0140] – If the current block is encoded using the IBC prediction mode, AMVR does not use quarter-pixels; instead, AMVR is signaled to indicate only whether the MV is inter-pel or 4-integer-pel.

[0141] The number of IBC merge candidates can be transmitted separately in the strip header from the number of regular merge candidates, sub-block merge candidates, and geometric merge candidates.

[0142] The concept of a virtual buffer is used to describe the permissible reference region and effective block vector of the IBC prediction mode. Representing the CTU size as ctbSize, the virtual buffer ibcBuf has a width of wIbcBuf = 128 × 128 / ctbSize and a height of hIbcBuf = ctbSize. For example, for a CTU size of 128 × 128, the size of ibcBuf is also 128 × 128; for a CTU size of 64 × 64, the size of ibcBuf is 256 × 64; and for a CTU size of 32 × 32, the size of ibcBuf is 512 × 32.

[0143] The size of the VPDU is min(ctbSize, 64) in each dimension, W v= min(ctbSize, 64).

[0144] The virtual IBC buffer ibcBuf is maintained as follows.

[0145] - When you begin decoding each CTU line, refresh the entire ibcBuf with an invalid value of -1.

[0146] – When starting to decode the VPDU (xVPDU, yVPDU) relative to the top left corner of the image, set ibcBuf[x][y] = -1, where x = xVPDU%wIbcBuf, …, xVPDU%wIbcBuf + W v - 1; y = yVPDU%ctbSize,…, yVPDU%ctbSize + W v - 1.

[0147] After decoding, the CU contains (x, y) relative to the top-left corner of the image, set ibcBuf[ x % wIbcBuf ][ y % ctbSize ]= recSample[ x ][ y ] For a block covering coordinates (x, y), if for the block vector bv = (bv[0], bv[1]) The block is valid if the following conditions are met; otherwise, the block is invalid: ibcBuf[ (x + bv[0])% wIbcBuf][ (y + bv[1]) % ctbSize ] should not be equal to -1.

[0148] Intra-block copying in Enhanced Compression Model (ECM) In ECM, IBC has been improved in the following aspects.

[0149] IBC Merge / AMVP List Construction The IBC merge / AMVP list build modifications are as follows: • An IBC merge / AMVP candidate can only be inserted into the IBC merge / AMVP candidate list if it is valid.

[0150] • Candidates in the upper right, lower left, and upper left spaces, as well as a pairwise average candidate, can be added to the IBC merge / AMVP candidate list.

[0151] • Apply template-based adaptive reordering (ARMC-TM) to the IBC merge list.

[0152] The HMVP table size for IBC was increased to 25. After deriving up to 20 IBC merge candidates through full pruning, they were reordered together. Following reordering, the top 6 candidates with the lowest template matching cost were selected as the final candidates in the IBC merge list.

[0153] The zero vector candidate used to populate the IBC merge / AMVP list is replaced with a set of BVP candidates located in the IBC reference region. The zero vector is invalid as a block vector in IBC merge mode, and therefore, it is discarded as a BVP in the IBC candidate list.

[0154] Three candidates are located at the nearest corner of the reference region, and another three candidates are determined to be in the middle of the three sub-regions (A, B, and C), their coordinates determined by the width, height, and ΔX and ΔY parameters of the current block, as shown below. Figure 9 As depicted in the text.

[0155] IBC using template matching Template matching is used in both IBC merge mode and IBC AMVP mode in IBC.

[0156] Compared to the list used in the regular IBC merge mode, the IBC-TM merge list has been modified to select candidates based on a pruning method, with the same motion distance between candidates as in the regular TM merge mode. The zero motion supplement at the end is replaced with motion vectors for the left (-W, 0), top (0, -H), and top-left (-W, -H), where W is the width of the current CU and H is the height of the current CU.

[0157] In IBC-TM merging mode, the selected candidates are refined using a template matching method before the RDO or decoding process. IBC-TM merging mode competes with the regular IBC merging mode and uses a signal transmission TM-merging flag.

[0158] In IBC-TM AMVP mode, a maximum of three candidates are selected from the IBC-TM merge list. Each of these three selected candidates is refined using a template matching method and ranked according to its resulting template matching cost. Then, during motion estimation, only the first two are considered as usual.

[0159] Template matching refinement for IBC-TM merging mode and AMVP mode is very simple because the IBC motion vector is constrained to (i) integers and (ii) within the reference region, such as Figure 8As shown. Therefore, in IBC-TM merge mode, all thinning is performed with integer precision, while in IBC-TM AMVP mode, they are performed with integer or 4-pixel precision depending on the AMVR value. This thinning only accesses samples that are not interpolated. In both cases, the thinning motion vector and the template used in each thinning step must adhere to the constraints of the reference region.

[0160] IBC Reference Area The IBC reference area extends to the two CTU rows above. Figure 10 The diagram illustrates the reference region used to encode a CTU (m,n). Specifically, for a CTU (m,n) to be encoded, the reference region includes CTUs with indices (m–2,n–2)…(W,n–2), (0,n–1)…(W,n–1), (0,n)…(m,n), where W represents the maximum horizontal index within the current tile, strip, or image. This setting ensures that IBC does not require additional memory on the current ETM platform when the CTU size is 128. The per-sample block vector search (or local search) range is limited to: horizontal [–(C<<1), C>>2], vertical [–C, C>>2], to accommodate the expansion of the reference region, where C represents the CTU size.

[0161] IBC merging mode using block vector difference The ECM employs an IBC merging mode utilizing block vector differences. The distance set is {1 pixel, 2 pixels, 4 pixels, 8 pixels, 12 pixels, 16 pixels, 24 pixels, 32 pixels, 40 pixels, 48 ​​pixels, 56 pixels, 64 pixels, 72 pixels, 80 pixels, 88 pixels, 96 pixels, 104 pixels, 112 pixels, 120 pixels, 128 pixels}, and the BVD directions are two horizontal directions and two vertical directions.

[0162] Basic candidates are selected from the top five candidates in the reordered IBC merge list. Then, all possible MBVD refinement positions (20 × 4) for each basic candidate are reordered based on the SAD cost between the template (the row above the current block and the column to the left of the current block) and its reference for each refinement position. Finally, the top 8 refinement positions with the lowest template SAD cost are reserved as available positions and thus used for MBVD index encoding.

[0163] IBC adaptation for camera-captured content When adapting to IBC for camera-captured content, the IBC reference range decreases from 2 CTU lines to 2 × 128 lines, such as Figure 11As shown. On the encoder side, to reduce complexity, the local search range is set to a horizontal [-8,8] and vertical [-8,8] range centered on the first block vector prediction value of the current CU. This encoder modification is not applicable to SCC sequences.

[0164] Sub-block-based temporal motion vector prediction (SbTMVP) VVC supports the Sub-Block-Based Temporal Motion Vector Prediction (SbTMVP) method. Similar to Temporal Motion Vector Prediction (TMVP) in HEVC, SbTMVP uses motion fields from co-located images to improve motion vector prediction and merging patterns for CUs in the current image. The same co-located images used by TMVP are used for SbTVMP. SbTMVP differs from TMVP in the following two main aspects: –TMVP predicts motion at the CU level, but SbTMVP predicts motion at the sub-CU level; –TMVP obtains the temporal motion vector from the co-op block in the co-op image (the co-op block is the lower right or center block relative to the current CU), while SbTMVP applies motion shift before obtaining the temporal motion information from the co-op image, where the motion shift is obtained from the motion vector of one of the spatial neighboring blocks of the current CU.

[0165] Figures 13A-13B The diagram illustrates the SbTVMP process. SbTMVP predicts the motion vectors of sub-CUs within the current CU in two steps. In the first step, it checks... Figure 13A In the spatial neighbor A1, if A1 has a motion vector that uses a co-located image as its reference image, that motion vector is selected as the motion shift to apply. If no such motion is identified, the motion shift is set to (0, 0).

[0166] In the second step, such as Figure 13B As shown, the motion shift identified in step 1 (i.e., the coordinates added to the current block) is applied to obtain sub-CU level motion information (motion vectors and reference indices) from the co-location image. Figure 13B The example assumes that motion shift is set to prevent movement of A1. Then, for each sub-CU, motion information of the sub-CU is derived using motion information of its corresponding block (the smallest motion grid covering the center sample) in the co-location image. After identifying the motion information of the co-location sub-CU, the motion information is converted into a motion vector and reference index for the current sub-CU in a manner similar to the TMVP process of HEVC, wherein temporal motion scaling is applied to align the reference image of the temporal motion vector with the reference image of the current CU.

[0167] In VVC, a sub-block-based merge list containing a combination of SbTVMP and affine merge candidates is used for signal transmission in sub-block-based merge mode. The SbTVMP mode is enabled / disabled by the Sequence Parameter Set (SPS) flag. If the SbTVMP mode is enabled, the SbTVMP prediction is added as the first entry in the sub-block-based merge candidate list, followed by the affine merge candidate. The size of the sub-block-based merge list is transmitted in SPS, and the maximum allowed size of the sub-block-based merge list in VVC is 5.

[0168] The sub-CU size used in SbTMVP is fixed at 8 × 8, and similar to the affine merge mode, the SbTMVP mode is only applicable to CUs whose width and height are both greater than or equal to 8.

[0169] The encoding logic for the additional SbTMVP merge candidate is the same as that for other merge candidates, that is, for each CU in the P or B stripe, an additional RD check is performed to determine whether to use the SbTMVP candidate.

[0170] Intra-frame template matching Intra-frame template matching prediction (intra-frame TMP) is a special intra-frame prediction mode that copies the best prediction block from the reconstructed portion of the current frame that matches the current template. For a predefined search range, the encoder searches for the template most similar to the current template in the reconstructed portion of the current frame and uses the corresponding block as the prediction block. The encoder then signals the use of this mode and performs the same prediction operation on the decoder side.

[0171] A prediction signal is generated by matching the L-shaped causal neighbors of the current block with another block in a predefined search region in Figure 4, which consists of the following: R1: Current CTU R2: Top Left CTU R3: Above CTU R4: Left CTU The sum of absolute differences (SAD) is used as the cost function.

[0172] Within each region, the decoder searches for the template with the minimum SAD relative to the current template and uses its corresponding block as the prediction block.

[0173] The dimensions of all regions (SearchRange_w, SearchRange_h) are set proportionally to the block dimensions (BlkW, BlkH) to ensure a fixed number of SAD comparisons per pixel. That is: SearchRange_w = a * BlkW SearchRange_h = a * BlkH in,' ' is a constant that controls the trade-off between gain and complexity. In fact, ' 'Equals 5.'

[0174] For CUs with width and height dimensions less than or equal to 64, enable the intra-frame template matching tool. This maximum CU size used for intra-frame template matching is configurable.

[0175] When DIMD is not used for the current CU, the intra-frame template matching prediction mode is transmitted at the CU level using a dedicated flag.

[0176] Probability estimation techniques for CABAC in AVC and HEVC CABAC (Context-Based Adaptive Binary Arithmetic Coding) was initially introduced in the H.264 / AVC standard as one of two supported entropy coding schemes. In CABAC, arithmetic coding consists of two modules: codeword mapping (also known as binarization) and probability estimation. During codeword mapping, syntax elements are mapped to a string of binary bits. This mapping is achieved through a binarizer, which converts syntax elements into several sets of binary bits based on different binarization schemes. In practice, various binarization schemes can be applied for this conversion, such as fixed-length codes, unary codes, truncated unary codes, and k-order exponential Golomb codes. The purpose of the probability estimation module is to determine the probability that a binary bit is either 1 or 0. In AVC, the probability of a binary bit is calculated based on an exponential aging model, where the probability that a current binary bit is equal to 1 or 0 depends on the value of previously encoded binary bits. Furthermore, according to common statistics, the influence of binary bits immediately preceding a current binary bit is generally greater than that of binary bits encoded much earlier. With this in mind, a parameter α was introduced in CABAC, which controls the number N of previously encoded bits used to estimate the probability of the current bit, i.e., N = 1 / α. This parameter is converted into an adaptive rate at which the probability is updated as the encoded binary bits increase. Specifically, using the adaptive parameter α, the probability that a binary bit is the minimum probability symbol (LPS) is recursively calculated as follows:

[0177] in, At any moment The probability of an LPS symbol; At any moment The updated probability of the LPS symbol; It equals 1 when the current binary bit is an LPS symbol and equals 0 when the current binary bit is a maximum probability symbol (MPS). In the CABAC engines of AVC and HEVC, it is set to 1 for each syntax element. (That is, when estimating the probability of a current bit, approximately 19.69 previously encoded bits are considered) a fixed value, which is then updated independently according to (3). Furthermore, to avoid using multiplication during probability estimation, the probability in equation (3) is... (These are real numbers ranging from 0 to 1) and are quantized into a fixed set of probability states. For example, in AVC and HEVC, the probability has 7 bits of precision, corresponding to 128 probability states.

[0178] In AVC and HEVC, a video bitstream typically consists of one or more independently decodeable stripes. At the beginning of each stripe, the probabilities of all contexts are initialized to some predefined values. Theoretically, given the statistical properties of a given context, a uniform distribution (i.e., ...) should be used. ) to initialize context probabilities. However, in order to make the probabilities of a context reach their corresponding statistical distribution more quickly, it is found beneficial to provide each context with some appropriate initial probability values ​​(which may not be equally probable). Specifically, in AVC and HEVC, given a strip SliceQP Y The initial QP, the initial probabilistic state of a context. InitProbState The calculation is as follows:

[0179] in, and (Both are in the range of 0 to 15) are two initialization parameters, which are predefined and stored as lookup tables (LUTs) for calculating the initial probabilities of a context. As shown in equation (4), the initial probability state is modeled by a linear function of the striped QP, where the slope is equal to And the offset is equal to .

[0180] Probability estimation techniques for CABAC in VVC Aside from the following key differences, the probability estimation module used in VVC is almost identical to the probability estimation modules used in AVC and HEVC: 1. VVC maintains two probability estimates for each context, where each context has its own probability adaptive rate α in (3). The final probability actually used for arithmetic coding is the average of these two estimates.

[0181] 2. In VVC, multiple probabilistic LUTs are predefined and used to initialize the probabilities of different contexts for a stripe. Similar to AVC and HEVC, the initial probability estimates are based on a linear model with the stripe QP as input. However, in VVC, the obtained values ​​represent the actual probability values; while in AVC / HEVC, the obtained values ​​represent the indices of the probability states.

[0182] Multiple Hypothesis Probability Estimation Clearly, since the statistical properties of all grammatical elements differ, using a fixed adaptive parameter for all grammatical elements may not be optimal. On the other hand, numerous scientific studies have demonstrated that using multiple probability estimators can achieve better estimation accuracy compared to a single estimator. Therefore, a multi-hypothesis probability estimation scheme is applied in the CABAC design of VVC, where two different adaptive parameters α0 and α1 are utilized, corresponding to a slow and a fast probability adaptation speed, respectively. In this way, two different probabilities can be calculated for each binary bit using the two adaptive parameters, and then averaged to generate the final probability of the binary bit, i.e.,

[0183] in, and These are two adaptive parameters associated with these two probabilistic assumptions. In VVC, a training algorithm designed to jointly optimize the adaptive parameters and the initial probabilities is used to independently select them for each context. and The value of . Specifically, according to the current design, for each context, it is possible to select from a set of predefined values ​​{1 / 4, 1 / 8, 1 / 16, 1 / 32}. And select from another set of predefined values ​​{1 / 32, 1 / 64, 1 / 128, 1 / 256, 1 / 512} .

[0184] Initial probability calculation Similar to AVC / HEVC, VVC's CABCA procedure also calls a QP-related probability initialization procedure at the beginning of each stripe. However, unlike AVC / HEVC, which initializes the state of a probabilistic state machine, VVC directly obtains the actual values ​​of the initial probabilities, as shown below.

[0185] in, and These are two initialization parameters used to calculate the slope and offset of the linear model, and they are expressed with 3 digits of precision. and These are the two initial probabilities calculated for the two probability estimators.

[0186] Entropy coding in ECM Extended precision The increase in intermediate precision used in the arithmetic coding engine includes three elements. First, the precision for both probability states is increased to 15 bits, compared to 10 bits and 14 bits in VVC. Second, the LPS range update process is modified as follows:

[0187] Where range is a 9-bit variable representing the width of the current interval, q is a 15-bit variable representing the probability state of the current context model, and R LPS This is the updated range of LPS. This operation can also be achieved by looking up 512 × 256 entries in a 9-bit lookup table. Third, on the encoder side, the 256-entry lookup table used for bit estimation in the VTM is expanded to 512 entries.

[0188] Window size based on strip type Since the statistics differ for different stripe types, it is beneficial to update the context's probability state at a rate that provides a more accurate probability estimate for a given stripe type (e.g., a more accurate prediction of the likelihood that a bit will be 1 or 0). Therefore, for each context model, three window sizes are predefined for I-strip, B-strip, and P-strip, similar to the initialization parameters.

[0189] The context initialization parameters and window size were retrained.

[0190] Improved probability estimation of CABAC Multi-hypothesis probability estimation with adaptive weights Multiple hypothesis-based (MHP-AW) probabilities are estimated using adaptive weights. Specifically, two separate probability estimates are maintained for each context. and And it is updated according to its own fitness rate. However, instead of using a simple average, multiple weights are introduced to obtain the resulting probabilities for binary arithmetic encoding. As shown below:

[0191] in, and From a predefined set The weights selected; It is a bitwise right shift value, when The weight is 5 if it is true, and 6 otherwise. For each context model, three different sets of weights are pre-determined under I-band, B-band, and P-band types. The weights for I-band type are only allowed for intra-band applications, while the weights for B-band and P-band types can be switched for inter-band applications at the band level.

[0192] CABAC initialization based on previous inter-frame striping and windowing adjustments After encoding the last CTU, the context initialization stored at the previously encoded image can be used to initialize inter-frame slices with the same slice type, QP, and time ID. For each slice type, the buffer size used to store the previously initialized slices is set to equal to 5, and when the buffer is full, the entry with the smallest QP and time ID is removed first before storing the initialization.

[0193] CABAC employs two probabilistic states updated with short and long window sizes, respectively. Since the predefined window size for each context model is not optimal for different statistics in different regions, the window size is adjusted based on the previously encoded bits for each context.

[0194] The short and long window sizes used in CABAC updates are adjusted using two incremental parameters stored in a lookup table for each context and obtained using previously encoded bits as indexes. The previously encoded bits are used as indices to retrieve the adjustment parameters from the lookup table: delta0 for the short window and delta1 for the long window. The original short and long window sizes, stored in the existing initialization table and defined for this context model, are denoted as shift0 and shift1, respectively. The actual window sizes used to encode the current bits after adjustment are (shift0 + delta0) and (shift1 + delta1), where shift0 and shift1 are predefined window sizes stored in the context initialization table.

[0195] Reconstruction Reordering IBC for Screen Content Encoding (RRIBC) Symmetry is frequently observed in video content, especially in text character regions within screen content sequences and in computer-generated graphics. To further improve the coding efficiency of IBC in ECM, a Reconstruction Reordering IBC (RRIBC) mode for screen content video coding is proposed.

[0196] When RRIBC is applied, the samples in the reconstructed block are flipped according to the flip type of the current block. On the encoder side, the original block is flipped before motion search and residual calculation, while the predicted block is obtained without flipping. On the decoder side, the reconstructed block is flipped back to recover the original block.

[0197] Specifically, two flipping methods are supported for RRIBC coded blocks: horizontal flipping and vertical flipping. First, the syntax flags of the IBC AMVP coded block are signaled to indicate whether the reconstruction is flipped. If the reconstruction is flipped, another flag specifying the flipping type is further signaled. For IBC merging, the flipping type is inherited from neighboring blocks, and no syntax signaling is used. Considering horizontal or vertical symmetry, the current block and the reference block are typically horizontally or vertically aligned. Therefore, when applying a horizontal flip, the vertical component of the BV is not signaled and is inferred to be equal to 0. Similarly, when applying a vertical flip, the horizontal component of the BV is not signaled and is inferred to be equal to 0.

[0198] To better utilize symmetry properties, a flip-aware BV adjustment method is applied to refine the block vector candidates. For example, as... Figure 16A and Figure 16B As shown, ( x nbr , y nbr )and( x cur , y cur ) represent the coordinates of the center sample points of the neighboring blocks and the current block, respectively. BV nbr and BV cur These represent the BV of the neighboring block and the current block, respectively. Instead of directly inheriting the BV from the neighboring block, when encoding the neighboring block with horizontal flipping, motion shifting is added... BV nbr The horizontal component (represented as) BV nbr h To calculate BV cur The horizontal component, i.e. BV cur h =2( x nbr - x cur ) + BV nbr h Similarly, in the case of encoding neighboring blocks using vertical flipping, motion shifting is added... BV nbr The vertical component (represented as) BV nbr v To calculate BV cur The vertical component, i.e. BVcur v =2( y nbr - y cur ) + BV nbr v .

[0199] Direct Block Vector (DBV) Mode for Chromatography Prediction Direct Block Vector (DBV) is provided to improve the encoding / decoding efficiency of chroma components when dual-tree is activated in an intra-strip. When chroma dual-tree is activated in an intra-strip, for a chroma CU encoded in DBV mode, if... Figure 17 If the center block is encoded using IBC or IntraTmp mode, its block vector bvL is used to obtain the chroma block vector bvC. The bv scaling process is determined based on template matching. If the luma block is encoded using RRIBC, bvL undergoes the same flip-sensory BV adjustment as RRIBC. Then, as... Figure 18 The depiction involves determining the corresponding offset position (xCb + bvC_hor, yCb + bvC_ver) by using the position of the current chroma block (xCb, yCb) and its bvC, and then performing block copy prediction.

[0200] Block Vector Difference Prediction for IBC Blocks (IBC-BVDP) IBC-BVDP is a technique for predicting the sign and magnitude of the x and y components of the block vector difference (BVD) of an IBC block. Specifically, the BVD sign and suffix bits of the exponential Golomb code used to represent the BVD magnitude are predicted by estimating the template matching cost of candidate blocks to utilize the regular CABAC mode at the entropy coding level instead of its bypass mode. Specifically, the most significant bits of the magnitude suffixes for the horizontal and vertical BVD components are predicted, and the predicted match is encoded in the bitstream using the CABAC context mode. The less significant bits of the magnitude suffixes for the horizontal and vertical BVD components are encoded in bypass mode. The maximum number of bits to predict for the PU is controlled by a macro and is currently set to 4 in ECM8.0.

[0201] BVP candidate clustering and BVD symbol derivation for reconstructing and reordering IBC patterns (IBC-BVPC) In this IBC-BVPC mode, the IBC AMVP list construction is modified based on the clustering of BVP candidates according to the distance between BVP candidates and the sign prediction of BVD (if BV has an empty component).

[0202] For blocks whose BV has two non-empty components, clustering of the BVP candidates is applied before selecting two AMVP candidates. Clustering is used when the number of valid BVP candidates exceeds two, and up to six BVP candidates are clustered based on the L2 Euclidean distance between these candidates. Radius ( R ) determines the vector group (such as Figure 19 As shown), the current block width is as follows ( cbWidth ) and height ( cbHeight The logarithmic function of ) (7) The clustering method is applied in the order of the candidate list, and candidates assigned to a group are removed from the list of subsequent clusters. Within each group, the BVP with the lowest TM cost is selected as the representative candidate for that group. The motion estimation process is performed on the representative candidates from the first two groups, just as in the regular IBC AMVP list.

[0203] Conversely, a BV with an empty component (including RRIBC blocks) passes through bvOneNullComp The flag is transmitted to the decoder via a signal. Instead of calling the AMVP IBC list construction, two new BVP candidates are determined, based on... bvNullCompDir The horizontal or vertical direction indicated by the marker is adjusted to the boundary of the valid IBC search area.

[0204] AMVP Set to the nearest valid position to the current block ( or Therefore, BVD (if it is not empty) is always negative, with BV pointing to the left for an empty vertical component, or pointing upwards for an empty horizontal component. Similarly, AMVP... It is set to the position furthest from the current block in the valid reference region, i.e., the left or top boundary of the IBC search region. Therefore, if you select If BVD is positive, then BVD is always positive. For BV with an empty vertical component, it points to the right; for BV with an empty horizontal component, it points to the bottom.

[0205] The optimal IBC AMVP index is transmitted via signaling, allowing the symbols of the non-empty BVD components to be derived on the decoder side. Therefore, the absolute values ​​of the non-empty components of the BVD are transmitted to the decoder via signaling, thereby improving encoding and decoding efficiency. The RRIBC mode is transmitted via signaling using existing syntax flags, and from... bvNullCompDir The flag obtains the direction of the flip mode.

[0206] IBC with local illumination compensation (IBC-LIC) Intra-Block Copy with Local Illumination Compensation (IBC-LIC) is an encoding / decoding tool that uses linear equations to compensate for local illumination variations within an image between an IBC-encoded CU and its predicted blocks. The parameters of the linear equations are derived in the same way as those for LIC used for inter-frame prediction, except that the reference template is generated using block vectors from the IBC-LIC. IBC-LIC can be applied to both IBC AMVP and IBC merging modes. In IBC AMVP mode, an IBC-LIC flag is signaled to indicate the use of IBC-LIC. In IBC merging mode, the IBC-LIC flag is inferred from merging candidates.

[0207] Combined Intra-Block Copying and Intra-Prediction (IBC-CIIP) Combined Intra-Block Copy and Intra-Prediction (IBC-CIIP) is an encoding / decoding tool for CUs that uses IBC in merged mode and intra-prediction to obtain two prediction signals, and then performs a weighted sum of the two prediction signals to generate the final prediction. Specifically, if the intra-prediction is in planar mode or DC mode, the final prediction is obtained as follows:

[0208] in, and These represent the IBC prediction signal and the intra-frame prediction signal, respectively. When both the top and left CUs are intra-coded, the value is set to (1, 2); when one of the top and left CUs is intra-coded, the value is set to (2, 2); and when both the top and left CUs are IBC-coded, the value is set to (3, 2). In other cases (i.e., if intra-prediction is in directional mode), the final prediction is obtained by adaptively switching the intra-mode and IBC prediction samples. For illustrative purposes, it is assumed that the current CU size is... Furthermore, the intra-frame mode is either horizontal or vertical. If the top and left adjacent CUs are both intra-coded, then the final predicted left side... Part (horizontal mode) or top Part (vertical mode) is set as the intra-predictive signal; however, if only one of the top and left CUs is intra-coded, the final predicted left CU will be... Part (horizontal mode) or top The portion (vertical mode) is set as the intra-frame predicted signal; however, if both the upper and left CUs are IBC or inter-frame coded, the final predicted left CU is... Part (horizontal mode) or top A portion (vertical mode) is set as the intra-predicted signal. In the above, apart from the intra-predicted portion, the remaining portions of the final prediction are set as IBC prediction samples.

[0209] In video codecs, intra-block copying is well-known for accurately predicting both screen content and artificially generated content, where patterns and edges can repeat within a frame. Intra-block copying can also be beneficial for predicting natural content with repeating textures in the current frame. For codec scenarios with limited repeating content, intra-block copying can be omitted while still transmitting its minimum signaling bits. In such cases, to further improve the codec efficiency of intra-block copying, a more flexible on / off control mechanism with varying granularity is desired.

[0210] In inter-frame prediction encoding / decoding modes, fractional motion vectors are used to improve prediction accuracy. However, in the current intra-block copy mode, only integer motion vectors are used. This study aims to explore the encoding / decoding benefits of using fractional motion vectors for intra-block copy. When using fractional motion in intra-block copy, several subsequent issues need to be addressed: fractional motion derivation, signal transmission, interpolation padding, interpolation filter selection, and interaction with other encoding / decoding tools.

[0211] In this disclosure, the encoding and decoding tools for intra-frame block copying are improved in the following ways: • Flexible on / off control mechanism • CABAC context window • Interpolation-based fractional-frame intra-block copying o-score motion search o fractional motion refinement o Conditional sample / pixel padding for fractional interpolation o Interpolation filter switching o Multiple assumptions fractional intra-block copying • Signal transmission of motion information •IBC Merging / AMVP Campaign Candidate List Construction • Combination with intra-frame template matching • Combination with IBC merging mode that utilizes block vector differences • Combination of IBC-LIC and IBC utilizing fractional motion vectors • Combination of DBV with IBC utilizing fractional or integer motion vectors • Combination of RRIBC and IBC utilizing fractional motion vectors • Combination of IBC-BVPC and IBC utilizing fractional motion vectors • Combination of IBC-BVDP and IBC utilizing fractional motion vectors • Combination of paired candidates with other IBC coding modes Flexible on / off control mechanism This section presents several methods for controlling the on / off state of IBC mode application. On / off control indicates whether IBC mode can be enabled, possibly for the current sequence, frame, stripe, CTU, or block (at different granularities). If IBC mode is enabled, additional flags (e.g., whether IBC mode is enabled or disabled for a specific block) and / or information (e.g., block vectors) can be transmitted via signaling. If IBC mode is disabled, flags or information are no longer transmitted via signaling.

[0212] In some embodiments, the on / off control of intra-frame block copying can be based on an explicit signaling method.

[0213] In one embodiment, on / off control is based on one or more sequence-level, frame-level, stripe-level, coding tree unit (CTU)-level, or block-level flags, or any combination of different level flags. When any combination of different level flags is used, the transmission of lower-level flags depends on the on / off state of higher-level flags. In one example, if a frame-level flag indicates that IBC mode is off, no further flags are transmitted at the stripe or block level. Otherwise, lower-level flags(s) are transmitted further.

[0214] In another embodiment, on / off control is based on different regions. The purpose of the region concept is to provide more flexible granularity for IBC on / off control.

[0215] In one embodiment, the region here can be defined as a non-overlapping area within a frame, strip, or CTU. For all blocks located within a specific region, a single on / off control flag can be signed to indicate whether IBC mode is disabled for all of these blocks. The size of the region can be predefined as a set of fixed values, such as M × N, or a set of values ​​transmitted via signaling.

[0216] In some other embodiments, the on / off control of intra-block copying can be based on local information and does not require explicit signal transmission.

[0217] In some embodiments, the on / off control is based on prediction information. In one embodiment, IBC mode is always off for inter-frame prediction blocks. In another embodiment, IBC mode is always off for inter-frame prediction blocks with unidirectional and / or bidirectional prediction.

[0218] In another embodiment, IBC mode is always disabled for blocks encoded in sub-block mode. Sub-block mode is a mode that divides the current block into sub-blocks, and each sub-block can have its own motion information. Examples include affine mode and SbTMVP mode. In yet another embodiment, IBC mode is always disabled for blocks not encoded in sub-block mode.

[0219] In some other embodiments, the on / off control is based on other encoding information. In one embodiment, the IBC mode is always off when one or more other encoding modes are applied to the current block. For example, the IBC mode is always off when affine mode is enabled.

[0220] In some other embodiments, the on / off control is based on frame type. In one embodiment, IBC mode is always off for B-frames and / or P-frames.

[0221] In some other embodiments, the on / off control is based on block information. In one embodiment, IBC mode is always off for coded blocks smaller than a certain size (e.g., 8 × 8 blocks) or larger than a certain size (e.g., 64 × 64). In one embodiment, IBC mode is always off for wide blocks (e.g., blocks whose width is M times their height) or long blocks (e.g., blocks whose height is N times their width), where the values ​​of M and N can be fixed (e.g., M = 2, N = 3) or transmitted as signals at the sequence or frame level.

[0222] CABAC context window In current IBC designs, one or more IBC mode-related flags can exist with CABAC context coding. For example, block-level IBC enable flags are context-coded. Since statistics can differ for different slices or frame types, it is desirable for the context probability state to be updated at a rate that provides a more accurate probability estimate for a given slice / frame type (e.g., a more accurate prediction of the probability that a bit is 1 or 0).

[0223] In some embodiments, for each context model associated with the IBC mode, three windows can be predefined for three different stripes (including the I strip, B strip, and P strip).

[0224] In some embodiments, for each context model associated with the IBC mode, two windows can be predefined for different stripes with two different prediction modes (including intra-frame prediction stripes (I stripes) and inter-frame prediction stripes (B stripes and P stripes)).

[0225] Based on multiple context windows updated under a given stripe / frame type, one or more IBC mode-related flags (e.g., motion accuracy, interpolation filter selection for motion-compensated block prediction or / and template prediction, etc.) can be further signaled by using different context binary bits.

[0226] In one example, motion precision flags can be signaled individually or in combination for different strip / frame types. The motion precision flags signaled can depend on the currently supported precision type for a given strip / frame type (e.g., 1 pixel, 4 pixels, or fractional pixels, such as 1 / 2, or / and 1 / 4, or / and 1 / 8 pixels, or / and 1 / 16 pixels).

[0227] In another example, signal transmission interpolation filters can be further selected individually or jointly for different stripe / frame types (e.g., 12-tap, 6-tap, 4-tap, 2-tap, or / and 0-tap filters).

[0228] In some embodiments, one or more IBC mode-related flags (e.g., motion accuracy, interpolation filter selection for motion-compensated block prediction or / and template prediction, etc.) may be transmitted separately or jointly for different video component types.

[0229] In one example, motion precision flags can be supported, and then the luminance and chrominance components can be signaled in different ways. In one embodiment, 4-pixel, 1-pixel, 1 / 2-pixel, and 1 / 4-pixel precisions can be supported and signaled for the luminance component, while only 4-pixel, 1-pixel, and 1 / 2-pixel precisions are supported for the chrominance component.

[0230] In another example, motion precision flags can be supported, and then the motion precision flags can be signaled jointly for both the luma and chroma components. This can instruct the signaling of a set of motion precision flags for all video components (luma and chroma). In one example, 4 pixels, 1 pixel, 1 / 2 pixel, and 1 / 4 pixel can be supported, and signaling can be performed for all three components. In another example, 4 pixels, 1 pixel, and 1 / 2 pixel can be supported, and signaling can be performed for all three components. In yet another example, 4 pixels, 1 pixel, and 1 / 4 pixel can be supported, and signaling can be performed for all three components, in which case the 1 / 2 pixel will always be converted to 1 / 4 pixel precision before signaling.

[0231] When supporting different motion precisions and transmitting signals with different motion precisions for different video components, corresponding interpolation filters for each motion precision can be defined in similar or different ways for different video components. For example, the 2-tap filters for the luma and chroma components can be the same or different. Furthermore, the interpolation filters used at each motion precision can be the same or different, and the application of interpolation filters at each motion precision and for each video component can be defined individually or jointly.

[0232] In some embodiments, one or more IBC mode-related flags (e.g., motion accuracy, interpolation filter selection for motion-compensated block prediction or / and template prediction, etc.) may be further transmitted individually or jointly by taking into account different strip / frame types, different video components and / or different video resolutions.

[0233] When multiple windows are defined for different stripes or frames, the context window size and initialization parameters can also be retrained individually or jointly.

[0234] Fractional intra-frame copying based on interpolation Score motion search In one embodiment, fractional motion search can be performed on the encoder side, and the final motion signal can be transmitted to the decoder side. After subtracting the motion predictions known to both the encoder and decoder, the transmitted motion signal can be in the form of motion difference. The motion search can be performed in three steps: • In step 1, the best N integer motion vectors with the minimum distortion cost (e.g., sum of absolute differences (SAD)) can be searched first.

[0235] • In step 2, half-pixel thinning is applied around each of the N integer motion vectors. In this step 2, M optimal half-pixel positions can be obtained (the optimal M positions indicate the M half-pixel motion differences with the lowest rate distortion cost). For example, an encoder or decoder can obtain the M optimal half-pixel positions with the lowest rate distortion cost. If K of the N integer motion vectors are selected, the output can be a total of K * M half-pixel positions.

[0236] • In step 3, quarter-pixel thinning is applied around the optimal half-pixel position of each of the N integer motion vectors. In this step 3, a set of Q quarter-pixel positions can be obtained for each of the K * M half-pixel positions obtained in step 2. And the optimal R quarter-pixel positions from all K * M * Q candidate positions can be generated. The optimal position among the R positions (e.g., the position with the minimum rate distortion) can be determined by full rate distortion calculation and transmitted to the decoder. For example, the encoder can generate the optimal R quarter-pixel positions, then select the best position with the minimum rate distortion among the R positions, and transmit the best position among the R positions to the decoder. The values ​​of N, M, K, Q, and R are position integers.

[0237] Following these three steps, (e.g., in the format of motion vector difference) the optimally thinned motion vector is transmitted via signal transmission (after half-pixel and / or quarter-pixel thinning). In this disclosure, and in this and the following sections, the motion vector can be used interchangeably with a block vector that identifies a reference / predicted block in the same picture / frame.

[0238] In some examples, if the actual highest precision after quarter-pixel thinning is only half a pixel (e.g., the highest precision bit or the last bit of the quarter-pixel motion vector is zero), the signal transmission of these thinned motion vectors can be performed in two different ways.

[0239] In one approach, the motion vector is still thinned by signal transmission in quarter-pixel or 1 / 4-pixel increments. In this case, half-pixel or 1 / 2-pixel precision is never used for signal transmission.

[0240] In another approach, the motion vector is refined using signal transmission with a practical precision of only half a pixel or half a pixel. In this case, signal transmission with half a pixel or half a pixel precision is supported.

[0241] In another embodiment, fractional motion search can be performed at both the encoder and decoder sides, eliminating the need to transmit the final fractional motion via signaling. In this approach, a template-matching-based method can be used to find the optimal fractional motion.

[0242] In one or more embodiments, an inverse L-shaped sample / pixel region adjacent to the coded block can be used as a matching template, and the pixel / sample width can be prefixed, configurable, or transmitted as a signal in a sequence or / and picture, or / and strip, or / and CTU level.

[0243] Within a constrained search region (defined by the number of configurable or signal-transmitted CTUs, or the number of CTU lines, or the number of samples, prefixed from the upper, left, and / or upper left spatial regions), the template similarity between any adjacent / non-adjacent reference blocks and the current coded block is calculated, and the best N reference blocks with the closest similarity are selected as candidates in the template list.

[0244] Use a signal transmission to indicate whether to use the template matching method. If the flag is true, then a further signal transmission should be used to indicate which candidate in the template list should be used, and its index.

[0245] In another embodiment, both an encoder search method and a template matching method are used in combination. For example, first, an integer motion and fractional refinement method is employed at the encoder, and then another template refinement is further applied at both the encoder side and the decoder side. Since the encoder search method is already accurate enough, the template refinement can be performed with a high precision and in a small area. For example, the motion refinement at the encoding side is performed with a precision of up to half-pixel or quarter-pixel, while the template refinement can be further performed with a precision of quarter-pixel or one-eighth pixel or one-sixteenth pixel.

[0246] To constrain the complexity during fractional motion search, several methods can be provided as follows.

[0247] The best SAD (Sum of Absolute Differences) or SATD (Sum of Absolute Transformed Differences) cost of the current coding block using other coding modes (e.g., other intra-coding modes such as angular mode, planar mode, etc.) is used as a threshold to prematurely terminate the current fractional motion search. In one example, given that the current best SAD or SATD cost from other coding modes is X, the predefined threshold factor is f (e.g., example values can be 1.1, 1.2, 1.21, etc.), and the best SAD or SATD cost of the current integer motion search from the IBC mode is Y, if Y >= f * X, then the subsequent fractional motion search can be simplified (e.g., the N best integer motion vectors for further fractional refinement can be reduced to N', and N' < N) or skipped (e.g., the N best integer motion vectors for further fractional refinement can be reduced to 0). Note that the values of N, N', and f can be predefined or signaled or (e.g., based on the texture richness of the current coding block) adaptively determined.

[0248] The fractional search can be simplified or skipped based on a combination of other coding modes. For example, if the current coding block is enabled for IBC-CIIP or / and IBC-LIC, then the fractional search for IBC can be simplified (e.g., the N best integer motion vectors for further fractional refinement can be reduced to N', and N' < N) or skipped (e.g., the N best integer motion vectors for further fractional refinement can be reduced to 0). Note that the values of N, N', and f can be predefined or signaled or (e.g., based on the texture richness of the current coding block) adaptively determined.

[0249] When the fractional search is simplified, several different simplification methods can be provided as follows.

[0250] In one example, the N best integer motion vectors selected for further fractional refinement can be reduced to N', where N' < N.

[0251] The N best integer motion vectors selected for further fractional refinement can come not only from the current integer search process but also from previous integer and / or fractional search processes (historical search processes) of the same current coding block or different coding blocks. For example, for the current block, the encoder side can perform several rounds of motion search processes, where different modes (e.g., IBC-CIIP, IBC-LIC) can be enabled or disabled for the current block in each round. Subsequent rounds of motion search processes can be based on the best outputs of previously executed / earlier rounds of motion search processes. For example, when IBC-CIIP and / or IBC-LIC is enabled for the current motion search process, the best outputs (e.g., the best M integer / fractional motion vectors, M>= 1) of previous rounds of motion search processes (where IBC-CIIP and / or IBC-LIC are disabled) can be added to the candidate list and further refined through the current integer / fractional search process.

[0252] Fractional motion refinement With or without a fractional motion search process, the initial motion vector (MV) can be identified. The initial MV can be adjusted for two reasons: • For smaller signaling overhead, the initial Mv can be rounded to a specific precision or value to minimize the difference between the initial Mv and the selected predicted mv value.

[0253] • For lower signaling overhead, a few of the least important bits in the initial MV can be discarded.

[0254] With or without making the above adjustments, it may be necessary to refine the initial Mv on the decoder side.

[0255] In one or more embodiments, method-based template matching can be used. In one example, an inverse L-shaped sample / pixel region adjacent to the coded block can be used as a matching template. The initial Mv can be refined at the integer pixel and / or fractional pixel level. The potential refinement set can be {1 / 4 pixel, 2 / 4 pixel, 3 / 4 pixel} or / and {1 / 8 pixel, 3 / 8 pixel, 5 / 8 pixel, 7 / 8 pixel}, and the refinement directions are two horizontal directions and two vertical directions (positive and negative values). The refined Mv that generates the prediction block with the most similar template is selected as the final Mv. Note that if the most similar template is selected, the selected refinement can be implicitly obtained by the decoder, or if multiple refined Mvs with N most similar templates are obtained, the selected refinement can be explicitly obtained by the encoder.

[0256] In one or more embodiments, additional flags can be transmitted via signaling to indicate whether this fractional motion refinement is applied. These additional flags can be transmitted as sequences, images, strips, or CTU levels.

[0257] Conditional sample / pixel padding for fractional interpolation When using fractional Mv, interpolation operations may require a greater number of pixels / samples than the current block. The actual difference depends on the interpolation filter tap length. In cases where some pixels / samples are unavailable, a pixel / sample padding process may be necessary. Different padding schemes can be used.

[0258] In one or more embodiments, a repeating fill type can be used. Unavailable pixel / sample locations can be filled with the same value of the nearest available pixel / sample in the same row or column. This repeating fill can be performed first in the horizontal direction (left and right border fills), and then in the vertical direction (top and bottom border fills). Alternatively, this repeating fill can be performed first in the vertical direction (top and bottom border fills), and then in the horizontal direction (left and right border fills).

[0259] In one or more embodiments, a symmetrical fill type can be used. Unavailable pixel / sample locations can be filled with pixels at positions symmetrical to the fill boundary. This fill can be performed first in the horizontal direction (left or right boundary fill) and then in the vertical direction (top or bottom boundary fill). Alternatively, this repeating fill can be performed first in the vertical direction (top or bottom boundary fill) and then in the horizontal direction (left or right boundary fill).

[0260] In one or more embodiments, the filling process may be conditionally skipped or simplified.

[0261] In one embodiment, the filling process may be partially or completely skipped depending on the value of the fractional portion of the motion vector. In one example, if the horizontal or vertical portion of the motion vector is equal to zero, the corresponding vertical or horizontal filling may be skipped or not. If both directions of the motion vector are equal to zero, the filling process may be completely skipped or the entire filling process may still be performed.

[0262] In another embodiment, the corresponding padding process in the horizontal and / or vertical directions can be skipped even if the horizontal and / or vertical portions of the motion vector are not zero, in order to reduce computational and / or bandwidth access costs. An example of this is when the number of unavailable samples required for the interpolation process is less than a threshold N, where N can be a predefined value such as 1 or transmitted via signaling. For example, given a 12-tap interpolation filter, the number of top and left samples required for interpolation is 5, while the number of bottom and right samples required is 6. If the number of unavailable samples required for the interpolation process in the horizontal direction (left and right) or the vertical direction (top and bottom) is less than 2, the padding process in one direction can be skipped.

[0263] In another embodiment, if all the required samples involved in the interpolation process related to a particular motion vector are checked to be valid (e.g., all samples involved in the interpolation process are located inside the valid reference region, such as...), then... Figure 8 , 10 (As shown in Figure 11), the process can be skipped entirely or the entire filling process can still be performed.

[0264] In another embodiment, regarding the interpolation process, the number of desired left or top samples located outside the reference block pointed to by the integer MV or the integer part of MV is one less than the number of desired right or bottom samples, and the padding size of the left and top samples can be reduced by one. For example, if a 12-tap interpolation filter is used for an IBC coded block with non-zero fractional parts in the horizontal and vertical directions of the motion vector, the padding size of the top and left samples is 5, while the padding size of the bottom and right samples is 6.

[0265] In another embodiment, in some cases, the interpolation process is used only for motion search (e.g., encoder fractional motion estimation) or motion reordering (e.g., ARMC), motion refinement (e.g., IBC-DBV, IBC template matching), and parameter generation for prediction refinement (e.g., template prediction generation for IBC-LIC parameter derivation), but not for the final prediction generation of the current coding block, and the padding process can be skipped (e.g., by forcing the fractional part to zero).

[0266] Interpolation filter switching For various reasons, the interpolation filter may need to be switched. For example, if the image / video content is noisy and a smooth filter effect is desired, a longer tap length may be preferred. Conversely, if reduced padding complexity is required or the image / video content has rich textured edges, a shorter tap length may be preferred.

[0267] In one or more embodiments, filter switching can be determined on the decoder side by analyzing image / video content (such as gradient histograms), which does not require signaling bits.

[0268] In one or more other embodiments, filter switching can be evaluated on the encoder side and transmitted as a signal at different granularities (based on sequence, image, strip, CTU level, or region).

[0269] In one or more other embodiments, filter switching can be evaluated on the encoder side and transmitted as a signal for different frame / strip types (e.g., I-strip, B-strip, and P-strip).

[0270] In one or more other embodiments, filter switching can be evaluated on the encoder side and transmitted as a signal for different video components (e.g., luminance and chrominance components, or Y, Cb and Cr components).

[0271] In one or more other embodiments, filter switching can be evaluated on the encoder side and transmitted as a signal for motion accuracy (e.g., 1 pixel, 4 pixels, or fractional pixels, such as 1 / 2, or / and 1 / 4, or / and 1 / 8 pixels, or / and 1 / 16 pixels).

[0272] In one or more other embodiments, filter switching can be evaluated on the encoder side and transmitted by signal for different interpolation scenarios (e.g., regular compensation prediction for the current block, or compensation prediction for templates such as the top template or / and left template of the current block).

[0273] In another embodiment, the filter switching provided in any combination of the scenarios specified above can be predefined and does not require signal transmission. For example, a 2-tap interpolation filter can always be used if the following three conditions are met: chroma component, template prediction generation, and natural content.

[0274] Another example of predefined filter switching that does not require signal transmission depends on the block size: In one embodiment, for smaller blocks, a shorter interpolation filter length is applied, or even no interpolation is applied. When the luma and chroma components have different ratios (e.g., in YUV420 video format), the size of the smaller blocks can be defined differently for each component. For example, for chroma blocks of size 2 × 2 or / and 2 × 4 or / and 4 × 2, a shorter interpolation filter (e.g., 2-tap) is performed, or even no interpolation is performed. If no interpolation is performed, the non-zero fractional portion of the chroma motion vector can be truncated or rounded to an integer value. For luma blocks of size 4 × 4 or / and 4 × 8 or / and 8 × 4, a shorter interpolation filter (e.g., 4-tap or 2-tap) is performed, or even no interpolation is performed. If no interpolation is performed, the non-zero fractional portion of the luma motion vector can be truncated or rounded to an integer value.

[0275] In another embodiment, the filter switching described above may depend on other flags and may not require signal transmission. For example, if a video block is marked as encoded in a specific mode (intra-frame TMP mode) or with a specific motion precision, the filter switching may be determined accordingly.

[0276] In one embodiment, filter switching is predefined according to a specific mode. For example, when using ARMC, IBC template matching mode, IBC-BVDP, and IBC-BVPC modes, the reference template generation for template matching cost calculation can use interpolation filters with shorter lengths (e.g., 2-tap, 4-tap, 6-tap) compared to default filters (e.g., default 12-tap or 8-tap filters for luma and default 6-tap filters for chroma). For IBC-LIC and processing IBC chroma samples, the default luma interpolation filter (e.g., 12-tap filter) and / or chroma interpolation filter (e.g., 6-tap filter) can be used respectively. In another example, for template matching-related tools such as ARMC, IBC template matching mode, IBC-BVDP, and IBC-BVPC modes, the reference template can be generated by ignoring fractional parts (e.g., truncating or rounding to integer values), and the interpolation and padding processes can be skipped entirely.

[0277] The filter switching methods provided above can be applied in any combination.

[0278] Multiple assumptions fractional intra-block copy When multiple motion vectors (from motion search and / or motion refinement) are available, multiple prediction blocks can be generated. Multi-hypothesis intra-block replication can be used when averaging multiple similar blocks can produce better block predictions.

[0279] In one or more embodiments, the number of hypotheses may be predefined, configured, or signaled. Additionally, the weights used to average the multiple prediction hypotheses may also be predefined, configured, or signaled.

[0280] In one example, the number of hypotheses can be equal to 2. In this case, the current one-way prediction IBC mode can be extended to a two-way prediction IBC mode. The weights used to combine the two predictions can be inherited from spatial neighbors, transmitted via signaling, obtained on the encoder and decoder sides without signaling, reused from the same weights used for inter-frame prediction blocks, or adaptively selected from predefined weights set on the encoder side and transmitted via signaling to the decoder side.

[0281] In one or more other embodiments, the number of multiple hypotheses can be implicitly determined on the decoder side. For example, if N prediction blocks can be generated, and the value transmitted by signal is N, which is outside the range (0 to N-1) of a valid single prediction block, then multiple hypotheses are enabled, and the average of all N prediction blocks can be used.

[0282] Multiple hypotheses can be generated from N motion / block vectors, where each motion / block vector can generate a specific motion-compensated prediction block, and N is a positive integer. The N motion / block vectors can be obtained from the same candidate list or different candidate lists. In one example, the N motion / block vectors can be obtained from the same IBC merge candidate list or AMVP list, or partially from both the IBC merge candidate list and the IBC AMVP candidate list. In another example, the N motion / block vectors can be obtained entirely or partially based on an intra-template matching method.

[0283] Interpolation process for template matching When applying template-based adaptive reordering (ARMC-TM) to IBC merging and / or AMVP mode, or / and applying template-matching motion refinement to IBC merging and / or AMVP mode, it may be necessary to adaptively use fractional motion / block vectors.

[0284] For Template-Based Adaptive Reordering (ARMC-TM), it may be necessary to compute a template-based distortion cost for each motion / block vector candidate. Since this template-based distortion cost is only used for candidate reordering and not for the final compensation prediction, the fractional part of each motion / block vector candidate (if a non-zero fractional part exists) may or may not be considered for template-based distortion computation. Specifically, in one or more examples, fractional motion-based interpolation may or may not be performed on each motion / block vector candidate without a non-zero fractional part.

[0285] Similarly, when calculating the template distortion cost for each motion refinement location, it may or may not be necessary to consider the fractional part for each location.

[0286] Signal transmission of motion information When motion vectors in intra-block copying support multiple levels of precision, permissible signal transmission methods can be defined accordingly.

[0287] In one or more embodiments, only one level of precision with zero motion vector difference is allowed. This precision may be predefined, configurable, or transmitted via signaling. For example, this precision may be predefined as the highest precision supported by the motion vector, such as 1 / 4 pixel or 1 / 8 pixel.

[0288] In one or more embodiments, multiple precisions with zero motion vector difference are allowed. These multiple precisions can be predefined, configurable, or transmitted via signals. For example, such precision can be predefined as the highest or second highest precision supported by the motion vector, such as 1 / 4 pixel and 1 pixel. When multiple precisions with zero motion vector difference are allowed, after the zero motion vector difference indication transmitted via signals (1 flag or 1 binary bit), one or more additional flags are transmitted to indicate which precision is used.

[0289] When multiple precisions are supported, the current precision flag can be signed in different ways. In one example, a flag indicating whether the current precision is greater than 0 is first signaled. If so, another flag indicating whether the current precision is greater than 1 is further signaled. Alternatively, a second flag indicating whether the current precision is greater than 1 can be implicitly obtained at the decoder without explicit signaling. In one example, the value of the motion / block vector difference can be used to achieve this (e.g., even or odd motion / block vector differences can indicate a specific motion precision value). In this document, values ​​of 0, 1, or other values ​​greater than 1 can be predefined or configured to represent different motion vector (or motion vector difference) precisions (e.g., 0 for 1 pixel precision, 1 for 1 / 2 pixel precision, 2 for 1 / 4 pixel precision, and 3 for 1 / 8 pixel precision).

[0290] In one or more embodiments, multiple MV candidates in the IBC merge / AMVP motion candidate list are divided into different groups. In one example, the grouping criterion could be MV precision, where MV candidates in the same group have the same actual MV precision. Actual MV precision is defined as the MV precision after right-shifting all the least significant zeros of MV.

[0291] IBC Merge / AMVP Campaign Candidate List Construction In one or more embodiments, multiple MV candidates in the IBC merge / AMVP motion candidate list are grouped into different groups. In one example, the grouping criterion could be Mv precision, where Mv candidates in the same group have the same actual MV precision. Actual MV precision is defined as the Mv precision after right-shifting all the least significant zeros of the MV.

[0292] In one or more other embodiments, multiple lists of IBC merge / AMVP motion candidates are created, in addition to the exit list. For each list, only Mv candidates with the same actual Mv precision are added. Similarly, the actual Mv precision is defined as the Mv precision after right-shifting all the least significant zeros of Mv.

[0293] In cases where multiple candidate list groups and / or multiple candidate lists are generated, the group index and / or candidate list index need to be determined before the actual Mv candidate index can be decided. In one or more other examples, the group index and / or candidate list index can be evaluated on the encoder side and then signaled to the decoder. In one or more other still examples, the group index and / or candidate list index can be inherited from a specific neighboring block without explicit signaling.

[0294] Combination with intra-frame template matching When the motion vector for intra-block copying is determined, a prediction block can be generated based on that motion vector. When combined with intra-template matching, the prediction block generated by intra-block copying is further refined through intra-template matching. Specifically, for a predefined search range around the prediction block generated by intra-block copying, the encoder searches for the template most similar to the current template in the reconstructed portion of the current frame and uses the corresponding block as the prediction block. In this method, the prediction block generated by intra-block copying is considered the starting block position, which is used to guide the subsequent block search process in the intra-template matching method.

[0295] The combination of intra-block copying and intra-template matching prediction modes can be signaled at the CU level using a dedicated flag. Alternatively, the original intra-block copying flag above the original intra-template matching mode flag can be used to indicate the combination of intra-block copying and intra-template matching prediction modes.

[0296] In one or more other examples, the combination of intra-block copying and intra-template matching prediction can generate improved motion vectors.

[0297] In one example, the intra-block copy (IBC) mode provides an initial motion vector, which can be further refined using an intra-template matching method.

[0298] In another example, motion / block vectors obtained from the intra-template matching method can be reused to generate an IBC merge candidate list or an IBC AMVP candidate list. In this case, motion / block vectors generated for spatially adjacent or non-adjacent neighboring blocks can be cached or saved. In one example, the motion / block vectors of neighboring blocks encoded in the intra-template matching method can be saved in a history motion vector table. Alternatively or additionally, the motion / block vectors of neighboring blocks encoded in the intra-template matching method can be saved in the encoder's local cache and then reused by the encoder during the motion search process.

[0299] In other examples, combining intra-block duplication and intra-template matching prediction can generate improved prediction blocks. In one example, two prediction blocks can be generated separately using intra-block duplication and intra-template matching prediction methods, and a weighted average of these two prediction blocks can be generated to represent the final prediction block of the current coded block. In another example, multiple prediction blocks (e.g., N>1) can be generated separately, where M out of the N prediction blocks (e.g., M<=N) can be generated by intra-block duplication, and S out of the N prediction blocks (e.g., S<=N) can be generated by intra-template matching prediction. When combining N prediction blocks (e.g., N>1), the weight values ​​can be obtained using matching cost (e.g., an example of matching cost calculation can be based on an L-shaped template, where a higher matching cost indicates a lower weight value, and a lower matching cost indicates a higher weight value) or a least-squares flavor method.

[0300] Combination with IBC merging mode utilizing block vector difference With fractional Mv supported, the IBC merging mode utilizing block vector differences can be extended by employing more candidate distance values. In one or more other embodiments, two distance sets may exist. The first set is the exit integer distance set, while the second set is added separately for fractional distances. In one example, the fractional distance set could be {1 / 8 pixel, 2 / 8 pixel, 3 / 8 pixel, 4 / 8 pixel, 5 / 8 pixel, 6 / 8 pixel, 7 / 8 pixel}. In another example, the fractional distance set could be {1 / 8 pixel, 2 / 8 pixel, 4 / 8 pixel}. The BVD directions of the second set are also two horizontal directions and two vertical directions.

[0301] In another example, the new distance set can be defined as {1 / 4 pixel, 1 / 2 pixel, 1 pixel, 2 pixel, 3 pixel, 4 pixel, 6 pixel, 8 pixel, 10 pixel, 12 pixel, 14 pixel, 16 pixel, 18 pixel, 20 pixel, 22 pixel, 24 pixel, 26 pixel, 28 pixel, 30 pixel, 32 pixel}.

[0302] In another example, the new distance set can be defined as {1 / 2 pixel, 1 pixel, 2 pixel, 3 pixel, 4 pixel, 6 pixel, 8 pixel, 10 pixel, 12 pixel, 16 pixel, 20 pixel, 24 pixel, 28 pixel, 32 pixel, 36 pixel, 40 pixel, 44 pixel, 48 pixel, 52 pixel, 56 pixel}.

[0303] In another example, the new distance set can be defined as {1 / 2 pixel, 1 pixel, 2 pixel, 3 pixel, 4 pixel, 6 pixel, 8 pixel, 10 pixel, 12 pixel, 14 pixel, 16 pixel, 18 pixel, 20 pixel, 22 pixel, 24 pixel, 26 pixel, 28 pixel, 30 pixel, 32 pixel, 34 pixel}.

[0304] In another example, the new distance set can be defined as {1 pixel, 2 pixels, 4 pixels, 6 pixels, 8 pixels, 12 pixels, 16 pixels, 20 pixels, 24 pixels, 32 pixels, 40 pixels, 48 ​​pixels, 56 pixels, 64 pixels, 72 pixels, 80 pixels, 88 pixels, 96 pixels, 104 pixels, 112 pixels}.

[0305] The distance set proposed above can be selected or adaptively determined using predefined rules: In one embodiment, only one of the above sets is used.

[0306] In another embodiment, multiple sets can be used, and signal transmission-based selection can be used to switch between different sets.

[0307] In another embodiment, multiple sets can be used, and condition-based selection (e.g., sequence, picture, stripe, CTU, or coded block-level signaling) can be used to switch between different sets when no signal transmission is required.

[0308] In one example, a distance set can be selected when one or another encoding mode (e.g., RRIBC mode, palette mode) is allowed at certain levels (e.g., sequence, image, stripe), while another distance set can be selected when one or another encoding mode is not allowed at certain levels.

[0309] Combination of IBC-LIC and IBC utilizing fractional motion vectors In IBC-LIC, after generating prediction blocks from reference blocks using integer copying (using integer motion vectors or the integer part of fractional motion vectors) or interpolation filtering (using fractional motion vectors), a linear filtering process is further applied to refine the prediction blocks. Note that the parameters of the linear filtering process are obtained using a reference template generated from the same motion vectors used to generate the current block. When IBC blocks encoded with fractional motion vectors are combined with IBC-LIC modes, the reference templates for LIC parameter derivation can be generated in different ways: In one example, the reference template used for IBC-LIC parameter derivation is generated by modifying an integer motion vector from the fractional motion vector used in the current IBC block. This modification can be based on truncation operations (e.g., directly discarding the fractional portion of the fractional motion vector) or rounding operations (e.g., rounding to the nearest integer value).

[0310] In another example, the reference template used for IBC-LIC parameter derivation is generated using the same fractional motion vector used in the current IBC block. However, the interpolation filter used to generate the reference template can be the same as or different from the interpolation filter used to generate the prediction block for the current block. For example, given a 1 / 4-pixel motion vector of the current block, a 12-tap filter can be used for prediction generation, but when generating the reference template for IBC-LIC, the same 12-tap filter or a different filter (e.g., a 4-tap, a 2-tap, or a 0-tap filter) can be used. Note that if some samples are outside the effective IBC reference area, a shorter tap filter may result in less computation and / or less padding. If a different filter is used to generate the reference template, the filter can be predefined or transmitted via signal transmission at different levels (based on sequence, image, strip, CTU level, or region).

[0311] Combination of DBV with IBC utilizing fractional or integer motion vectors Several methods have been proposed to improve the DBV mode when it is used for IBC coded blocks with integer or fractional motion vectors: In the current DBV mode, luminance motion vectors are selected from a co-located luminance block at five positions according to a fixed order of the inspection process (e.g., center block, top left block, top right block, bottom left block, and bottom right block). Improvements to luminance block selection are proposed, either through signal transmission by the encoder or determined by the decoder. One example of the decoder-determined method is to use an L-shaped chromaticity template matching cost to sort N (N<= 5) luminance block vectors. Another example is based on block content analysis (e.g., gradient-based edge detection, prioritizing luminance blocks on the same edge).

[0312] In the current DBV mode, template-based MV thinning is performed. However, the current thinning only allows positive thinning (e.g., +1 or +2 on the current MV component). It is proposed that negative thinning (e.g., -1 or -2) should also be allowed. When fractional motion vectors are supported in the selected luma block, it is proposed that fractional thinning (e.g., 1 / 2 pixel, 1 / 4 pixel, -1 / 2 pixel, 3 / 4 pixel thinning) be allowed on the current motion vector.

[0313] In the current DBV mode, template-based MV thinning is performed separately for the Cb and Cr components. If the thinned MV differs for Cb and Cr, potential artifacts (e.g., chromaticity component misalignment) may be observed in the predicted samples. Improvements to MV thinning in different ways are proposed: In one embodiment, MV refinement is allowed only for one chromaticity component (Cb or Cr), and the refined MV is reused when predicting for another component (Cr or Cb).

[0314] In another embodiment, MV refinement is performed jointly for Cb and Cr. In this method, the reference template cost is calculated by combining the matching errors of the Cb and Cr templates.

[0315] Different methods can be proposed when using the selected luminance motion vector to generate the chrominance motion vector: In one embodiment, the fractional portion of the luminance motion vector (if available) can be truncated or rounded to an integer value. In this way, subsequent prediction generation and MV refinement are performed using integer motion vectors, and no interpolation or padding processes are required.

[0316] In another embodiment, the fractional portion of the luminance vector (if available) can be retained to obtain the chroma motion vector, and chroma prediction generation requires an interpolation process; however, the fractional portion of the chroma motion vector can be truncated or rounded to an integer value only during the template-based MV thinning process. After thinning, the fractional portion is added back to the thinned chroma motion vector. In this case, the template-based MV thinning process does not require interpolation and padding, but chroma prediction generation still requires interpolation and padding.

[0317] In another embodiment, the fractional part of the luminance vector can be considered for both prediction generation and mv refinement.

[0318] When the fractional part is available for the resulting chroma motion vector, the prediction generation process and / or the mv refinement process may require interpolation filtering. Different or the same interpolation filters can be applied to both processes. In one example, a default interpolation filter (such as the default 6-tap chroma filter) can be applied to both processes. Alternatively, shorter filters (such as 2-tap or 4-tap filters) can be applied to the chroma prediction generation process and / or the mv refinement process.

[0319] Given a specific interpolation filter, computational complexity and bandwidth consumption are more expensive for smaller block sizes. For some video formats such as YUV420, the minimum size of the chroma block (e.g., a 2 × 2 block) can be smaller than the minimum size of the corresponding luma block (e.g., a 4 × 4 block), so the worst-case complexity of the chroma component (e.g., here the worst-case refers to the complexity of the interpolation process performed on the coded block with the minimum size) is higher than the worst-case complexity of the luma component. It may be desirable to constrain the worst-case interpolation complexity of the chroma component. Under this consideration, it may be desirable to completely avoid the interpolation filtering process (e.g., without a fractional part or ignoring the fractional part of the chroma motion vector) or to simplify the interpolation filtering process by using shorter tap filters (e.g., 2-tap filters). Alternatively, block size-dependent filter switching can be proposed. In one example, for chroma blocks with smaller block sizes (e.g., 2 × 2, 2 × 4, 4 × 2, etc.), the fractional part of the luma motion vector (if available) can be truncated or rounded to an integer value. In another example, for chroma blocks with smaller block sizes (e.g., 2 × 2, 2 × 4, 4 × 2, etc.), interpolation filters with fewer taps than the default chroma interpolation filter can be used (e.g., 2-tap filters, 4-tap filters). The selected filters can be predefined, or explicitly (e.g., a dedicated flag indicating a specific filter index) or implicitly (e.g., depending on other existing flags, such as another coding mode) signaled at different granularities (e.g., based on sequence, picture, strip, CTU level, or region).

[0320] Combination of RRIBC and IBC using fractional motion vectors When RIBC is applied to an IBC-coded block, the block's motion vector can indicate one of three flip types: no flip, horizontal flip, and vertical flip. For horizontal or vertical flip types, the vertical or horizontal component of the IBC motion vector is set to zero.

[0321] When the RRIBC mode is combined with the regular IBC AMVP mode, encoder-side fractional motion estimation and / or decoder-side motion refinement may or may not be allowed for motion vectors indicating horizontal or vertical flips.

[0322] When fractional motion vectors are not allowed for either of the two RIBC flip modes (horizontal flip and vertical flip types), motion precision is limited to integer pixels (e.g., 1 pixel or 4 pixels). Therefore, for IBC AMVP mode, motion precision signal transmission is also limited to integer pixels. Alternatively, when zero mvd is determined on the decoder side, the corresponding motion precision (e.g., the highest supported integer pixel, such as 1 pixel) can be obtained directly without further signal transmission.

[0323] Combination of IBC-BVPC and IBC using fractional motion vectors When IBC-BVPC is applied to an IBC coded block, the motion vector of the block may have two non-empty components or one non-empty component (e.g., only the horizontal component or the vertical component is not zero).

[0324] When the IBC-BVPC mode is combined with the regular IBC AMVP mode, for motion vectors with only one non-empty component (e.g., only the horizontal component or the vertical component is non-zero), encoder-side fractional motion estimation and / or decoder-side motion refinement may or may not be allowed.

[0325] When the IBC-BVPC mode, which has only one non-empty component, does not allow fractional motion vectors, the motion precision is limited to integer pixels (e.g., 1 pixel or 4 pixels). Therefore, for the IBC AMVP mode, the motion precision signal transmission is also limited to integer pixels. Furthermore, when zero MVD is determined on the decoder side, the corresponding motion precision (e.g., the highest supported integer pixel, such as 1 pixel) can be obtained directly without further signal transmission.

[0326] Combination of IBC-BVDP and IBC utilizing fractional motion vectors When the IBC-BVDP mode is applied to an IBC block with fractional motion vectors, the most significant bits of the magnitude suffixes for the horizontal and vertical components of the BVD can be predicted in different ways: If the fractional part of the MVD prior to prediction is non-zero (e.g., the horizontal component and / or the vertical component has a non-zero fractional part), the most significant binary bit selected for the magnitude suffix to be used for prediction may or may not include the fractional binary bit.

[0327] In one embodiment, when fractional bits are included for prediction, the generated latent motion vectors are sorted together without grouping. For example, if a total of 4 bits are predicted, with 2 bits from the integer part of the MVD and the other 2 bits from the fractional part of the MVD, the total size of the latent motion vectors is 16 before considering sign prediction. When sorted together, these 16 vectors are compared together with their corresponding template matching costs.

[0328] In another embodiment, when fractional bits are included for prediction, the generated latent motion vectors are sorted separately by grouping. For example, if a total of 4 bits are predicted, with 2 bits from the integer part of the MVD and the other 2 bits from the fractional part of the MVD, the total size of the latent motion vectors is 16 before considering sign prediction. When sorting separately, the prediction of fractional bits is performed separately from the prediction of integer bits by fixing one combination of two integer bits and then predicting two fractional bits, or by fixing one combination of fractional bits and then predicting two integer bits.

[0329] In another embodiment, when the fractional bits are not included for prediction, the fractional bits are always signaled as the current bypass mode at the entropy coding level. Once the fractional bits have been signaled, the remaining integer bits can be predicted as the original IBC-BVDP mode. In this case, the template matching cost calculation may or may not take into account the bypassed fractional bits signaled.

[0330] In one embodiment, fractional bits are considered for integer bit prediction, such that a reference template is generated by interpolation filtering. The interpolation filter used in the reference template generation can be predefined (e.g., always a 2-tap filter) or switched at different granularities (e.g., based on sequence, image, strip, CTU level, or region).

[0331] In another embodiment, fractional bits are not considered for integer bit prediction, such that the reference template is generated without interpolation filtering (e.g., based on truncation operations (e.g., directly discarding the fractional portion of the fractional motion vector) or rounding operations (e.g., rounding to the nearest integer value)).

[0332] Combination of paired candidates with other IBC coding modes In the current IBC model, new paired IBC candidates can be generated by averaging two previous IBC candidates in the IBC merge / AMVP list.

[0333] When a pair of candidates is generated by averaging two fractional motion candidates, the new candidate can have higher accuracy than the currently supported highest accuracy. For example, averaging a 1 / 2 pixel mv and a 1 / 4 pixel mv can result in a new candidate with 1 / 8 pixel accuracy.

[0334] In one embodiment, the new pair of candidates can be rounded to or truncated to a supported motion precision. For example, the new 1 / 8 pixel pair of candidates can be truncated to 1 / 4 pixel (discarding fractions higher than 1 / 4 pixel) or rounded to 1 / 4 pixel.

[0335] In another embodiment, the new paired candidate can remain at the current high precision. For the IBC-AMVP list, a subsequent rounding process will be performed on the encoder side. For the IBC merge list, the current precision will always be retained.

[0336] When generating paired candidates by averaging two predicted candidates, these two candidates can indicate the same or different RRIBC flipping patterns. For example, one candidate indicates a horizontal flip, while the other indicates no flip.

[0337] In one embodiment, if two candidates have the same RRIBC flip mode (e.g., no flip mode, horizontal flip mode, vertical flip mode), then a new pair of candidates can be set to have the same RRIBC flip mode. Otherwise, a new pair of candidates can be set to have a no flip mode.

[0338] In another embodiment, new paired candidates can always be set to have a non-flipped mode, regardless of whether the two candidates have the same or different RRIBC flip modes.

[0339] When generating paired candidates by averaging two predicted candidates, the two candidates can indicate the same or different IBC-LIC flags.

[0340] In one embodiment, if two candidates have the same IBC-LIC flag (e.g., both are IBC-LIC enabled or disabled), a new pair of candidates can be set to have the same IBC-LIC flag. Otherwise, a new pair of candidates can be set to have IBC-LIC disabled.

[0341] In another embodiment, if one of the two candidates has IBC-LIC enabled, the new paired candidate can always be set to have IBC-LIC enabled.

[0342] In another embodiment, new paired candidates can always be set to have IBC-LIC off, regardless of whether the two candidates have the same or different IBC-LIC flags.

[0343] Figure 20 A computing environment 2010 coupled to a user interface 2050 is shown. The computing environment 2010 may be part of a data processing server. The computing environment 2010 includes a processor 2020, memory 2030, and input / output (I / O) interfaces 2040.

[0344] Processor 2020 typically controls the overall operation of computing environment 2010, such as operations associated with display, data acquisition, data communication, and image processing. Processor 2020 may include one or more processors for executing instructions to perform all or some of the steps in the methods described above. Furthermore, processor 2020 may include one or more modules that facilitate interaction between processor 2020 and other components. Processor may be a central processing unit (CPU), microprocessor, microcontroller, graphics processing unit (GPU), etc.

[0345] Memory 2030 is configured to store various types of data to support the operation of computing environment 2010. Memory 2030 may include predefined software 2032. Examples of such data include instructions for any application or method operating on computing environment 2010, video datasets, image data, etc. Memory 2030 can be implemented using any type of volatile or non-volatile memory device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic storage, flash memory, magnetic disk, or optical disk.

[0346] I / O interface 2040 provides an interface between processor 2020 and peripheral interface modules (such as keyboard, click wheel, buttons, etc.). Buttons may include, but are not limited to, home button, start scan button, and stop scan button. I / O interface 2040 can be coupled to encoder and decoder.

[0347] Figure 21 This is a flowchart illustrating a method for video decoding according to an example of this disclosure. Specifically, Figure 21 The methods discussed in the "CABAC Context Window" section are shown.

[0348] In step 2101, the processor 2020 can obtain a motion precision syntax element on the decoder side, which jointly indicates the set of motion precision supported for all luma and chroma components of the current block. The motion precision syntax element may be a motion precision flag jointly used for all luma and chroma components, as discussed in the "CABAC Context Window" section.

[0349] In step 2102, the processor 2020 on the decoder side can determine the CABAC context window for each context model based on the set of motion accuracy supported by all luminance and chrominance components for the current block.

[0350] In some examples, the set of motion precision supported for all luminance and chrominance components may include one of the following sets: 4 pixels, 1 pixel, 1 / 2 pixel, and 1 / 4 pixel; 4 pixels, 1 pixel, and 1 / 2 pixel; or 4 pixels, 1 pixel, and 1 / 4 pixel.

[0351] In some examples, the motion precision set may include a first motion precision converted from a second motion precision, wherein the second motion precision is not included in the motion precision set. For example, 4 pixels, 1 pixel, and 1 / 4 pixel may be supported, and signal transmission may be performed for all three components. In this case, the 1 / 2 pixel is always converted to the 1 / 4 pixel precision before signal transmission.

[0352] Figure 22 The illustrations show some examples of the present disclosure. Figure 21 The flowchart shown corresponds to the video encoding method used in the video decoding method.

[0353] In step 2201, the processor 2020 can signal a motion precision syntax element on the encoder side, which jointly indicates the set of motion precision supported for all luma and chroma components of the current block. The motion precision syntax element can be a motion precision flag jointly used for all luma and chroma components, as discussed in the "CABAC Context Window" section.

[0354] In step 2202, the processor 2020 on the encoder side can determine the CABAC context window for each context model based on the set of motion accuracy supported by all luminance and chrominance components for the current block.

[0355] In some examples, the set of motion precision supported for all luminance and chrominance components may include one of the following sets: 4 pixels, 1 pixel, 1 / 2 pixel, and 1 / 4 pixel; 4 pixels, 1 pixel, and 1 / 2 pixel; or 4 pixels, 1 pixel, and 1 / 4 pixel.

[0356] In some examples, the motion precision set may include a first motion precision converted from a second motion precision, wherein the second motion precision is not included in the motion precision set. For example, 4 pixels, 1 pixel, and 1 / 4 pixel may be supported, and signal transmission may be performed for all three components. In this case, the 1 / 2 pixel is always converted to the 1 / 4 pixel precision before signal transmission.

[0357] Figure 23 is a flowchart illustrating a method for video decoding according to an example of the present disclosure. Specifically, Figure 23 illustrates the method discussed in the "Fractional Motion Search" section.

[0358] In step 2301, the processor 2020 on the decoder side can obtain the fractional motion information of the current block in the IBC mode.

[0359] In some examples, three steps as discussed in the "Fractional Motion Search" section can be used to determine the fractional motion information, including: searching for a first number of integer BVs with the minimum distortion cost; applying half-pixel refinement around each of the first number of integer BVs by obtaining a second number of the best half-pixel positions for each of the first number of integer BVs, where the second number of the best half-pixel positions indicates a second number of half-pixel BV differences with the lowest rate-distortion cost; obtaining quarter-pixel refinement by applying quarter-pixel refinement around the second number of the best half-pixel positions for each of the first number of integer BVs; and obtaining the fractional motion information based on the quarter-pixel refinement.

[0360] In some examples, searching for a first number of integer BVs with the minimum distortion cost can include: searching for a first number of integer BVs with the minimum distortion cost according to a threshold. For example, when the current coding block uses other coding modes (e.g., other intra-coding modes such as the angular mode, the planar mode, etc.), the best SAD (Sum of Absolute Differences) or SATD (Sum of Absolute Transformed Differences) cost is used as a threshold to prematurely terminate the current fractional motion search. In one example, given that the current best SAD or SATD cost from other coding modes is X, the predefined threshold factor is f (e.g., example values can be 1.1, 1.2, 1.21, etc.), and the current best SAD or SATD cost from the IBC mode integer motion search is Y, if Y >= f * X, then the subsequent fractional motion search can be simplified (e.g., the N best integer motion vectors for further fractional refinement can be reduced to N' and N' < N) or skipped (e.g., the N best integer motion vectors for further fractional refinement can be reduced to 0). The values of N, N', and f can be predefined or signaled or (e.g., based on the texture richness of the current coding block) adaptively determined.

[0361] In some other examples, searching for a first number of integer BVs with the minimum distortion cost may include: simplifying or skipping the search for the first number of integer BVs according to one or more other coding modes of the current block. In some examples, simplifying the search for the first number of integer BVs according to one or more other coding modes of the current block may include: reducing the first number to an integer less than the first number, where the first number and the integer are predefined or determined based on the texture richness of the current block; or searching for the first number of integer BVs based on the historical search process of the current block or a different block. For example, the first number N may be reduced to an integer N', and the N best integer motion vectors selected for further fractional refinement may be reduced to N' ones, where N' < N, as discussed in the "Fractional Motion Search" section. Further, the N best integer motion vectors selected for further fractional refinement may come not only from the current integer search process, but also from the previous integer and / or fractional search processes (historical search process) of the same current block / coded block or different coded blocks.

[0362] In some other examples, searching for a first number of integer BVs with the minimum distortion cost may include: determining the sum of absolute differences (SAD) cost or the sum of absolute transform differences (SATD) cost according to one or more other coding modes of the current block; and determining the minimum distortion cost based on a predefined threshold factor and one of the SAD cost or the SATD cost.

[0363] In step 2302, the processor 2020 on the decoder side may obtain the BV of the current block based on the fractional motion information.

[0364] In step 2303, the processor 2020 on the decoder side may obtain the final BV by adjusting the precision of the BV.

[0365] In some examples, the syntax element indicating the precision of the BV may be signaled and received by the processor 2020 on the decoder side.

[0366] In some examples, adjusting the precision of the BV may be implemented by the following steps: determining the highest precision of the BV; in response to determining that the highest precision of the BV is half pixel, obtaining the final BV by adjusting the precision of the BV in one of the following ways: adjusting the precision of the final BV to quarter pixel; or keeping the precision of the final BV as half pixel.

[0367] In step 2304, the processor 2020 on the decoder side may obtain the final prediction block of the current block based on the final BV.

[0368] Figure 24 illustrates a method for video coding corresponding to the method for video decoding according to an example of the present disclosure Figure 23 shown in the flowchart.

[0369] In step 2401, the processor 2020 can search for a first number of integer BVs with the minimum distortion cost on the encoder side.

[0370] In some examples, searching for a first number of integer BVs with the minimum distortion cost may include: searching for a first number of integer BVs with the minimum distortion cost according to a threshold. For example, when the current coding block uses other coding modes (such as other intra-frame coding modes such as angular mode, planar mode, etc.), the best SAD (Sum of Absolute Differences) or SATD (Sum of Absolute Transformed Differences) cost is used as a threshold for prematurely terminating the current fractional motion search. In one example, given that the current best SAD or SATD cost from other coding modes is X, the predefined threshold factor is f (for example, the example value can be 1.1, 1.2, 1.21, etc.), and the current best SAD or SATD cost of the integer motion search from the IBC mode is Y, if Y >= f * X, then the subsequent fractional motion search can be simplified (for example, the N best integer motion vectors used for further fractional refinement can be reduced to N', and N' < N) or skipped (for example, the N best integer motion vectors used for further fractional refinement can be reduced to 0). The values of N, N', and f can be predefined or signaled or adaptively determined (for example, based on the texture richness of the current coding block).

[0371] In some other examples, searching for a first number of integer BVs with the minimum distortion cost may include: simplifying or skipping the search for a first number of integer BVs according to one or more other coding modes of the current block. In some examples, simplifying the search for a first number of integer BVs according to one or more other coding modes of the current block may include: reducing the first number to an integer less than the first number, where the first number and the integer are predefined or determined based on the texture richness of the current block; or searching for a first number of integer BVs based on the historical search process of the current block or a different block. For example, the first number N can be reduced to the integer N', and the N best integer motion vectors selected for further fractional refinement can be reduced to N', where N' < N, as discussed in the "Fractional Motion Search" section. Further, the N best integer motion vectors selected for further fractional refinement can come not only from the current integer search process but also from the previous integer and / or fractional search processes (historical search process) of the same current block / coding block or different coding blocks.

[0372] In some other examples, searching for a first number of integer BVs with the minimum distortion cost may include: determining the absolute difference sum (SAD) cost or the absolute transform difference sum (SATD) cost based on one or more other encoding modes of the current block; and determining the minimum distortion cost based on a predefined threshold factor and one of the SAD cost or SATD cost.

[0373] In step 2402, the processor 2020 on the encoder side can apply half-pixel thinning around each of the first number of integer BVs by obtaining a second number of optimal half-pixel positions for each of the first number of integer BVs, wherein the second number of optimal half-pixel positions indicate a second number of half-pixel BV differences with the lowest rate distortion cost.

[0374] In step 2403, the processor 2020 can obtain quarter-pixel thinning on the encoder side by applying quarter-pixel thinning to the optimal half-pixel position around each of the first number of integers BV.

[0375] In step 2404, the processor 2020 can obtain fractional motion information on the encoder side based on quarter-pixel thinning.

[0376] In step 2405, the processor 2020 can obtain the BV of the current block on the encoder side based on the fractional motion information.

[0377] In step 2406, the processor 2020 can obtain the final BV by adjusting the accuracy of BV on the encoder side.

[0378] In some examples, syntax elements indicating the precision of BV can be transmitted by the encoder via signals.

[0379] In some examples, adjusting the precision of BV can be implemented by the following steps: determining the highest precision of BV; in response to determining that the highest precision of BV is half a pixel, obtaining the final BV by adjusting the precision of BV in one of the following ways: adjusting the precision of the final BV to a quarter pixel; or keeping the precision of the final BV at half a pixel.

[0380] In step 2407, the processor 2020 can obtain the final predicted block of the current block based on the final BV on the encoder side.

[0381] Figure 25 This is a flowchart illustrating a method for video decoding according to an example of this disclosure. Specifically, Figure 25 The methods discussed in the sections on "Conditional Sample / Pixel Filling for Fractional Interpolation", "Interpolation Filter Switching", and "Multi-Hypothesis Fractional Intra-Block Copying" are illustrated.

[0382] In step 2501, the processor 2020 can obtain the fractional motion information of the current block in IBC mode on the decoder side.

[0383] In step 2502, the processor 2020 can obtain the BV of the current block on the decoder side based on the fractional motion information.

[0384] In step 2503, the processor 2020 can obtain the predicted block of the current block based on BV on the decoder side.

[0385] In step 2504, the processor 2020 on the decoder side may skip the filling process for unavailable samples of the prediction block in a certain direction in response to determining that the number of unavailable samples associated with the interpolation filter in a certain direction is less than a threshold.

[0386] In some examples, the threshold can be predefined or transmitted by signal, and the direction can be horizontal or vertical.

[0387] In some examples, the interpolation filter can be a 12-tap interpolation filter with a threshold of 2. For example, given a 12-tap interpolation filter, the number of top and left samples required for interpolation is 5, while the number of bottom and right samples required for interpolation is 6. If the number of unavailable samples required for the interpolation process in the horizontal direction (left and right) or the vertical direction (top and bottom) is less than 2, the padding process in one direction can be skipped.

[0388] In some examples, the processor 2020 can apply an interpolation filter with a specific tap length based on the block size of the current block.

[0389] In some examples, the processor 2020 may apply an interpolation filter with a specific tap length less than a threshold tap length in response to determining that the block size of the current block is less than a threshold size, which may be predefined.

[0390] In some examples, for small blocks, a shorter interpolation filter length is applied or even no interpolation is applied, as discussed in the "Interpolation Filter Switching" section.

[0391] In one or more examples where the luminance and chrominance components have different ratios (such as in the YUV420 video format), the size of the block can be defined differently for each component. For example, processor 2020 can apply an interpolation filter with a specific tap length smaller than the chrominance threshold tap length to the chrominance component in response to determining that the chrominance size of the chrominance component of the current block is smaller than the chrominance threshold size; processor 2020 can also apply an interpolation filter with a specific tap length smaller than the luminance threshold tap length to the luminance component in response to determining that the luminance size of the luminance component of the current block is smaller than the luminance threshold size.

[0392] In some examples, multi-hypothesis fractional intra-block copying (IBC) can be applied. The number of hypotheses can be equal to two. In this case, the current unidirectional prediction IBC mode can be extended to a bidirectional prediction IBC mode. The decoder can combine the two hypotheses corresponding to the two BVs to obtain the final prediction result.

[0393] In one or more examples, the processor 2020 can obtain a first BV and a second BV of the current block on the decoder side based on fractional motion information, wherein the current block is in bidirectional prediction IBC mode; obtain a first reference block associated with the first BV and a second reference block associated with the second BV; and obtain the prediction block of the current block by weighting the first reference block and the second reference block based on a first weight associated with the first BV and a second weight associated with the second BV.

[0394] In some examples, the first and second weights can be obtained in one of the following ways: inherited from spatially neighboring blocks of the current block; reused from the same weights used for inter-frame prediction blocks; received from the bitstream by a processor on the decoder side; or obtained by a processor on the decoder side without signal transmission.

[0395] Figure 26 The illustration shows an example of the relationship according to this disclosure. Figure 25 The flowchart shown corresponds to the method used for video encoding.

[0396] In step 2601, the processor 2020 can obtain the fractional motion information of the current block in IBC mode on the encoder side.

[0397] In step 2602, the processor 2020 can obtain the BV of the current block on the encoder side based on the fractional motion information.

[0398] In step 2603, the processor 2020 can obtain the prediction block of the current block based on BV on the encoder side.

[0399] In step 2604, the processor 2020 may, on the encoder side, skip the filling process for unavailable samples in the prediction block in a certain direction in response to determining that the number of unavailable samples associated with the interpolation filter in a certain direction is less than a threshold.

[0400] In some examples, the threshold can be predefined or transmitted by signal, and the direction can be horizontal or vertical.

[0401] In some examples, the interpolation filter can be a 12-tap interpolation filter with a threshold of 2. For example, given a 12-tap interpolation filter, the number of top and left samples required for interpolation is 5, while the number of bottom and right samples required for interpolation is 6. If the number of unavailable samples required for the interpolation process in the horizontal direction (left and right) or the vertical direction (top and bottom) is less than 2, the padding process in one direction can be skipped.

[0402] In some examples, the processor 2020 can apply an interpolation filter with a specific tap length based on the block size of the current block.

[0403] In some examples, the processor 2020 may apply an interpolation filter with a specific tap length less than a threshold tap length in response to determining that the block size of the current block is less than a threshold size, which may be predefined.

[0404] In some examples, for small blocks, a shorter interpolation filter length is applied or no interpolation is applied at all, as discussed in the "Interpolation Filter Switching" section.

[0405] In one or more examples where the luminance and chrominance components have different ratios (such as in the YUV420 video format), the size of the block can be defined differently for each component. For example, processor 2020 can apply an interpolation filter with a specific tap length smaller than the chrominance threshold tap length to the chrominance component in response to determining that the chrominance size of the chrominance component of the current block is smaller than the chrominance threshold size; processor 2020 can also apply an interpolation filter with a specific tap length smaller than the luminance threshold tap length to the luminance component in response to determining that the luminance size of the luminance component of the current block is smaller than the luminance threshold size.

[0406] In some examples, multi-hypothesis fractional intra-block copying (IBC) can be applied. The number of hypotheses can be equal to two. In this case, the current unidirectional prediction IBC mode can be extended to a bidirectional prediction IBC mode. The encoder can combine two hypotheses corresponding to two BVs to obtain the final prediction result.

[0407] In one or more examples, the processor 2020 can obtain a first BV and a second BV of the current block on the encoder side based on fractional motion information, wherein the current block is in bidirectional prediction IBC mode; obtain a first reference block associated with the first BV and a second reference block associated with the second BV; and obtain a prediction block of the current block by weighting the first reference block and the second reference block based on a first weight associated with the first BV and a second weight associated with the second BV.

[0408] In some examples, the first and second weights can be obtained in one of the following ways: by inheriting from the spatially neighboring blocks of the current block; by reusing the same weights used for inter-frame prediction blocks; or by having the bit stream transmitted by a processor on the encoder side.

[0409] In one embodiment, a method for storing a bitstream is also provided, comprising storing the bitstream on a digital storage medium, wherein the bitstream includes encoded video information generated by the above-described encoding method or encoded video information to be decoded by the above-described decoding method.

[0410] In one embodiment, a method for transmitting a bitstream generated by the encoder described above is also provided. In another embodiment, a method for receiving a bitstream to be decoded by the decoder described above is also provided.

[0411] In an embodiment, a non-transitory computer-readable storage medium is also provided, including, for example, a memory 2030 containing multiple programs and / or storing a bitstream generated by the above-described encoding method or a bitstream to be decoded by the above-described decoding method. The multiple programs can be executed by a processor 2020 in a computing environment 2010 to perform the above-described methods. In an embodiment, the multiple programs can be executed by a processor 2020 in a computing environment 2010 to (e.g., from...) Figure 2 The video encoder 20 in the computing environment 2010 receives a bitstream or data stream including encoded video information (e.g., video blocks representing encoded video frames, and / or one or more associated syntax elements, etc.), and can also be executed by the processor 2020 in the computing environment 2010 to perform the above-described decoding method based on the received bitstream or data stream. In another example, multiple programs can be executed by the processor 2020 in the computing environment 2010 to perform the above-described encoding method to encode video information (e.g., video blocks representing video frames, and / or one or more associated syntax elements, etc.) into a bitstream or data stream, and can also be executed by the processor 2020 in the computing environment 2010 to (e.g., to...) Figure 3 The video decoder 30 in the middle sends the bit stream or data stream. Alternatively, a non-transitory computer-readable storage medium may store data generated by an encoder (e.g., Figure 2 The video encoder 20 in the video encoder (e.g., the one described above) generates the video for the decoder (e.g., the one described above) using the encoding method described above. Figure 3 The video decoder 30 in the video decoder uses a bitstream or data stream that includes encoded video information (e.g., video blocks representing encoded video frames, and / or one or more associated syntax elements, etc.) when decoding video data. Non-transitory computer-readable storage media may be, for example, ROM, random access memory (RAM), CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.

[0412] In one embodiment, a bitstream generated by the above encoding method or a bitstream to be decoded by the above decoding method is provided. In another embodiment, a bitstream comprising encoded video information generated by the above encoding method or encoded video information to be decoded by the above decoding method is provided.

[0413] In one embodiment, a computing device is also provided, comprising: one or more processors (e.g., processor 2020); and a non-transitory computer-readable storage medium or memory 2030 therein storing a plurality of programs executable by the one or more processors, wherein the one or more processors are configured to perform the methods described above when executing the plurality of programs.

[0414] In one embodiment, a computer program product having instructions for storing or transmitting a bitstream, the bitstream including encoded video information generated by the encoding method described above or encoded video information to be decoded by the decoding method described above, is also provided. In another embodiment, a computer program product including, for example, multiple programs in a memory 2030, which can be executed by a processor 2020 in a computing environment 2010 to perform the methods described above, is also provided. For example, the computer program product may include a non-transitory computer-readable storage medium.

[0415] In an embodiment, the computing environment 2010 may be implemented by one or more ASICs, DSPs, digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs, GPUs, controllers, microcontrollers, microprocessors, or other electronic components for performing the methods described above.

[0416] The description in this disclosure is presented for illustrative purposes and is not intended to be exhaustive or limited to this disclosure. Many modifications, variations, and alternative embodiments will be apparent to those skilled in the art from the teachings presented in the foregoing description and associated drawings. Unless otherwise specifically stated, the order of steps in the method according to this disclosure is intended to be illustrative only, and the steps of the method according to this disclosure are not limited to the specific order described above, but may be changed as appropriate. Furthermore, at least one step in the method according to this disclosure may be adjusted, combined, or omitted as needed.

[0417] The examples were chosen and described to explain the principles of this disclosure and to enable others skilled in the art to understand the various embodiments of this disclosure, and preferably to utilize the basic principles and various embodiments with various modifications suitable for the intended particular purpose. Therefore, it should be understood that the scope of this disclosure is not limited to the specific examples of the disclosed embodiments, and that modifications and other embodiments are intended to be included within the scope of this disclosure.

Claims

1. A method for video decoding, comprising: The decoder obtains motion precision syntax elements, which jointly indicate the set of motion precision supported for all luma and chroma components of the current block; as well as The decoder determines the context-adaptive binary arithmetic coding (CABAC) context window for each context model based on the set of motion precision supported by all the luminance and chrominance components for the current block.

2. The method as described in claim 1, wherein, The set of motion accuracy supported by all the luminance and chrominance components includes one of the following sets: Sets of 4 pixels, 1 pixel, 1 / 2 pixel, and 1 / 4 pixel; Sets of 4 pixels, 1 pixel, and 1 / 2 pixel; or Sets of 4 pixels, 1 pixel, and 1 / 4 pixel.

3. The method as described in claim 1, wherein, The motion accuracy set includes a first motion accuracy derived from a second motion accuracy, wherein the second motion accuracy is not included in the motion accuracy set.

4. A method for video decoding, comprising: The decoder obtains the fractional motion information of the current block in Intra-Block Copy (IBC) mode; The decoder obtains the block vector (BV) of the current block based on the fractional motion information. The decoder obtains the final BV by adjusting the precision of the BV. as well as The decoder obtains the final predicted block of the current block based on the final BV.

5. The method of claim 4, wherein, The fractional motion information is determined in the following way: Search for the first integer BV with the minimum distortion cost; Half-pixel thinning is applied around each of the first number of integer BVs by obtaining a second number of optimal half-pixel positions for each of the first number of integer BVs, wherein the second number of optimal half-pixel positions indicate the second number of half-pixel BV differences with the lowest rate distortion cost. A quarter-pixel thinning is obtained by applying quarter-pixel thinning to the optimal half-pixel position around each of the first number of integer BVs; and The fractional motion information is obtained based on the quarter-pixel thinning.

6. The method of claim 4, wherein, Obtaining the final BV by adjusting the precision of the BV includes: Determine the highest accuracy of the BV; In response to determining that the highest precision of the BV is half a pixel, the final BV is obtained by adjusting the precision of the BV in one of the following ways: Adjust the precision of the final BV to one-quarter of a pixel; or The precision of the final BV is maintained at half a pixel.

7. The method of claim 4, further comprising: The decoder receives a syntax element indicating the precision of the BV.

8. The method of claim 5, wherein, Searching for the first number of integer BVs with the minimum distortion cost includes at least one of the following: Search for an integer BV with the minimum distortion cost based on the threshold; or The search for the first number of integers BV is simplified or skipped based on one or more other encoding patterns of the current block.

9. The method of claim 8, wherein, Searching for the first number of integer BVs with the minimum distortion cost based on the threshold includes: Determine the absolute difference sum (SAD) cost or the absolute transform difference sum (SATD) cost based on the one or more other encoding modes of the current block; and The minimum distortion cost is determined based on a predefined threshold factor and either the SAD cost or the SATD cost.

10. The method of claim 8, wherein, Simplifying the search for the first number of integer BVs based on the one or more other encoding patterns of the current block includes: The first quantity is reduced to an integer less than the first quantity, wherein the first quantity and the integer are predefined or determined based on the texture richness of the current block.

11. The method of claim 8, wherein, Simplifying the search for the first number of integer BVs based on the one or more other encoding patterns of the current block includes: The first number of integers BV are searched based on the historical search process of the current block or different blocks.

12. A method for video decoding, comprising: The decoder obtains the fractional motion information of the current block in Intra-Block Copy (IBC) mode; The decoder obtains the block vector (BV) of the current block based on the fractional motion information. The decoder obtains the predicted block of the current block based on the BV; as well as In response to determining that the number of unavailable samples associated with the interpolation filter in a certain direction is less than a threshold, the decoder skips the process of filling unavailable samples in the prediction block in that direction.

13. The method of claim 12, wherein, The threshold is predefined or transmitted by signal, and the direction is either horizontal or vertical.

14. The method of claim 13, wherein, The interpolation filter is a 12-tap interpolation filter, and the threshold is 2.

15. The method of claim 12, further comprising: The decoder applies the interpolation filter with a specific tap length based on the block size of the current block.

16. The method of claim 15, wherein, Applying the interpolation filter with the specific tap length based on the block size of the current block includes: In response to determining that the block size of the current block is less than a threshold size, the interpolation filter with a specific tap length less than the threshold tap length is applied.

17. The method of claim 16, wherein, In response to determining that the block size of the current block is less than the threshold size, applying the interpolation filter having a specific tap length less than the threshold tap length further includes at least one of the following: In response to determining that the chroma size of the chroma component of the current block is smaller than the chroma threshold size, the interpolation filter having a specific tap length smaller than the chroma threshold tap length is applied to the chroma component. or In response to determining that the luminance size of the luminance component of the current block is less than the luminance threshold size, the interpolation filter having a specific tap length less than the luminance threshold tap length is applied to the luminance component.

18. The method of claim 12, wherein, Obtaining the BV of the current block based on the fractional motion information and obtaining the predicted block of the current block based on the BV includes: The decoder obtains the first BV and the second BV of the current block based on the fractional motion information, wherein the current block is in bidirectional prediction IBC mode; The decoder obtains a first reference block associated with the first BV and a second reference block associated with the second BV; and The decoder obtains the predicted block of the current block by performing a weighted average of the first reference block and the second reference block based on a first weight associated with the first BV and a second weight associated with the second BV.

19. The method of claim 18, wherein, The first weight and the second weight are obtained through one of the following methods: Inherited from the spatial neighboring block of the current block; Reuse the same weights used for inter-frame prediction blocks; Received from the bitstream by the decoder; or It is obtained by the decoder without signal transmission.

20. A method for video encoding, comprising: The encoder transmits motion precision syntax elements via signals, which jointly indicate the set of motion precision supported for all luminance and chrominance components of the current block; as well as The encoder determines the context-adaptive binary arithmetic coding (CABAC) context window for each context model based on the set of motion precision supported by all the luminance and chrominance components for the current block.

21. The method for video encoding as described in claim 20, wherein, The set of motion accuracy supported by all the luminance and chrominance components includes one of the following sets: Sets of 4 pixels, 1 pixel, 1 / 2 pixel, and 1 / 4 pixel; Sets of 4 pixels, 1 pixel, and 1 / 2 pixel; or Sets of 4 pixels, 1 pixel, and 1 / 4 pixel.

22. The method for video encoding as described in claim 20, further comprising: In response to determining that the current precision of the current block is different from any motion precision in the motion precision set, the current precision is converted to the motion precision in the motion precision set.

23. A method for video encoding, comprising: The encoder obtains fractional motion information of the current block in intra-block copy (IBC) mode; The encoder obtains the block vector (BV) of the current block based on the fractional motion information. The encoder obtains the final BV by adjusting the precision of the BV. as well as The encoder obtains the final predicted block of the current block based on the final BV.

24. The method for video encoding as described in claim 23, wherein, Obtaining the fractional motion information of the current block in the IBC mode includes: Search for the first integer BV with the minimum distortion cost; Half-pixel thinning is applied around each of the first number of integer BVs by obtaining a second number of optimal half-pixel positions for each of the first number of integer BVs, wherein the second number of optimal half-pixel positions indicate the second number of half-pixel BV differences with the lowest rate distortion cost. A quarter-pixel thinning is obtained by applying quarter-pixel thinning to the optimal half-pixel position around each of the first number of integer BVs; and The fractional motion information is obtained based on the quarter-pixel thinning.

25. The method for video encoding as described in claim 23, wherein, Obtaining the final BV by adjusting the precision of the BV includes: Determine the highest accuracy of the BV; In response to determining that the highest precision of the BV is half a pixel, the final BV is obtained by adjusting the precision of the BV in one of the following ways: Adjust the precision of the final BV to one-quarter of a pixel; or The precision of the final BV is maintained at half a pixel.

26. The method for video encoding as described in claim 23, further comprising: The encoder transmits a syntax element indicating the precision of the BV via signal transmission.

27. The method for video encoding as described in claim 24, wherein, Searching for the first number of integer BVs with the minimum distortion cost includes at least one of the following: Search for an integer BV with the minimum distortion cost based on the threshold; or The search for the first number of integers BV is simplified or skipped based on one or more other encoding patterns of the current block.

28. The method for video encoding as described in claim 27, wherein, Searching for the first number of integer BVs with the minimum distortion cost based on the threshold includes: Determine the absolute difference sum (SAD) cost or the absolute transform difference sum (SATD) cost based on the one or more other encoding modes of the current block; and The minimum distortion cost is determined based on a predefined threshold factor and either the SAD cost or the SATD cost.

29. The method for video encoding as described in claim 27, wherein, Simplifying the search for the first number of integer BVs based on the one or more other encoding patterns of the current block includes: The first quantity is reduced to an integer less than the first quantity, wherein the first quantity and the integer are predefined or determined based on the texture richness of the current block.

30. The method for video encoding as described in claim 27, wherein, Simplifying the search for the first number of integer BVs based on the one or more other encoding patterns of the current block includes: The first number of integers BV are searched based on the historical search process of the current block or different blocks.

31. A method for video encoding, comprising: The encoder obtains fractional motion information of the current block in intra-block copy (IBC) mode; The encoder obtains the block vector (BV) of the current block based on the fractional motion information. The encoder obtains the predicted block of the current block based on the BV; as well as In response to determining that the number of unavailable samples associated with the interpolation filter in a certain direction is less than a threshold, the encoder skips the filling process of the unavailable samples of the prediction block in that direction.

32. The method for video encoding as described in claim 31, wherein, The threshold is predefined or transmitted by signal, and the direction is either horizontal or vertical.

33. The method for video encoding as described in claim 32, wherein, The interpolation filter is a 12-tap interpolation filter, and the threshold is 2.

34. The method for video encoding as described in claim 31, further comprising: The encoder applies the interpolation filter with a specific tap length based on the block size of the current block.

35. The method for video encoding as described in claim 34, wherein, Applying the interpolation filter with the specific tap length based on the block size of the current block includes: In response to determining that the block size of the current block is less than a threshold size, the interpolation filter with a specific tap length less than the threshold tap length is applied.

36. The method for video encoding as described in claim 35, wherein, In response to determining that the block size of the current block is less than the threshold size, applying the interpolation filter having a specific tap length less than the threshold tap length further includes at least one of the following: In response to determining that the chroma size of the chroma component of the current block is smaller than the chroma threshold size, the interpolation filter having a specific tap length smaller than the chroma threshold tap length is applied to the chroma component. or In response to determining that the luminance size of the luminance component of the current block is less than the luminance threshold size, the interpolation filter having a specific tap length less than the luminance threshold tap length is applied to the luminance component.

37. The method for video encoding as described in claim 31, wherein, Obtaining the BV of the current block based on the fractional motion information and obtaining the predicted block of the current block based on the BV includes: The encoder obtains the first BV and the second BV of the current block based on the fractional motion information, wherein the current block is in bidirectional prediction IBC mode; The encoder obtains a first reference block associated with the first BV and a second reference block associated with the second BV; and The encoder obtains the predicted block of the current block by performing a weighted average of the first reference block and the second reference block based on a first weight associated with the first BV and a second weight associated with the second BV.

38. The method for video encoding as described in claim 37, wherein, The first weight and the second weight are obtained through one of the following methods: Inherited from the spatial neighboring block of the current block; Reuse the same weights used for inter-frame prediction blocks; or The encoder transmits signals into the bit stream.

39. An apparatus for video decoding, comprising: One or more processors; as well as A memory coupled to the one or more processors and configured to store instructions executable by the one or more processors. The one or more processors are configured to perform the method as described in any one of claims 1 to 19 when executing the instructions.

40. A non-transitory computer-readable storage medium for storing computer-executable instructions, which, when executed by one or more computer processors, cause the one or more computer processors to perform the method as described in any one of claims 1 to 19.

41. An apparatus for video encoding, comprising: One or more processors; as well as A memory coupled to the one or more processors and configured to store instructions executable by the one or more processors. The one or more processors are configured to perform the method as described in any one of claims 20 to 38 when executing the instructions.

42. A non-transitory computer-readable storage medium for storing computer-executable instructions, which, when executed by one or more computer processors, cause the one or more computer processors to perform the method as described in any one of claims 20 to 38.

43. A non-transitory computer-readable storage medium for storing a bit stream to be decoded by the method of any one of claims 1 to 19.

44. A non-transitory computer-readable storage medium for storing a bit stream generated by the method of any one of claims 20 to 38.