Video encoding and decoding method, computer equipment and storage medium

By using adaptive block vector difference pixel resolution coding technology, the accuracy of BVD is adjusted to solve the problem of limited flexibility in block vector prediction, thus achieving more efficient video compression and decoding.

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

Patent Information

Application Number
CN202510314091.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-08-22
Filing Date
2025-03-17
Publication Date
2025-11-14

AI Technical Summary

Technical Problem

Existing block vector prediction methods have limited flexibility in video encoding and decoding, affecting the accuracy and efficiency of encoding and decoding.

Method used

Adaptive block vector difference (BVD) pixel resolution coding technology is adopted to reduce signaling overhead and improve encoding and decoding efficiency by adjusting the precision of BVD.

Benefits of technology

While maintaining encoding accuracy, it reduces signaling overhead, improves video compression efficiency, and provides intermediate options in the encoding and decoding process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120956879A_ABST
    Figure CN120956879A_ABST
Patent Text Reader

Abstract

A method of video decoding includes receiving a video bitstream including a plurality of blocks, the plurality of blocks including a current block; determining that the current block is intra-coded based on a block vector (BV) and a prediction block for the current block; when a block vector difference (BVD) is encoded with an adaptive BVD pixel resolution: identifying one or more parameters of the BVD, and deriving the BVD based on the one or more BVD parameters; identifying a prediction block using the BV and the BVD; and reconstructing the current block using the prediction block. The invention also provides a video coding method, computing equipment and a storage medium.
Need to check novelty before this filing date? Find Prior Art

Description

Related applications

[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 647,459, filed May 14, 2024, entitled “Improvements on Intra Block Copy,” which is incorporated herein by reference in its entirety. Technical Field

[0002] This invention relates to the field of video encoding and decoding technology, specifically to a video encoding method, a video decoding method, a computing device, and a non-transitory computer-readable storage medium. Background Technology

[0003] Digital video is supported by various electronic devices such as digital televisions, laptop or desktop computers, tablet computers, digital camera devices, digital recording devices, digital media players, video game consoles, smartphones, video conferencing equipment, video streaming devices, etc. Electronic devices send and receive or otherwise transmit digital video data across 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 encoding can be used to compress video data according to one or more video encoding standards before transmission or storage. Video encoding can be performed by hardware and / or software on electronic / client devices or servers providing cloud services.

[0004] Video coding typically uses prediction methods that leverage the inherent redundancy in video data (e.g., inter-frame prediction, intra-frame prediction, etc.). Video coding aims to compress video data into a form using a lower bitrate while avoiding or minimizing video quality degradation. Several video codec standards have been developed. For example, High-Efficiency Video Coding (HEVC / H.265) is a video compression standard designed as part of the MPEG-H project. ITU-T and ISO / IEC released the HEVC / H.265 standard (version 1) in 2013, HEVC / H.265 standard (version 2) in 2014, HEVC / H.265 standard (version 3) in 2015, and HEVC / H.265 standard (version 4) in 2016. Versatile Video Coding (VVC / H.266) is a video compression standard designed as a successor to HEVC. The ITU-T and ISO / IEC released the VVC / H.266 standard (version 1) in 2020 and the VVC / H.266 standard (version 2) in 2022. AOMedia Video 1 (Alliance for Open Media Video 1, AV1) is an open video coding format designed as an alternative to HEVC. On January 8, 2019, validation version 1.0.0 with specification errata 1 was released. In the prior art, intra-frame block copying methods use block vectors to identify predicted blocks for the current block. Block vectors are used to identify another block in the same frame that may or may not be adjacent to the current block. Block vectors can be predicted using block vectors from a candidate list, which can be generated from block vectors from neighboring blocks and / or from a block vector library. However, current block vector prediction suffers from limited flexibility, thus affecting encoding / decoding accuracy and efficiency. Summary of the Invention

[0005] This disclosure describes a set of methods for video (image) compression, more specifically relating to Block Vector Difference (BVD) coding. For example, the precision of the BVD can be adjusted based on its amplitude. By adjusting the pixel resolution used to encode the BVD based on its amplitude (e.g., encoding a larger BVD with lower precision and / or encoding a smaller BVD with higher precision), signaling overhead can be reduced while maintaining coding accuracy, thereby improving compression efficiency. For example, precision bits are less meaningful for large amplitudes compared to smaller amplitudes, so the number of bits used to signal precision for large amplitudes can be reduced without significantly impacting coding accuracy.

[0006] According to some implementations, a video decoding method includes: (i) receiving a video bitstream (e.g., an encoded video sequence) comprising multiple blocks (e.g., corresponding to a set of pictures), said multiple blocks including a current block; (ii) determining that the current block is intra-coded based on a block vector (BV) and a predicted block for the current block; and (iii) when the block vector difference (BVD) is encoded with an adaptive BVD pixel resolution: (a) identifying one or more parameters of the BVD; and (b) deriving the BVD based on one or more BVD parameters; (iv) identifying the predicted block using the BV and BVD; and (v) reconstructing the current block using the predicted block.

[0007] According to some implementations, a video coding method includes: (i) receiving video data (e.g., a source video sequence) comprising a plurality of blocks (e.g., corresponding to a set of pictures), said plurality of blocks including a current block; (ii) determining, based on a block vector (BV) and a predicted block for the current block, that the current block will be intra-frame coded; (iii) when the block vector difference (BVD) will be coded with an adaptive BVD pixel resolution: (a) identifying one or more parameters of the BVD; and (b) deriving the BVD based on one or more BVD parameters; (iv) identifying the predicted block using the BV and BVD; and (v) encoding the current block using the predicted block.

[0008] According to some implementations, a method for processing visual media data includes: (i) obtaining a source video sequence comprising multiple frames; and (ii) performing a conversion between the source video sequence and a video bitstream of the visual media data according to format rules. The bitstream comprises multiple blocks, including a current block. The format rules specify that when the Block Vector Difference (BVD) is encoded with an adaptive BVD pixel resolution: identifying one or more parameters of the BVD; and deriving the BVD based on one or more BVD parameters.

[0009] According to some embodiments, a computing device is provided, such as a streaming system, server system, personal computer system, or other electronic device. The computing system includes a control circuitry and a memory storing one or more sets of instructions. The one or more sets of instructions include instructions for performing any of the methods described herein. In some embodiments, the computing system includes an encoder component and a decoder component (e.g., a transcoder).

[0010] According to some embodiments, a non-transitory computer-readable storage medium is provided. The non-transitory computer-readable storage medium stores one or more sets of instructions for execution by a computing device. The one or more sets of instructions include instructions for performing any of the methods described herein.

[0011] Therefore, apparatus and systems utilizing methods for encoding and decoding video are disclosed. Such methods, apparatus, and systems can supplement or replace conventional methods, apparatus, and systems for encoding / decoding video.

[0012] This invention describes a video / image compression technique that includes adaptive BVD encoding and decoding, such as amplitude-dependent adaptive BVD precision encoding. When the block vector difference (BVD) is encoded with adaptive BVD pixel resolution, the BVD can be adaptively derived based on one or more BVD parameters. The advantage of adjusting the BVD based on one or more parameters is reduced signaling overhead (e.g., using fewer bits when the corresponding information has a smaller impact) while maintaining encoding and decoding accuracy, thereby improving encoding and decoding efficiency. The adaptive BVD technique described in this invention can serve as an intermediate option between NEARMV and NEWMV modes in terms of accuracy and encoding / decoding overhead.

[0013] The features and advantages described in this specification are not necessarily all included, and in particular, some additional features and advantages will be apparent to those skilled in the art in light of the accompanying drawings, specification, and claims provided in this disclosure. Furthermore, it should be noted that the language used in this specification has been chosen primarily for readability and instructional purposes and is not necessarily intended to depict or limit the subject matter described herein. Attached Figure Description

[0014] To provide a more detailed understanding of this disclosure, a more specific description can be made by referring to the features of various embodiments, some of which are illustrated in the accompanying drawings. However, the drawings only illustrate relevant features of this disclosure and are therefore not necessarily intended to be limiting, as the description allows those skilled in the art to understand other effective features upon reading this disclosure.

[0015] Figure 1 This is a block diagram illustrating an example communication system according to some implementations.

[0016] Figure 2A This is a block diagram illustrating example elements of an encoder component according to some embodiments.

[0017] Figure 2B This is a block diagram illustrating example elements of a decoder component according to some embodiments.

[0018] Figure 3 This is a block diagram illustrating an example server system according to some implementation methods.

[0019] Figure 4 An example intra-frame block copying technique according to some implementations is shown.

[0020] Figure 5A An example video decoding process according to some implementation methods is shown.

[0021] Figure 5B An example video encoding process according to some implementation methods is shown.

[0022] By convention, the various features shown in the accompanying drawings are not necessarily drawn to scale, and similar reference numerals may be used to indicate similar features throughout the specification and the drawings. Detailed Implementation Example systems and devices

[0023] Figure 1 This is a block diagram illustrating a communication system 100 according to some embodiments. The communication system 100 includes a source device 102 and a plurality of electronic devices 120 (e.g., electronic devices 120-1 to 120-m) communicatively coupled to each other via one or more networks. In some embodiments, the communication system 100 is a streaming system, for example, for use with video-enabled applications such as video conferencing applications, digital TV applications, and media storage and / or distribution applications.

[0024] Source device 102 includes a video source 104 (e.g., a camera device component or media storage device) and an encoder component 106. In some embodiments, the video source 104 is a digital camera device (e.g., configured to create an uncompressed video sample stream). The encoder component 106 generates one or more encoded video bitstreams from the video stream. The video stream from video source 104 can have a high data volume compared to the encoded video bitstream 108 generated by encoder component 106. Because the encoded video bitstream 108 has a lower data volume (less data) compared to the video stream from video source 104, it requires less bandwidth to transmit and less storage space to store compared to the video stream from video source 104. In some embodiments, source device 102 does not include encoder component 106 (e.g., configured to transmit uncompressed video to network 110).

[0025] One or more networks 110 represent any number of networks that transmit information between source device 102, server system 112, and / or electronic device 120, including, for example, wired (connected) and / or wireless communication networks. One or more networks 110 may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks (LANs), wide area networks (WANs), and / or the Internet.

[0026] One or more networks 110 include server systems 112 (e.g., distributed / cloud computing systems). In some embodiments, server system 112 is a streaming server or includes streaming servers (e.g., configured to store and / or distribute video content, such as encoded video streams from source device 102). Server system 112 includes codec components 114 (e.g., configured to encode and / or decode video data). In some embodiments, codec components 114 include encoder components and / or decoder components. In various embodiments, codec components 114 are instantiated as hardware, software, or a combination thereof. In some embodiments, codec components 114 are configured to decode encoded video bitstream 108 and re-encode video data using different encoding standards and / or methods to generate encoded video data 116. In some embodiments, server system 112 is configured to generate multiple video formats and / or encodings based on encoded video bitstream 108. In some embodiments, server system 112 is used as a Media-Aware Network Element (MANE). For example, server system 112 can be configured to trim encoded video bitstream 108 to tailor potentially different bitstreams for one or more of the electronic devices 120. In some implementations, MANE is provided separately from server system 112.

[0027] Electronic device 120-1 includes a decoder component 122 and a display 124. In some embodiments, the decoder component 122 is configured to decode encoded video data 116 to generate an outgoing video stream that can be rendered on a display or other type of rendering device. In some embodiments, one or more of the electronic devices 120 do not include a display component (e.g., communicatively coupled to an external display device and / or includes a media storage device). In some embodiments, the electronic device 120 is a streaming client. In some embodiments, the electronic device 120 is configured to access a server system 112 to obtain encoded video data 116.

[0028] The source device and / or multiple electronic devices 120 are sometimes referred to as “terminal devices” or “user devices”. In some implementations, one or more of the electronic devices 120 and / or the source device 102 are instances of server systems, personal computers, portable devices (e.g., smartphones, tablets, or laptops), wearable devices, video conferencing equipment, and / or other types of electronic devices.

[0029] In an example operation of communication system 100, source device 102 transmits an encoded video bitstream 108 to server system 112. For example, source device 102 may encode a stream of images captured by the source device. Server system 112 receives the encoded video bitstream 108 and may decode and / or encode the encoded video bitstream 108 using codec component 114. For example, server system 112 may apply encoding to the video data that is optimized for network transmission and / or storage. Server system 112 may transmit encoded video data 116 (e.g., one or more encoded video bitstreams) to one or more electronic devices 120. Each electronic device 120 may decode the encoded video data 116 and optionally display video images.

[0030] Figure 2A This is a block diagram illustrating example elements of an encoder component 106 according to some embodiments. The encoder component 106 receives video data (e.g., a source video sequence) from a video source 104. In some embodiments, the encoder component includes a receiver (e.g., transceiver) component configured to receive the source video sequence. In some embodiments, the encoder component 106 receives the video sequence from a remote video source (e.g., a video source that is a component of a device different from the encoder component 106). The video source 104 may provide the source video sequence in the form of a digital video sample stream, which may have any suitable bit depth (e.g., 8-bit, 10-bit, or 12-bit), any color space (e.g., BT.601YCrCb or RGB), and any suitable sampling structure (e.g., YCrCb 4:2:0 or YCrCb 4:4:4). In some embodiments, the video source 104 is a storage device storing previously captured / prepared video. In some embodiments, the video source 104 is a camera device that captures local image information as a video sequence. Video data can be provided as multiple individual images that impart motion when viewed sequentially. Each image can be organized as a spatial array of pixels, where, depending on the sampling structure, color space, etc., each pixel may include one or more samples. The relationship between pixels and samples will be readily understood by those skilled in the art.

[0031] Encoder component 106 is configured to encode and / or compress images of a source video sequence into an encoded video sequence 216 in real time or under other time constraints required by the application. In some embodiments, encoder component 106 is configured to perform a conversion between the source video sequence and a bitstream of visual media data (e.g., a video bitstream). Implementing an appropriate encoding rate is a function of controller 204. In some embodiments, controller 204 controls and is functionally coupled to other functional units as described below. Parameters set by controller 204 may include rate control-related parameters (e.g., image frame skipping, quantizer and / or rate distortion optimization technique λ value), image size, group of pictures (GOP) layout, maximum motion vector search range, etc. Other functions of controller 204 can be readily identified by those skilled in the art, as they may belong to encoder component 106 optimized for a particular system design.

[0032] In some implementations, encoder component 106 is configured to operate within an encoding / decoding loop. In a simplified example, the encoding / decoding loop includes a source encoder 202 (e.g., responsible for creating symbols, such as a symbol stream, based on the input image to be encoded and a reference image) and a (local) decoder 210. Decoder 210 reconstructs the symbols in a manner similar to that of the (remote) decoder to create sample data (assuming lossless compression between the symbols and the encoded video bitstream). The reconstructed sample stream (sample data) is input to reference image memory 208. Since decoding of the symbol stream produces bit-accurate results regardless of the decoder's location (local or remote), the contents of reference image memory 208 are also bit-accurate between the local and remote encoders. In this way, the encoder's prediction portion interprets the same sample values ​​as the sample values ​​that the decoder interprets during prediction as reference image samples.

[0033] The operation of decoder 210 can be combined with a remote decoder, for example, as shown below. Figure 2B The operation of the decoder component 122 is the same as described in the detailed description. However, a brief reference is provided. Figure 2B Since the symbols are available and the encoding of the symbols into an encoded video sequence by the entropy encoder 214 and the decoding of the symbols by the parser 254 can be lossless, the entropy decoding portion of the decoder component 122, including the buffer memory 252 and the parser 254, does not need to be fully implemented in the local decoder 210.

[0034] Besides parsing / entropy decoding, the decoder techniques described in this paper can exist in the corresponding encoders in essentially the same form. For this reason, the subject matter focuses on decoder operations. Additionally, the description of the encoder techniques can be simplified, as the encoder techniques are inverses of the decoder techniques.

[0035] As part of the operation of the source encoder 202, the source encoder 202 can perform motion-compensated predictive coding, which predictively encodes the input frame with reference to one or more previously encoded frames from the video sequence designated as reference frames. In this way, the encoding engine 212 encodes the differences between pixel blocks of the input frame and pixel blocks of the reference frame, which can be selected as the prediction reference for the input frame. The controller 204 can manage the encoding operations of the source encoder 202, including, for example, setting parameters and subgroup parameters for encoding the video data.

[0036] Decoder 210 decodes encoded video data based on symbols created by source encoder 202, which can be designated as reference frames. The operation of encoding engine 212 can advantageously handle lossy processing. When encoded video data is processed by video decoder (… Figure 2A When decoded at a location (not shown), the reconstructed video sequence can be a copy of the source video sequence with some errors. Decoder 210 can replicate the decoding process performed on the reference frame by a remote video decoder, and the reconstructed reference frame can be stored in reference image memory 208. In this way, encoder component 106 locally stores a copy of the reconstructed reference frame that shares common content (no transmission errors) with the reconstructed reference frame to be obtained by the remote video decoder.

[0037] Predictor 206 can perform a prediction search against encoding engine 212. That is, for a new frame to be encoded, predictor 206 can search the reference image memory 208 for sample data (as candidate reference pixel blocks) or specific metadata such as reference image motion vectors, block shapes, etc., that can be used as appropriate prediction references for the new image. Predictor 206 can operate pixel-by-pixel based on the sample blocks to find appropriate prediction references. As determined by the search results obtained by predictor 206, the input image can have prediction references obtained from multiple reference images stored in the reference image memory 208.

[0038] The outputs of all the functional units mentioned above can undergo entropy encoding in the entropy encoder 214. The entropy encoder 214 converts the symbols, such as those generated by the various functional units, into an encoded video sequence by lossless compression according to techniques known to those skilled in the art (e.g., Huffman coding, variable-length coding, and / or arithmetic coding).

[0039] In some implementations, the output of entropy encoder 214 is coupled to a transmitter. The transmitter can be configured to buffer encoded video sequences, such as those created by entropy encoder 214, in preparation for transmission via communication channel 218, which can be a hardware / software link to a storage device storing the encoded video data. The transmitter can be configured to combine encoded video data from source encoder 202 with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown). In some implementations, the transmitter can transmit additional data along with the encoded video. Source encoder 202 can include such data as part of the encoded video sequence. Additional data can include temporal / spatial / SNR (Signal-to-Noise Ratio) enhancement layers, other forms of redundant data such as redundant images and slices, Supplementary Enhancement Information (SEI) messages, fragments of Visual Usability Information (VUI) parameter sets, etc.

[0040] Controller 204 can manage the operation of encoder component 106. During encoding, controller 204 can assign a specific type of encoded picture to each encoded picture, which may affect the encoding technique applied to the corresponding picture. For example, pictures can be assigned as intra-pictures (I-pictures), predictive pictures (P-pictures), or bidirectional predictive pictures (B-pictures). Intra-pictures can be encoded and decoded without using any other frames in the sequence as prediction sources. Some video codecs allow different types of intra-pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are familiar with those variations of I-pictures and their corresponding applications and characteristics, and therefore they will not be repeated here. Predictive pictures can be encoded and decoded using inter-frame prediction or intra-frame prediction that uses at most one motion vector and reference index to predict sample values ​​for each block. Bidirectional predictive pictures can be encoded and decoded using inter-frame prediction or intra-frame prediction that uses at most two motion vectors and reference indexes to predict sample values ​​for each block. Similarly, multiple predictive pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0041] The source image can typically be spatially subdivided into multiple sample blocks (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples), and encoded block by block. These blocks can be predictively encoded with reference to other (already encoded) blocks, determined by the encoding assignments of the corresponding images applied to the blocks. For example, blocks of image I can be unpredictably encoded, or blocks of image I can be predictively encoded (spatial prediction or intra-frame prediction) with reference to already encoded blocks of the same image. Pixel blocks of image P can be unpredictably encoded with reference to a previously encoded reference image via spatial prediction or temporal prediction. Blocks of image B can be unpredictably encoded with reference to one or two previously encoded reference images via spatial prediction or temporal prediction.

[0042] Video can be captured as a series of source images (video images) over time. Intra-frame image prediction (often simply called intra-prediction) utilizes spatial correlations within a given image, while inter-frame image prediction utilizes (temporal or other) correlations between images. In the example, a specific image during encoding / decoding—referred to as the current image—is segmented into blocks. Where a block in the current image resembles a reference block in a previously encoded and still buffered reference image in the video, the block in the current image can be encoded using a vector called a motion vector. The motion vector points to the reference block in the reference image, and when multiple reference images are in use, the motion vector can have a third dimension that identifies the reference images.

[0043] Encoder component 106 can perform encoding operations according to a predetermined video coding technique or standard, such as any video coding technique or standard described herein. In operation, encoder component 106 can perform various compression operations, including predictive coding operations utilizing temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data can conform to the syntax specified by the video coding technique or standard in use.

[0044] Figure 2B This is a block diagram illustrating example elements of a decoder component 122 according to some embodiments. Figure 2B The decoder component 122 is coupled to channel 218 and display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to loop filter 256 and configured to transmit data to display 124 (e.g., via a wired or wireless connection).

[0045] In some embodiments, decoder component 122 includes a receiver coupled to channel 218 and configured to receive data from channel 218 (e.g., via a wired or wireless connection). The receiver may be configured to receive one or more encoded video sequences to be decoded by decoder component 122. In some embodiments, the decoding of each encoded video sequence is independent of other encoded video sequences. Each encoded video sequence can be received from channel 218, which may be a hardware / software link to a storage device storing the encoded video data. The receiver may receive encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams, which may be forwarded to their respective user entities (not depicted). The receiver may separate the encoded video sequences from other data. In some embodiments, the receiver receives additional (redundant) data along with the encoded video. The additional data may be included as part of one or more encoded video sequences. The additional data may be used by decoder component 122 to decode the data and / or more accurately reconstruct the original video data. Additional data can be in the form of, for example, time, space, or SNR enhancement layers, redundant slices, redundant images, forward error correction codes, etc.

[0046] According to some embodiments, the decoder component 122 includes a buffer memory 252, a parser 254 (sometimes also referred to as an entropy decoder), a scaler / inverse transform unit 258, an intra-frame image prediction unit 262, a motion compensation prediction unit 260, an aggregator 268, a loop filter unit 256, a reference image memory 266, and a current image memory 264. In some embodiments, the decoder component 122 is implemented as an integrated circuit, a series of integrated circuits, and / or other electronic circuit systems. The decoder component 122 may be implemented at least partially in software.

[0047] Buffer memory 252 is coupled between channel 218 and parser 254 (e.g., to combat network jitter). In some embodiments, buffer memory 252 is separate from decoder component 122. In some embodiments, a separate buffer memory is provided between the output of channel 218 and decoder component 122. In some embodiments, a separate buffer memory is provided outside decoder component 122 (e.g., to combat network jitter) in addition to buffer memory 252 inside decoder component 122 (e.g., configured to handle broadcast timing). Buffer memory 252 may not be necessary or may be small when receiving data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network. Buffer memory 252 may be required to make the best use of packet networks such as the Internet; buffer memory 252 may be relatively large and / or have an adaptive size and may be implemented at least partially in an operating system or similar element outside decoder component 122.

[0048] Parser 254 is configured to reconstruct symbols 270 from the encoded video sequence. Symbols may include, for example, information for managing the operation of decoder component 122, and / or information for controlling rendering devices such as display 124. Control information for the rendering device may be in the form of, for example, Supplemental Enhancement Information (SEI) messages or Video Availability Information (VUI) parameter set fragments (not depicted). Parser 254 parses (entropy decodes) the encoded video sequence. The encoding of the encoded video sequence may be based on video coding techniques or standards and may follow principles known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. Parser 254 may extract a subgroup parameter set from the encoded video sequence for pixels in a subgroup of subgroups for use in the video decoder, based on at least one parameter corresponding to a group. Subgroups may include picture groups (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser 254 can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0049] Depending on the type of encoded video images or their portions (e.g., inter-frame and intra-frame images, inter-frame and intra-frame blocks) and other factors, the reconstruction of symbol 270 may involve multiple distinct units. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the encoded video sequence by parser 254. For simplicity, the flow of this subgroup control information between parser 254 and the following units is not depicted.

[0050] The decoder component 122 can be conceptually subdivided into multiple functional units, and in some implementations, these units interact closely with each other and can be at least partially integrated with each other. However, for the sake of brevity, this paper retains the conceptual subdivision of functional units.

[0051] The scaler / inverse transform unit 258 receives quantized transform coefficients as symbols 270 and control information (such as which transform to use, block size, quantization factor, and / or quantization scaling matrix) from the parser 254. The scaler / inverse transform unit 258 can output blocks including sample values, which can be input to the aggregator 268. In some cases, the output samples of the scaler / inverse transform unit 258 belong to intra-frame encoded blocks; that is, blocks that do not use predictive information from previously reconstructed images, but can use predictive information from previously reconstructed portions of the current image. Such predictive information can be provided by the intra-frame image prediction unit 262. The intra-frame image prediction unit 262 can use surrounding reconstructed information obtained from the current (partially reconstructed) image from the current image memory 264 to generate blocks of the same size and shape as the blocks in the reconstruction. The aggregator 268 can add the prediction information already generated by the intra-frame image prediction unit 262 to the output sample information provided by the scaler / inverse transform unit 258 based on each sample.

[0052] In other cases, the output samples of the scaler / inverse transform unit 258 belong to inter-frame encoded blocks and potentially to motion-compensated blocks. In such cases, the motion compensation prediction unit 260 can access the reference image memory 266 to obtain samples for prediction. After motion compensation of the obtained samples according to the symbols 270 belonging to the block, these samples can be added by the aggregator 268 to the output of the scaler / inverse transform unit 258 (referred to in this case as residual samples or residual signals) to generate output sample information. The address in the reference image memory 266 from which the motion compensation prediction unit 260 obtains the predicted samples can be controlled by motion vectors. Motion vectors can be used by the motion compensation prediction unit 260 in the form of symbols 270, which can have, for example, X components, Y components, and reference image components. Motion compensation can also include, for example, interpolation of sample values ​​obtained from the reference image memory 266 when the subsample precise motion vector is in use, and motion vector prediction mechanisms.

[0053] The output samples of aggregator 268 can undergo various loop filtering techniques in loop filter unit 256. Video compression techniques may include in-loop filtering techniques controlled by parameters included in the encoded video bitstream and available to loop filter unit 256 as symbols 270 from parser 254. However, video compression techniques may also respond to metadata obtained during decoding of previous (in decoding order) portions of the encoded picture or encoded video sequence, and to sample values ​​obtained from previous reconstruction and loop filtering. The output of loop filter unit 256 may be a sample stream, which can be output to a rendering device such as display 124, and stored in reference picture memory 266 for use in future inter-frame picture prediction.

[0054] Once reconstructed, certain encoded images can be used as reference images for future predictions. Once an encoded image has been reconstructed and has been identified as a reference image (e.g., by parser 254), the current reference image can become part of the reference image memory 266, and a new current image memory can be reallocated before reconstructing subsequent encoded images begins.

[0055] Decoder component 122 can perform decoding operations according to a predetermined video compression technique that may be recorded in any standard such as those described herein. As specified in a video compression technique document or standard, and particularly in a configuration file therein, an encoded video sequence may conform to the syntax specified by the video compression technique or standard used, in the sense that the encoded video sequence follows the syntax of the video compression technique or standard. Furthermore, to conform to some video compression techniques or standards, the complexity of the encoded video sequence may be within a range defined by the hierarchy of the video compression technique or standard. In some cases, the hierarchy limits the maximum image size, maximum frame rate, maximum reconstruction sampling rate (measured, for example, megasamples per second), maximum reference image size, etc. In some cases, the limitations set by the hierarchy can be further restricted by the Hypothetical Reference Decoder (HRD) specification and metadata managed by the HRD buffer used for signaling in the encoded video sequence.

[0056] Figure 3This is a block diagram illustrating a server system 112 according to some embodiments. The server system 112 includes a control circuitry system 302, one or more network interfaces 304, a memory 314, a user interface 306, and one or more communication buses 312 for interconnecting these components. In some embodiments, the control circuitry system 302 includes one or more processors (e.g., CPU, GPU, and / or DPU). In some embodiments, the control circuitry system includes a field-programmable gate array, a hardware accelerator, and / or an integrated circuit (e.g., an application-specific integrated circuit).

[0057] Network interface 304 can be configured to interface with one or more communication networks (e.g., wireless networks, wired networks, and / or optical networks). Communication networks can be local, wide area, metropolitan area, vehicle and industrial, real-time, latency-tolerant, etc. Examples of communication networks include: local area networks such as Ethernet, wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, etc.; wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; vehicle and industrial networks including CANbus, etc. Such communication can be one-way receiving (e.g., broadcast TV), one-way transmitting (e.g., to a CAN bus of some CAN bus device), or bidirectional (e.g., to other computer systems using local or wide area digital networks). Such communication can include communication with one or more cloud computing networks.

[0058] User interface 306 includes one or more output devices 308 and / or one or more input devices 310. Input devices 310 may include one or more of the following: keyboard, mouse, touchpad, touch screen, data glove, joystick, microphone, scanner, camera, etc. Output devices 308 may include one or more of the following: audio output devices (e.g., speakers), visual output devices (e.g., displays or monitors), etc.

[0059] Memory 314 may include high-speed random access memory (e.g., DRAM, SRAM, DDR RAM, and / or other random access solid-state memory devices) and / or non-volatile memory (e.g., one or more disk storage devices, optical disk storage devices, flash memory devices, and / or other non-volatile solid-state memory devices). Memory 314 may optionally include one or more storage devices located remotely from the control circuitry system 302. The non-volatile solid-state memory devices within memory 314, or alternatively memory 314, include non-transitory computer-readable storage media. In some embodiments, memory 314 or the non-transitory computer-readable storage media of memory 314 stores programs, modules, instructions, and data structures, or subsets or supersets thereof: ● Operating system 316, which includes procedures for handling various basic system services and for performing hardware-related tasks; ● Network communication module 318, which is used to connect server system 112 to other computing devices via one or more network interfaces 304 (e.g., via wired and / or wireless connections); ● Encoding / decoding module 320, which performs various functions related to encoding and / or decoding data, such as video data. In some embodiments, encoding / decoding module 320 is an example of codec component 114. Encoding / decoding module 320 includes, but is not limited to, one or more of the following: ○ Decoding module 322, which performs various functions related to decoding encoded data, such as those previously described with respect to decoder component 122; and ○ Encoding module 340, which performs various functions related to encoding data, such as those previously described with respect to encoder component 106; and • Image memory 352, which is used, for example, in conjunction with encoding / decoding module 320, for storing images and image data. In some embodiments, image memory 352 includes one or more of the following: reference image memory 208, buffer memory 252, current image memory 264, and reference image memory 266.

[0060] In some implementations, the decoding module 322 includes a parsing module 324 (e.g., configured to perform various functions previously described with respect to the parser 254), a transformation module 326 (e.g., configured to perform various functions previously described with respect to the scaler / inverse transformation unit 258), a prediction module 328 (e.g., configured to perform various functions previously described with respect to the motion compensation prediction unit 260 and / or the intra-frame image prediction unit 262), and a filter module 330 (e.g., configured to perform various functions previously described with respect to the loop filter 256).

[0061] In some embodiments, the encoding module 340 includes a code module 342 (e.g., configured to perform various functions previously described with respect to source encoder 202 and / or encoding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to predictor 206). In some embodiments, the decoding module 322 and / or the encoding module 340 include... Figure 3 A subset of the modules shown. For example, a shared prediction module is used by both the decoding module 322 and the encoding module 340.

[0062] Each of the modules identified above and stored in memory 314 corresponds to a set of instructions for performing the functions described herein. The modules identified above (e.g., instruction sets) do not need to be implemented as separate software programs, processes, or modules, and therefore various subsets of these modules can be combined or otherwise rearranged in various implementations. For example, the codec module 320 may optionally not include separate decoding and encoding modules, but instead use the same set of modules to perform both sets of functions. In some implementations, memory 314 stores a subset of the modules and data structures identified above. In some implementations, memory 314 stores additional modules and data structures not described above.

[0063] Although Figure 3 A server system 112 according to some embodiments is shown, but Figure 3 This is intended more as a functional description of various features that can exist in one or more server systems than as a structural diagram of the implementation described herein. In practice, items shown individually may be combined and some items may be separated. For example, Figure 3 Some items shown individually can be implemented on a single server, and a single item can be implemented by one or more servers. The actual number of servers used to implement server system 112 and how features are distributed among them will vary depending on the implementation method, and optionally, it depends in part on the amount of data traffic processed by the server system during peak usage periods and during average usage periods. Example encoding techniques

[0064] The encoding processes and techniques described below can be performed on the devices and systems described above (e.g., source device 102, server system 112, and / or electronic device 120). Methods for intra-frame block copying and adaptive coding of block vector differences are described according to some embodiments.

[0065] Intra-frame block copying is a method that uses block vectors to identify the predicted block for the current block. Block vectors are used to identify another block in the same frame as the current block, which may or may not be adjacent to it. Block vectors can be predicted using block vectors from a candidate list, which can be generated from block vectors from neighboring blocks and / or from a block vector library. An index can be signaled to indicate which candidate block vector in the candidate list to use to predict the block vector for the current block. If the block vector is the same as one of the block vectors in the candidate list, the current prediction mode can be called NEARMV mode. If the block vector is different from all block vectors in the block vector candidate list, it can be called NEWMV mode. For NEWMV mode, the difference between the current block vector and the predicted block vector can be signaled into the bitstream. It is worth noting that in NEWMV mode, the precision of the block vector difference (BVD) is the same, regardless of the magnitude of the BVD. Therefore, NEWMV mode refers to a prediction mode that signals the difference between the motion (or block) vectors relative to the motion (or block) vector predictor, and NEARMV mode refers to a prediction mode that applies the motion (or block) vector predictor as the motion (or block) vector without further signaling the difference between the motion (or block) vectors.

[0066] Figure 4 An example of intra-block copying technology is shown. In this example, intra-block copying technology includes identifying a predicted block 404 within the same image 400 as the current block 402 via a predicted block vector 408. Figure 4 An example is shown where the predicted block 404 is not adjacent to the current block 402. In some implementations, the predicted block 404 may be adjacent to the current block 402. The predicted block vector 408 is predicted using candidate block vectors from a candidate list. The candidate list may be generated based on one or more block vectors from neighboring blocks of the current block 402, or the candidate list may include block vectors obtained from a block vector library. In some implementations, an index is signaled to the video bitstream to indicate which candidate block vector from the candidate list to use to predict the block vector of the current block.

[0067] Although Figure 4 The BVD 410 described in the text has components along both the horizontal and vertical dimensions, but the discussion below discusses BVD along a single dimension. However, the methods and systems can be easily extended to solve BVD across two or more dimensions.

[0068] In some implementations, the resolution (e.g., pixel resolution) of the BVD is distinguished based on its amplitude. In some implementations, the precision of the BVD becomes coarser as the amplitude of the BVD increases. For example, encoding a BVD with a large amplitude using a high pixel resolution (e.g., high precision) may not provide a statistically significant improvement in compression efficiency. Therefore, for BVDs in a first (e.g., larger) amplitude range, large BVDs can be encoded with a reduced resolution (e.g., lower precision, such as lower integer pixel resolution or lower fractional pixel resolution). Thus, for larger BVD values, the BVD can typically be encoded with a reduced resolution (e.g., reduced precision, reduced integer pixel resolution, or reduced fractional pixel resolution). In some implementations, the precision of the BVD can be 1-pel, 2-pel, 4-pel, 8-pel, 16-pel, 32-pel, etc., where "pel" refers to a pixel. This amplitude-dependent BVD resolution can generally be referred to as adaptive BVD resolution, amplitude-dependent adaptive BVD resolution, or amplitude-dependent BVD resolution. Resolution can refer to pixel resolution. Adaptive BVD resolution can help achieve better overall compression efficiency while maintaining accuracy and reducing signaling overhead. As described below, the adaptive BVD resolution mode provides an intermediate option between NEARMV and NEWMV modes.

[0069] In some implementations, a "local search region" refers to a neighboring reconstructed sample region of the current block (e.g., current block 402) that can be used to identify a predicted block (e.g., predicted block 404). For example, a region covered by a block region of a given size (e.g., 64×64) associated with the current block can be a local search region. In some implementations, a "global search region" refers to a reconstructed sample region of a block farther from the current block (e.g., current block 402) that can be used to identify a predicted block (e.g., predicted block 404). For example, a global search region can be a region that extends beyond neighboring block regions of a given size (e.g., all reconstructed sample regions beyond two previously encoded superblocks (or coding tree blocks)). In some implementations, "superblock size" refers to the maximum coding block size suitable for encoding an image / video picture or video sequence. In some implementations, "block size" or "region size" refers to the block / region width and / or height, the block / region area size, the number of samples in the block / region, the maximum (or minimum) value between the block / region width and height, and / or the block / region aspect ratio.

[0070] In some implementations, after a candidate block vector is selected and used as the predicted block vector (e.g., predicted block vector 408), a block vector difference (BVD) representing the difference between the predicted block vector and the actual block vector is determined (e.g., calculated or derived) (e.g., block vector difference 410). In some implementations, the actual block vector (e.g., block vector 406) is a vector between corresponding portions of the current block (e.g., current block 402) and the predicted block (e.g., predicted block 404). The BVD (e.g., BVD 410) may include information representing the magnitude and / or direction of the BV difference, one or both of which may be signaled in the bitstream.

[0071] In some implementations, the methods described herein for adaptive encoding of BVD can be similarly applied to methods associated with adaptive encoding of motion vector difference (MVD), and vice versa.

[0072] In some implementations, the continuous magnitude space corresponding to the block vector differences of all allowed BVDs can be divided into non-overlapping intervals or ranges. In some implementations, only one BVD is allowed per interval, and the interval size becomes larger as the number of BVDs increases. In some implementations, the allowed BVDs are divided into the following intervals: (0, 1], (1, 2], (2, 4], (4, 8], (8, 16], (16, 32], (32, 64], (64, 128], (128, 256], (256, 512], (512, 1024], (1024, 2048], where the symbol (n, m) is used to represent the range of block vector differences greater than n pixels and less than or equal to m pixels. In some implementations, the encoder is configured to signal only these values ​​of the allowed BVDs in each interval (e.g., values ​​other than those listed below are not supported): 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048. In some implementations, the allowed... The BVD has a slight level offset relative to the example provided above, and the encoder is configured to signal only the allowed BVD values ​​for each interval: 1, 2, 3, 6, 12, 24, 48, 96, 192, 384, 768, 1536. In some implementations, the result of test data determines whether to use the first or second set of allowed BVD values, and the encoder can then be configured to signal the values ​​that produce better results. In some implementations, the actual block vector (e.g., block vector 406) is obtained by adding the BVD to a predicted block vector (e.g., predicted block vector 408) (e.g., at the decoder), and the BVD available for such addition corresponds to those values ​​that the encoder is allowed to signal.

[0073] In some implementations, instead of having the encoder signal BVDs to the bitstream, all allowed BVDs are stored in a lookup table, and the index associated with the lookup table is signaled to the bitstream. In some implementations, the difference between adjacent BVDs in the lookup table increases monotonically with increasing index. In some implementations, the entries associated with allowed BVDs stored in the lookup table are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048.

[0074] In some implementations, when a block is encoded in intra-block copy mode, a flag can be signaled into the bitstream to indicate whether an adaptive BVD precision method is applied. The mode using the adaptive BVD precision technique described herein can be referred to as ABVDNEWMV or AMVDNEWMV mode. In some implementations, the same flag can be used to indicate whether AMVDNEWMV mode, NEARMV mode, or NEWMV mode is used. In some implementations, the signaled flag for AMVDNEWMV mode is entropy-coded using a context independent of other encoded information and / or not dependent on encoded information.

[0075] In some implementations, whether or not the AMVDNEWMV mode is applied is signaled to the bitstream in a high-level syntax and / or at one of various encoding levels, such as sequence level (e.g., in the sequence header), picture level (e.g., in the picture header), frame level (e.g., in the frame header), slice level (e.g., in the slice header), superblock level, or other encoding levels.

[0076] In some implementations, the number of candidate block vectors in the block vector candidate list may differ for AMVDNEWMV mode and other modes. In some implementations, the number of candidates in the block vector candidate list for AMVDNEWMV falls between that of NERMV mode and NEWMV mode. For example, NERMV mode does not consider BVD, while NEWMV mode is more accurate and has more candidate block vectors. In some implementations, NEWMV mode may be more accurate but has higher processing or signaling overhead. Reducing the overhead associated with AMVNEWMV mode can increase the chances of selecting AMVNEWMV mode. In some implementations, the number of candidate block vectors in the block vector candidate list for AMVDNEWMV mode is set to two.

[0077] Figure 5AThis is a flowchart illustrating a method 500 for decoding video according to some embodiments. Method 500 can be executed at a computing system (e.g., server system 112, source device 102, or electronic device 120) having a control circuitry and a memory storing instructions for execution by the control circuitry. In some embodiments, method 500 is executed by executing instructions stored in the computing system's memory (e.g., memory 314).

[0078] The system receives (502) a video bitstream (e.g., an encoded video sequence) comprising multiple blocks (e.g., corresponding to a set of pictures), including the current block. The system determines (504) that the current block is intra-coded based on the block vector (BV) and a predicted block for the current block. When the block vector difference (BVD) is encoded with an adaptive BVD pixel resolution (506): the system identifies (508) one or more parameters of the BVD, and the system derives (510) the BVD based on one or more BVD parameters. The system uses the BV and BVD to identify (512) the predicted block. The system reconstructs (514) the current block using the predicted block. In this way, the accuracy of the signaled BVD depends on the magnitude of the BVD.

[0079] In some implementations, the accuracy of BVD becomes coarser as the amplitude of BVD increases. In some implementations, the accuracy of BVD can be 1-pel, 2-pel, 4-pel, 8-pel, 16-pel, 32-pel, etc.

[0080] In some implementations, all allowed BVDs are divided into multiple intervals, and only one BVD is allowed in each interval, and the interval size becomes larger as the number of BVDs increases. In some implementations, the allowed BVD is divided into the following intervals: (0, 1], (1, 2], (2, 4], (4, 8], (8, 16], (16, 32], (32, 64], (64, 128], (128, 256], (256, 512], (512, 1024], (1024, 2048). For example, the allowed BVD in each interval is 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048. In another example, the allowed BVD in each interval is 1, 2, 3, 6, 12, 24, 48, 96, 192, 384, 768, 1536.

[0081] In some implementations, all allowed BVDs are stored in a lookup table, and the indexes in the lookup table are signaled to the bitstream. In some implementations, the difference between adjacent BVDs in the lookup table increases monotonically with increasing index. In some implementations, the BVDs in the lookup table are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, and 2048.

[0082] In some implementations, when a block is encoded in intra-block copy mode, a flag is signaled into the bitstream to indicate whether adaptive BVD precision is applied. In some implementations, the adaptive BVD precision mode is referred to as the AMVDNEWMV mode. This mode can be signaled along with NERMV and NEWMV modes. In some implementations, a context is used to signal the AMVDNEWMV mode flag, and this context is independent of the encoded information.

[0083] In some implementations, the decision on whether to apply the proposed adaptive BVD precision method is signaled to the bitstream using a high-level syntax such as a sequence header, frame header, or slice header.

[0084] In some implementations, the number of candidates in the block vector candidate list may differ for the AMVDNEWMV mode and other modes. In some implementations, the number of candidates in the block vector candidate list for AMVDNEWMV is shorter than the number of candidates for NEAMV and NEWMV modes. For example, the number of candidates in the block vector candidate list for AMVDNEWMV may be set to 2.

[0085] Figure 5B This is a flowchart illustrating a method 550 for encoding video according to some embodiments. Method 550 can be performed at a computing system (e.g., server system 112, source device 102, or electronic device 120) having a control circuitry and a memory storing instructions for execution by the control circuitry. In some embodiments, method 550 is performed by executing instructions stored in the computing system's memory (e.g., memory 314). In some embodiments, method 550 is performed by the same system as method 500 described above.

[0086] The system receives (552) video data (e.g., a source video sequence) comprising multiple blocks (e.g., corresponding to a set of images), including the current block. The system determines (554) that the current block will be intra-coded based on the block vector (BV) and a predicted block for the current block. When the block vector difference (BVD) is to be encoded with an adaptive BVD pixel resolution (556): the system identifies (558) one or more parameters of the BVD, and derives (560) the BVD based on one or more BVD parameters. The system uses the BV and BVD to identify (562) the predicted block. The system uses the predicted block to encode the current block (564). As previously described, the encoding process can mirror the decoding process described herein (e.g., the adaptive block vector difference encoding implementation described above). For brevity, these details are not repeated here.

[0087] Although Figure 5A and Figure 5B Multiple logical stages are shown in a specific order, but stages that are not in order can be reordered, and other stages can be combined or split. Some reorderings or other groupings not specifically mentioned will be obvious to those skilled in the art, and therefore the ordering and grouping presented herein are not exhaustive. Furthermore, it should be understood that the stages can be implemented in hardware, firmware, software, or any combination thereof.

[0088] Now let's turn to some example implementations.

[0089] (A1) In one aspect, some embodiments include a method for video decoding (e.g., method 500). In some embodiments, the method is performed at a computing system (e.g., server system 112) having memory and control circuitry. In some embodiments, the method is performed at an encoding / decoding module (e.g., encoding / decoding module 320). In some embodiments, the method is performed at a source encoding component (e.g., source encoder 202), an encoding engine (e.g., encoding engine 212), and / or an entropy encoder (e.g., entropy encoder 214). The method includes: (i) receiving a video bitstream comprising multiple blocks (e.g., an encoded video sequence), said multiple blocks including a current block; (ii) determining that the current block is intra-coded based on a block vector (BV) and a predicted block for the current block; and (iii) when the block vector difference (BVD) is encoded with an adaptive BVD pixel resolution: (a) identifying one or more parameters of the BVD; and (b) deriving the BVD based on one or more BVD parameters; (iv) identifying the predicted block using the BV and BVD; and (v) reconstructing the current block using the predicted block. For example, the accuracy of the block vector difference (BVD) signaled depends on the magnitude of the BVD. For example, the BVD is the difference between the predicted block vector and the block vector of the current block among a plurality of coded blocks. In some embodiments, one or more parameters of the BVD are identified based on the adaptive BVD pixel resolution, depending on the determination that an adaptive BVD mode is enabled for the current block. In some embodiments, when the BVD is not encoded with an adaptive BVD pixel resolution, the BVD is determined without considering one or more parameters.

[0090] (A2) In some implementations of A1, a signaled index from the video bitstream is used to identify one or more parameters of the BVD. For example, the index is signaled in the video bitstream via syntax elements, and a lookup table is used together with the index to identify one or more parameters.

[0091] (A3) In some implementations of A1, one or more parameters of the BVD are derived at the decoding unit. For example, one or more parameters of the BVD may not be explicitly signaled in the video bitstream.

[0092] (A4) In some embodiments of any of A1 to A3, one or more parameters of BVD include one or more of the following: the magnitude of BVD, the amplitude of BVD, and the direction of BVD.

[0093] (A5) In some embodiments of any of A1 to A4, deriving BVD based on one or more BVD parameters includes determining the pixel precision of BVD. For example, the magnitude of BVD may be based on the pixel precision of BVD.

[0094] (A6) In some embodiments of A5, one or more parameters of BVD include the amplitude of BVD, and the pixel precision of BVD is inversely proportional to the amplitude of BVD. For example, the precision of BVD becomes coarser (lower) as the amplitude of BVD increases. For example, the precision of BVD can be 1-pel, 2-pel, 4-pel, 8-pel, 16-pel, 32-pel, etc., where pel is short for pixel. In some embodiments, the precision of BVD is selected from the group consisting of 1-pel, 2-pel, 4-pel, 8-pel, 16-pel, and 32-pel.

[0095] (A7) In some implementations of any of A1 to A6, deriving BVD based on one or more BVD parameters involves selecting BVD from a plurality of predefined values. For example, all allowed BVDs are divided into multiple intervals, and only one BVD is allowed in each interval, and the interval size becomes larger as the BVD increases. For example, the allowed BVDs are divided into the following intervals: (0, 1], (1, 2], (2, 4], (4, 8], (8, 16], (16, 32], (32, 64], (64, 128], (128, 256], (256, 512], (512, 1024], (1024, 2048). In another example, the allowed BVDs in each interval are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048. In yet another example, the allowed BVDs in each interval are 1, 2, 3, 6, 12, 24, 48, 96, 192, 384, 768, 1536.

[0096] (A8) In some implementations of A7, multiple predefined values ​​correspond to multiple intervals, and the size of the intervals increases as the predefined values ​​increase.

[0097] (A9) In some implementations of A7 or A8, multiple predefined values ​​are stored in a lookup table, and the indexes in the lookup table are signaled in the video bitstream. In some implementations, one or more BVD parameters for the current block are identified from the video bitstream, and one or more BVD parameters correspond to an index associated with an entry stored in the lookup table. For example, all allowed BVDs are stored in a lookup table, and the indexes in that lookup table are signaled in the bitstream.

[0098] (A10) In some implementations of A9, the difference between the values ​​of adjacent entries in the lookup table increases monotonically as the index of the lookup table increases. For example, the difference between adjacent BVDs in the lookup table increases monotonically as the index increases. As another example, the BVDs in the lookup table are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, and 2048.

[0099] (A11) In some embodiments of any of A1 to A10, the method further includes determining whether BVD is encoded with an adaptive BVD pixel resolution based on an indicator in the video bitstream (e.g., whether adaptive block vector difference (BVD) pixel resolution is applied to the current block). For example, when the block is encoded in intra-block copy mode, a flag can be signaled to the bitstream to indicate whether an adaptive BVD precision method is applied.

[0100] (A12) In some implementations of A11, indicators indicate whether BVD is encoded with adaptive BVD pixel resolution, whether NEARMV mode is applied, and whether NEWMV mode is applied. For example, the proposed adaptive BVD accuracy method is called AMVDNEWMV mode, which is signaled together with NEARMV and NEWMV modes.

[0101] (A13) In some implementations of A11 or A12, the indicator is entropy encoded using a context that is independent of the encoded information of the indicator. For example, a context is used to signal the flag of the AMVDNEWMV mode, and this context does not depend on the encoded information.

[0102] (A14) In some implementations of any of A11 to A13, indicators are signaled using a high-level syntax of the video bitstream. For example, a decision on whether to apply an adaptive BVD precision method is signaled into the bitstream using a high-level syntax such as a sequence header, frame header, or slice header.

[0103] (A15) In some embodiments of any of A1 to A14, the number of candidate block vectors in the block vector candidate list associated with the current block depends on whether the BVD is encoded with an adaptive BVD pixel resolution. For example, the number of candidates in the block vector candidate list may differ for the AMVDNEWMV mode and other modes. In some embodiments, the block vector candidate list for a mode that encodes the BVD with an adaptive BVD pixel resolution differs from the block vector candidate lists associated with other modes (e.g., the NERMV mode or the NEWMV mode).

[0104] (A16) In some implementations of A15, the block vector candidate list is shorter for BVD encoded with adaptive BVD pixel resolution compared to BVD not encoded with adaptive BVD pixel resolution. For example, the number of candidates in the block vector candidate list for AMVDNEWMV is shorter than the number of candidates for NEAMV and NEWMV modes. In some implementations, the number of candidate block vectors for modes with adaptive BVD pixel resolution is less than the number of candidate block vectors for the NEAMV mode. In some implementations, the number of candidate block vectors for modes encoding BVD with adaptive BVD pixel resolution is less than the number of candidate block vectors for the NEWMV mode.

[0105] (A17) In some implementations of A15 or A16, when BVD is encoded with an adaptive BVD pixel resolution, the number of candidate block vectors in the block vector candidate list associated with the current block is equal to 2. For example, the number of candidates in the block vector candidate list for AMVDNEWMV is set to 2.

[0106] (B1) In another aspect, some embodiments include a video encoding method (e.g., method 550). In some embodiments, the method is performed at a computing system (e.g., server system 112) having a memory and control circuitry. In some embodiments, the method is performed at a codec module (e.g., codec module 320). The method includes: (i) receiving video data (e.g., a source video sequence) comprising a plurality of blocks, said plurality of blocks including a current block; (ii) Determine whether the current block will be intra-coded based on the block vector (BV) and the predicted block for the current block; (iii) When the block vector difference (BVD) is to be encoded with an adaptive BVD pixel resolution: (a) Identify one or more parameters of BVD; and (b) derive BVD based on one or more BVD parameters; (iv) identify the prediction block using BV and BVD; and (v) encode the current block using the prediction block.

[0107] (B2) In some implementations of B1, one or more parameters of BVD include the magnitude of BVD, and deriving BVD based on one or more BVD parameters includes determining the pixel precision of BVD.

[0108] (C1) In another aspect, some embodiments include a method for processing visual media data. In some embodiments, the method is performed at a computing system (e.g., server system 112) having memory and control circuitry. In some embodiments, the method is performed at a codec module (e.g., codec module 320). The method includes: (i) obtaining a source video sequence comprising multiple frames; and (ii) performing a conversion between the source video sequence and a video bitstream of visual media data according to format rules. The video bitstream comprises multiple blocks, the multiple blocks including the current block. The format rules specify that when the block vector difference (BVD) is encoded with an adaptive BVD pixel resolution: identifying one or more parameters of the BVD; and deriving the BVD based on one or more BVD parameters.

[0109] On the other hand, some embodiments include a computing device (e.g., server system 112) that includes a control circuitry system (e.g., control circuitry system 302) and a memory (e.g., memory 314) coupled to the control circuitry system, the memory storing one or more sets of instructions configured to be executed by the control circuitry system, the set of one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1 to A17, B1 to B2 and C1 above).

[0110] In another aspect, some embodiments include a non-transitory computer-readable storage medium that stores one or more sets of instructions for execution by a control circuitry of a computing device, the set of instructions including instructions for performing any of the methods described herein (e.g., A1 to A17, B1 to B2 and C1 above).

[0111] Unless otherwise stated, any syntax element (e.g., indicator) described herein can be a High-Level Syntax (HLS). As used herein, the HLS is signaled at a level higher than the block level. For example, the HLS can correspond to a sequence level, frame level, slice level, or tile level. As another example, HLS elements can be signaled in a Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Adaptation Parameter Set (APS), slice header, picture header, tile header, and / or CTU header.

[0112] It will be understood that although the terms “first,” “second,” etc., may be used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the claims. As used in the description of embodiments and appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and / or,” as used herein, refers to and covers any and all possible combinations of one or more of the associated listed items. It will also be understood that, when used in this specification, the terms “comprising” and / or “including” specify the presence of the stated feature, integer, step, operation, element, and / or component, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0113] As used herein, the term "if" may be interpreted, depending on the context, as meaning "when the prerequisite is true," "after the prerequisite is true," "in response to determining that the prerequisite is true," "based on determining that the prerequisite is true," or "in response to detecting that the prerequisite is true." Similarly, the phrases "if it is determined [that the prerequisite is true]," "if [that the prerequisite is true]," or "when [that the prerequisite is true]" may be interpreted, depending on the context, as meaning "after determining that the prerequisite is true," "in response to determining that the prerequisite is true," "based on determining that the prerequisite is true," "after detecting that the prerequisite is true," or "in response to detecting that the prerequisite is true."

[0114] For illustrative purposes, the foregoing description has been described with reference to specific embodiments. However, the illustrative discussion above is not intended to be exhaustive or to limit the claims to the precise forms disclosed. In view of the above teachings, many modifications and variations are possible. These embodiments were chosen and described in order to best illustrate the principles of operation and practical application, thereby enabling others skilled in the art to implement them.

Claims

1. A method for video decoding, characterized in that, The method includes: Receive a video bitstream comprising multiple blocks, including the current block; The current block is determined to be intra-coded based on the block vector (BV) and the predicted block for the current block; When Block Vector Difference (BVD) is encoded using adaptive BVD pixel resolution: Identify one or more parameters of the BVD; and The BVD is derived based on one or more BVD parameters; The prediction block is identified using the BV and the BVD; and The current block is reconstructed using the predicted block.

2. The method according to claim 1, characterized in that, The one or more parameters of the BVD are identified using an index signaled from the video bitstream.

3. The method according to claim 1 or 2, characterized in that, The one or more parameters of the BVD are obtained at the decoding unit.

4. The method according to claim 1 or 2, characterized in that, The one or more parameters of the BVD include the magnitude of the BVD.

5. The method according to claim 1 or 2, characterized in that, Determining the BVD based on one or more BVD parameters includes determining the pixel precision of the BVD.

6. The method according to claim 5, characterized in that, The one or more parameters of the BVD include the amplitude of the BVD, and wherein the pixel precision of the BVD is inversely proportional to the amplitude of the BVD.

7. The method according to claim 1 or 2, characterized in that, Determining the BVD based on one or more BVD parameters includes selecting the BVD from a plurality of predefined values.

8. The method according to claim 7, characterized in that, The plurality of predefined values ​​correspond to a plurality of intervals, wherein the size of the intervals increases as the predefined values ​​increase.

9. The method according to claim 7, characterized in that, The plurality of predefined values ​​are stored in a lookup table, and the index of the lookup table is signaled in the video bitstream.

10. The method according to claim 9, characterized in that, The difference between the values ​​of adjacent entries in the lookup table increases monotonically as the index of the lookup table increases.

11. The method according to claim 1 or 2, characterized in that, The method further includes determining whether the BVD is encoded with the adaptive BVD pixel resolution based on an indicator in the video bitstream.

12. The method according to claim 11, characterized in that, The indicator indicates whether the BVD is encoded using the adaptive BVD pixel resolution, whether the NEARMV mode is applied, and whether the NEWMV mode is applied.

13. The method according to claim 11, characterized in that, The indicator is entropy encoded using a context independent of the encoded information of the indicator.

14. The method according to claim 11, characterized in that, The indicator is notified by signals using the high-level syntax of the video bitstream.

15. The method according to claim 1 or 2, characterized in that, The number of candidate block vectors in the block vector candidate list associated with the current block depends on whether the BVD is encoded with the adaptive BVD pixel resolution.

16. The method according to claim 15, characterized in that, The block vector candidate list is shorter when the BVD is encoded with the adaptive BVD pixel resolution, compared to when the BVD is not encoded with the adaptive BVD pixel resolution.

17. The method according to claim 15, characterized in that, When the BVD is encoded using the adaptive BVD pixel resolution, the number of candidate block vectors in the block vector candidate list associated with the current block is equal to 2.

18. A video encoding method, characterized in that, The method includes: Receive video data comprising multiple blocks, including the current block; The current block will be intra-coded based on the block vector (BV) and the predicted block for the current block; When Block Vector Difference (BVD) is encoded using adaptive BVD pixel resolution: Identify one or more parameters of the BVD; and The BVD is derived based on one or more BVD parameters; The prediction block is identified using the BV and the BVD; and The current block is encoded using the predicted block.

19. A computing device, characterized in that, The computing device includes: Control circuit system; Memory; and A set of one or more sets of instructions, which are stored in the memory and configured to be executed by the control circuitry system to perform the method of any one of claims 1 to 18.

20. A non-transitory computer-readable storage medium storing one or more sets of instructions, characterized in that, The set or more sets of instructions are configured to be executed by a computing device having a control circuitry system and a memory to perform the method of any one of claims 1 to 18.