Amplitude symbol determination for encoding and decoding

By limiting the BVD amplitude prediction number and allocating symbols, combined with MVD prediction, the problem of the number of BVD symbols being unable to be effectively limited, and the compression efficiency of video encoding and the resource utilization of the decoder are improved.

CN120457685APending Publication Date: 2025-08-08COMCAST CABLE COMM LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380080046.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-20
Filing Date
2023-09-20
Publication Date
2025-08-08

AI Technical Summary

Technical Problem

In the existing video encoding technology, the number of predicted symbols of block vector difference (BVD) cannot be effectively limited, resulting in excessive signaling overhead, affecting compression efficiency and resource utilization of the decoder.

Method used

By limiting the number of symbols predicted by BVD amplitude and allocating a limited number of symbols based on the number of symbols that can be used for prediction, combined with the symbol prediction of motion vector difference (MVD), the accuracy of the amplitude symbol prediction is improved and signaling overhead is reduced.

Benefits of technology

It improves the compression efficiency of video encoding, reduces signaling overhead, and improves the resource utilization efficiency of the decoder.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120457685A_ABST
    Figure CN120457685A_ABST
Patent Text Reader

Abstract

Encoding and / or decoding blocks of a video frame may be based on previously decoded reference blocks in the same frame or a different frame. The reference block may be indicated by a block vector (BV). A block vector difference (BVD) predictor may be used to predict symbols with respect to one or more amplitude components of the BVD. The number of symbols used for BVD amplitude prediction may be limited. A limited number of symbols for prediction may be assigned to one or more of the amplitude components. The allocation of the symbols for BVD amplitude prediction may be based on a total number of symbols for BVD amplitude prediction and a respective number of predicted symbols available for each of the amplitude components. A symbol of a motion vector difference (MVD) may also be predicted.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 408,137, filed September 20, 2022. The above-referenced application is hereby incorporated by reference in its entirety. Background Art

[0003] The computing device processes the video for storage, transmission, reception and / or display. Processing the video includes, for example, encoding and / or decoding to reduce the data size associated with the video. Summary of the Invention

[0004] The following summary presents a simplified summary of certain features. This summary is not an extensive overview and is not intended to identify key or critical elements.

[0005] Video may include a sequence of frames (pictures) displayed continuously. Predictive encoding and decoding may involve using information associated with a block within a frame to encode and / or decode other blocks in the same frame or between frames in a frame sequence (e.g., consecutive frames). For example, information associated with a block (e.g., the luma and / or chroma components of the block) may be encoded using previously decoded information associated with a reference block in the same frame or a previous frame. A reference block may be indicated in the form of a block vector (BV), which represents the position of the reference block relative to the current block being encoded or decoded. The BV may be indicated as a function of certain syntax elements, including, for example, a block vector predictor (BVP) and a block vector difference (BVD) to reduce the signaling overhead required to directly indicate the BV. The BVD predictor may be used to predict the signs of one or more magnitude components of the BVD (e.g., horizontal and vertical magnitude components). The number of symbols used for BVD magnitude prediction may be limited. A limited number of symbols used for BVD magnitude prediction may be allocated to one or more magnitude components of the BVD. A limited number of symbols may be allocated based on the number of symbols available for prediction in each BVD magnitude component. Allocating a limited number of symbols based on the number of symbols available for prediction can improve the accuracy of magnitude symbol prediction, improve the compression efficiency of the prediction, and reduce the overhead required to signal the prediction, for example, to a decoder. The signs of motion vector differences (MVDs) may also be predicted.

[0006] These and other features and advantages are described in more detail below. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Some features are illustrated by way of example and not limitation in the accompanying drawings.In the drawings, like numerals indicate similar elements.

[0008] Figure 1 An example video encoding / decoding system is shown.

[0009] Figure 2 An example encoder is shown.

[0010] Figure 3 An example decoder is shown.

[0011] Figure 4 An example quadtree partitioning of a coding tree block (CTB) is shown.

[0012] Figure 5 Shown is the corresponding Figure 4 Example quadtree partitioning of CTBs in

[0045] .

[0013] Figure 6 Example binary and ternary tree partitions are shown.

[0014] Figure 7 An example of combined quadtree and multi-type tree partitioning of a CTB is shown.

[0015] Figure 8 Shown is the corresponding Figure 7 The combined quadtree and multi-type tree partitioning tree of the CTB shown in .

[0016] Figure 9 An example set of reference samples determined for intra prediction of a current block is shown.

[0017] Figure 10A and Figure 10B Example intra prediction modes are shown.

[0018] Figure 11 The current block and the corresponding reference samples are shown.

[0019] Figure 12 An example application of an intra prediction mode for predicting a current block is shown.

[0020] Figure 13A An example of inter-frame prediction is shown.

[0021] Figure 13B Example motion vectors are shown.

[0022] Figure 14 An example of bi-prediction is shown.

[0023] Figure 15A Example spatial candidate neighboring blocks for the current block are shown.

[0024] Figure 15B An example temporally concatenated block of the current block is shown.

[0025] Figure 16 An example of intra block copy (IBC) for encoding is shown.

[0026] Figure 17 An example of a Context-Based Adaptive Binary Arithmetic Coding (CABAC) encoder is shown.

[0027] Figure 18A An example of an IBC is shown.

[0028] Figure 18B Example BVD candidates of magnitude symbols that may be used for entropy coding BVD are shown.

[0029] Figure 18C An example of an indication of whether the value of the magnitude sign of the entropy-coded BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of the BVD is shown.

[0030] Figure 18D An example of entropy decoding an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of the BVD and determining the magnitude sign of the BVD using the indication is shown.

[0031] Figure 19 An example method of encoding a prediction associated with the magnitude component of a BVD is shown.

[0032] Figure 20 An example method for determining the number of symbols to be predicted for the magnitude component of a BVD is shown.

[0033] Figure 21 An example method of decoding a prediction associated with the magnitude component of a BVD is shown.

[0034] Figure 22 An example method for determining the number of symbols predicted for the magnitude component of a BVD is shown.

[0035] Figure 23 An example computer system is shown in which embodiments of the present disclosure may be implemented.

[0036] Figure 24 Shown are example elements of a computing device that may be used to implement any of the various devices described herein.

[0037] Figure 25A Example test results associated with the disclosure herein are shown.

[0038] Figure 25B Example test results associated with the disclosure herein are shown. DETAILED DESCRIPTION

[0039] The accompanying drawings and description provide examples. It should be understood that the examples shown and / or described in the accompanying drawings are non-exclusive and that the features shown and described may be practiced in other examples. Examples are provided for the operation of video encoding and decoding systems that can be used in the technical field of video data storage and / or transmission / reception. More specifically, the techniques disclosed herein may relate to video compression as used in encoding and / or decoding devices and / or systems.

[0040] A video sequence comprising a plurality of pictures / frames can be represented in digital form for storage and / or transmission. Representing a video sequence in digital form may require a large number of bits. The large amount of data that may be associated with a video sequence may require a large amount of resources for storage and / or transmission. Video encoding can be used to compress the size of a video sequence to achieve more efficient storage and / or transmission. Video decoding can be used to decompress a compressed video sequence for display and / or other forms of use.

[0041] Figure 1 An example video encoding / decoding system is shown. Video encoding / decoding system 100 may include a source device 102, a transmission medium 104, and a destination device 106. Source device 102 may encode a video sequence 108 into a bitstream 110 for more efficient storage and / or transmission. Source device 102 may store and / or send / transmit bitstream 110 to destination device 106 via transmission medium 104. Destination device 106 may decode bitstream 110 to display video sequence 108. Destination device 106 may receive bitstream 110 from source device 102 via transmission medium 104. Source device 102 and / or destination device 106 may be any of a number of different devices (e.g., a desktop computer, a laptop computer, a tablet computer, a smartphone, a wearable device, a television, a camera, a video game console, a set-top box, a video streaming device, etc.).

[0042] Source device 102 may include one or more of a video source 112, an encoder 114, and / or an output interface 116 (e.g., for encoding video sequence 108 into bitstream 110). Video source 112 may provide and / or generate video sequence 108 based on the capture of natural scenes and / or synthetically generated scenes. A synthetically generated scene may be a scene that includes computer-generated graphics and / or screen content. Video source 112 may include a video capture device (e.g., a camera), a video archive that includes previously captured natural scenes and / or synthetically generated scenes, a video feed interface for receiving captured natural scenes and / or synthetically generated scenes from a video content provider, and / or a processor for generating a synthetic scene.

[0043] A video sequence, such as video sequence 108, may include a series of pictures (also referred to as frames). A video sequence can achieve the impression of motion by presenting the pictures of the video sequence sequentially with a constant time interval or a variable time interval between pictures. A picture may include one or more sample arrays of intensity values. The intensity values may be acquired (e.g., measured, determined, provided) at a series of regularly spaced locations within the picture. A color picture may include (e.g., typically include) a luma sample array and two chroma sample arrays. The luma sample array may include intensity values representing the luma (e.g., luma component Y) of the picture. The chroma sample array may include intensity values representing the blue and red components (e.g., chroma components Cb and Cr), respectively, of the picture, separate from the luma. Other color picture sample arrays are possible based on different color schemes (e.g., a red, green, blue (RGB) color scheme). A pixel in a color picture may refer to / include / be associated with all intensity values (e.g., luma components, chroma components) for a given location in the sample array representing the color picture. A monochrome picture may include a single luma sample array. A pixel in a monochrome picture may refer to / include / be associated with an intensity value (eg, luma component) at a given position in a single luma sample array used to represent the monochrome picture.

[0044] The encoder 114 may encode the video sequence 108 into a bitstream 110. The encoder 114 may apply / use one or more prediction techniques (e.g., to encode the video sequence 108) to reduce redundant information in the video sequence 108. The redundant information may include information that can be predicted at the decoder and does not need to be transmitted to the decoder to accurately decode the video sequence 108. For example, the encoder 114 may apply spatial prediction (e.g., intra-frame prediction), temporal prediction (e.g., inter-frame prediction), inter-layer prediction, and / or other prediction techniques to reduce redundant information in the video sequence 108. The encoder 114 may, for example, divide the pictures comprising the video sequence 108 into rectangular regions called blocks before applying one or more prediction techniques. The encoder 114 may then encode the blocks using one or more of the prediction techniques.

[0045] The encoder 114 may search for a block similar to a block being encoded in another picture (e.g., a reference picture) of the video sequence 108, for example, for temporal prediction. The block determined during the search (e.g., a prediction block) may then be used to predict the block being encoded. The encoder 114 may form a prediction block based on data from reconstructed neighboring samples of a block to be encoded within the same picture of the video sequence 108, for example, for spatial prediction. The reconstructed samples may be samples that are encoded and then decoded. The encoder 114 may determine a prediction error (e.g., a residual) based on the difference between the block being encoded and the prediction block. The prediction error may represent non-redundant information that may be sent / transmitted to a decoder for accurate decoding of the video sequence 108.

[0046] The encoder 114 may apply a transform to the prediction error (e.g., using a discrete cosine transform (DCT) or any other transform) to generate transform coefficients. The encoder 114 may form a bitstream 110 based on the transform coefficients and other information used to determine a prediction block using / based on the prediction type, motion vector, and prediction mode. The encoder 114 may, for example, perform one or more of quantization and entropy encoding of the transform coefficients and / or other information used to determine the prediction block before forming the bitstream 110. Quantization and / or entropy encoding may further reduce the number of bits required to store and / or transmit the video sequence 108.

[0047] The output interface 116 may be configured to write and / or store the bitstream 110 onto the transmission medium 104 for transmission to the destination device 106. The output interface 116 may be configured to send / transmit, upload, and / or stream the bitstream 110 to the destination device 106 via the transmission medium 104. The output interface 116 may include a wired and / or wireless transmitter configured to send / transmit, upload, and / or stream the bitstream 110 according to one or more proprietary, open source, and / or standardized communication protocols (e.g., the Digital Video Broadcasting (DVB) standard, the Advanced Television Systems Committee (ATSC) standard, the Integrated Services Digital Broadcasting (ISDB) standard, the Cable Services Interface Data Specification (DOCSIS) standard, the 3rd Generation Partnership Project (3GPP) standard, the Institute of Electrical and Electronics Engineers (IEEE) standard, the Internet Protocol (IP) standard, the Wireless Application Protocol (WAP) standard, and / or any other communication protocol).

[0048] The transmission medium 104 may include wireless, wired, and / or computer-readable media. For example, the transmission medium 104 may include one or more wires, cables, air interfaces, optical disks, flash memory, and / or magnetic storage. The transmission medium 104 may include one or more networks (e.g., the Internet) or file servers configured to store and / or send / transmit the encoded video data.

[0049] The destination device 106 may decode the bitstream 110 into a video sequence 108 for display. The destination device 106 may include one or more of an input interface 118, a decoder 120, and / or a video display 122. The input interface 118 may be configured to read the bitstream 110 stored by the source device 102 on the transmission medium 104. The input interface 118 may be configured to receive, download, and / or stream the bitstream 110 from the source device 102 via the transmission medium 104. The input interface 118 may include a wired and / or wireless receiver configured to receive, download, and / or stream the bitstream 110 according to one or more proprietary, open source, standardized communication protocols, and / or any other communication protocol (e.g., as referenced herein).

[0050] The decoder 120 can decode the video sequence 108 from the encoded bitstream 110. The decoder 120 can generate prediction blocks for pictures of the video sequence 108 in a manner similar to the encoder 114 and determine prediction errors for the blocks to, for example, decode the video sequence 108. The decoder 120 can generate the prediction blocks using / based on the prediction type, prediction mode, and / or motion vectors received in the bitstream 110. The decoder 120 can determine the prediction error using transform coefficients received in the bitstream 110. The decoder 120 can determine the prediction error by weighting a transform basis function using the transform coefficients. The decoder 120 can combine the prediction blocks and the prediction error to decode the video sequence 108. The video sequence 108 at the destination device 106 may or may not be the same video sequence as the transmitted video sequence, such as the video sequence 108 transmitted by the source device 102. Decoder 120 may decode a video sequence that approximates video sequence 108 , eg, due to lossy compression of video sequence 108 by encoder 114 and / or errors introduced into encoded bitstream 110 during transmission to destination device 106 .

[0051] Video display 122 may display video sequence 108 to a user. Video display 122 may include a cathode ray tube (CRT) display, a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, and / or any other display device suitable for displaying video sequence 108.

[0052] The video encoding / decoding system 100 is merely an example, and video encoding / decoding systems different from the video encoding / decoding system 100 and / or modified versions of the video encoding / decoding system 100 may perform the methods and processes described herein. For example, the video encoding / decoding system 100 may include other components and / or arrangements. The video source 112 may be external to the source device 102. The video display device 122 may be external to the destination device 106 or omitted entirely (e.g., if the video sequence 108 is intended for use by a machine and / or storage device). The source device 102 may further include a video decoder, and the destination device 104 may further include a video encoder. For example, the source device 102 may be configured to further receive an encoded bitstream from the destination device 106 to support bidirectional video transmission between the devices.

[0053] The encoder 114 and / or the decoder 120 may operate in accordance with one or more proprietary or industry video coding standards. For example, the encoder 114 and / or the decoder 120 may operate in accordance with one or more proprietary, open source, and / or standardized protocols (e.g., International Telecommunication Union Telecommunication Standardization Sector (ITU-T) H.263, ITU-T H.264, and Moving Picture Experts Group (MPEG)-4 Visual (also known as Advanced Video Coding (AVC)), ITU-T H.265 and MPEG-H Part 2 (also known as High Efficiency Video Coding (HEVC), ITU-T H.265 and MPEG-I Part 3 (also known as Versatile Video Coding (VVC)), WebM VP8 and VP9 codecs, and / or AOMedia Video 1 (AV1)) and / or any other communication protocol.

[0054] Figure 2 An example encoder is shown. Figure 2 The encoder 200 shown in FIG. 1 may implement one or more of the processes described herein. The encoder 200 may encode a video sequence 202 into a bitstream 204 for more efficient storage and / or transmission. The encoder 200 may be configured as follows: Figure 1 1 (e.g., as encoder 114) or implemented in any computing, communication, or electronic device (e.g., a desktop computer, laptop computer, tablet computer, smartphone, wearable device, television, camera, video game console, set-top box, video streaming device, etc.). Encoder 200 may include one or more of an inter-prediction unit 206, an intra-prediction unit 208, combiners 210 and 212, a transform and quantization unit (TR+Q) 214, an inverse transform and quantization unit (iTR+iQ) 216, an entropy coding unit 218, one or more filters 220, and / or a buffer 222.

[0055] Encoder 200 may divide pictures (e.g., frames) of (e.g., comprising) a video sequence 202 into blocks and encode video sequence 202 block by block. Encoder 200 may perform / apply prediction techniques to the blocks being encoded using inter-prediction unit 206 or intra-prediction unit 208. Inter-prediction unit 206 may perform inter-prediction by searching for blocks similar to the block being encoded in another reconstructed picture (e.g., a reference picture) of video sequence 202. The reconstructed picture may be a picture that has been encoded and then decoded. The block determined during the search (e.g., a prediction block) may then be used to predict the block being encoded to remove redundant information. Inter-prediction unit 206 may exploit temporal redundancy or similarity in scene content from picture to picture in video sequence 202 to determine the prediction block. For example, the scene content between pictures in video sequence 202 may be similar, except for differences due to motion and / or affine transformations of screen content over time.

[0056] The intra-frame prediction unit 208 can perform intra-frame prediction by forming a prediction block based on data from reconstructed neighboring samples of a block to be encoded within the same picture of the video sequence 202. The reconstructed samples can be samples that have been encoded and then decoded. The intra-frame prediction unit 208 can exploit spatial redundancy or similarity in scene content within a picture of the video sequence 202 to determine the prediction block. For example, the texture of a region of scene content in a picture can be similar to the texture in the immediately surrounding areas of the region of scene content in the same picture.

[0057] Combiner 210 may determine a prediction error (eg, a residual) based on the difference between the block being encoded and the predicted block. The prediction error may represent non-redundant information that may be sent / transmitted to a decoder for accurate decoding of video sequence 202.

[0058] The transform and quantization unit (TR+Q) 214 may transform and quantize the prediction error. The transform and quantization unit 214 may transform the prediction error into transform coefficients by applying, for example, a DCT to reduce the correlation information in the prediction error. The transform and quantization unit 214 may quantize the coefficients by mapping the data of the transform coefficients to a set of predefined representative values. The transform and quantization unit 214 may quantize the coefficients to reduce irrelevant information in the bitstream 204. The irrelevant information may be information that can be removed from the coefficients after decoding (e.g., at a receiving device) without causing visible and / or perceptible distortion in the video sequence 202.

[0059] The entropy coding unit 218 may apply one or more entropy coding methods to the quantized transform coefficients to further reduce the bit rate. For example, the entropy coding unit 218 may apply context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and / or syntax-based context-based binary arithmetic coding (SBAC). The entropy-coded coefficients may be packed to form the bitstream 204.

[0060] The inverse transform and quantization unit (iTR+iQ) 216 may inverse quantize and inverse transform the quantized transform coefficients to determine a reconstructed prediction error. The combiner 212 may combine the reconstructed prediction error with the prediction block to form a reconstructed block. The filter 220 may filter the reconstructed block using, for example, a deblocking filter and / or a sample adaptive offset (SAO) filter. The buffer 222 may store the reconstructed block to predict one or more other blocks in the same and / or different pictures of the video sequence 202.

[0061] The encoder 200 may further include an encoder control unit. The encoder control unit may be configured to control Figure 2 . The encoder control unit may control one or more units of the encoder 200 so that the bitstream 204 is generated according to the requirements of one or more proprietary coding protocols, industry video coding standards, and / or any other video coding protocols. For example, the encoder control unit may control one or more units of the encoder 200 so that the bitstream 204 is generated according to one or more of ITU-T H.263, AVC, HEVC, VVC, VP8, VP9, AV1, and / or any other video coding standards / formats.

[0062] The encoder control unit may attempt to minimize (or reduce) the bit rate of the bitstream 204 and / or maximize (or increase) the quality of the reconstructed video (e.g., within the constraints of a proprietary encoding protocol, an industry video encoding standard, and / or any other video encoding protocol). For example, the encoder control unit may attempt to minimize or reduce the bit rate of the bitstream 204 so that the quality of the reconstructed video does not fall below a certain level / threshold, and / or may attempt to maximize or increase the quality of the reconstructed video so that the bit rate of the bitstream 204 does not exceed a certain level / threshold. The encoder control unit may determine / control one or more of the following: partitioning of pictures of the video sequence 202 into blocks; whether a block is inter-predicted by the inter-prediction unit 206 or intra-predicted by the intra-prediction unit 208; a motion vector used for inter-prediction of the block; an intra-prediction mode from a plurality of intra-prediction modes used for intra-prediction of the block; filtering performed by the filter 220; and / or one or more transform types and / or quantization parameters applied by the transform and quantization unit 214. The encoder control unit may determine / control one or more of the above based on the rate-distortion metric of the block or picture being encoded. The encoder control unit may determine / control one or more of the above to reduce the rate-distortion metric of the block or picture being encoded.

[0063] The prediction type used to encode the block (intra-frame or inter-frame prediction), prediction information for the block (if intra-frame prediction, intra-frame prediction mode, motion vector, etc.), and / or transform and / or quantization parameters can be sent to the entropy coding unit 218 for further compression (e.g., to reduce the bit rate). The prediction type, prediction information, and / or transform and / or quantization parameters can be packaged together with the prediction error to form the bitstream 204.

[0064] Encoder 200 is merely an example, and encoders different from encoder 200 and / or modified versions of encoder 200 may perform the methods and processes described herein. For example, encoder 200 may include other components and / or arrangements. Figure 2 One or more of the components shown in may optionally be included in encoder 200 (eg, entropy encoding unit 218 and / or filter 220).

[0065] Figure 3 An example decoder is shown. Figure 3 The decoder 300 shown in FIG. 3 may implement one or more of the processes described herein. The decoder 300 may decode the bitstream 302 into a decoded video sequence 304 for display and / or some other form of use. The decoder 300 may be configured to decode the bitstream 302 into a decoded video sequence 304 for display and / or some other form of use. Figure 1The decoder 300 may include an entropy decoding unit 306, an inverse transform and quantization (iTR+iQ) unit 308, a combiner 310, one or more filters 312, a buffer 314, an inter-frame prediction unit 316, and / or an intra-frame prediction unit 318.

[0066] The decoder 300 may include a decoder control unit configured to control one or more units of the decoder 300. The decoder control unit may control the one or more units of the decoder 300 so that the bitstream 302 is decoded according to the requirements of one or more proprietary coding protocols, industry video coding standards, and / or any other communication protocol. For example, the decoder control unit may control the one or more units of the decoder 300 so that the bitstream 302 is decoded according to one or more of ITU-T H.263, AVC, HEVC, VVC, VP8, VP9, AV1, and / or any other video coding standards / formats.

[0067] The decoder control unit may determine / control one or more of: whether the block is inter-predicted by the inter-prediction unit 316 or intra-predicted by the intra-prediction unit 318; a motion vector used for inter-prediction of the block; an intra-prediction mode among a plurality of intra-prediction modes used for intra-prediction of the block; filtering performed by the filter 312; and / or one or more inverse transform types and / or inverse quantization parameters to be applied by the inverse transform and quantization unit 308. One or more of the control parameters used by the decoder control unit may be packaged in the bitstream 302.

[0068] The entropy decoding unit 306 may entropy decode the bitstream 302. The inverse transform and quantization unit 308 may inverse quantize and / or inverse transform the quantized transform coefficients to determine a decoded prediction error. The combiner 310 may combine the decoded prediction error with the prediction block to form a decoded block. The prediction block may be generated by the intra-frame prediction unit 318 or the inter-frame prediction unit 316 (e.g., as described above with respect to Figure 2 302). The decoded blocks may be filtered by the filter 312 using, for example, a deblocking filter and / or a sample adaptive offset (SAO) filter. The buffer 314 may store the decoded blocks to predict one or more other blocks in the same and / or different pictures of the video sequence in the bitstream 302. The decoded video sequence 304 may be output from the filter 312, as shown in FIG. Figure 3 As shown in .

[0069] Decoder 300 is merely an example, and decoders different from decoder 300 and / or modified versions of decoder 300 may perform the methods and processes described herein. For example, decoder 300 may have other components and / or arrangements. Figure 3 One or more of the components shown in may optionally be included in decoder 300 (eg, entropy decoding unit 306 and / or filter 312).

[0070] Although not in Figure 2 and 3 , but in addition to the inter-frame prediction and intra-frame prediction units, each of the encoder 200 and the decoder 300 may further include an intra-frame block copy unit. The intra-frame block copy unit may perform / operate similarly to the inter-frame prediction unit, but may predict blocks within the same picture. For example, the intra-frame block copy unit may utilize repeating patterns that appear in screen content. The screen content may include computer-generated text, graphics, animation, etc.

[0071] Video encoding and / or decoding can be performed on a block-by-block basis. The process of dividing a picture into blocks can be adaptive based on the content of the picture. For example, larger block partitions can be used in areas of the picture with a higher level of uniformity to improve coding efficiency.

[0072] A picture (e.g., in HEVC or any other coding standard / format) can be partitioned into non-overlapping square blocks, which can be referred to as coding tree blocks (CTBs). A CTB can include samples of a sample array. The CTB can have a size of 2n x 2n samples, where n can be specified by parameters of the coding system. For example, n can be 4, 5, 6, or any other value. The CTB can have any other size. The CTB can be further partitioned into coding blocks (CBs) with half vertical and half horizontal sizes through recursive quadtree partitioning. The CTB can form the root of the quadtree. CBs that are not further partitioned as part of recursive quadtree partitioning can be referred to as leaf CBs of the quadtree, and in other cases can be referred to as non-leaf CBs of the quadtree. CBs can have a minimum size specified by parameters of the coding system. For example, a CB can have a minimum size of 4x4, 8x8, 16x16, 32x32, 64x64 samples, or any other minimum size. The CB can be further partitioned into one or more prediction blocks (PBs) for performing inter-frame and / or intra-frame prediction. A PB may be a rectangular block of samples on which the same prediction type / mode may be applied. For transforms, a CB may be partitioned into one or more transform blocks (TBs). A TB may be a rectangular block of samples that may determine / indicate the size of the transform applied.

[0073] Figure 4 An example quadtree partitioning of a CTB is shown. Figure 5 Shown is the corresponding Figure 4 The example quadtree partition of CTB 400 in FIG. Figure 4 and Figure 5 As shown, the CTB 400 may be first partitioned into four CBs with half vertical and half horizontal sizes. Three of the resulting CBs of the first level partitioning of the CTB 400 may be leaf CBs. Figure 4 and Figure 5 7, 8 and 9 respectively. The non-leaf CBs of the first level partition of the CTB 400 may be partitioned into four sub-CBs with half vertical and half horizontal sizes. Three of the resulting sub-CBs of the second level partition of the CTB 400 may be leaf CBs. The three leaf CBs of the second level partition of the CTB 400 are Figure 4 and Figure 5 The non-leaf CBs of the second level partition of the CTB 400 can be partitioned into four leaf CBs with half vertical and half horizontal sizes. The four leaf CBs can be Figure 4 and Figure 5 They are marked as 1, 2, 3 and 4 respectively.

[0074] Figure 4 The CTB 400 in FIG. 4 may be partitioned into 10 leaf CBs labeled 0-9, respectively, and / or any other number of leaf CBs. The 10 leaf CBs may correspond to 10 CB leaf nodes (e.g., Figure 5 ). In other examples, the CTB may be partitioned into a different number of leaf CBs. The resulting quadtree partition of the CTB 400 may be scanned using a z-scan (e.g., left to right, top to bottom) to form a sequential order for encoding / decoding the CB leaf nodes. Figure 4 and Figure 5 The digital label (e.g., indicator, index) of each CB leaf node in may correspond to the sequential order for encoding / decoding. For example, CB leaf node 0 may be encoded / decoded first, and CB leaf node 9 may be encoded / decoded last. Although not in Figure 4 and Figure 5 As shown in , each CB leaf node may include one or more PBs and / or TBs.

[0075] Pictures in VVC (or any other coding standard / format) can be partitioned in a similar manner (e.g., HEVC). Pictures can first be partitioned into non-overlapping square CTBs. Recursive quadtree partitioning can then be used to partition the CTBs into CBs with half vertical and half horizontal sizes. Quadtree leaf nodes (e.g., in VVC) can be further partitioned into CBs of unequal size using binary or ternary tree partitioning (or any other partitioning).

[0076] Figure 6 Example binary and ternary tree partitioning are shown. Binary tree partitioning can split a parent block in half in either the vertical direction 602 or the horizontal direction 604. The resulting partitions can be half the size of the parent block. The resulting partitions can correspond to sizes less than and / or greater than half the size of the parent block. Ternary tree partitioning can split a parent block into thirds in either the vertical direction 606 or the horizontal direction 608. Figure 6 An example is shown in which the middle partition in a ternary tree partition may be twice as large as the other two end partitions. In other examples, the partitions may have other sizes relative to each other and relative to the parent block. Binary tree partitioning and ternary tree partitioning are examples of multi-type tree partitioning. Multi-type tree partitioning may include dividing the parent block into other numbers of smaller blocks. Due to the addition of binary tree and / or ternary tree partitioning to quadtree partitioning, the block partitioning strategy (e.g., in VVC) may be referred to as a combination of quadtree and multi-type tree partitioning (quadtree + multi-type tree partitioning).

[0077] Figure 7 An example of combined quadtree and multi-type tree partitioning of a CTB is shown. Figure 8 Shown is the corresponding Figure 7 The tree of the combined quadtree and multi-type tree partitions of the CTB 700 in . Figure 7 and Figure 8 In FIG, quadtree partitioning is shown in solid lines, and multi-type tree partitioning is shown in dashed lines. Figure 4 The same quadtree partitioning as that of the CTB 400 described in FIG. 1 is shown, and description of the quadtree partitioning of the CTB 700 is omitted. The quadtree partitioning of the CTB 700 is merely an example, and the CTB may be quadtree partitioned in a manner different from that of the CTB 700. Additional multi-type tree partitioning of the CTB 700 may be performed with respect to Figure 4 The three leaf CBs shown in the figure were prepared. Figure 7 Shown as further partitioned Figure 4 The three leaf CBs in may be leaf CBs 5, 8, and 9. The three leaf CBs may be further partitioned using one or more binary and / or ternary tree partitions.

[0078] Figure 4 The leaf CB 5 can be partitioned into two CBs based on vertical binary tree partitioning. The two resulting CBs can be in Figure 7 and Figure 8 The leaves CB are marked as 5 and 6 respectively. Figure 4 The leaf CB 8 of can be partitioned into three CBs based on vertical ternary tree partitioning. Two of the three resulting CBs can be in Figure 7 and Figure 8The remaining non-leaf CBs may first be partitioned into two CBs based on horizontal binary tree partitioning. One of the two CBs may be a leaf CB marked as 10. The other of the two CBs may be further partitioned into three CBs based on vertical ternary tree partitioning. The resulting three CBs may be Figure 7 and Figure 8 The leaf CBs are labeled 11, 12, and 13, respectively. Figure 4 The leaf CB 9 can be partitioned into three CBs based on the horizontal ternary tree partition. Two of the three CBs can be in Figure 7 and Figure 8 The remaining non-leaf CBs can be partitioned into three CBs based on another horizontal ternary tree partition. The resulting three CBs can all be in Figure 7 and Figure 8 The leaf CBs are labeled 16, 17, and 18, respectively.

[0079] In general, CTB 700 may be partitioned into 20 leaf CBs labeled 0-19. The 20 leaf CBs may correspond to 20 leaf nodes (e.g., Figure 8 ). The resulting quadtree and multi-type tree partition combination of CTB 700 can be scanned using a z-scan (left to right, top to bottom) to form a sequential order for encoding / decoding CB leaf nodes. Figure 7 and 8 The numerical label of each CB leaf node in may correspond to the sequential order for encoding / decoding, with CB leaf node 0 being encoded / decoded first and CB leaf node 19 being encoded / decoded last. Figure 7 and 8 As shown in , it should be noted that each CB leaf node may include one or more PBs and / or TBs.

[0080] A coding standard / format (e.g., HEVC, VVC, or any other coding standard / format) may define various units (e.g., in addition to specifying various blocks (e.g., CTB, CB, PB, TB)). A block may include a rectangular area of samples in a sample array. A unit may include a concatenated block of samples from different sample arrays (e.g., luma and chroma sample arrays) forming a picture, as well as syntax elements and prediction data for the block. A coding tree unit (CTU) may include concatenated CTBs of different sample arrays and may form a complete entity in the coded bitstream. A coding unit (CU) may include concatenated CBs of different sample arrays and syntax structures for encoding the samples of the CBs. A prediction unit (PU) may include concatenated PBs of different sample arrays and syntax elements for predicting the PBs. A transform unit (TU) may include TBs of different sample arrays and syntax elements for transforming the TBs.

[0081] A block may refer to any of a CTB, CB, PB, TB, CTU, CU, PU, and / or TU (e.g., in the context of HEVC, VVC, or any other coding format / standard). A block may be used to refer to a similar data structure in the context of any video coding format / standard / protocol. For example, a block may refer to a macroblock in the AVC standard, a macroblock or subblock in the VP8 coding format, a superblock or subblock in the VP9 coding format, and / or a superblock or subblock in the AV1 coding format.

[0082] The samples of a block to be encoded (e.g., a current block) can be predicted, for example, in intra prediction based on samples of a column immediately adjacent to the leftmost column of the current block and samples of a row immediately adjacent to the topmost row of the current block. The samples from the immediately adjacent columns and rows can be collectively referred to as reference samples. Each sample of the current block can be predicted (e.g., in intra prediction mode) by projecting the position of the sample in the current block to a point along the reference samples in a given direction. If the projection does not fall directly on a reference sample, the sample can be predicted by interpolation between the two closest reference samples to the projected point. The prediction error (e.g., residual) of the current block can be determined based on the difference between the predicted sample value and the original sample value of the current block.

[0083] Predicting samples can be performed for a plurality of different intra-frame prediction modes (e.g., including a non-directional intra-frame prediction mode) (e.g., at an encoder) and determining a prediction error based on the difference between the predicted samples and the original samples. The encoder can select one of the plurality of intra-frame prediction modes and its corresponding prediction error to encode the current block. The encoder can send an indication of the selected prediction mode and its corresponding prediction error to the decoder for use in decoding the current block. The decoder can decode the current block by predicting samples of the current block using the intra-frame prediction mode indicated by the encoder and / or combining the predicted samples with the prediction error.

[0084] Figure 9 An example set of reference samples determined for intra prediction of a current block is shown. The current block 904 may correspond to a block being encoded and / or decoded. The current block 904 may correspond to a Figure 7 As described herein, the numerical designations 0-19 of the blocks of the partitioned CTB 700 may correspond to a sequential order for encoding / decoding the blocks and may therefore be used for Figure 9 In the example.

[0085] The size of current block 904 may be w x h samples. Reference samples 902 may include 2w samples (or any other number of samples) from the row immediately adjacent to the top row of current block 904, 2h samples (or any other number of samples) from the column immediately adjacent to the leftmost column of current block 904, and the top-left adjacent corner sample of current block 904. Current block 904 may be square, such that w = h = s. In other examples, the current block need not be square, such that w ≠ h. Available samples from neighboring blocks of current block 904 may be used to construct the set of reference samples 902. For example, if the sample is outside the picture of the current block, the sample is part of a different slice from the current block (e.g., if the concept of slices is used), and / or the sample belongs to an inter-coded block and constrained intra prediction is indicated, then the sample may not be used to construct the set of reference samples 902. For example, if constrained intra prediction is indicated, intra prediction may not rely on inter-predicted blocks.

[0086] Samples that may not be available for constructing the set of reference samples 902 may include samples from blocks that have not yet been encoded and reconstructed at the encoder and / or decoded at the decoder based on the sequence order used for encoding / decoding. Limiting the inclusion of such samples in the set of reference samples 902 allows the same prediction results to be determined at both the encoder and the decoder. Samples from neighboring blocks 0, 1, and 2 can be used to construct reference samples 902 if these blocks were encoded and reconstructed at the encoder and decoded at the decoder prior to encoding of the current block 904. For example, if there are no other issues that prevent the use of samples from neighboring blocks 0, 1, and 2 (e.g., as described above), then samples from neighboring blocks 0, 1, and 2 can be used to construct reference samples 902. Due to the sequence order used for encoding / decoding (e.g., because block 6 may not have yet been encoded and reconstructed at the encoder and / or decoded at the decoder based on the sequence order used for encoding / decoding), some reference samples 902 from neighboring block 6 may be unavailable.

[0087] Unavailable samples from reference samples 902 may be filled with available one or more reference samples 902. For example, unavailable reference samples may be filled with the nearest available reference sample. The nearest available reference sample may be determined by moving clockwise from the position of the unavailable reference sample through reference sample 902. For example, if no reference samples are available, reference samples 902 may be filled with the median value of the dynamic range of the picture being encoded.

[0088] The reference samples 902 may be filtered based on the size of the current block 904 being encoded and the applied intra-prediction mode. Figure 9An exemplary determination of reference samples for intra prediction of a block is shown. Reference samples may be determined in a different manner than described above. For example, multiple reference lines may be used in other cases (e.g., in VVC).

[0089] Intra-prediction can be performed on samples of the current block 904 based on the reference samples 902, e.g., based on determination of the reference samples and (optionally) filtering (e.g., thereafter). According to one or more video coding standards, at least some (e.g., most) encoders / decoders may support multiple intra-prediction modes. For example, HEVC supports 35 intra-prediction modes, including a planar mode, a direct current (DC) mode, and 33 angular modes. VVC supports 67 intra-prediction modes, including a planar mode, a DC mode, and 65 angular modes. Planar and DC modes can be used to predict smooth and gradually changing areas of a picture. Angular modes can be used to predict directional structure in areas of a picture. Any number of intra-prediction modes may be supported.

[0090] Figure 10A and Figure 10B Example intra prediction modes are shown. Figure 10A 35 intra-frame prediction modes are shown, as supported by HEVC. The 35 intra-frame prediction modes may be indicated / identified by indices 0 to 34. Prediction mode 0 may correspond to planar mode. Prediction mode 1 may correspond to DC mode. Prediction modes 2-34 may correspond to angular modes. Prediction modes 2-18 may be referred to as horizontal prediction modes because the primary prediction source is in the horizontal direction. Prediction modes 19-34 may be referred to as vertical prediction modes because the primary prediction source is in the vertical direction.

[0091] Figure 10B 67 intra-frame prediction modes are shown, as supported by VVC. The 67 intra-frame prediction modes can be indicated / identified by indices 0 to 66. Prediction mode 0 can correspond to planar mode. Prediction mode 1 corresponds to DC mode. Prediction modes 2-66 can correspond to angular modes. Prediction modes 2-34 can be referred to as horizontal prediction modes because the primary prediction source is in the horizontal direction. Prediction modes 35-66 can be referred to as vertical prediction modes because the primary prediction source is in the vertical direction. Figure 10B Some of the intra prediction modes shown in

[15] can be replaced adaptively in the wide-angle direction, since blocks in VVC do not need to be square.

[0092] Figure 11 The current block and the corresponding reference samples are shown. Figure 11 In, from Figure 9The current block 904 and reference samples 902 are shown in a two-dimensional x, y plane, where the samples can be referred to as p[x][y]. To simplify the prediction process, the reference samples 902 can be placed in a two-dimensional, one-dimensional array. The reference samples 902 above the current block 904 can be placed in a one-dimensional array ref1[x]:

[0093] ref1[x]=p[-1+x][-1], (x≥0). (1)

[0094] The reference samples 902 to the left of the current block 904 can be placed in a one-dimensional array ref2[y]:

[0095] ref2[y]=p[-1][-1+y], (y≥0). (2)

[0096] The prediction process may include determining a prediction sample p[x][y] (e.g., a predicted value) at a location [x][y] in the current block 904. For planar mode, the sample at location [x][y] in the current block 904 may be predicted by determining / calculating the mean of two interpolated values. The first of the two interpolated values may be based on a horizontal linear interpolation at location [x][y] in the current block 904. The second of the two interpolated values may be based on a vertical linear interpolation at location [x][y] in the current block 904. The prediction sample p[x][y] in the current block 904 may be determined / calculated as:

[0097]

[0098] in

[0099] h[x][y]=(sx-1)·ref2[y]+(x+1)·ref1[s] (4)

[0100] can be a horizontal linear interpolation at position [x][y] in the current block 904, and

[0101] v[x][y]=(sy-1)·ref1[x]+(y+1)·ref2[s] (5)

[0102] It may be a vertical linear interpolation at position [x][y] in the current block 904. s may be equal to the length of one side of the current block 904 (eg, the number of samples on one side).

[0103] For example, for DC mode, the sample at position [x][y] in the current block 904 can be predicted by the mean of the reference samples 902. The predicted sample p[x][y] in the current block 904 can be determined / calculated as:

[0104]

[0105] The sample at position [x][y] in the current block 904, for example, for an angular mode, may be predicted by projecting position [x][y] to a point on a horizontal or vertical line of samples including the reference sample 902 in the direction specified by the given angular mode. If the projection does not fall directly on the reference sample, the sample at position [x][y] may be predicted by interpolation between the two closest reference samples to the projected point. The direction specified by the angular mode may be an angle defined relative to the y-axis for vertical prediction modes (e.g., modes 19-34 in HEVC and modes 35-66 in VVC). The direction specified by the angle mode may be defined by an angle relative to the x-axis for horizontal prediction modes (e.g., modes 2-18 in HEVC and modes 2-34 in VVC) given.

[0106] Figure 12 An example application of an intra prediction mode for predicting a current block is shown. Figure 12 Specifically, the prediction of the sample at position [x][y] in the current block 904 for the vertical prediction mode 906 is shown. The vertical prediction mode 906 can be represented by an angle relative to the vertical axis. In vertical prediction mode, the position [x][y] in the current block 904 can be projected to a point (eg, a projection point) on the horizontal line ref1[x] of the reference sample. For ease of illustration, Figure 12 Only a portion of the reference sample 902 is shown in FIG. Figure 12 As can be seen in , the projection point on the horizontal line ref1[x] of the reference sample may not be exactly on the reference sample. For example, if the projection point falls at a fractional sample position between two reference samples, the prediction sample p[x][y] in the current block 904 can be determined / calculated by linear interpolation between the two reference samples. The prediction sample p[x][y] can be determined / calculated as:

[0107] p[x][y]=(1-i f )·ref1[x+i i +1]+i f ·ref1[x+i i +2]. (7)

[0108] i i Can be the integer part of the horizontal displacement of the projected point relative to the position [x][y]. i The angle of the vertical prediction mode 906 may be The tangent line is determined / calculated as:

[0109]

[0110] if can be the fractional part of the horizontal shift of the projected point relative to position [x][y] and can be determined / calculated as:

[0111]

[0112] in is an integer floor function.

[0113] For example, for horizontal prediction mode, the position [x][y] of the sample in the current block 904 can be projected onto the vertical line ref2[y] of the reference sample. The prediction sample p[x][y] for horizontal prediction mode can be determined / calculated as:

[0114] p[x][y]=(1-i f )·ref2[y+i i +1]+i f ·ref2[y+i i +2]. (10)

[0115] i i It can be the integer part of the vertical displacement of the projected point relative to the position [x][y]. i The angle of the horizontal prediction mode can be The tangent line is determined / calculated as:

[0116]

[0117] i f Can be the fractional part of the vertical displacement of the projected point relative to the position [x][y]. f Can be determined / calculated as

[0118]

[0119] in is an integer floor function.

[0120] The interpolation functions given by equations (7) and (10) may be used by an encoder and / or decoder (e.g., Figure 2 The encoder 200 and / or Figure 3 The interpolation function may be implemented by a finite impulse response (FIR) filter. For example, the interpolation function may be implemented as a set of two-tap FIR filters. The coefficients of the two-tap FIR filters may be respectively represented by (1-i f ) and i fGiven. In angular intra prediction, the prediction samples p[x][y] can be computed with some predefined level of sample accuracy (e.g., 1 / 32 sample accuracy or accuracy defined by any other metric). For 1 / 32 sample accuracy, the set of two-tap FIR interpolation filters may include up to 32 different two-tap FIR interpolation filters—one filter for each of the 32 possible values of the fractional part of the projection shift. i f In other examples, different levels of sample accuracy may be used.

[0121] FIR filters can be used to predict chroma samples and / or luma samples. For example, a two-tap interpolation FIR filter can be used to predict chroma samples, and the same and / or different interpolation techniques / filters can be used for luma samples. For example, a four-tap FIR filter can be used to determine the predicted values for luma samples. f The coefficients of the four-tap FIR filter are determined (e.g., similarly to a two-tap FIR filter). For 1 / 32 sample accuracy, the set of 32 different four-tap FIR filters may include up to 32 different four-tap FIR filters—one for each projection shift i f Each of the 32 possible values of the fractional part of . In other examples, different levels of sample accuracy can be used. The set of four-tap FIR filters can be stored in a lookup table (LUT) and based on i f For vertical prediction mode, the prediction sample p[x][y] can be determined based on a four-tap FIR filter as:

[0122]

[0123] Where fT[i], i=0...3 can be the filter coefficients, and Idx is the integer shift. For the horizontal prediction mode, the prediction sample p[x][y] can be determined based on a four-tap FIR filter as:

[0124]

[0125] If the position [x][y] of the sample in the current block 904 to be predicted projects to a negative x coordinate, then a supplementary reference sample may be determined / constructed. For example, if a negative vertical prediction angle Then the position of the sample [x][y] can be projected to a negative x coordinate. This can be achieved by using a negative vertical prediction angle The supplementary reference samples are determined / constructed by projecting the reference samples in ref2[y] in the vertical line of the reference samples 902 to the horizontal line of the reference samples 902. For example, if the position [x][y] of the sample to be predicted in the current block 904 is projected to a negative y coordinate, the supplementary reference samples can be similarly determined / constructed. For example, if a negative horizontal prediction angle is used Then the position of the sample [x][y] can be projected to a negative y coordinate. This can be achieved by using a negative horizontal prediction angle The reference samples in ref1[x] on the horizontal line of the reference samples 902 are projected onto the vertical line of the reference samples 902 to determine / construct the supplementary reference samples.

[0126] The encoder may determine / predict samples for a current block being encoded (e.g., current block 904) for multiple intra-prediction modes (e.g., using one or more functions described herein). For example, the encoder may determine / predict samples for the current block for each of the 35 intra-prediction modes in HEVC and / or the 67 intra-prediction modes in VVC. The encoder may determine a corresponding prediction error for the current block for each applied intra-prediction mode based on the difference (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), or sum of absolute transform differences (SATD)) between the predicted samples determined for the intra-prediction mode and the original samples of the current block. The encoder may determine / select one of the intra-prediction modes to encode the current block based on the determined prediction errors. For example, the encoder may determine / select one of the intra-prediction modes that produces the minimum prediction error for the current block. The encoder may determine / select an intra-prediction mode to encode the current block based on a rate-distortion metric (e.g., Lagrangian rate-distortion cost) determined using the prediction error. The encoder may send an indication of the determined / selected intra-prediction mode and its corresponding prediction error (eg, residual) to the decoder for use in decoding the current block.

[0127] The decoder may determine / predict samples of the current block being decoded (e.g., current block 904) for an intra prediction mode. For example, the decoder may receive an indication of an intra prediction mode (e.g., an angular intra prediction mode) for the current block from the encoder. The decoder may construct a set of reference samples and perform intra prediction in a similar manner (e.g., as described above for the encoder) based on the intra prediction mode for the current block indicated by the encoder. The decoder may add the predicted values of the samples of the current block (e.g., determined based on the intra prediction mode) to the residual of the current block to reconstruct the current block. The decoder does not need to receive an indication of the angular intra prediction mode for the current block from the encoder. The decoder may determine the intra prediction mode, for example, based on other standards. Although the various examples herein correspond to intra prediction modes in HEVC and VVC, the methods, devices, and systems described herein may be applied to / used in other intra prediction modes (e.g., as used in other video coding standards / formats, such as VP8, VP9, AV1, etc.).

[0128] Intra-frame prediction can exploit the correlation between spatially adjacent samples in the same picture of a video sequence to perform video compression. Inter-frame prediction is another coding tool that can be used to perform video compression. Inter-frame prediction can exploit the correlation in the time domain between blocks of samples in different pictures of a video sequence. For example, an object may be visible in multiple pictures of a video sequence. The object may move (e.g., through some translation and / or affine motion) or remain stationary across the pictures. A current block of samples in the current picture being encoded may have / be associated with a corresponding block of samples in a previously decoded picture. The corresponding block of samples can accurately predict the current block of samples. The corresponding block of samples may be displaced from the current block of samples, for example, due to movement of the objects represented in the two blocks across the blocks' corresponding pictures. The previously decoded picture may be a reference picture. The corresponding block of samples in the reference picture may be a reference block used for motion-compensated prediction. The encoder may use block matching techniques to estimate the displacement (or motion) of the object and / or determine a reference block in the reference picture.

[0129] The encoder may determine a difference between the current block and a prediction of the current block. For example, the encoder may determine the difference based on / after determining / generating a prediction for the current block (e.g., using inter-frame prediction). The difference may be a prediction error and / or as a residual. The encoder may store and / or transmit (e.g., signal) the prediction error and / or other relevant prediction information in / via the bitstream. The prediction error and / or other relevant prediction information may be used for decoding and / or other forms of use. The decoder may decode the current block by predicting samples of the current block (e.g., using relevant prediction information) and combining the predicted samples with the prediction error.

[0130] Figure 13AAn example of inter-frame prediction is shown. Inter-frame prediction can be performed on a current block 1300 in a current picture 1302 being encoded. An encoder (e.g., Figure 2 The encoder 200 shown in FIG. 1 may perform inter-frame prediction to determine and / or generate a reference block 1304 in a reference picture 1306. Reference block 1304 may be used to predict current block 1300. A reference picture (e.g., reference picture 1306) may be a previously decoded picture available at the encoder and / or decoder. The availability of the previously decoded picture may depend on / based on whether the previously decoded picture is available in a decoded picture buffer when current block 1300 is being encoded and / or decoded. The encoder may search one or more reference pictures 1306 for a block similar (or substantially similar) to current block 1300. The encoder may determine the best matching block from the blocks tested during the search process. The best matching block may be reference block 1304. The encoder may determine that reference block 1304 is the best matching reference block based on one or more cost criteria. The one or more cost criteria may include a rate-distortion criterion (e.g., a Lagrangian rate-distortion cost). One or more cost criteria may be based on the difference (eg, SSD, SAD, and / or SATD) between the predicted samples of the reference block 1304 and the original samples of the current block 1300 .

[0131] The encoder may search for reference block 1304 within a reference region (e.g., search range 1308). The reference region (e.g., search range 1308) may be positioned around a collocated position (or block) 1310 of current block 1300 in reference picture 1306. Collocated block 1310 may have the same position in reference picture 1306 as current block 1300 in current picture 1302. The reference region (e.g., search range 1308) may extend at least partially outside reference picture 1306. For example, if the reference region (e.g., search range 1308) extends outside reference picture 1306, a constant boundary extension may be used. The constant boundary extension may be used so that, for example, the values of samples in rows or columns of reference picture 1306 that are immediately adjacent to a portion of the reference region (e.g., search range 1308) that extends outside reference picture 1306 may be used for sample positions outside reference picture 1306. The reference block 1304 may be searched for in a subset of potential positions or in all potential positions within the reference region (e.g., search range 1308). The encoder can utilize one or more search implementations to determine and / or generate the reference block 1304. For example, the encoder can determine a set of candidate search locations based on motion information (eg, motion vectors 1312) of neighboring blocks of the current block 1300.

[0132] During inter-frame prediction, the encoder may search one or more reference pictures to determine and / or generate the best matching reference block. The reference pictures searched by the encoder may be included in (e.g., added to) one or more reference picture lists. For example, in HEVC and VVC (and / or in one or more other communication protocols), two reference picture lists (e.g., reference picture list 0 and reference picture list 1) may be used. A reference picture list may include one or more pictures. The reference picture 1306 of the reference block 1304 may be indicated by a reference index pointing to a reference picture list including the reference picture 1306.

[0133] Figure 13B Example motion vectors are shown. The displacement between reference block 1304 and current block 1300 can be interpreted as an estimate of the motion of reference block 1304 and current block 1300 between their respective pictures. The displacement can be represented by motion vector 1312. For example, motion vector 1312 can be indicated by a horizontal component (MVx) and a vertical component (MVy) relative to the position of current block 1300. A motion vector (e.g., motion vector 1312) can have fractional or integer resolution. A motion vector with fractional resolution can point between two samples in a reference picture to provide a better estimate of the motion of current block 1300. For example, a motion vector can have a 1 / 2, 1 / 4, 1 / 8, 1 / 16, 1 / 32, or any other fractional sample resolution. For example, if a motion vector points to a non-integer sample value in a reference picture, interpolation between two samples at integer positions can be used to generate a reference block and its corresponding samples at the fractional position. Interpolation can be performed by a filter with two or more taps.

[0134] The encoder may determine a difference (e.g., a corresponding sample-by-sample difference) between the reference block 1304 and the current block 1300. The encoder may determine and / or generate the reference block 1304 for the current block 1300, for example, based on / after using inter-frame prediction. The difference may be a prediction error and / or a residual. The encoder may store and / or transmit (e.g., signal) the prediction error and / or associated motion information in / via the bitstream. The prediction error and / or associated motion information may be used for decoding (e.g., decoding the current block 1300) and / or for other uses. The motion information may include a motion vector 1312 and / or a reference indicator / index. The reference indicator may indicate a reference picture 1306 in a reference picture list. The motion information may include an indication of the motion vector 1312 and / or an indication of a reference index. The reference index may indicate a reference picture 1306 in a reference picture list. The decoder may decode the current block 1300 by determining and / or generating the reference block 1304. The decoder may determine and / or generate a reference block 1304, for example, based on the prediction error and / or related motion information. The reference block 1304 may correspond to / form (e.g., be considered as) a prediction of the current block 1300. The decoder may decode the current block 1300 based on combining the prediction with the prediction error.

[0135] like Figure 13A As shown in , inter prediction may be performed using one reference picture 1306 as a prediction source for the current block 1300. Inter prediction based on prediction of the current block using a single picture may be referred to as uni prediction.

[0136] Inter prediction of the current block using bi-prediction can be based on two pictures. For example, bi-prediction may be useful if the video sequence includes fast motion, camera pans, zooms, and / or scene changes. Bi-prediction can be used to capture a fade-out of a scene or a fade-out from one scene to another, where two pictures can be effectively displayed simultaneously at different intensity levels.

[0137] One or both of uni-prediction and bi-prediction may be available / used to perform inter-frame prediction (e.g., at the encoder and / or at the decoder). Whether a particular type of inter-frame prediction is performed (e.g., uni-prediction and / or bi-prediction) may depend on the slice type of the current block. For example, for P slices, only uni-prediction may be available / used to perform inter-frame prediction. For B slices, either uni-prediction or bi-prediction may be available / used to perform inter-frame prediction. For example, if the encoder is using uni-prediction, the encoder may determine and / or generate a reference block for predicting the current block from reference picture list 0. For example, if the encoder is using bi-prediction, the encoder may determine and / or generate a first reference block for predicting the current block from reference picture list 0, and determine and / or generate a second reference block for predicting the current block from reference picture list 1.

[0138] Figure 14 An example of bi-prediction is shown. Two reference blocks 1402 and 1404 may be used to predict the current block 1400. The reference block 1402 may be in a reference picture in one of the reference picture lists 0 or 1. The reference block 1404 may be in a reference picture in the other of the reference picture lists 0 or 1. Figure 14 As shown in FIG, reference block 1402 may be in a first picture that is (e.g., temporally) before the current picture of current block 1400, and reference block 1404 may be in a second picture that is (e.g., temporally) after the current picture of current block 1400. Based on a picture order count (POC), the first picture may be before the current picture. Based on the POC, the second picture may be after the current picture. Based on the POC, the reference pictures may both be before the current picture or both be after the current picture. The POC may be / indicate the order in which pictures are output (e.g., from a decoded picture buffer). The POC may be / indicate the order in which pictures are generally intended to be displayed. The output pictures may not necessarily be displayed but may undergo different processing and / or use (e.g., transcoding). The two reference blocks used / for bi-prediction determination and / or generation may correspond to (e.g., be included in) the same reference picture. For example, if the two reference blocks correspond to the same reference picture, the reference picture may be included in both reference picture list 0 and reference picture list 1.

[0139] Configurable weight and / or offset values may be applied to one or more inter-prediction reference blocks. The encoder may use flags in a picture parameter set (PPS) to enable the use of weighted prediction. The encoder may send / signal the weight and / or offset parameters in the slice segment header for the current block 1400. Different weight and / or offset parameters may be sent / signaled for luma and / or chroma components.

[0140] The encoder may use inter-frame prediction to determine and / or generate reference blocks 1402 and 1404 for the current block 1400. The encoder may determine a difference between the current block 1400 and each of the reference blocks 1402 and 1404. The difference may be a prediction error or a residual error. The encoder may store and / or transmit / signal the prediction error and / or its corresponding associated motion information in / via the bitstream. The prediction error and its corresponding associated motion information may be used for decoding and / or other forms of use. The motion information for the reference block 1402 may include a motion vector 1406 and / or a reference indicator / index. The reference indicator may indicate a reference picture of the reference block 1402 in a reference picture list. The motion information for the reference block 1402 may include an indication of the motion vector 1406 and / or an indication of a reference index. The reference index may indicate a reference picture of the reference block 1402 in a reference picture list.

[0141] The motion information of the reference block 1404 may include a motion vector 1408 and / or a reference index / indicator. The reference indicator may indicate a reference picture of the reference block 1408 in a reference picture list. The motion information of the reference block 1404 may include an indication of the motion vector 1408 and / or an indication of the reference index. The reference index may indicate a reference picture of the reference block 1404 in a reference picture list.

[0142] The decoder may decode the current block 1400 by determining and / or generating reference blocks 1402 and 1404. The decoder may determine and / or generate the reference blocks 1402 and 1404, for example, based on prediction errors and / or corresponding related motion information of the reference blocks 1402 and 1404. The reference blocks 1402 and 1404 may correspond to / form (e.g., be considered to be) a prediction of the current block 1400. The decoder may decode the current block 1400 based on combining the prediction with the prediction error.

[0143] Motion information may be predictively encoded, e.g., before being stored and / or transmitted / signaled in / via a bitstream (e.g., in HEVC, VVC, and / or other video coding standards / formats / protocols). The motion information of a current block may be predictively encoded based on the motion information of one or more blocks neighboring the current block. The motion information of neighboring blocks may generally be correlated with the motion information of the current block because the motion of objects represented in the current block is generally the same (or similar) to the motion of objects in neighboring blocks. Motion information prediction techniques may include advanced motion vector prediction (AMVP) and / or inter-prediction block merging.

[0144] Encoder (e.g. Figure 2The encoder 200 shown in FIG2 may encode a motion vector. The encoder may encode the motion vector as the difference between the motion vector of the current block being encoded and a motion vector predictor (MVP) (e.g., using AMVP). The encoder may determine / select an MVP from a list of candidate MVPs. The candidate MVPs may be previously decoded motion vectors of adjacent blocks in the current picture of / corresponding to the current block and / or blocks at or near the collocated position of the current block in other reference pictures. The encoder and / or decoder may generate and / or determine a list of candidate MVPs.

[0145] The encoder may determine / select an MVP from the list of candidate MVPs. The encoder may send / signal an indication of the selected MVP and / or a motion vector difference (MVD) in / via the bitstream. The encoder may use an index / indicator to indicate the selected MVP in the bitstream. The index may indicate the selected MVP in the list of candidate MVPs. The MVD may be determined / calculated based on the difference between the motion vector of the current block and the selected MVP. For example, for a motion vector indicating a position relative to the position of the current block being encoded (e.g., represented by a horizontal component (MVx) and a vertical component (MVy)), the MVD may be composed of two components MVD x and MVD y Indicates. MVD x and MVD y can be determined / calculated as:

[0146] MVD x =MV x -MVP x , (15)

[0147] MVD y =MV y -MVP y (16)

[0148] MVDx and MVDy may represent the horizontal component and the vertical component of MVD, respectively. MVPx and MVPy may represent the horizontal component and the vertical component of MVP, respectively. Figure 3 The decoder 300 shown in FIG3 may decode the motion vector by adding the MVD to the bitstream to indicate / via the MVP. The decoder may decode the current block by determining and / or generating a reference block. The decoder may determine and / or generate the reference block, for example, based on the decoded motion vector. The reference block may correspond to / form (e.g., be considered to be) a prediction of the current block. The decoder may decode the current block by combining the prediction with the prediction error.

[0149] A list of candidate MVPs for AMVP (e.g., in HEVC, VVC, and / or one or more other communication protocols) may include two or more candidates (e.g., candidates A and B). Candidates A and B may include: up to two (or any other number) of spatial candidate MVPs determined / derived from five (or any other number) of spatial neighboring blocks of the current block being encoded; one (or any other number) of temporal candidate MVPs determined / derived from two (or any other number) of temporally collocated blocks (e.g., if both of the two spatial candidate MVPs are unavailable or are the same); and / or a zero motion vector candidate MVP (e.g., if one or both of the spatial candidate MVP or the temporal candidate MVP are unavailable). Other numbers of spatial candidate MVPs, spatial neighboring blocks, temporal candidate MVPs, and / or temporally collocated blocks may be used for the list of candidate MVPs.

[0150] Figure 15A The spatial candidate neighboring blocks of the current block are shown. For example, five (or any other number) spatial candidate neighboring blocks can be located relative to the current block being encoded 1500. The five spatial candidate neighboring blocks can be A0, A1, B0, B1 and B2. Figure 15B 1500. For example, two (or any other number of) temporally collocated blocks may be positioned relative to the current block 1500. The two temporally collocated blocks may be C0 and C1. The two temporally collocated blocks may be located in one or more reference pictures that may be different from the current picture of the current block 1500.

[0151] Encoder (e.g. Figure 2The encoder 200 shown in FIG. 2 may encode motion vectors using inter-prediction block merging (e.g., merge mode). The encoder (e.g., using merge mode) may reuse the same motion information of a neighboring block (e.g., one of neighboring blocks A0, A1, B0, B1, and B2) for inter prediction of the current block. The encoder (e.g., using merge mode) may reuse the same motion information of a temporally collocated block (e.g., one of temporally collocated blocks C0 and C1) for inter prediction of the current block. An MVD need not be sent (e.g., indicated, signaled) for the current block because the same motion information as that of the neighboring or temporally collocated blocks is available for the current block (e.g., at the encoder and / or decoder). Signaling overhead for sending / signaling motion information for the current block may be reduced because an MVD need not be indicated for the current block. The encoder and / or decoder may generate a candidate list of motion information from neighboring or temporally collocated blocks of the current block (e.g., in a manner similar to AMVP). The encoder may determine to use (e.g., inherit) motion information of a neighboring block or a temporally collocated block in the candidate list to predict motion information for the current block being encoded. The encoder may signal / send an indication of the determined motion information from the candidate list in / via the bitstream. For example, the encoder may signal / send an indicator / index. The index may indicate the determined motion information in the list of candidate motion information. The encoder may signal / send an index to indicate the determined motion information.

[0152] The list of candidate motion information for merge mode (e.g., in HEVC, VVC, or any other coding format / standard / protocol) may include: at most four (or any other number) spatial merge candidates (e.g., as Figure 15A ); one (or any other number of) temporal merge candidates derived from two (or any other number of) temporally collocated blocks (e.g., as Figure 15B and / or additional merge candidates including bi-prediction candidates and zero motion vector candidates. The spatial neighboring blocks and temporal collocated blocks used for merge mode may be the same as those used for AMVP.

[0153] Inter prediction may be performed in other ways and variants than those described herein. For example, motion information prediction techniques other than AMVP and merge mode may be used. Although the various examples herein correspond to inter prediction modes, as used in HEVC and VVC, the methods, devices, and systems described herein may be applied to / used for other inter prediction modes (e.g., as used in other video coding standards / formats, such as VP8, VP9, AV1, etc.). History-based motion vector prediction (HMVP), combined intra / inter prediction mode (CIIP), and / or merge mode with motion vector difference (MMVD) (e.g., as described in VVC) may be performed / used and are within the scope of the present disclosure.

[0154] Block matching can be used (e.g., in inter-frame prediction) to determine a reference block in a different picture than the picture containing the current block being encoded. Block matching can also be used to determine a reference block in the same picture as the current block being encoded. A reference block in the same picture as the current block, determined using block matching, may generally not accurately predict the current block (e.g., for video captured by a camera). For example, if a reference block in the same picture as the current block is used for encoding, the prediction accuracy of the screen content video may not be similarly affected. The screen content video may include, for example, computer-generated text, graphics, animation, etc. The screen content video may include (e.g., may generally include) repeating patterns (e.g., repeating patterns of text and / or graphics) within the same picture. Using a reference block in the same picture as the current block being encoded (e.g., determined using block matching) can provide efficient compression for the screen content video.

[0155] Prediction techniques (e.g., in HEVC, VVC, and / or any other coding standard / format / protocol) can be used to exploit correlations between blocks of samples within the same picture (e.g., of screen content video). The prediction techniques may be referred to as intra block copying (IBC) or current picture referencing (CPR). The encoder may apply / use block matching techniques (e.g., similar to inter-frame prediction) to determine a shift vector (e.g., a block vector (BV)). The BV may indicate the relative position of a reference block that best matches the current block from the position of the current block (e.g., based on intra-frame block compensation prediction). For example, the relative position of the reference block may be the relative position of the upper left corner (or any other point / sample) of the reference block. The BV may indicate the relative shift from the current block to the reference block that best matches the current block. The encoder may determine the best matching reference block from the blocks tested during the search process (e.g., in a manner similar to that used for inter-frame prediction). The encoder may determine that the reference block is the best matching reference block based on one or more cost criteria. The one or more cost criteria may include a rate-distortion criterion (e.g., a Lagrangian rate-distortion cost). One or more cost criteria may be based on, for example, one or more differences (e.g., SSD, SAD, SATD, and / or differences determined based on a hash function) between predicted samples of a reference block and original samples of a current block. The reference block may correspond to / include a previously decoded block of samples of the current picture. The reference block may include a decoded block of samples of the current picture before being processed by an in-loop filtering operation (e.g., deblocking and / or SAO filtering).

[0156] Figure 16 An example of IBC for encoding is shown. Figure 16 The example IBC shown in FIG may correspond to screen content. The rectangular portion / segment at which the arrow starts may be the current block being encoded. The rectangular portion / segment to which the arrow points may be a reference block used to predict the current block.

[0157] For IBC, a reference block may be determined and / or generated for the current block. The encoder may determine a difference between the reference block and the current block (e.g., a corresponding sample-by-sample difference). The difference may be a prediction error or a residual. The encoder may store and / or send / signal the prediction error and / or related prediction information in / via the bitstream. The prediction error and / or related prediction information may be used for decoding and / or other forms of use. The prediction information may include a BV. The prediction information may include an indication of the BV. The decoder (e.g., Figure 3The decoder 300 shown in FIG 3 can decode the current block by determining and / or generating a reference block. The decoder can determine and / or generate the current block based on prediction information (e.g., BV). The reference block can correspond to / form (e.g., be considered as) a prediction of the current block. The decoder can decode the current block by combining the prediction with the prediction error.

[0158] The BV may be predictively encoded (e.g., in HEVC, VVC, and / or any other coding standard / format / protocol) before being stored and / or sent / signaled in / via the bitstream. The BV of the current block may be predictively encoded based on the BVs of one or more blocks neighboring the current block. For example, the encoder may predictively encode the BV using merge mode (e.g., in a manner similar to that described herein for inter-frame prediction), AMVP (e.g., as described herein for inter-frame prediction), or a technique similar to AMVP. A technique similar to AMVP may be BV prediction and differential coding (or AMVP for IBC).

[0159] An encoder that performs BV prediction and encoding (e.g., Figure 2 The encoder 200 shown in FIG. 1 may encode the BV as the difference between the BV of the current block being encoded and a block vector predictor (BVP). The encoder may select / determine a BVP from a list of candidate BVPs. The candidate BVPs may include / correspond to previously decoded BVs of neighboring blocks of the current block in the current picture. The encoder and / or decoder may generate or determine the list of candidate BVPs.

[0160] The encoder may send / signal an indication of the selected BVP and a block vector difference (BVD) in / via the bitstream. The encoder may use an index / indicator to indicate the selected BVP in the bitstream. The index may indicate the selected BVP from a list of candidate BVPs. The BVD may be determined / calculated based on the difference between the BV of the current block and the selected BVP. For example, for a BV that indicates a position relative to the position of the current block being encoded (e.g., represented by a horizontal component (BVx) and a vertical component (BVy)), the BVD may be composed of two components, BVD x and BVD y Indicates. BVD x and BVD y can be determined / calculated as:

[0161] BVD x =BV x -BVP x , (17)

[0162] BVD y =BV y -BVP y (18)

[0163] BVDx and BVDy may represent the horizontal and vertical components of BVD, respectively. BVPx and BVPy may represent the horizontal and vertical components of BVP, respectively. Figure 3 The decoder 300 shown in FIG3 may decode the BV by adding the BVD to the bitstream / via the BVP indicated by the bitstream. The decoder may decode the current block by determining and / or generating a reference block. The decoder may determine and / or generate a reference block, for example, based on the decoded BV. The reference block may correspond to / form (e.g., be considered to be) a prediction of the current block. The decoder may decode the current block by combining the prediction with the prediction error.

[0164] The same BV as that of the neighboring block can be used for the current block, and there is no need to signal / send the BVD separately for the current block, as in merge mode. The BVP (among the candidate BVPs) that may correspond to the decoded BV of the neighboring block can itself be used as the BV of the current block. Not sending the BVD can reduce signaling overhead.

[0165] The list of candidate BVPs (e.g., in HEVC, VVC and / or any other coding standard / format / protocol) may include two (or more) candidates. The candidates may include candidates A and B. Candidates A and B may include: up to two (or any other number) spatial candidate BVPs determined / derived from the five (or any other number) spatial neighboring blocks of the current block being encoded; and / or one or more of the last two (or any other number) decoded BVs (e.g., if spatial neighboring candidates are not available). For example, if the neighboring blocks are encoded using intra-frame prediction or inter-frame prediction, the spatial neighboring candidates may not be available. The positions of the spatial candidate neighboring blocks being encoded using IBC relative to the current block can be shown in a manner similar to the spatial candidate neighboring blocks used to encode motion vectors in inter-frame prediction (e.g., as Figure 15A ). For example, the five spatial candidate neighboring blocks of IBC may be indicated as A0, A1, B0, B1, and B2, respectively.

[0166] As mentioned in this article (e.g., Figure 2 and 3 ), entropy coding can be performed at the end of the video encoding process and at the beginning of the video decoding process. Entropy coding is a technique that compresses a sequence of symbols (e.g., 0s and 1s) by using fewer bits to represent symbols with greater probability than lesser probability. Shannon's information theory dictates that, for example, if the compressed sequence of symbols is represented by bits (e.g., {0, 1}), then the preferred average code length for a symbol with probability p is -log2p.

[0167] Arithmetic coding is an entropy coding method. Arithmetic coding is based on recursive interval subdivision. In order to arithmetically code a symbol taking values from an m-ary source alphabet, the initial coding interval may be divided into m non-adjacent subintervals. Each of the m non-adjacent subintervals may have a width that is proportional to the probability of the symbol taking a different value from the value in the m-ary source alphabet. The probabilities of a symbol taking different values from the m-ary source alphabet may be referred to as a probability model of the symbol. A symbol is arithmetically coded by selecting as a new coding interval the subinterval corresponding to the actual value of the symbol. This interval subdivision scheme is recursively applied to a given sequence s = {s1, s2, ..., s N ) for each symbol s i , the encoder can determine the values within the final coding interval after the Nth interval subdivision as the arithmetic codeword for sequence s. Each successive symbol of sequence s being encoded reduces the size of the coding interval according to the symbol's probability model. According to the general principles of entropy coding, more likely symbol values reduce the size of the coding interval by a smaller amount than less likely symbol values, and therefore add fewer bits to the arithmetic codeword for sequence s.

[0168] Arithmetic decoding is based on the same recursive interval subdivision. In order to arithmetically decode symbols taking values from an m-ary source alphabet, the initial coding interval may be divided into m non-adjacent subintervals. Each of the m non-adjacent subintervals may have a width that is proportional to the probability of the symbol having a different value from the value in the m-ary source alphabet. The probability of a symbol having different values from the m-ary source alphabet may be referred to as a probability model of the symbol, as described herein. A symbol is arithmetically decoded from an arithmetic codeword by determining the symbol value corresponding to the subinterval in which the arithmetic codeword falls. This subinterval then becomes the new coding interval. The decoder may sequentially decode the sequence s = {s1, s2, ..., s} by recursively using this interval subdivision scheme N times and determining in which subinterval the arithmetic codeword falls at each iteration. N ) for each symbol s i .

[0169] For each symbol arithmetically encoded, a different probability model can be used to subdivide the coding interval. For example, the probability model for a symbol can be determined by a fixed selection (e.g., based on the symbol's position in the symbol sequence) or by adaptively selecting from two or more probability models (e.g., based on information related to the symbol). Two or more symbols in a symbol sequence may also use a joint probability model. Selecting a probability model for a symbol can be referred to as context modeling. Arithmetic coding using context modeling can be more specifically referred to as context-based arithmetic coding. In addition to selecting a probability model for a symbol, the selected probability model can also be updated based on the actual coded value of the symbol. For example, the probability of the actual coded value of the symbol can be increased in the probability model, and the probabilities of all other values can be decreased. Arithmetic coding using both context modeling and probability model adaptation can be more specifically referred to as context-based adaptive arithmetic coding.

[0170] The disclosure of this paper provides the example of arithmetic coding.Other variations of arithmetic coding are possible.For example, if arithmetic coding is performed, a renormalization operation can be performed to ensure that the precision required for the scope and lower limit of the representation subinterval does not exceed the limited precision of the registers for storing these values.Other simplifications can be performed to reduce the complexity of the implementation of the encoding process in a certain combination of hardware, software or hardware and software, to improve the speed of the implementation and / or reduce the power requirement of the implementation.For example, in this type of embodiment, the probability of a symbol and the lower limit and the scope of the subinterval can be approximate or quantized.

[0171] Figure 17 An example of a context-based adaptive binary arithmetic coding (CABAC) encoder 1700 is shown. The CABAC encoder 1700 may be implemented in a video encoder, such as Figure 2 In this example, the CABAC encoder 1700 may include a binarizer 1702, an arithmetic encoder 1704, and a context modeler 1706.

[0172] The CABAC encoder 1700 may receive syntax elements 1708 for arithmetic coding. Syntax elements such as syntax element 1708 may be generated at a video encoder and may describe how a video signal may be reconstructed at a video decoder. For a coding unit (CU), the syntax elements may include an intra-prediction mode for an intra-predicted CU, motion data (e.g., MVD and MVP-related data) for an inter-predicted CU, or displacement data (e.g., BVD and BVP-related data) for a CU predicted using IBC.

[0173] The binarizer 1702 may map the values of the syntax elements 1708 to sequences of binary symbols (also referred to as bins). The binarizer 1702 may define a unique mapping of the values of the syntax elements 1708 to the sequences of binary symbols. Binarization of the syntax elements may help improve probabilistic modeling and implementation of arithmetic coding. The binarizer 1702 may implement one or more binarization processes. The one or more binarization processes implemented by the binarizer 1702 may include, for example, unary, truncated unary, k-th order truncated Rice, k-th order exponential-Golomb (EGk), fixed length, or some combination of two or more binarization processes. The binarizer 1702 may select a binarization process based on the type of the syntax element 1708 and / or one or more syntax elements processed by the CABAC encoder 1700 prior to the syntax element 1708. For example, the binarizer 1702 may not process the syntax element 1708 based on the fact that the syntax element 1708 is already represented by a sequence of one or more binary symbols. The binarizer 1702 may not be used, and the syntax element 1708 represented by a sequence of one or more non-binary symbols may be encoded directly by the CABAC encoder 1700 .

[0174] One or more of the binary symbols may be processed by an arithmetic encoder 1704. The one or more binary symbols may be processed by the arithmetic encoder 1704, for example, after the binarizer 1702 optionally maps the value of the syntax element 1708 to a sequence of binary symbols. The arithmetic encoder 1704 may process each of the one or more binary symbols in one of at least two modes, such as a normal arithmetic coding mode or a bypass arithmetic coding mode.

[0175] The arithmetic encoder 1704 can process binary symbols that do not have a uniform (or approximately uniform) probability distribution in conventional arithmetic coding mode (e.g., a binary symbol that does not have a probability distribution of 0.5 for each of its two possible values). The arithmetic encoder 1704 can, for example, perform arithmetic coding as described herein in conventional arithmetic coding mode. For example, the arithmetic encoder 1704 can subdivide the current coding interval into m non-adjacent subintervals. Each of the m non-adjacent subintervals can have a width proportional to the probability that the binary symbol has a different value from the value in the m-ary source alphabet. For binary symbols, m is equal to two, and the current coding interval can be subdivided into two non-adjacent intervals, each having a width proportional to the probability of a different value from the two possible values of the binary symbol being encoded (e.g., {0, 1}). The probabilities of the two possible values of the binary symbol can be indicated by the probability model 1710 of the binary symbol. The arithmetic encoder 1704 can encode the binary symbol. The arithmetic encoder 1704 may encode a binary symbol, for example, by selecting a subinterval corresponding to the actual value of the binary symbol as a new encoding interval for the next binary symbol to be encoded.

[0176] The arithmetic encoder 1704 may receive a probability model 1710, for example, from a context modeler 1706. The context modeler 1706 may determine the probability model 1710 for a binary symbol by a fixed selection (e.g., based on the position of the binary symbol in a sequence of binary symbols representing a syntax element 1708) or by adaptively selecting from two or more probability models (e.g., based on information associated with the binary symbol). The probability model 1710 may include, for example, two parameters: the probability P of the lowest probability symbol (LPS) and the probability P of the lowest probability symbol (LPS). LPS and the value of the most probable symbol (MPS) V MPS The probability model 1710 may include, for example, the probability P of the MPS MPS The probability P of being LPS LPS The probability model 1710 may include, for example, the value V of the LPS LPS As the value of MPS VMPS The arithmetic encoder 1704 may provide one or more probability model update parameters 1712 to the context modeler 1706, for example, after the arithmetic encoder 1704 encodes the binary symbol. The context modeler 1706 may adapt the probability model 1710 based on, for example, the one or more probability model update parameters 1712. The one or more probability model update parameters 1712 may include, for example, the actual encoded value of the binary symbol. The context modeler 1706 may, for example, adjust the probability model 1710 when the actual encoded value of the binary symbol is not equal to V MPS By increasing P LPS To update the probability model 1710, otherwise by reducing PLPS to update the probability model.

[0177] The arithmetic encoder 1704 can process binary symbols that have (or are assumed to have) a uniform (or approximately uniform) probability distribution in bypass arithmetic coding mode. Because the binary symbols processed by the arithmetic encoder 1704 in bypass arithmetic coding mode have (or are assumed to have) a uniform (or approximately uniform) probability distribution, the arithmetic encoder 1704 can, for example, bypass the probability model determination and adaptation performed in conventional arithmetic coding mode when encoding these binary symbols to speed up the encoding process. Given the uniform (or assumed uniform) probability distribution, the subdivision of the current coding interval can be simplified. The current coding interval can be partitioned into two non-adjacent subintervals of equal width, which can be implemented using a simple implementation that can further speed up the encoding process. The arithmetic encoder 1704 can encode the binary symbol by selecting the subinterval corresponding to the value of the binary symbol as the new coding interval for the next binary symbol to be encoded. The resulting increase in encoding speed of binary symbols encoded by the arithmetic encoder 1704 in bypass arithmetic coding mode is generally important because CABAC encoding may have throughput limitations.

[0178] The arithmetic encoder 1704 may, for example, after processing a plurality of binary symbols (e.g., corresponding to one or more syntax elements), determine a value within the final coding interval as an arithmetic codeword 1714 of the binary symbols. The arithmetic encoder 1704 may then output the arithmetic codeword 1714. The arithmetic encoder 1704 may, for example, output the arithmetic codeword 1714 to a bitstream that can be received and processed by a video decoder.

[0179] Two syntax elements that can be encoded in the bypass arithmetic coding mode include the magnitude of the motion vector difference (MVD) and the magnitude of the block vector difference (BVD). These syntax elements can be determined as part of the advanced motion vector prediction (AMVP) for inter-frame prediction and the AMVP for intra-frame block copy (IBC), respectively, as described herein. The bypass arithmetic coding mode can be used to speed up the arithmetic coding process. The compression of the symbols of these syntax elements encoded in the bypass arithmetic coding mode may be limited because their probability distribution is uniformly distributed (or at least is considered to be uniformly distributed). Information theory shows that a symbol cannot be compressed at a rate less than its entropy without information loss, and symbols with a uniform probability distribution have maximum entropy. Symbols encoded using the bypass arithmetic coding mode may generally require more bits to encode than symbols encoded using the conventional arithmetic coding mode.

[0180] The disclosure provided herein improves compression efficiency for one or more magnitude symbols of a BVD. Instead of entropy encoding the magnitude symbol of the BVD, an indication indicating whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of a BVD candidate used as a predictor for the BVD ("BVD predictor") may be entropy encoded. The BVD predictor may be selected from a plurality of BVD candidates, for example, based on corresponding costs among the plurality of BVD candidates. A cost for each of the plurality of BVD candidates may be calculated based on a difference between a template of a current block and a template of a candidate reference block. The candidate reference block may be shifted relative to the current block by, for example, the sum of the BVD candidate and a block vector predictor (BVP). The indication of whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor may have a non-uniform probability distribution and, therefore, provide improved compression efficiency compared to encoding the magnitude symbol of the BVD based on a uniform probability distribution. Entropy encoding the indication rather than the magnitude symbol of the BVD may reduce bit rate. By reducing the bit rate, the overhead required to signal the amplitudes (eg, the respective amplitudes of the horizontal and vertical components of the BVD) to the decoder is reduced.

[0181] The disclosure herein also relates to improving compression efficiency of one or more magnitude symbols of an MVD. Instead of entropy encoding the magnitude symbol of the MVD, an indication of whether the value of the magnitude symbol of the MVD matches the value of the magnitude symbol of an MVD candidate used as a predictor of the MVD ("MVD predictor") may be entropy encoded. The MVD predictor may be selected from a plurality of MVD candidates, for example, based on their costs. The cost of one or more of the plurality of MVD candidates may be calculated, for example, based on a difference between a template of a current block and a template of a candidate reference block. The candidate reference block may be co-located in a reference frame relative to the current block by the sum of the MVD candidate and a motion vector predictor (MVP). The indication of whether the value of the magnitude symbol of the MVD matches the value of the magnitude symbol of the MVD predictor may have a non-uniform probability distribution and, therefore, provide improved compression efficiency compared to encoding the magnitude symbol of the MVD based on a uniform probability distribution. Entropy encoding the magnitude sign indicating rather than the MVD may reduce the bit rate and, therefore, the overhead required to signal the magnitudes (eg, the respective magnitudes of the horizontal and vertical components of the MVD) to the decoder.

[0182] As described herein, both HEVC and VVC include prediction techniques that exploit the correlation between blocks of samples within the same picture. This technique is called intra-block (IBC). IBC is also included in the Enhanced Compression Model (ECM) software algorithm, which is currently being explored by the Joint Video Exploration Team (JVET) of the ITU-T Video Coding Experts Group (VCEG) and ISO / IEC MPEG as a potential enhanced video coding technology beyond the capabilities of VVC.

[0183] Figure 18A An example of IBC is shown. For example, if IBC is performed, the encoder may determine a block vector (BV) 1802 that may indicate a shift from a current block 1804 to a reference block (or intra block compensated prediction) 1806. For example, if a search process is performed, the encoder may determine the reference block 1806 from one or more reference blocks tested. For each reference block in the one or more reference blocks tested, for example, if a search process is performed, the encoder may determine the difference (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), sum of absolute transformed differences (SATD), or a difference determined based on a hash function) between samples of the reference block and samples of the current block 1804. The encoder may determine the reference block 1806 from the one or more reference blocks. The encoder may determine the reference block 1806 from the one or more reference blocks, for example, based on the reference block 1806 in the one or more reference blocks having the smallest difference with the current block 1804. The encoder may determine the reference block 1806 from the one or more reference blocks, for example, based on some other or additional criteria. For example, if a search process is performed, the reference block 1806 and the one or more other reference blocks tested may include decoded (or reconstructed) samples. The decoded (or reconstructed) samples may not have been processed by an in-loop filtering operation such as deblocking or SAO filtering.

[0184] The encoder may use the reference block 1806 to predict the current block 1804, for example, after determining the reference block 1806 for the current block 1804. The encoder may determine or use the difference (e.g., the corresponding sample-by-sample difference) between the reference block 1806 and the current block 1804. The difference may be referred to as a prediction error or residual. The encoder may signal the prediction error and related prediction information in the bitstream. The prediction information may include the BV 1802. The prediction information may include an indication of the BV 1802. The decoder, for example Figure 3 The decoder 300 in FIG. 1 may receive a bitstream and decode a current block 1804. The decoder may receive a bitstream and decode the current block 1804, for example, by using prediction information and combining the prediction with a prediction error to determine a reference block 1806 that forms a prediction of the current block 1804.

[0185] BV 1802 may be predictively encoded. BV 1802 may be predictively encoded, for example, before being signaled in the bitstream. BV 1802 may be predictively encoded based on the BVs of neighboring blocks of the current block 1804 or the BVs of other blocks. The encoder may predictively encode BV 1802, for example, using merge mode or AMVP as described herein. For example, when AMVP is implemented, the encoder may encode BV 1802 as the difference between BV 1802 and a BV predictor (BVP) 1808, such as Figure 18AThe encoder may select a BVP 1808 from a list of candidate BVPs. The candidate BVPs may come from previously decoded BVPs of neighboring blocks of the current block 1804 or other sources. Both the encoder and the decoder may generate or determine a list of candidate BVPs.

[0186] For example, after the encoder selects BVP 1808 from the list of candidate BVPs, the encoder may signal an indication of BVP 1808 and a BV difference (BVD) 1810 in the bitstream. The encoder may indicate BVP 1808 in the bitstream by an index into the list of candidate BVPs (e.g., an index into the list) or by one or more flags. BVD 1810 may be calculated based on the difference between BV 1802 and BVP 1808. BVD 1810 may include a horizontal component (BVD) that may be determined according to equations (17) and (18), respectively, described above. x )1812 and vertical component (BVD y )1814. Two-component BVD x 1812 and BVD y 18 and 14 may each include a magnitude and a sign. In this example, and for illustration purposes only, the horizontal component BVD x 1812 has a fixed length binary value of 10011 (or 19 in decimal) and a negative sign (given that Figure 18A In this example and for illustration purposes only, the vertical component BVD y 1814 has a fixed length binary 01011 (or decimal 11) magnitude and positive sign (given that Figure 18A In the example, the positive vertical direction points downwards and the negative vertical direction points upwards). The encoder can use its two components BVD x 1812 and BVD y 1814 indicates the BVD 1810 in the bitstream.

[0187] The decoder may decode the BV 1802 by adding the BVD 1810 to the BVP 1808. The decoder may decode the current block 1804 by using the BV 1802 and combining the prediction with the prediction error to determine a reference block 1806 that forms a prediction of the current block 1804. The decoder may determine the reference block 1806 by adding the BV 1802 to the position of the current block 1804, which may give the position of the reference block 1806.

[0188] As described herein, the magnitude of the BVD 1810 may be encoded in a bypass arithmetic coding mode. The bypass arithmetic coding mode may be used to speed up the arithmetic coding process. Compression of magnitude symbols of the BVD 1810 encoded in the bypass arithmetic coding mode may be limited because their probability distribution is uniform (or at least assumed to be uniform). Information theory indicates that a symbol cannot be compressed at a rate less than its entropy without losing information, and symbols with a uniform probability distribution have the maximum entropy. Therefore, symbols encoded using the bypass arithmetic coding mode may generally require more bits to encode than symbols encoded using the conventional arithmetic coding mode.

[0189] Compared to the prior art, the disclosure herein can improve the compression efficiency of one or more magnitude symbols of a BVD (e.g., BVD 1810). For example, instead of directly entropy encoding the magnitude symbols of BVD 1810, an encoder (e.g., Figure 2 The encoder 200 shown may entropy encode an indication of whether the value of the magnitude sign of the BVD 1810 matches the value of the same magnitude sign of a BVD candidate used as a predictor for the BVD 1810. The indication of whether the value of the magnitude sign of the BVD 1810 matches the value of the magnitude sign of the BVD predictor may have a non-uniform probability distribution, thereby providing improved compression efficiency. The encoder may select the BVD predictor from a plurality of BVD candidates. The encoder may, for example, select the BVD predictor from the plurality of BVD candidates based on their respective costs. The BVD candidates may include a BVD candidate for each possible value of the magnitude sign of the BVD 1810. For example, the magnitude sign of the BVD 1810, represented in binary form, has only two possible values (e.g., {0, 1}). Thus, the BVD candidates may include two BVD candidates for this representation (e.g., one BVD candidate for each possible value of the magnitude sign in the BVD 1810 being encoded): a first BVD candidate that is equal to the BVD 1810 itself, and a second BVD candidate that is equal to the BVD 1810 but has the opposite (or other) value of the magnitude sign of the BVD 1810. A cost may be calculated for each of the plurality of BVD candidates. The cost may be calculated, for example, based on the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block may be shifted relative to the current block by the sum of the BVD candidate and the BVP 1808.

[0190] Figure 18A Specific examples are shown. Figure 18A An example magnitude symbol 1816 of a BVD 1810 to be entropy encoded is shown. The magnitude symbol 1816 of the BVD 1810 is the horizontal component BVD of the BVD 1810. x1812 and has a binary value of "0". As described herein, instead of directly entropy encoding the magnitude symbol 1816 of the BVD 1810, the encoder may entropy encode an indication of whether the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the same magnitude symbol of a BVD candidate used as a predictor for the BVD 1810. The encoder may select a BVD predictor from a plurality of BVD candidates. The encoder may select a BVD predictor from a plurality of BVD candidates, for example, based on their respective costs. The BVD candidates may include a BVD candidate for each of two possible values (e.g., {0,1}) of the magnitude sign 1816 of BVD 1810, for example, a first BVD candidate 1818 that is equal to BVD 1810 itself, and a second BVD candidate 1820 that is equal to BVD 1810 but has an opposite (or other) value of the magnitude sign 1816 of BVD 1810.

[0191] Figure 18B Example BVD candidates of magnitude symbols that may be used for entropy coding BVD are shown. Figure 18B The BVD candidates shown in can all be used, for example, to entropy encode the magnitude symbol 1816 of the BVD 1810. More specifically, Figure 18B A BVD candidate 1818 is shown that is equal to the BVD 1810 itself, and a value that is equal to the BVD 1810 but with the sign 1817 of its magnitude ( Figure 18B is "1" in the middle) is the amplitude sign 1816 of BVD1810 ( Figure 18A In the case of the opposite (or other) value of the magnitude sign 1816 of the BVD candidate 1818, the BVD candidate 1820 has a horizontal component BVD x 1822, whose magnitude is fixed-length binary 11011 (or decimal 27) and has a negative sign. The vertical component BVD of the BVD candidate 1820 y 1824 has a vertical component BVD with respect to BVD candidate 1818 (or BVD 1810) y 1814 The same fixed length binary 01011 (or decimal 11) magnitude and positive sign.

[0192] A cost of a BVD candidate from the plurality of BVD candidates may be obtained (e.g., determined, calculated). The cost of the BVD candidate from the plurality of BVD candidates may be obtained (e.g., determined, calculated), for example, based on a difference between a template of the current block 1804 and a template of a candidate reference block shifted relative to the current block 1804 by the sum of the BVD candidate and the BVP 1808. The encoder (e.g., Figure 1 The encoder 114 shown, Figure 2 The encoder 200 shown in FIG. 10 ) may determine the cost of the BVD candidate 1818. The encoder (e.g., Figure 1 The encoder 114 shown, Figure 2 The encoder 200 shown may determine the cost of the BVD candidate 1818, for example, based on a difference between a template 1826 of the current block 1804 and a template 1828 of a candidate reference block 1830 that is shifted relative to the current block 1804 by the sum of the BVD candidate 1818 and the BVP 1808. The encoder may determine the difference between the template 1826 and the template 1828, for example, based on a difference (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), sum of absolute transformed differences (SATD), mean-removed SAD, or mean-removed SSD) between samples of the template 1826 and samples of the template 1828. The encoder may determine the cost of the BVD candidate 1820, for example, based on a difference between the template 1826 of the current block 1804 and a template 1832 of a candidate reference block 1834 that is shifted relative to the current block 1804 by the sum of the BVD candidate 1820 and the BVP 1808. The encoder may determine the difference between template 1826 and template 1832, for example, based on a difference (e.g., SSD, SAD, SADD, mean-removed SAD, or mean-removed SSD) between samples of template 1826 and samples of template 1828. Templates 1826, 1828, and 1832 may include one or more samples to the left and / or above their respective blocks. For example, templates 1826, 1828, and 1832 may include samples from one or more columns to the left of their respective blocks and / or from one or more rows above their respective blocks. Figure 18B One example position and shape (an L-shape rotated 90 degrees clockwise) of templates 1826, 1828, and 1832 is shown. Additional and alternative positions and / or shapes may be used for the templates.

[0193] The encoder may select one of the plurality of BVD candidates as the BVD predictor. The encoder may select one of the plurality of BVD candidates as the BVD predictor, for example, after determining a cost for each of the plurality of BVD candidates. For example, the encoder may select the BVD candidate with the lowest cost (e.g., the smallest) among the plurality of BVD candidates as the BVD predictor.

[0194] Figure 18C An example of an indication of whether the value of the magnitude sign of the entropy-coded BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of the BVD is shown. More specifically, Figure 18CA table 1870 is shown with the (e.g., horizontal and vertical) components and costs of each BVD candidate 1818 and 1820 in respective rows 1872 and 1874. In this example, for illustrative purposes, BVD candidates 1818 and 1820 are considered to be the only BVD candidates. More BVD candidates may be used. In this example, the rows of table 1870 are sorted based on the costs of BVD candidates 1818 and 1820 (e.g., from lowest to highest, where the BVD candidate with the lowest (e.g., smallest) cost is listed in the first row 1872). In this example, of BVD candidates 1818 and 1820, BVD candidate 1818 has the lowest (e.g., smallest) cost. The encoder may select BVD candidate 1818 as the BVD predictor 1836 for BVD 1810, for example, based on the cost associated with BVD candidate 1818 being the lowest cost. Alternatively, the rows of table 1870 may be ordered from highest to lowest, with the BVD candidate with the highest cost listed in the first row.

[0195] The encoder may, for example, entropy encode an indication 1838 of whether the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1819 in the BVD predictor 1836 after selecting the BVD candidate 1818 as the BVD predictor 1836. The magnitude symbol 1819 of the BVD predictor 1836 has a value of "0" that matches the value of the magnitude symbol 1816 of the BVD 1810. In this example, the indication 1838 may indicate that the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1819 of the BVD predictor 1836. The indication 1838 may be, for example, a single bit that may have a value of "0" if the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1819 of the BVD predictor 1836. Indication 1838 may have a value of, for example, "1" if the value of magnitude sign 1816 of BVD 1810 does not match the value of magnitude sign 1819 of BVD predictor 1836. Alternatively, indication 1838 may have a value of, for example, "1" if the value of magnitude sign 1816 of BVD 1810 does match the value of magnitude sign 1819 of BVD predictor 1836, and a value of "0" if the value of magnitude sign 1816 of BVD 1810 does not match the value of magnitude sign 1819 of BVD predictor 1836. Logic 1840 may be used to determine indication 1838. Logic 1840 may implement, for example, a logical exclusive OR (XOR) function. The value of the magnitude sign may be non-binary. For example, if the value of the magnitude sign is non-binary, indication 1838 may indicate a first candidate of the plurality of candidates (eg, ranked based on their respective costs) having a magnitude sign value that matches the value of magnitude sign 1816 in BVD 1810 .

[0196] The encoder may entropy encode indication 1838 using an arithmetic encoder 1842. For example, if determined as described herein, indication 1838 may have a non-uniform probability distribution. As described herein, arithmetic encoder 1842 may process indication 1838 in a conventional arithmetic coding mode. For example, arithmetic encoder 1842 may subdivide the current coding interval into m non-contiguous subintervals. Each of the m non-contiguous subintervals may have a width proportional to the probability that the encoded symbol has a different value from the m-ary source alphabet. For a binary indication 1838, m is equal to two, and the current coding interval may be subdivided into two non-contiguous intervals, each having a width proportional to the probability of a different value from two possible values (e.g., {0, 1}) of the encoded indication 1838. The probabilities of the two possible values of indication 1838 may be indicated by a probability model 1844 for indication 1838. Arithmetic encoder 1842 may encode indication 1838. The arithmetic encoder 1842 may encode the indication 1838, for example, by selecting a subinterval corresponding to the actual value of the indication 1838 as the new coding interval for the next binary symbol to be encoded.

[0197] The arithmetic coder 1842 may receive a probability model 1844 from a context modeler 1846. The context modeler 1846 may determine the probability model 1844 of the indication 1838 by making a fixed selection or an adaptive selection from two or more probability models. The context modeler 1846 may determine the probability model 1844 of the indication 1838 based on the horizontal component BVD 1810. x The position of the magnitude symbol 1816 in 1812 or the horizontal component BVD 1810 x The index of the position of the magnitude symbol 1816 in 1812 (eg, the value indicating the position) determines the probability model 1844 by fixed selection or adaptive selection from two or more probability models. The horizontal component BVD 1810 x The position (or index of the position) of the magnitude symbol 1816 in 1812 may provide the horizontal distance 1864 between the two candidate BVDs (e.g., Figure 18B The vertical component BVD of the BVD (eg, BVD 1810) is y (For example, BVD y1812) provides an indication of the vertical distance between two candidate BVDs (e.g., two candidate BVDs that differ from each other only by the value of the magnitude symbol in a given position). The likelihood that the value of the magnitude symbol 1819 of the BVD predictor 1836 matches the value of the magnitude symbol 1816 of the BVD 1810 may be related to the distance 1864. The greater the value of the distance 1864 between the candidate BVDs, the greater the degree of difference between the corresponding templates of the candidate BVDs may be. A larger difference between the corresponding templates of the BVD candidates may correspond to a BVD candidate whose corresponding cost more accurately reflects the BVD candidate associated with the value of the magnitude symbol that matches the value of the magnitude symbol 1816 of the BVD 1810. The horizontal component BVD 1810 x The position (or index of the position) of the magnitude symbol 1816 in 1812 may help select the probability model 1844 for indication 1838 .

[0198] The context modeler may determine (e.g., select, identify, indicate) a probability model for an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD predictor. The context modeler may determine (e.g., select, identify, indicate) a probability model for an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD predictor. x Or vertical component BVD y ) to one or more thresholds. The encoder and decoder may use, for example, the same threshold for encoding and decoding, respectively. Thus, the value of the threshold may be standardized and, therefore, defined in a video coding standard. The context modeler may select a probability model from a plurality of probability models, for example, based on whether the position (or index of the position) satisfies (e.g., meets, is greater than, is less than) the threshold. As described herein, for adaptive selection from probability models, the context modeler may select a probability model from a plurality of probability models.

[0199] For example, for adaptive selection from two or more probability models, context modeler 1846 may convert the horizontal component BVD 1810 into x 1812 to compare the position (or index of the position) of the magnitude symbol 1816 with one or more thresholds. For example, the context modeler 1846 may compare the horizontal component BVD 1810 to the value of the magnitude symbol 1816 in FIG. x The position (or index of the position) of the magnitude symbol 1816 in 1812 is compared with the first threshold. The context modeler 1846 may, for example, be based on the horizontal component BVD 1810. xThe first probability model of indication 1838 is selected when the position (or index of the position) of magnitude symbol 1816 in 1812 is less than a first threshold (or equal to the first threshold or greater than the first threshold, depending on the specific implementation). The context modeler 1846 can, for example, select the first probability model of indication 1838 based on the horizontal component BVD 1810. x 1812 is greater than a first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation) to select a second (e.g., different) probability model for indication 1838. The context modeler 1846 may, for example, select a second (e.g., different) probability model for indication 1838 based on the horizontal component BVD 1810. x If the position (or index of the position) of the magnitude symbol 1816 in 1812 is greater than a first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation), the horizontal component BVD 1810 is set to x The position (or index of the position) of the magnitude symbol 1816 in 1812 is compared with the second threshold. The context modeler 1846 may, for example, be based on the horizontal component BVD 1810. x The position (or position index) of the magnitude symbol 1816 in 1812 is less than a second threshold (or equal to the second threshold or greater than the second threshold, depending on the specific implementation) to select the second probability model of the indication 1838. The context modeler 1846 may, for example, select the second probability model based on the horizontal component BVD 1810. x The position (or index of the position) of the magnitude symbol 1816 in 1812 is greater than a second threshold (or equal to the second threshold or less than the second threshold, depending on the specific implementation) to select the third probability model indicated by 1838.

[0200] The disclosure described herein can also be used to determine (eg, select, identify, indicate) a vertical component BVD for BVD. y One or more probability models indicating whether the value of the magnitude sign of matches the value of the magnitude sign of the vertical component of the BVD predictor. For example, for adaptive selection from two or more probability models, the context modeler (e.g., context modeler 1846) may select the vertical component BVD of the BVD (e.g., BVD 1810) as y The position (or index of the position) of the magnitude symbol in is compared with one or more thresholds. For example, the context modeler may compare the vertical component BVD y The position (or index of the position) of the magnitude symbol in is compared with the first threshold. The context modeler may be based on the vertical component BVD yThe context modeler may select the first probability model indicated by the position (or index of the position) of the magnitude symbol in the BVD being less than a first threshold (or equal to the first threshold or greater than the first threshold, depending on the specific implementation). y The position (or index of the position) of the amplitude symbol in is greater than the first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation), the vertical component BVD y The position (or index of the position) of the magnitude symbol in is compared with the second threshold. The context modeler may be based on the vertical component BVD y The context modeler may select the indicated second probability model based on the position (or index of the position) of the magnitude symbol in the BVD being less than a second threshold (or equal to the second threshold or greater than the second threshold, depending on the specific implementation). y The position (or index of the position) of the amplitude symbol in is greater than a second threshold (or equal to the second threshold or less than the second threshold, depending on the specific implementation) to select the indicated third probability model.

[0201] The context modeler 1846 may determine (e.g., select, identify, indicate) the probability model 1844 by making a fixed selection or an adaptive selection from two or more probability models. The context modeler 1846 may, for example, determine the BVD 1810 (or the horizontal component BVD 1810) based on the incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x 1812) to determine the probability model 1844. The BVD 1810 (or the horizontal component BVD 1810) associated with the incremental change in the value of the magnitude symbol 1816 of the BVD 1810 x 1812) can be determined to be 2 (n-1) , where n is the horizontal component BVD 1810 x 1812. For example, in Figure 18A -D, n=4 (where the magnitude symbol 1816 is in the fourth position of the bit sequence), and thus the BVD 1810 (or the horizontal component BVD 1810) associated with an incremental change in the value of the magnitude symbol 1816 of the BVD 1810 x 1812) can be determined to have a value of 2 (4-1) or 8. The BVD 1810 (or the horizontal component BVD 1810) associated with the incremental change in the value of the magnitude symbol 1816 of the BVD 1810 x 1812) may indicate that two candidate BVDs (e.g., Figure 18BThe distance 1864 between the BVD candidate 1818 and the BVD candidate 1820) in Figure 18B ). As described herein, the likelihood that the value of the magnitude sign 1819 of the BVD predictor 1836 matches the value of the magnitude sign 1816 of the BVD 1810 may be related to the distance 1864. The greater the value of the distance 1864 between the candidate BVDs, the greater the degree of difference between the corresponding templates of the candidate BVDs may be. The larger the difference between the corresponding templates of the BVD candidates may correspond to a BVD candidate whose corresponding cost more accurately reflects the BVD candidate associated with the value of the magnitude sign that matches the value of the magnitude sign 1816 of the BVD 1810. The BVD 1810 (or the horizontal component BVD 1810) associated with the incremental change in the value of the magnitude sign 1816 of the BVD 1810 may be related to the distance 1864. x 1812 ) may help determine (e.g., select, identify, indicate) a probability model 1844 indicating 1838 .

[0202] The disclosure described herein can also be used to determine (eg, select, identify, indicate) a vertical component BVD by making a fixed selection or an adaptive selection from two or more probability models. y (For example, BVD y 1814) or a probability model of a BVD (e.g., BVD 1010). A context modeler (e.g., context modeler 1846) may, for example, be based on a BVD (e.g., BVD 1810, or a vertical component BVD of BVD 1810) associated with an incremental change in the value of the magnitude sign of the BVD. y The probability model is determined by the change in the value of the BVD 1814). The BVD (or the vertical component BVD of the BVD 1810) is related to the incremental change in the value of the magnitude sign of the BVD. y 1814) can be determined to be 2 (n-1) , where n is the vertical component of BVD y The bit position of the magnitude sign in the BVD. The BVD (or the vertical component of the BVD) associated with the incremental change in the value of the magnitude sign of the BVD y 1814) may indicate a distance between two candidate BVDs. As described herein, the likelihood that the value of the magnitude sign of the BVD predictor matches the value of the magnitude sign of the BVD may be related to the distance. The greater the value of the distance between the candidate BVDs, the greater the degree of difference between the corresponding templates of the candidate BVDs may be. The greater the difference between the corresponding templates of the BVD candidates, the more likely the cost of the BVD candidate is to accurately reflect a BVD candidate having a value of the magnitude sign that matches the value of the magnitude sign of the BVD. The BVD (or the vertical component BVD of the BVD) associated with the incremental change in the value of the magnitude sign of the BVD y1814) may help determine (e.g., select, identify, indicate) a probability model for the indication.

[0203] For example, for adaptive selection from two or more probability models, the context modeler 1846 may associate the BVD 1810 (or the horizontal component BVD 1810) with an incremental change in the value of the magnitude sign 1816 of the BVD 1810. x 1812) with one or more thresholds. For example, the context modeler 1846 may compare the BVD 1810 (or the horizontal component BVD 1810) with respect to an incremental change in the value of the magnitude sign 1816 of the BVD 1810. x 1812) is compared to a first threshold. The context modeler 1846 may, for example, model the BVD 1810 (or the horizontal component BVD 1810) based on the incremental change in the value of the magnitude sign 1816 of the BVD 1810. x 1812) is less than a first threshold (or equal to the first threshold or greater than the first threshold, depending on the specific implementation), the context modeler 1846 determines (e.g., selects, identifies, indicates) a first probability model for indication 1838. The context modeler 1846 may, for example, determine the BVD 1810 (or the horizontal component BVD 1810) based on the incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x 1812) is greater than a first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation), to select a second (e.g., different) probability model for indication 1838. Context modeler 1846 may, for example, select a second (e.g., different) probability model for indication 1838 based on the BVD 1810 (or the horizontal component BVD 1810) associated with an incremental change in the value of magnitude sign 1816 of BVD 1810. x 1812) is greater than a first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation) and the BVD 1810 (or the horizontal component BVD 1810) is associated with an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x 1812) is compared to a second threshold. The context modeler 1846 may, for example, model the BVD 1810 (or the horizontal component BVD 1810) based on the incremental change in the value of the magnitude sign 1816 of the BVD 1810. x1812) is less than a second threshold (or equal to the second threshold or greater than the second threshold, depending on the particular implementation), to select a second (e.g., different) probability model for indication 1838. Context modeler 1846 may, for example, select a second (e.g., different) probability model for indication 1838 based on the incremental change in the value of magnitude sign 1816 of BVD 1810 (or the horizontal component BVD 1810). x 1812) is greater than a second threshold (or equal to the second threshold or less than the second threshold, depending on the specific implementation) to select a third probability model indicating 1838.

[0204] The disclosure described herein can also be used to convert the vertical component BVD of a BVD (e.g., BVD 1810) into a y (For example, BVD y 1814) is compared to one or more thresholds. For example, for adaptive selection from two or more probability models, the context modeler (e.g., context modeler 1846) may compare the vertical component BVD of the BVD (e.g., BVD 1810) associated with an incremental change in the value of the magnitude sign of the BVD y (For example, BVD y 1812) with one or more thresholds. For example, the context modeler may compare the BVD (or the vertical component of the BVD BVD) associated with an incremental change in the value of the magnitude sign of the BVD y ) is compared with a first threshold. The context modeler may, for example, be based on the BVD (or the vertical component BVD of the BVD) being related to an incremental change in the value of the magnitude sign of the BVD. y ) is less than a first threshold (or equal to the first threshold or greater than the first threshold, depending on the specific implementation), determine (e.g., select, identify, indicate) a first probability model for the indication. The context modeler may, for example, determine the first probability model for the indication based on the BVD (or the vertical component BVD ... y ) is greater than a first threshold (or equal to the first threshold or less than the first threshold, depending on the specific implementation), determine (e.g., select, identify, indicate) a second (e.g., different) probability model for the indication. The context modeler may, for example, determine the second (e.g., different) probability model for the indication based on the BVD (or the vertical component BVD ... y ) is greater than a first threshold value (or equal to the first threshold value or less than the first threshold value, depending on the specific implementation) and the BVD (or the vertical component BVD of the BVD) associated with the incremental change in the value of the magnitude sign of the BVD y ) is compared with a second threshold. The context modeler may, for example, be based on the BVD (or the vertical component BVD of the BVD) being related to an incremental change in the value of the magnitude sign of the BVD.y ) is less than a second threshold (or equal to the second threshold or greater than the second threshold, depending on the specific implementation), determine (e.g., select, identify, indicate) a second (e.g., different) probability model for the indication. The context modeler may, for example, determine the BVD (or the vertical component BVD of the BVD) based on the incremental change in the value of the magnitude sign of the BVD. y ) is greater than a second threshold (or equal to the second threshold or less than the second threshold, depending on the specific implementation) to select the indicated third probability model.

[0205] The probability model may contain multiple parameters. The parameters of the probability model may include, for example: the probability P of the lowest probability symbol (LPS) indicating whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol in the BVD predictor LPS The value V of the highest probability symbol (MPS) indicated MPS ; The probability P of the indicated MPS MPS (For example, the probability P of the LPS in addition to or instead of indicating 1838 LPS ); and / or the indicated LPS value V LPS (For example, to supplement or replace the indicated MPS value V MPS . Figure 18C The example probability model 1844 shown in FIG. 1844 includes a P indicating 1838 LPS and V MPS .

[0206] The arithmetic encoder may provide parameters for adapting the probability model. For example, the arithmetic encoder 1842 may provide one or more probability model update parameters 1850 to the context modeler 1846. The arithmetic encoder 1842 may provide the one or more probability model update parameters 1850, for example, after the arithmetic encoder 1842 encodes the indication 1838. The context modeler 1846 may adapt the probability model 1844, for example, based on the one or more probability model update parameters 1850. The one or more probability model update parameters 1850 may include, for example, the actual encoded value of the indication 1838. The context modeler 1846 may adjust the probability model 1844, for example, by increasing or decreasing the P value of the indication 1838. LPS To update the probability model 1844. For example, if the actual code value of indication 1838 is not equal to V MPS , then the context modeler 1846 may increase P LPS For example, if the actual code value indicating 1838 is equal to V MPS , then the context modeler 1846 may reduce the P of the indication 1838 LPS .

[0207] The arithmetic encoder (e.g., arithmetic encoder 1842) may determine the values within the final coding interval as arithmetic codewords in binary symbols. For example, the arithmetic encoder 1842 may determine the values within the final coding interval as arithmetic codewords 1852 in binary symbols. The arithmetic encoder 1842 may determine the values, for example, after processing a plurality of binary symbols (e.g., corresponding to one or more syntax elements). The arithmetic encoder 1842 may output the arithmetic codewords 1852. For example, the arithmetic encoder 1842 may output the arithmetic codewords 1852 to a bitstream (e.g., Figure 1 The bit stream 110 shown, Figure 2 The bit stream 204 shown, Figure 3 The bitstream may be received and processed by a video decoder.

[0208] Figure 18D An example of entropy decoding an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of the BVD and using the indication to determine the magnitude sign of the BVD is shown. More specifically, Figure 18D A decoder (eg, Figure 1 The decoder 120 shown, Figure 3 , which may receive an arithmetic codeword 1852, arithmetically decode an indication 1838 based on the arithmetic codeword 1852, and use the indication 1838 to determine a magnitude sign 1816 of the BVD 1810, as described herein.

[0209] The decoder may receive an arithmetic codeword 1852 in a bitstream. The decoder may provide the arithmetic codeword 1852 to an arithmetic decoder 1854. As described herein, the indication 1838 may have a non-uniform probability distribution, for example, based on a method for determining the indication 1838. The arithmetic decoder 1854 may process the indication 1838 in a conventional arithmetic decoding mode. For example, the arithmetic decoder 1854 may perform the recursive interval subdivision described herein to decode the symbols encoded by the arithmetic codeword 1852. The arithmetic decoder 1854 may arithmetically decode symbols whose values are taken from an m-ary source alphabet. The arithmetic decoder 1854 may arithmetically decode symbols whose values are taken from an m-ary source alphabet, for example, by dividing the initial coding interval into m non-adjacent subintervals. Each of the m non-adjacent subintervals may have a width proportional to the probability that the symbol has a different value from the value in the m-ary source alphabet. For binary symbols, such as indication 1838, m is equal to two and the initial coding interval can be subdivided into two non-adjacent intervals, each interval having a width proportional to the probability of a different value of two possible values (e.g., {0, 1}). The probabilities of symbols having different values in the m-ary source alphabet can be referred to as a probability model of the symbol, as described herein. The symbol can be arithmetically decoded from the arithmetic codeword 1852 by determining the symbol value corresponding to the subinterval into which the arithmetic codeword falls. The decoder can sequentially decode the sequence s = {s1, s2, ..., s1} encoded by the arithmetic codeword 1852. N )(For example, the horizontal component BVD of BVD predictor 1836 x The sequence "10011" and the vertical component of the BVD predictor BVD y The sequence "01011", such as Figure 18D Each symbol s shown in i The decoder can sequentially decode the sequence s={s1, s2, ..., s} encoded by the arithmetic codewords 1852, for example, by recursively using this interval subdivision scheme N times and determining in which subinterval the arithmetic codeword 1852 falls at each iteration. N ) for each symbol s i .

[0210] For example, if decoding a symbol corresponding to indication 1838, then arithmetic decoder 1854 may receive probability model 1844 of indication 1838 from context modeler 1846. Context modeler 1856 may be configured to decode the symbol corresponding to indication 1838 in the same manner as described herein. Figure 18C The context modeler 1856 may determine the probability model 1844 for the indication 1838 by making a fixed selection from two or more probability models in the same manner as described herein for the context modeler 1846. Figure 18CThe context modeler 1846 is shown adaptively selecting from two or more probability models to determine the probability model 1844 for the indication 1838 in the same manner as described.

[0211] like Figure 18D As shown, arithmetic decoder 1854 may provide one or more probability model update parameters 1850 to context modeler 1856, for example, after arithmetic decoder 1854 decodes indication 1838. Context modeler 1856 may adapt probability model 1844 based on one or more probability model update parameters 1850. For example, one or more probability model update parameters 1850 may include the actual decoded value of indication 1838. Context modeler 1856 may adjust probability model 1844 by increasing or decreasing the probability model update parameter 1850 of indication 1838. LPS To update the probability model 1844. For example, if the actual decoded value of indication 1838 is not equal to V MPS , then the context modeler 1856 may increase P LPS For example, if the actual decoded value indicated as 1838 is equal to V MPS , then the context modeler 1856 may reduce the P of the indication 1838 LPS .

[0212] An arithmetic decoder (e.g., arithmetic decoder 1854) may determine the value of the magnitude sign of the BVD based on the value of the magnitude sign of the BVD predictor and the value of an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD predictor. The decoder may, for example, determine the value of the magnitude sign 1816 of the BVD 1810 based on the value of the magnitude sign 1819 of the BVD predictor 1836 and the value of the indication 1838. The decoder may, for example, determine the value after entropy decoding the indication 1838. The decoder may determine that the value of the magnitude sign 1816 of the BVD 1810 is equal to the magnitude sign of the BVD predictor 1836 based on the indication 1838 indicating that the value of the magnitude sign 1816 of the BVD 1810 matches the value of the magnitude sign 1819 of the BVD predictor 1836. The decoder may determine that the value of the magnitude sign 1816 of the BVD 1810 is not equal to the magnitude sign 1819 of the BVD predictor 1836 (or is equal to the opposite thereof) based on an indication 1838 indicating that the value of the magnitude sign 1816 of the BVD 1810 does not match the value of the magnitude sign 1819 of the BVD predictor 1836. In this example, the magnitude sign 1819 of the BVD predictor 1836 may have a value of "0" that may match the value of the magnitude sign 1816 of the BVD 1810. In this example, the indication 1838 may indicate that the value of the magnitude sign 1816 of the BVD 1810 matches the value of the magnitude sign 1819 of the BVD predictor 1836. Indication 1838 may be, for example, a single bit that may have a value of "0" if the value of magnitude sign 1816 of BVD 1810 matches the value of magnitude sign 1819 of BVD predictor 1836, and may have a value of "1" if the value of magnitude sign 1816 of BVD 1810 does not match the value of magnitude sign 1819 of BVD predictor 1836. Alternatively, the value of indication 1838 may be, for example, "1" if the value of magnitude sign 1816 of BVD 1810 matches the value of magnitude sign 1819 of BVD predictor 1836, and may be "0" if the value of magnitude sign 1816 of BVD 1810 does not match the value of magnitude sign 1819 of BVD predictor 1836. Logic 1858 may be used to determine the magnitude sign 1816 of BVD 1810. Logic 1858 may implement, for example, a logical XOR function. If the magnitude sign is non-binary, the indication may indicate a first candidate of the plurality of candidates (eg, ordered based on their respective costs) having a value of the magnitude sign that matches the value of the magnitude sign in the BVD.

[0213] The decoder can determine the value of the magnitude sign 1819 of the BVD predictor 1836 in the same manner as the encoder, as described herein. More specifically, the decoder can select the BVD predictor 1836 from a plurality of BVD candidates. The decoder can select the BVD predictor 1836 from the plurality of BVD candidates, for example, based on respective costs obtained (e.g., determined, calculated) for the plurality of BVD candidates. The BVD candidates can include a BVD candidate for each possible value of the magnitude sign of the BVD 1810. For example, the magnitude sign of a BVD (e.g., BVD 1810) represented in binary form has only two possible values {0, 1}. Thus, the BVD candidates for a BVD having only two possible values for the magnitude sign may include at least two BVD candidates for the BVD (one BVD candidate for each possible value of the magnitude sign in the BVD being encoded): a first BVD candidate that is equal to the BVD itself (e.g., BVD candidate 1818 for BVD 1810); and a second BVD candidate that is equal to the BVD but has a relative (or other) value of the magnitude sign of the BVD (e.g., BVD candidate 1820 for BVD 1810). The cost of each of the plurality of BVD candidates may be, for example, based on the current block (e.g., Figure 18A -B) and the template of the current block 1804) and the candidate reference block (e.g., Figure 18A -B) is calculated by the difference between the templates of the candidate reference blocks 1806, 1830, and 1843 shown in FIG. The candidate reference blocks may be shifted relative to the current block by the BVD candidate and the BVP (e.g., Figure 18A The decoder may select the BVD candidate with the lowest cost as the BVD predictor (eg, BVD predictor 1836).

[0214] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied to multiple magnitude symbols of a BVD candidate. For example, the disclosure provided herein for entropy encoding and / or decoding an indication of whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD candidate used as a predictor of the BVD can be applied to multiple magnitude symbols of the BVD. The disclosure provided herein can be applied to, for example, a horizontal component BVD x One or more magnitude signs of 1812, instead of magnitude sign 1816. For the horizontal component BVD x For each additional magnitude symbol of 1812, an additional BVP candidate may be determined. For example, the disclosure provided herein (e.g., regarding Figure 18A -D) can be applied to the horizontal component BVD x 1812 N amplitude symbols, which can provide 2 N(2^N) different BVP candidates (if N is an integer value) - horizontal component BVD x There is one BVP candidate for each possible combination of values of the N magnitude symbols of 1812. A cost may be determined for each of the BVP candidates. The costs may be ranked to determine the cost for the horizontal component BVD x Each of the N magnitude symbols 1812 is encoded and / or decoded as a BVP predictor.

[0215] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied to the vertical component of the BVD. For example, the disclosure provided herein for entropy encoding and / or decoding an indication of whether the value of the magnitude sign of the BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of the BVD can be applied to the vertical component BVD y (For example, BVD y 1814) as one or more amplitude symbols. As the horizontal component BVD x (For example, BVD x 1816), the disclosure provided herein may be applied to the vertical component (e.g., BVD y 1814) with one or more magnitude signs.

[0216] Other binarizations of the components of the BVD and BVD candidates are possible. For example, as disclosed herein, the vertical component BVD of the BVD 1810 is y 1814 and horizontal component BVD x 1816 and the components of the BVD candidate can use fixed-length binary representation. The vertical component BVD of BVD 1810 y 1814 and horizontal component BVD x Other binarizations of the components of the BVD candidate 1816 and BVD 1810 are possible. For example, the vertical component BVD y 1814 and horizontal component BVD x 1816 may be represented using unary, truncated unary, k-th order truncated Rice, k-th order exponential-Golomb, or some combination of two or more binarization processes disclosed herein. For EGk, each codeword may include a length of L N The unary prefix of +1 has a length of L N +k suffix, where For the vertical component of BVD y and the horizontal component BVD xand EGk representation of the components of the BVD candidate, according to the disclosure provided herein (e.g., relative to Figure 18A -D) One or more amplitude symbols encoded in the vertical component BVD y and the horizontal component BVD x and the corresponding suffixes of one or more of the components of the BVD candidate.

[0217] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied in other contexts. For example, the disclosure provided herein can be applied to one or more magnitude signs of MVD used in inter-frame prediction. For example, the disclosure provided herein can be applied to one or more magnitude signs of BVD used in IBC. In addition to or instead of being applied to one or more magnitude signs of BVD used in IBC, the disclosure provided herein can be applied to one or more magnitude signs of MVD used in, for example, inter-frame prediction. For inter-frame prediction, reference Figure 18A -D The terms BV, BVP, BVD, and BVD candidate used may be replaced by the terms MV, MVP, MVD, and MVD.

[0218] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied to IBC and inter-frame prediction. The disclosure provided herein can be applied to IBC and inter-frame prediction, for example, based on a translational motion model of a prediction block. The disclosure provided herein (e.g., reference Figure 18A -D) can be applied to IBC and inter prediction, for example based on an affine motion model of the prediction block.

[0219] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied to multiple amplitude symbols of a BVD. The disclosure provided herein for entropy encoding and / or decoding an indication of whether the value of the amplitude symbol of the BVD matches the value of the amplitude symbol of the BVD candidate used as a predictor of the BVD can be applied, for example, to multiple amplitude symbols of the BVD. The disclosure provided herein can be applied, for example, to the horizontal component BVD x 1812 instead of the magnitude symbol 1816. The disclosure provided herein can be applied to, for example, BVD y One or more magnitude signs of 1814. For applications of the disclosure provided herein (e.g., reference Figure 18A -D) of BVD (e.g., BVD x 1812 and / or BVD y 1814), an additional BVP candidate may be determined. For example, if N is an integer value, then the disclosure provided herein (e.g., regarding Figure 18A-D) applied to the horizontal component BVD x (For example, BVD x 1812) and / or vertical component BVD y (For example, BVD y 1814) of N amplitude symbols, 2 N Different BVP candidates can be determined - horizontal components BVD x and / or vertical component BVD y There is one BVP candidate for each possible combination of values of the N magnitude symbols of . A cost may be determined for each of the BVP candidates, for example, to determine the cost for the horizontal component BVD x and / or vertical component BVD y Each of the N magnitude symbols is encoded and / or decoded as a BVD predictor.

[0220] The disclosures provided herein (e.g., reference Figure 18A -D) can be applied to a finite number of magnitude symbols of BVD. For example, if N is an integer value, the disclosure provided herein (e.g., reference Figure 18A -D) is applied to the N amplitude symbols of BVD, then 2 N Different BVD candidates (eg, one BVD candidate for each possible combination of values of the N magnitude symbols of the BVD). 2 N The corresponding cost value of each of the different BVP candidates. Therefore, the number of BVP candidates and the cost value determined can increase exponentially with the number of magnitude symbols of the BVD. Figure 18A-D) The relatively large number of amplitude symbols applied to the BVD may be computationally prohibitive at the encoder and / or decoder. The number of amplitude symbols of the BVD to be predicted may be limited to a number less than the total number of amplitude symbols of the BVD that can be used for prediction (e.g., for prediction across two components of the BVD). The limited number of symbols used for BVD amplitude prediction may be referred to as a "prediction budget." The number of amplitude symbols of the BVD to be predicted may be limited by a configurable parameter. For example, the maximum number of symbols used for BVD amplitude prediction may be controlled by a macro (e.g., in a C / C++ implementation or other suitable macro-enabled implementation). The total number of symbols used for BVD amplitude prediction may be (or limited to) four, six, eight, ten, twelve, or more symbols of the BVD. For example, four amplitude symbols of the horizontal component of the BVD may be used for prediction, and two amplitude symbols of the vertical component of the BVD may be used for prediction, resulting in a total of six amplitude symbols that can be used for prediction across two components of the BVD. However, in this example, the number of symbols predicted for the BVD may be limited to four. In another example, five amplitude symbols for each of the horizontal and vertical components of the BVD may be used for prediction, resulting in a total of ten amplitude symbols that may be used for prediction. However, in this additional example, the number of symbols used for BVD prediction may be limited to six. If the number of amplitude symbols to be predicted for the BVD is less than the total number of amplitude symbols available for prediction, then it may be necessary to determine which amplitude symbols of the BVD to predict. For example, it may be necessary to determine how to partition (or otherwise assign, allocate, distribute) the number of amplitude symbols to be predicted across one or more of the components of the BVD. This need may be understood in other ways, for example, as a need to determine how to spend the prediction budget for BVD amplitude prediction.

[0221] If, for example, the number of magnitude symbols to be predicted for BVD is less than the number of magnitude symbols available for prediction for BVD, the disclosure provided herein may satisfy a need for determining how to partition (or otherwise assign, allocate, distribute) the number of magnitude symbols to be predicted for BVD. More generally, the disclosure provided herein may satisfy a need for determining how to spend a prediction budget for BVD magnitude prediction. The number N of symbols predicted or to be predicted in the magnitude component of the block vector difference (BVD) may be determined. XBP The symbol may be the most significant symbol (eg, the highest order symbol) of the BVD. The number N of symbols predicted or to be predicted for the magnitude component of the BVD XBP The total number N of symbols that can be predicted or to be predicted based on both the first magnitude component (eg, horizontal component) across the BVD and the second magnitude component (eg, vertical component) of the BVD BP The total number N of predicted or to-be-predicted magnitude symbols can be limited BP For example, the total number N of predicted or to-be-predicted amplitude symbols BPThe number of symbols that can be limited to less than the total number of symbols that can be used for prediction across both the first amplitude component of the BVD and the second amplitude component of the BVD. The first amplitude component can be, for example, a horizontal amplitude component of the BVD or a vertical amplitude component of the BVD. The second amplitude component of the BVD can be the other of the two amplitude components (e.g., if the first amplitude component is a horizontal amplitude component, then it is a vertical amplitude component, or if the first amplitude component is a vertical amplitude component, then it is a horizontal amplitude component). The disclosure provided herein (e.g., reference to Figure 18A -D) can be applied to the predicted or to-be-predicted N in the magnitude component of (for example) BVD XBP For example, for the predicted or to-be-predicted N in the magnitude component of BVD, XBP For each of the most significant symbols (e.g., the highest order symbol), an indication of whether the value of the most significant symbol of the magnitude component of the BVD matches the value of the most significant symbol of the magnitude component of the BVD predictor is entropy encoded and / or decoded (e.g., according to the present reference Figure 18A -D). These and other features are further described below.

[0222] Figure 19 An example method of encoding a prediction associated with the magnitude component of a BVD based on the number of symbols to be predicted for the magnitude component is shown. More specifically, Figure 19 Flowchart 1900 shows example method steps for encoding a prediction associated with a magnitude component of a BVD. Encoding a prediction associated with a magnitude component of a BVD may be based on the number of symbols to be predicted for the magnitude component. One or more steps of example flowchart 1900 may be performed by an encoder, for example Figure 1 The encoder 114 and / or Figure 2 Encoder 200 is shown.

[0223] At step 1902, the encoder may calculate the total number N of symbols to be predicted based on both the first magnitude component of the block vector difference (BVD) and the second magnitude component of the BVD. BP The number N of the most significant symbols to be predicted in the first magnitude component of BVD is determined XBP The most significant symbol to be predicted may be the highest order symbol of the magnitude component. For example, in a binary sequence having four bits {b1, b2, b3, b4} (e.g., "0101"), the most significant (e.g., highest order) symbol corresponds to the bit corresponding to the highest value, specifically, 2 in the four-bit binary sequence. 3 , where the total value is given by (b 1× 2 3 )+(b 2× 2 2 )+(b 3×2 1 )+(b4 × 2 0 ). In this example, the next most significant (e.g., next highest order) symbol corresponds to the bit corresponding to the next highest numerical value, specifically, 2 in the four-bit binary sequence. 2 The least significant (ie, lowest order) symbol corresponds to the bit corresponding to the lowest value, specifically, 2 0 The first amplitude component may be the horizontal amplitude component of the BVD or the vertical amplitude component of the BVD. The second amplitude component may be the other of the two amplitude components (e.g., if the first amplitude component is the horizontal amplitude component, then it is the vertical amplitude component, or if the first amplitude component is the vertical amplitude component, then it is the horizontal amplitude component). The symbol to be predicted may be predicted as disclosed herein (e.g., with reference to FIG. Figure 18A -D).

[0224] Total quantity N BP The number may be limited to less than the total number of symbols that can be used to predict across both the first magnitude component of the BVD and the second magnitude component of the BVD, for example, to limit complexity at the encoder and / or decoder. Figure 18A , the total number N BP The horizontal amplitude component BVD across the BVD 1810 may be indicated (or otherwise specified) x 1812 and the vertical amplitude component BVD1810 y 1814 Both are to be predicted (e.g., as herein referred to Figure 18A -D disclosed). It can be based on the block to be predicted (e.g., Figure 18A The total number N is determined by the size of the current block 1804 in BP For relatively small block sizes, the total number N BP Can be relatively small. Can be used to span the horizontal component of the BVD (e.g., Figure 18A The horizontal component BVD of BVD1810 x 1812) may be equal to the total number of symbols in the binary representation of the horizontal component. x 1812) may be, for example, five symbols (or bits). It may be used for the vertical component across the BVD (e.g., the vertical component BVD of BVD 1810 in FIG. 18). y1814) can be equal to the total number of symbols in the binary representation of the vertical component. The number of symbols available for prediction of the binary representation of the vertical component across the BVD can be, for example, five symbols (or bits). The total number of symbols available for prediction of both the horizontal and vertical components across the BVD can be equal to the sum of the respective numbers of symbols available for prediction for each individual component. For example, if the respective number of symbols available for prediction for each individual component is five, then the number of symbols available for prediction across the horizontal component BVD is five. x and the vertical component BVD y The total number of symbols predicted by both can be equal to 5+5 or ten symbols (or bits). For example, if the total number of symbols to be predicted N BP Equal to three symbols, the total number N BP Less than the horizontal component BVD available across BVD x and the vertical component BVD y The total number of symbols predicted by both (e.g., ten).

[0225] At step 1902, the encoder may determine the number N of most significant symbols to be predicted in one of the magnitude components of the BVD. XBP .exist Figure 19 In step 1902, the encoder determines the number N for XBP The amplitude component of BVD is called the "first amplitude component". For example, the encoder can determine the horizontal component BVD of BVD x (For example, BVD 1810 x 1812) or the vertical component of BVD y (For example, BVD 1810 y 1814) number N XBP The encoder may, for example, calculate the total number N of symbols to be predicted based on both the first magnitude component of the BVD and the second magnitude component of the BVD. BP The number N of most significant symbols to be predicted is determined XBP For example, at step 1902, the encoder may set the number N of the most significant symbols of the first amplitude component to XBP Determined as a certain number of symbols, the number of symbols is equal to or less than the number determined by N BP The total number of symbols indicated (or otherwise specified). For example, if the total number of symbols to be predicted for BVD is N BP is three, the encoder may determine the number N of most significant symbols to be predicted for the first magnitude component XBP Equal to 0, 1, 2 or 3. If the total number of symbols N to be predicted for BVD BPare allocated (or otherwise assigned, distributed) to the first magnitude component, then the magnitude sign of the second magnitude component may not be predicted (e.g., according to the reference herein). Figure 18A -D provided disclosure). This article, for example, refers to Figure 20 Disclosed is a total number N of symbols to be predicted for a BVD based on both the first magnitude component across the BVD and the second magnitude component of the BVD. BP Determine the number N of most significant symbols to be predicted in the first magnitude component XBP Additional details.

[0226] At step 1904, the encoder may entropy encode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. As disclosed herein, for a binary sequence of n bits representing the first magnitude component, the most significant symbol of the binary sequence may be at 2 of the binary sequence. n-1 Position (e.g., for a 4-bit binary sequence, 2 (4-1) =2 3 ). For the N to be predicted in the first amplitude component of BVD XBP For each of the most significant symbols of the BVD, the encoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with reference to Figure 18A -D disclosed). For example, if the number N of most significant symbols to be predicted for the magnitude component represented by a binary sequence of four bits (n=4) XBP If the value of the three most significant symbols of the first magnitude component of the BVD matches the three most significant symbols of the first magnitude component of the BVD predictor (e.g., 2 3 Symbol at position, symbol 2 2 Position, and symbol 2 1 The corresponding indication of the position) is entropy encoded.

[0227] Figure 20 An example method for determining the number of symbols to be predicted for the magnitude component of a BVD is shown. More specifically, Figure 20 Flowchart 2000 illustrating example method steps for determining the number of symbols to be predicted for the magnitude component of a BVD. Figure 20 The example flow chart 2000 shown in FIG. 2 may correspond to Figure 19 Step 1902. One or more steps of the example flowchart 2000 may be performed by an encoder, such as Figure 1 The encoder 114 and / or Figure 2The encoder 200 shown in the example flowchart 2000. One or more of the steps of the example flowchart 2000 may be optional. One or more steps of the example flowchart 2000 may be omitted. The order of the steps shown in the example flowchart 2000 is not necessarily the only order for performing the steps of the example flowchart 2000. The order of the steps of the example flowchart 2000 may be modified.

[0228] At step 2002, the encoder may determine the number N of symbols available for prediction in the first magnitude component of the BVD. AXB Is it greater than the number N of symbols available for prediction in the second magnitude component of BVD? AYB (N AXB >N AYB ). As described herein, the first amplitude component may be the horizontal amplitude component of the BVD or the vertical amplitude component of the BVD, and the second amplitude component may be the other of the two amplitude components of the BVD.

[0229] For example, N may be determined based on the number of symbols used to represent the first magnitude component and the number of symbols used to represent the second magnitude component, respectively. AXB and / or N AYB . N AXB and / or N AYB For example, they may be equal to the number of symbols used to represent the first amplitude component and the number of symbols used to represent the second amplitude component, respectively. Figure 18A The horizontal amplitude component BVD of BVD 1810 x The binary representation of 1812 uses five symbols (or bits) to represent the horizontal component BVD x 1812. For example, if N AXB Corresponding to the horizontal component BVD x 1812, then N can be determined AXB Equal to five symbols (or bits) or equal to the horizontal component BVD x The number of symbols is 1812.

[0230] The number of symbols representing the suffix of the magnitude component of the BVD may be used to determine the number of symbols that may be used to predict the magnitude component. For example, N may be determined based on the number of symbols used to represent the suffix of the first magnitude component and the number of symbols used to represent the suffix of the second magnitude component, respectively. AXB and / or N AYB . N AXB and / or N AYBFor example, they may be equal to the number of symbols used to represent the suffix of the first amplitude component and the number of symbols used to represent the suffix of the second amplitude component, respectively. The symbols available for prediction in the first amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the first amplitude component. The symbols available for prediction in the second amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the second amplitude component. The symbols available for prediction in the first amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the first amplitude component minus a predetermined amount. The symbols available for prediction in the second amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the second amplitude component minus a predetermined amount.

[0231] The first magnitude component and the second magnitude component can be represented by one of a variety of codes. As disclosed herein, a code for representing a magnitude component can include two parts: a first part that can be referred to as a "prefix" and a second part that can be referred to as a "suffix." Example codes include Rice codes and Golomb codes (e.g., Golomb-Rice codes or exponential Golomb codes). For example, see Figure 18A , the horizontal component BVD 1810 can be converted to BVD using the Columbus-Rice code x The amplitude of 1812 is binarized. The Golomb-Rice code has the structure as disclosed herein: a prefix indicating a range of values and a suffix indicating an exact value within the range. The Golomb-Rice code C of order k grk (v) It includes a unary code prefix and k suffix bits. The k suffix bits are integers 0≤i<2 k An example of a Golomb-Rice code with k=4 is given in Table 1 below. In the table and the subsequent disclosure, x0, x1, ..., x n Indicates that x n ∈{0,1}.

[0232] Table 1

[0233]

[0234] The number of prefix bits is given by n p Indicates that the number of suffix bits is represented by n s For the Golomb-Rice code, the number of suffix bits is n s = k. If the value v is encoded, the number of prefix bits is determined by the following formula:

[0235]

[0236] in is the integer part of x given by the floor function. The suffix is the following n s - bit means:

[0237] vs =v-2 k (n p -1). (20)

[0238] The Golomb-Rice codes discussed herein use a fixed-length suffix. The length of the suffix can also be determined by the length of the prefix. Exponential Golomb codes (Exp-Golomb) use this approach and can further be used to scale the horizontal component (e.g., BVD 1810) of a BVD. x 1812) is binarized. k-order exponential Golomb code C eg k (v) Includes unary prefix codes and variable length suffixes. s The number of bits in is based on the value n p Determine as follows:

[0239] n s =k+n p -1. (21)

[0240] C eg k The prefix of (v) is n p The number is determined by the value v and is given by:

[0241]

[0242] Therefore, the suffix is the following n s - bit means:

[0243]

[0244] An example of an Exponential Golomb code with k=1 is given in Table 2 below.

[0245] Table 2

[0246]

[0247] exist Figure 18A For example, the horizontal component BVD 1810 x The magnitude of 1812 has a decimal value of 19, which can be represented by a Golomb-Rice code or an Exponential Golomb code. For example, the horizontal component BVD x The magnitude of 1812 can be represented by an exponential Golomb code of order k=4 with a prefix “0001” and a suffix “0101”. In this example, the prefix “0001” indicates the horizontal component BVD 1810. xThe magnitude of BVD 1812 falls within the range of values 14-29 (e.g., a magnitude range of 14-29 or a magnitude within the range of 14-29), and in this example, the suffix "0101" indicates that the horizontal component BVD 1810 is x The magnitude of 1812 has an exact value of 19, which is within the value range of 14-29. Figure 18A For example, the vertical component BVD of BVD 1810 y The magnitude of 1814 has a decimal value of 11, which can be represented by a Golomb-Rice code or an Exponential Golomb code. For example, the vertical component BVD y The magnitude of 1814 can be represented by an exponential Golomb code of order k=1 with a prefix of "001" and a suffix of "101". In this example, the prefix "001" indicates the vertical component BVD y The magnitude of 1814 falls within the range of values 6-13 (e.g., a magnitude range of 6-13 or a magnitude within the range of 6-13), and in this example, the suffix "101" indicates the vertical component BVD y The magnitude of 1814 has an exact value of 11, which is within the value range of 6-13.

[0248] refer to Figure 20 , the encoder may determine N at step 2002 AXB Is it greater than N AYB The encoder may determine N based on, for example, the number of symbols of the prefix of the codeword representing the first magnitude component and the number of symbols of the prefix of the codeword representing the second magnitude component, respectively. AXB Is it greater than N AYB For example, based on the number of symbols in the prefix of the codeword used to represent the first magnitude component being greater than the number of symbols in the prefix of the codeword used to represent the second magnitude component, the encoder may determine N AXB Greater than N AYB . The symbols available for prediction in the first amplitude component of the BVD may be limited. For example, the symbols available for prediction in the first amplitude component of the BVD may be limited to the symbols of the suffix of the codeword used to represent the first amplitude component. The symbols available for prediction in the second amplitude component of the BVD may be limited. For example, the symbols available for prediction in the second amplitude component of the BVD may be limited to the symbols of the suffix of the codeword used to represent the second amplitude component. The number of symbols of the prefix may provide an indication of the number of symbols of the suffix.

[0249] The encoder may determine N at step 2002, for example AXB Greater than N AYB To perform step 2004. At step 2004, the encoder may determine the total number N of magnitude symbols predicted for BVD BPIs it greater than the number N of amplitude symbols available for prediction in the first amplitude component of BVD? AXB The number N of magnitude symbols available for prediction in the second magnitude component of BVD AYB The difference between (N BP >N AXB -N AYB ).

[0250] The encoder may determine N at step 2004, for example, based on BP Greater than N AXB With N AYB At step 2006, the encoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD. XBP For example, the encoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD based on the sum of XBP :N AXB With N AYB The difference between (N AXB -N AYB ); and the total number N of magnitude symbols predicted by BVD BP Half of (N BP / 2). For example, N XBP Can be equal to (N AXB -N AYB )+N BP / 2. If the total number N BP If it is not divisible by 2, you can use N BP / 2 lower or upper bound (e.g., or ) instead of N BP / 2. As disclosed herein, N is the predicted value for the first magnitude component. XBP The magnitude symbols may be N of the first magnitude component. XBP The most significant symbols. For the N to be predicted in the first magnitude component of BVD XBP For each of the most significant symbols of the BVD, the encoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with reference to Figure 18A -D disclosed).

[0251] At step 2006, the encoder may also determine the number N of magnitude symbols to be predicted in the second magnitude component of the BVD. YBP The encoder may be based on the total number N of magnitude symbols to be predicted for BVD BP To determine the number N of amplitude symbols to be predicted in the second amplitude component YBPFor example, the encoder may determine the number N of magnitude symbols to be predicted in the second magnitude component. YBP Equal to N BP / 2 (or if, for example, N BP If it is not divisible by 2, then it is equal to N BP / 2). As disclosed herein, N is predicted for the second magnitude component. YBP The magnitude symbols may be N of the second magnitude component. YBP The most significant symbols. For the N to be predicted in the second magnitude component of BVD YBP For each of the most significant symbols of the BVD, the encoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the corresponding most significant symbol of the second magnitude component of the BVD predictor (e.g., as described herein with respect to Figure 18A -D).

[0252] An example illustrating the operation of step 2006 may be as follows: The total number N of magnitude symbols predicted for BVD BP The number of symbols N that can be used for prediction in the first magnitude component of the BVD is limited to four. AXB The number of symbols N that can be used for prediction in the second magnitude component of the BVD is five. AYB It can be three. Assume N AXB >N AYB (5>3) and N BP >N AXB -N AYB (4>5-3→4>2), in this example, the number of symbols N predicted for the first magnitude component XBP The number N of symbols predicted for the second magnitude component will be four ((5-3)+(4 / 2)=2+2=4) YBP will be 2 (4 / 2=2). So, for example, if N BP is limited to fewer than all corresponding magnitude symbols in the first magnitude component and the second magnitude component that can be used for prediction, then the total number N of magnitude symbols predicted for the BVD can be divided (or otherwise distributed, allocated, assigned) between the first magnitude component and the second magnitude component of the BVD BP .

[0253] The encoder may determine N at step 2004, for example, based on BP No more than N AXB With N AYB The difference between (N BP <N AXB -N AYB ) to perform step 2008. At step 2008, the encoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVDXBP The encoder can be based on N BP Determine the number N of magnitude signs predicted for the first magnitude component of the BVD XBP For example, the encoder may calculate the total number N of magnitude symbols predicted for BVD. BP The encoder may determine, for example, the number N of magnitude symbols predicted for the first magnitude component of the BVD. XBP Equal to N BP (N XBP =N BP ). At step 2008, it is assumed that the total number N of amplitude symbols predicted by BVD is BP are allocated (or otherwise distributed or assigned) to the first magnitude component of the BVD for prediction, the encoder may determine the number N of magnitude symbols predicted for the second component of the BVD YBP Equal to zero (N YBP =0).

[0254] An example illustrating the operation of step 2008 may be as follows: The total number N of magnitude symbols predicted for BVD BP The number of symbols N that can be used for prediction in the first magnitude component of the BVD is limited to two. AXB The number of symbols N that can be used for prediction in the second magnitude component of the BVD is five. AYB It can be three. Assume N AXB >N AYB (5>3) and N BP =N AXB -N AYB (2=5-3→2=2), in this example, the number of symbols N predicted for the first magnitude component XBP will be two (the total number N BP ) and is the number of symbols N predicted for the second magnitude component YBP will be zero. So, for example, if N BP To the extent that there is an insufficient number of symbols to allocate (or otherwise distribute or assign) to the second component of the BVD, the total number N of magnitude symbols predicted for the BVD may be BP The first magnitude component is fully allocated (or otherwise distributed or assigned) to the BVD.

[0255] The encoder may determine N at step 2002, for example AXB No more than N AYB At step 2010, the encoder may determine the number N of symbols available for prediction in the first magnitude component of the BVD. AXBIs it less than the number N of symbols available for prediction in the second magnitude component of BVD? AYB (N AXB <N AYB ). The encoder may, for example, determine N based on the AXB Less than N AYB To perform step 2012. At step 2012, the encoder may determine the total number N of magnitude symbols predicted for BVD BP Is it greater than the number N of amplitude symbols available for prediction in the first amplitude component of BVD? AYB The number N of magnitude symbols available for prediction in the second magnitude component of BVD AXB The difference between (N BP >N AYB -N AXB ).

[0256] The encoder may determine N at step 2012, for example BP Greater than N AYB With N AXB At step 2014, the encoder may determine the number N of magnitude symbols predicted for the second magnitude component of the BVD. YBP The encoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD based on, for example, the sum of YBP :N AYB With N AXB The difference between (N AYB -N AXB ); and the total number N of magnitude symbols predicted by BVD BP Half of (N BP / 2). For example, N YBP Can be equal to (N AYB -N AXB )+N BP / 2. If the total number N BP If it is not divisible by 2, you can use N BP / 2 lower or upper bound (e.g., or ) instead of N BP / 2. As disclosed herein, N is predicted for the second magnitude component YBP The magnitude symbols may be N of the second magnitude component. YBP The most significant symbols. For the N to be predicted in the second magnitude component of BVD YBP For each of the most significant symbols of the BVD, the encoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the corresponding most significant symbol of the second magnitude component of the BVD predictor (e.g., as described herein with respect to Figure 18A-D).

[0257] At step 2014, the encoder may determine the number N of magnitude symbols to be predicted in the first magnitude component of the BVD. XBP The encoder may be based on the total number N of magnitude symbols to be predicted for BVD BP To determine the number N of amplitude symbols to be predicted in the first amplitude component XBP For example, the encoder may determine the number N of magnitude symbols to be predicted in the first magnitude component. XBP Equal to N BP / 2 (or if, for example, N BP If it is not divisible by 2, then it is equal to N BP / 2). As disclosed herein, N is predicted for the first magnitude component. XBP The magnitude symbols may be N of the first magnitude component. XBP The most significant symbols. For the N to be predicted in the first magnitude component of BVD XBP For each of the most significant symbols of the BVD, the encoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with respect to Figure 18A -D).

[0258] The encoder may determine N at step 2012, for example BP No more than N AXB With N AYB The difference between (N BP <N AYB -N AXB ) to perform step 2018. At step 2018, the encoder may determine the number N of magnitude symbols predicted for the second magnitude component of the BVD YBP The encoder may be based on N BP Determine the number N of magnitude signs predicted for the second magnitude component of the BVD YBP For example, the encoder may calculate the total number N of magnitude symbols predicted for BVD. BP The encoder may determine, for example, the number N of magnitude symbols predicted for the first magnitude component of the BVD. yBP Equal to N BP (N YBP =N BP ). At step 2018, it is assumed that the total number N of amplitude symbols predicted by BVD is BP are allocated (or otherwise distributed or assigned) to the second magnitude component of the BVD for prediction, the encoder may determine the number N of magnitude symbols predicted for the first component of the BVDXBP Equal to zero (N XBP =0).

[0259] The encoder may determine N at step 2010, for example, based on AXB Not less than N AYB (Assume that the encoder has determined N AXB No more than N AYB , then N AXB =N AYB ) to perform step 2020. At step 2020, the encoder may calculate the total number N of magnitude symbols predicted for BVD based on BP To determine N XBP and N YBP For example, if the total number of magnitude symbols predicted for BVD is N BP is divisible by 2, the encoder may evenly divide (or otherwise allocate, distribute, assign) the magnitude symbols to the first magnitude component and the second magnitude component of the BVD for prediction. The encoder may, for example, determine the number N of magnitude symbols predicted for the first magnitude component of the BVD XBP and the number N of amplitude signs predicted for the second amplitude component of BVD YBP are equal to the total number N of magnitude symbols predicted for BVD BP Half of (N BP / 2).

[0260] If N XBP With N YBP is equal to, and is the total number N of magnitude symbols predicted by BVD BP is not divisible by 2, the encoder can determine N BP half of the lower or upper limit (e.g., or ). Take N BP A lower limit or an upper limit of half of may result in an uneven distribution (or division, distribution, assignment) of the amplitude signs predicted for the first amplitude component and the second amplitude component, respectively. BP Equal to 3, then determine N BP Half of the N BP / 2 = 3 / 2 = 1.5), which is a non-integer number of symbols. Determine this example N BP The upper limit (for example, N BP =3) Generate a symbol And determine this example N BP The lower limit produces two symbols The encoder can determine N XBP Equal to, for example, N BPThe encoder can determine the lower or upper limit of N YBP Equal to, for example, N BP For example, the encoder may determine to allocate (or otherwise divide, distribute, assign) more of the magnitude symbols to be predicted to the horizontal component of the BVD, and thus determine N XBP (if corresponding to the horizontal component) equal to N BP / 2 and determine the upper limit of N YBP (if corresponding to the vertical component) equal to N BP For example, the encoder may determine to allocate (or otherwise divide, distribute, assign) more of the magnitude symbols to be predicted to the vertical component of the BVD, and thus determine N XBP (if corresponding to the vertical component) equal to N BP / 2 and determine the upper limit of N YBP (if corresponding to the horizontal component) equal to N BP The lower limit is / 2.

[0261] If N BP is equal to zero, the encoder can determine N XBP and N YBP Both are equal to zero. For example, the encoder can perform Figure 20 Determine N before any of the steps in the example flowchart 2000 shown. BP The encoder may calculate the total number N of symbols to be predicted across both the first magnitude component of the BVD and the second magnitude component of the BVD. BP More of the values in the y-axis are allocated (or otherwise assigned, distributed) to the magnitude components of the BVD having more most significant symbols available for prediction (e.g., as described herein with reference to Figure 18A -D disclosed). For example, five amplitude symbols of the first amplitude component (e.g., horizontal amplitude component) of the BVD may be used for prediction, and three amplitude symbols of the second amplitude component (e.g., vertical amplitude component) of the BVD may be used for prediction. The encoder may, for example, set the total number N of symbols to be predicted for the BVD to BP If the total number N of symbols used for BVD amplitude prediction is allocated (or otherwise assigned, distributed) to the first amplitude component with five amplitude symbols available for prediction, BP , then the most significant symbol of the magnitude component of the BVD may be prioritized. As disclosed herein, the most significant symbol of the magnitude component may be prioritized by, for example, placing N BP Prioritize the magnitude components with relatively more most significant symbols (larger magnitude components). BPAny remaining number of can be divided (e.g., equally) among the corresponding magnitude symbols in the BVD magnitude components that can be used for prediction. Prioritizing the most significant symbols of one or more of the BVD magnitude components that can be used for BVD magnitude prediction can improve the accuracy of the BVD magnitude prediction and can improve the compression efficiency of magnitude symbol prediction (e.g., as described herein with respect to Figure 18A -D disclosed). For example, compression efficiency can be greater for magnitude symbol predictions that have more magnitude components of the most significant symbols available for prediction. Improving the compression efficiency of magnitude symbol predictions can improve the achieved coding gain and reduce the overhead required to signal those magnitude symbol predictions to, for example, a decoder.

[0262] Due to, for example, the aspect ratio of the video frame and / or the manner in which a reference region is determined for encoding and / or decoding the video frame, one amplitude component of the BVD may have more amplitude symbols available for prediction than another amplitude component of the BVD. For example, a video frame may have a rectangular aspect ratio, whereby the width of the video frame is greater than the height of the video frame. For example, as disclosed herein, the reference region may be above and to the left of the current block being encoded or decoded. Thus, a BVD candidate associated with the current block may include, for example, a horizontal amplitude component that is more likely to be greater than a vertical amplitude component of the BVD candidate. Thus, the binary representation of a relatively large horizontal amplitude component may include more most significant symbols than the binary representation of a relatively small vertical amplitude component.

[0263] Figure 21 An example method of decoding a prediction associated with a magnitude component of a BVD is shown. Decoding a prediction associated with a magnitude component of a BVD may be based, for example, on the number of symbols predicted for the magnitude component. More specifically, Figure 21 Flowchart 2100 shows example method steps for decoding a prediction associated with a magnitude component of a BVD based on the number of symbols predicted for the magnitude component. One or more steps of example flowchart 2100 may be performed by a decoder, Figure 1 The decoder and / or Figure 3 Decoder 300 is shown.

[0264] At step 2102, the decoder may predict the total number N of symbols based on both the first magnitude component of the cross-block vector difference (BVD) and the second magnitude component of the BVD. BP To determine the number N of most significant symbols of the first magnitude component of the predicted BVD XBP As disclosed herein, the predicted most significant symbol may be the highest order symbol of the amplitude component. The first amplitude component may be the horizontal amplitude component of the BVD or the vertical amplitude component of the BVD. The second amplitude component may be the other of the two amplitude components of the BVD. The predicted symbol may have been disclosed herein (e.g., with reference to Figure 18A -D) was predicted.

[0265] Total quantity N BP The number may be limited to less than the total number of symbols that could ever be used to predict across both the first magnitude component of the BVD and the second magnitude component of the BVD, e.g., to limit complexity at the encoder and / or decoder. Figure 18A , the total number N BP The horizontal amplitude component BVD across the BVD 1810 may be indicated (or otherwise specified) x 1812 and the vertical amplitude component BVD 1810 y 1814 Both predicted (for example, as seen in this article Figure 18A -D disclosed). It can be based on the block to be predicted (e.g., Figure 18A The total number N is determined by the size of the current block 1804 in BP For relatively small block sizes, the total number N BP can be relatively small. Once available for horizontal components across the BVD (e.g., Figure 18A The horizontal component of BVD 1810 in x 1812) may be equal to the horizontal component of the BVD (e.g., the horizontal component BVD x 1812), and may be, for example, five symbols (or bits). Figure 18A The vertical component of BVD 1810 in y 1814) may be equal to the total number of symbols in the binary representation of the vertical component. The number of symbols that were available for prediction of the binary representation of the vertical component across the BVD may be, for example, five symbols (or bits). The total number of symbols that were available for prediction of both the horizontal and vertical components across the BVD may be equal to the sum of the respective numbers of symbols that were available for prediction for each individual component. For example, if the respective number of symbols that were available for prediction for each individual component was five, then the total number of symbols that were available for prediction across the horizontal component BVD may be equal to the sum of the respective numbers of symbols that were available for prediction for each individual component. x and the vertical component BVD y The total number of symbols predicted by both can be equal to 5+5 or ten symbols (or bits). For example, if the total number of symbols predicted is N BP Equal to three symbols, the total number N BP Less than the horizontal component BVD that was once available across BVD x and the vertical component BVD y The total number of symbols predicted by both (e.g., ten).

[0266] At step 2102, the decoder may determine the number N of most significant symbols of one of the magnitude components of the predicted BVD. XBP .exist Figure 21 In step 1902, the decoder determines the number N for XBP The amplitude component of BVD is called the "first amplitude component". For example, the encoder can determine the horizontal component BVD of BVD x (For example, BVD 1810 x 1812) or the vertical component of BVD y (For example, BVD 1810 y 1814)N XBP The total number N of symbols that the encoder may predict based on both the first magnitude component across the BVD and the second magnitude component across the BVD BP Determine the number of most significant symbols predicted N XBP For example, at step 2102, the decoder may set the number N of the most significant symbols of the first amplitude component to XBP Determined as a certain number of symbols, the number of symbols is equal to or less than the number determined by N BP The total number of symbols indicated (or otherwise specified). For example, if the total number of symbols to be predicted for BVD is N BP is three, the decoder can determine the number N of most significant symbols predicted for the first magnitude component XBP Equal to 0, 1, 2 or 3. If the total number of symbols N predicted for BVD BP are allocated (or otherwise assigned, distributed) to the first magnitude component, then the magnitude sign of the second magnitude component may not have been predicted (e.g., as referred to herein). Figure 18A -D disclosed). This article, for example, refers to Figure 22 Disclosed is a total number N of symbols predicted for the BVD based on both the first magnitude component across the BVD and the second magnitude component of the BVD. BP Determine the number N of most significant symbols of the predicted first magnitude component XBP Additional details.

[0267] At step 2104, the decoder may entropy decode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. XBP For each of the most significant symbols of the BVD, the decoder may entropy decode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with reference to Figure 18A -D disclosed). The decoder may determine the value of the most significant symbol of the first magnitude component of the BVD based on the value of the most significant symbol of the first magnitude component of the BVD predictor and the indication.

[0268] Figure 22 An example method for determining the number of symbols predicted for the magnitude component of a BVD is shown. More specifically, Figure 22 Flowchart 2200 showing example method steps for determining the number of symbols predicted for the magnitude component of a BVD. Figure 22 The example flow chart 2200 shown in FIG. 2200 may correspond to Figure 21 One or more of the steps of the example flowchart 2200 may be optional. One or more steps of the example flowchart 2200 may be omitted. The order of the steps shown in the example flowchart 2200 is not necessarily the only order for performing the steps of the example flowchart 2200. The order of the steps of the flowchart 2200 may be modified.

[0269] At step 2202, the decoder may determine the number N of symbols that were available for prediction in the first magnitude component of the BVD. AXB Is it greater than the number N of symbols that were once available for prediction in the second magnitude component of BVD? AYB (N AXB >N AYB ). As described herein, the first amplitude component may be the horizontal amplitude component of the BVD or the vertical amplitude component of the BVD, and the second amplitude component may be the other of the two amplitude components of the BVD.

[0270] For example, N may be determined based on the number of symbols used to represent the first magnitude component and the number of symbols used to represent the second magnitude component, respectively. AXB and / or N AYB . N AXB and / or N AYB For example, they may be equal to the number of symbols used to represent the first amplitude component and the number of symbols used to represent the second amplitude component, respectively. Figure 18A The horizontal amplitude component BVD of BVD 1810 x The binary representation of 1812 uses five symbols (or bits) to represent the horizontal component BVD x 1812. If N AXB Corresponding to the horizontal component BVD x 1812, then N can be determined AXB Equal to five symbols (or bits) or equal to the horizontal component BVD x The number of symbols is 1812.

[0271] As disclosed herein, the number of symbols representing the suffix of the magnitude component of the BVD may be used to determine the number of symbols that may be used to predict the magnitude component. For example, N may be determined based on the number of symbols used to represent the suffix of the first magnitude component and the number of symbols used to represent the suffix of the second magnitude component, respectively. AXB and / or N AYB . N AXB and / or N AYB For example, they may be equal to the number of symbols used to represent the suffix of the first amplitude component and the number of symbols used to represent the suffix of the second amplitude component, respectively. The symbols that were once available for prediction in the first amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the first amplitude component. The symbols that were once available for prediction in the second amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the second amplitude component. The symbols that were once available for prediction in the first amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the first amplitude component minus a predetermined amount. The symbols that were once available for prediction in the second amplitude component of the BVD may be, for example, limited to the symbols of the suffix of the codeword used to represent the second amplitude component minus a predetermined amount.

[0272] The first magnitude component and the second magnitude component can be represented by one of a variety of codes. As disclosed herein, a code for representing a magnitude component can include two parts: a first part that can be referred to as a "prefix" and a second part that can be referred to as a "suffix." Example codes include Rice codes and Golomb codes (e.g., Golomb-Rice codes or exponential Golomb codes). For example, see Figure 18A , the horizontal component of BVD 1810 can be converted to BVD using Rice code or Columbus code x Amplitude binarization of 1812.

[0273] refer to Figure 22 , the decoder can determine N at step 2202 AXB Is it greater than N AYB The encoder may determine N based on, for example, the number of symbols of the prefix of the codeword representing the first magnitude component and the number of symbols of the prefix of the codeword representing the second magnitude component, respectively. AXB Is it greater than N AYB For example, based on the number of symbols in the prefix of the codeword used to represent the first magnitude component being greater than the number of symbols in the prefix of the codeword used to represent the second magnitude component, the decoder may determine N AXB Greater than N AYB. The symbols that were once available for prediction in the first amplitude component of the BVD may be limited. For example, the symbols that were once available for prediction in the first amplitude component of the BVD may be limited to the symbols of the suffix of the codeword used to represent the first amplitude component. The symbols that were once available for prediction in the second amplitude component of the BVD may be limited. For example, the symbols that were once available for prediction in the second amplitude component of the BVD may be limited to the symbols of the suffix of the codeword used to represent the second amplitude component. The number of symbols of the prefix may provide an indication of the number of symbols of the suffix.

[0274] The encoder may determine N at step 2202, for example, based on AXB Greater than N AYB To perform step 2204. At step 2204, the decoder may determine the total number N of magnitude symbols predicted for BVD BP Is it greater than the number N of amplitude symbols available for prediction in the first amplitude component of BVD? AXB The number N of magnitude symbols available for prediction in the second magnitude component of BVD AYB The difference between (N BP >N AXB -N AYB ).

[0275] The decoder may determine N at step 2204, for example, based on BP Greater than N AXB With N AYB At step 2206, the decoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD. XBP For example, the encoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD based on the sum of XBP :N AXB With N AYB The difference between (N AXB -N AYB ); and the total number N of magnitude symbols predicted for BVD BP Half of (N BP / 2). For example, N XBP Can be equal to (N AXB -N AYB )+N BP / 2. If the total number N BP If it is not divisible by 2, you can use N BP / 2 lower or upper bound (e.g., or ) instead of N BP / 2. As disclosed herein, N is predicted for the first magnitude component. XBP The magnitude symbols may be N of the first magnitude component.XBP The most significant symbols. For the first magnitude component of the predicted BVD, N XBP For each of the most significant symbols of the BVD, the decoder may entropy decode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with respect to Figure 18A -D).

[0276] At step 2206, the decoder may also determine the number N of magnitude symbols of the second magnitude component of the predicted BVD. YBP The decoder can be based on the total number N of magnitude symbols predicted for BVD BP Determine the number N of magnitude signs of the predicted second magnitude component YBP For example, the encoder may determine the number N of magnitude symbols to be predicted in the second magnitude component. YBP Equal to N BP / 2 (or if, for example, N BP If it is not divisible by 2, then it is equal to N BP / 2). As disclosed herein, N is predicted for the second magnitude component. YBP The magnitude symbols may be N of the second magnitude component. YBP The most significant symbols. For the predicted N of the second magnitude component of BVD YBP For each of the most significant symbols of the second magnitude component of the BVD, the decoder may entropy decode a corresponding indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the corresponding most significant symbol of the second magnitude component of the BVD predictor (e.g., as described herein with reference to Figure 18A -D disclosed). The decoder may determine the value of the most significant symbol of the second magnitude component of the BVD based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication.

[0277] The decoder may determine N at step 2204, for example, based on BP No more than N AXB With N AYB The difference between (N BP <N AXB -N AYB ) to perform step 2208. At step 2208, the decoder may BP Determine the number N of magnitude signs predicted for the first magnitude component of the BVD XBP For example, the decoder may calculate the total number N of magnitude symbols predicted for BVD. BPThe decoder may determine, for example, the number N of magnitude symbols predicted for the first magnitude component of the BVD. XBP Equal to N BP (N XBP =N BP ). At step 2208, assume that the total number of amplitude symbols N predicted for BVD BP are allocated (or otherwise distributed or assigned) to the first magnitude component of the BVD, the decoder may determine the number N of magnitude symbols predicted for the second component of the BVD YBP Equal to zero.

[0278] The encoder may determine N at step 2202, for example, based on AXB No more than N AYB At step 2210, the decoder may determine the number N of symbols that were once available for prediction in the first magnitude component of the BVD. AXB Is it less than the number N of symbols that were once available for prediction in the second magnitude component of BVD? AYB (N AXB <N AYB ). The decoder may, for example, determine N at step 2210 based on AXB Less than N AYB To perform step 2212. At step 2212, the decoder may determine the total number N of magnitude symbols predicted for BVD. BP Is it greater than the number N of magnitude symbols that have ever been used for prediction in the first magnitude component of BVD? AYB The number N of magnitude symbols available for prediction in the second magnitude component of BVD AXB The difference between (N BP >N AYB -N AXB ).

[0279] The decoder may determine N at step 2212, for example, based on BP Greater than N AYB With N AXB At step 2214, the decoder may determine the number N of magnitude symbols predicted for the second magnitude component of the BVD. YBP The decoder may determine the number N of magnitude symbols predicted for the first magnitude component of the BVD based on, for example, the sum of XBP :N AYB With N AXB The difference between (N AYB -N AXB ); and the total number N of magnitude symbols predicted for BVD BP Half of (NBP / 2). For example, N YBP Can be equal to (N AYB -N AXB )+N BP / 2. If the total number N BP If it is not divisible by 2, you can use N BP / 2 lower or upper bound (e.g., or ) instead of N BP / 2. As disclosed herein, N is predicted for the second magnitude component. YBP The magnitude symbols may be N of the second magnitude component. YBP The most significant symbols. For the predicted N of the second magnitude component of BVD YBP For each of the most significant symbols of the second magnitude component of the BVD, the decoder may entropy decode a corresponding indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the corresponding most significant symbol of the second magnitude component of the BVD predictor (e.g., as described herein with reference to Figure 18A -D). The decoder may determine the value of the most significant symbol of the second magnitude component of the BVD, for example, based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication.

[0280] At step 2214, the decoder may determine the number N of magnitude symbols of the first magnitude component of the predicted BVD. XBP The decoder can be based on the total number N of magnitude symbols predicted for BVD BP Determine the number N of magnitude signs of the predicted first magnitude component XBP For example, the decoder may determine the number N of magnitude symbols of the predicted first magnitude component. XBP Equal to N BP / 2 (or if, for example, N BP If it is not divisible by 2, then it is equal to N BP / 2). As disclosed herein, N is predicted for the first magnitude component. XBP The magnitude symbols may be N of the first magnitude component. XBP The most significant symbols. For the first magnitude component of the predicted BVD, N XBP For each of the most significant symbols of the BVD, the decoder may entropy encode a corresponding indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the corresponding most significant symbol of the first magnitude component of the BVD predictor (e.g., as described herein with respect to Figure 18A -D disclosed).

[0281] The decoder may determine N at step 2212, for example, based on BP No more than N AXBWith N AYB The difference between (N BP <N AYB -N AXB ) to perform step 2218. At step 2218, the decoder may determine the number N of magnitude symbols predicted for the second magnitude component of the BVD. YBP The decoder can be based on N BP Determine the number N of magnitude signs predicted for the second magnitude component of the BVD YBP For example, the decoder may calculate the total number N of magnitude symbols predicted for BVD. BP The decoder may determine, for example, the number N of magnitude symbols predicted for the first magnitude component of the BVD. YBP Equal to N BP (N YBP =N BP ). At step 2218, assume that the total number of amplitude symbols N predicted for BVD BP are allocated (or otherwise distributed or assigned) to the second magnitude component of the BVD, the decoder can determine the number N of magnitude symbols predicted for the first component of the BVD XBP Equal to zero (N XBP =0).

[0282] The decoder may determine N at step 2210, for example, based on AXB Not less than N AYB (Assume that the encoder has determined N AXB No more than N AYB , then N AXB =N AYB ) to perform step 2220. At step 2220, the decoder may calculate the total number N of magnitude symbols predicted for BVD based on BP To determine N XBP and N YBP For example, if the total number of magnitude symbols N predicted for BVD is BP is divisible by 2, the decoder may evenly divide (or otherwise allocate, distribute, assign) the predicted magnitude symbols to the first magnitude component and the second magnitude component of the BVD. The decoder may, for example, determine the number N of magnitude symbols predicted for the first magnitude component of the BVD. XBP and the number of magnitude signs N predicted for the second magnitude component of BVD YBP are equal to the total number N of magnitude symbols predicted for BVD BP Half of (N BP / 2).

[0283] If NXBP With N YBP is equal to, and is the total number N of magnitude symbols predicted by BVD BP is not divisible by 2, the decoder can determine N BP half of the lower or upper limit (e.g., or ). Take N BP A lower limit or an upper limit of half of N may result in an uneven distribution (or division, distribution, assignment) of the amplitude symbols predicted for the first amplitude component and the second amplitude component, respectively. The decoder may determine N YBP Equal to, for example, N BP For example, the decoder may determine to allocate (or otherwise divide, distribute, assign) more of the predicted magnitude symbols to the horizontal component of the BVD, and thus determine N XBP (if corresponding to the horizontal component) equal to N BP / 2 and determine the upper limit of N YBP (if corresponding to the vertical component) equal to N BP For example, the encoder may determine to allocate (or otherwise divide, distribute, assign) more of the predicted magnitude symbols to the vertical component of the BVD, and thus determine N XBP (if corresponding to the vertical component) equal to N BP / 2 and determine the upper limit of N YBP (if corresponding to the horizontal component) equal to N BP The lower limit is / 2.

[0284] If N BP is equal to zero, the decoder can determine N XBP and N YBP Both are equal to zero. For example, the decoder can perform Figure 22 Determine N before any of the steps in the example flowchart 2200 shown. BP Is it equal to zero?

[0285] In addition to or in lieu of one or more magnitude signs of BVD used, for example, in IBC, reference is made herein, for example, to Figure 19-22 The provided disclosure may be used to predict one or more magnitude signs of an MVD used, for example, in inter-frame prediction.For inter-frame prediction, the terms BV, BVP, BVD, and BVD candidate may be replaced by the terms MV, MVP, MVD, and MVD.

[0286] Figure 23 An example computer system is shown in which examples of the present disclosure may be implemented. For example, Figure 23The example computer system 2300 shown in FIG can implement one or more of the methods described herein. For example, Figure 1 、 2 The various devices and / or systems described in 23 and 3) can be implemented in the form of one or more computer systems 2300. In addition, each of the steps of the flowcharts depicted in the present disclosure can be implemented on one or more computer systems 2300.

[0287] Computer system 2300 may include one or more processors, such as processor 2304. Processor 2304 may be a special-purpose processor, a general-purpose processor, a microprocessor, and / or a digital signal processor. Processor 2304 may be connected to a communication infrastructure 2302 (e.g., a bus or network). Computer system 2300 may also include a main memory 2306 (e.g., random access memory (RAM)) and / or a secondary memory 2308.

[0288] Secondary storage 2308 may include a hard drive 2310 and / or a removable storage drive 2312 (e.g., a tape drive, an optical drive, and / or the like). Removable storage drive 2312 may read from and / or write to a removable storage unit 2316. Removable storage unit 2316 may include a magnetic tape, an optical disk, and / or the like. Removable storage unit 2316 may be read from and / or written to by removable storage drive 2312. Removable storage unit 2316 may include a computer-usable storage medium having computer software and / or data stored therein.

[0289] The secondary memory 2308 may include other similar components for allowing computer programs or other instructions to be loaded into the computer system 2300. Such components may include a removable storage unit 2318 and / or an interface 2314. Examples of such components may include a program cartridge and / or cartridge interface (e.g., in a video game device), a removable memory chip (e.g., an erasable programmable read-only memory (EPROM) or a programmable read-only memory (PROM)) and associated sockets, a pen drive and USB port, and / or other removable storage unit 2318 and interface 2314 that may allow software and / or data to be transferred from the removable storage unit 2318 to the computer system 2300.

[0290] The computer system 2300 may also include a communication interface 2320. The communication interface 2320 may allow software and data to be transferred between the computer system 2300 and external devices. Examples of the communication interface 2320 may include a modem, a network interface (e.g., an Ethernet card), a communication port, and the like. The software and / or data transferred via the communication interface 2320 may be in the form of signals, which may be electronic, electromagnetic, optical, and / or other signals capable of being received by the communication interface 2320. The signals may be provided to the communication interface 2320 via a communication path 2322. The communication path 2322 may carry signals and may be implemented using wire or cable, optical fiber, a telephone line, a cellular phone link, an RF link, and / or any other communication channel.

[0291] Computer program medium and / or computer readable medium may be used to refer to tangible storage media, such as removable storage units 2316 and 2318 or a hard disk installed in hard drive 2310. A computer program product may be a component for providing software to computer system 2300. A computer program (which may also be referred to as computer control logic) may be stored in main memory 2306 and / or secondary memory 2308. The computer program may be received via communication interface 2320. Such a computer program, when executed, may enable computer system 2300 to implement the present disclosure as discussed herein. Specifically, the computer program, when executed, may enable processor 2304 to implement the processes of the present disclosure, such as any of the methods described herein. Thus, such a computer program may represent a controller of computer system 2300.

[0292] Figure 24100. Example elements of a computing device that can be used to implement any of the various devices described herein are shown, including, for example, a source device (e.g., 102), an encoder (e.g., 200), a destination device (e.g., 106), a decoder (e.g., 300), and / or any computing device described herein. Computing device 2430 may include one or more processors 2431 that can execute instructions stored in random access memory (RAM) 2433, removable media 2434 (e.g., a universal serial bus (USB) drive, a compact disk (CD) or digital versatile disk (DVD), or a floppy disk drive), or any other desired storage medium. Instructions may also be stored in an attached (or internal) hard drive 2435. Computing device 2430 may also include a security processor (not shown) that can execute instructions of one or more computer programs to monitor processes executing on processor 2431 and any processes requesting access to any hardware and / or software components of computing device 2430 (e.g., ROM 2432, RAM 2433, removable media 2434, hard drive 2435, device controller 2437, network interface 2439, GPS 2441, Bluetooth interface 2442, WiFi interface 2443, etc.). Computing device 2430 may include one or more output devices, such as a display 2436 (e.g., a screen, display device, monitor, television, etc.), and may include one or more output device controllers 2437, such as a video processor. One or more user input devices 2438 may also be present, such as a remote control, keyboard, mouse, touch screen, microphone, etc. Computing device 2430 may also include one or more network interfaces, such as network interface 2439, which may be wired, wireless, or a combination of both. The network interface 2439 may provide an interface for the computing device 2430 to communicate with the network 2440 (e.g., a RAN or any other network). The network interface 2439 may include a modem (e.g., a cable modem), and the external network 2440 may include a communication link, an external network, a home network, a provider's wireless, coaxial cable, fiber optic, or hybrid fiber / coaxial cable distribution system (e.g., a DOCSIS network), or any other desired network. In addition, the computing device 2430 may include a location detection device, such as a global positioning system (GPS) microprocessor 2441, which may be configured to receive and process global positioning signals and determine the geographic location of the computing device 2430, possibly with assistance from an external server and antenna.

[0293] Figure 24The examples in the example may be hardware configurations, but the components shown may also be implemented as software. Modifications may be made to add, remove, combine, divide, etc., the components of the computing device 2430 as needed. In addition, the components may be implemented using basic computing devices and components, and any of the other computing devices and components described herein may be implemented using the same components (e.g., processor 2431, ROM storage device 2432, display 2436, etc.). For example, the various components described herein may be implemented using a computing device having components such as a processor that executes computer-executable instructions stored on a computer-readable medium, such as a processor. Figure 24 Some or all of the entities described herein may be software-based and may coexist on a common physical platform (e.g., the requesting entity may be a separate software process and program from the related entities, both of which may be executed as software on a common computing device).

[0294] Figure 25A Example test results 2500a associated with the disclosure herein are shown. Figure 25B Example test results 2500b associated with the disclosure herein are shown. Figure 25A The example test results 2500a in show that the disclosure provided herein can achieve increased gain by prioritizing the prediction of the most significant symbol of the BVD magnitude component over the least significant symbol of the BVD magnitude component. Figure 25B The example test results 2500b in show that the disclosure provided herein can achieve further increased gains through faster encoding and / or decoding by prioritizing the prediction of the most significant symbols of an amplitude component of the BVD (e.g., a horizontal amplitude component) having relatively more most significant symbols compared to other amplitude components of the BVD (e.g., a vertical amplitude component).

[0295] exist Figure 25A and Figure 25B In , the example symbols of the magnitude components are referred to as "bins," and the most significant symbol and the least significant symbol are referred to as the most significant bin (MSB) or the least significant bin (LSB), respectively. Figure 25A and Figure 25B As shown, the bin significance increases from right to left, where the MSB of the bin sequence is the leftmost bin and the LSB of the bin sequence is the rightmost bin. Figure 25A and Figure 25B , an example binning sequence 2502 for the horizontal magnitude component and an example binning sequence 2504 for the vertical magnitude component are shown. The example binning sequence 2502 for the horizontal component includes five bins (e.g., {h1=2 4 ,h2=2 3 ,h3=2 2 ,h4=21 ,h5=2 0}), and the example bin sequence 2504 includes three bins (e.g., {v1=2 2 ,v2=2 1 ,v3=2 0}).

[0296] Figure 25A and Figure 25B Also shown are different orderings of the predictions for the bins of binning sequences 2502 and 2504. Figure 25A , for example and as disclosed herein, the prediction order 2506a prioritizes predictions of the respective MSBs of both the bin sequence 2502 for the horizontal magnitude component and the bin sequence 2504 for the vertical magnitude component. Thus, the example prediction order 2506a orders predictions from the most significant bin to the least significant bin and alternates between predictions of the horizontal magnitude component and the vertical magnitude component (e.g., {h1=2 4 ,v1=2 2 ,h2=2 3 ,v2=2 1 ,h3=2 2 ,v3=2 0 ,h4=2 1 ,h5=2 0}). Thus, the example test results 2500a demonstrate that gains can be achieved by prioritizing the prediction of the corresponding MSBs of the BVD magnitude components. Figure 25B In, for example and as disclosed herein, prediction order 2506b prioritizes prediction of the MSB of the magnitude component with the greater MSB (the larger of the two magnitude components). Figure 25B , for example, the larger magnitude component with more MSBs is the horizontal magnitude component, which is represented by the five-bin sequence 2502 (compared to the three-bin sequence 2504 of the vertical magnitude component). Thus, the example prediction order 2506b starts with the MSB of the horizontal magnitude component and then alternates between predictions for the horizontal and vertical magnitude components (e.g., {h1=2 4 ,h2=2 3 ,h3=2 2 ,v1=2 2 ,h4=2 1 ,v2=2 1 ,h5=2 0 ,v3=2 0}). Thus, example test results 2500b indicate that further gains can be achieved by prioritizing the prediction of the MSBs of magnitude components with more MSBs.

[0297] Figure 25AThe example test results shown in 2500a and Figure 25B The example test results 2500b shown in FIG were obtained using Common Test Conditions (CTC) with contributions from the Joint Video Exploration Team (JVET). Figure 25A and Figure 25B The CTC of the example results in are identified as eight video sequences grouped into two classes, class F and class TGM (text and graphics with motion), based on the type of content in the video sequences. The class A sequences used include one camera capture video sequence, one video game video sequence, and two screen content sequences (using spatial high definition (HD) resolutions of 720p and 1080p). The four TGM class sequences used include screen capture content from a computer screen containing highly textured images and motion graphics at 1080p resolution. The encoder performance can be evaluated using a metric that can be called Bjontegaard Delta Bit Rate (BD-Rate), which indicates the percentage of bit rate that can be achieved by introducing video encoding / decoding techniques into the Video Encoder / Decoder Reference Model ECM (Enhanced Compression Model) while maintaining the same quality as measured by an objective metric. The BD-Rate can be reported for three independent components of a video sequence, such as the luminance component (Y) and the two chrominance components (U and V). A negative (e.g., less than zero) value of BD-Rate may indicate that the bit rate of the encoded bitstream is reduced compared to the bit rate of the ECM model. Thus, in cases where a negative BD-Rate value is obtained or otherwise observed, the proposed video encoding / decoding technique may be considered more efficient than the ECM model due to the gained gain. For example, new versions of the encoder / decoder model may be periodically released by JVET that include video encoding / decoding techniques that have been accepted as part of a hypothetical future standard. Figure 25A The example test results shown in 2500a and Figure 25B Example test results shown in 2500b.

[0298] In the following, various features will be highlighted in a group of numbered clauses or paragraphs. These features should not be interpreted as limitations on the present invention or inventive concept, but simply as a highlight of certain features described herein, without implying a particular order of importance or relevance of such features.

[0299] Clause 1. A method comprising determining a number of symbols predicted for a first magnitude component of a block vector difference (BVD) associated with decoding of a current block based on a total number of symbols predicted for both the first magnitude component and the second magnitude component of the BVD.

[0300] Clause 2. A method according to clause 1, further comprising entropy decoding an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor associated with the current block based on the number of symbols predicted for the first magnitude component.

[0301] Clause 3. The method of any of clauses 1 to 2, further comprising determining a value of a most significant symbol of the first magnitude component of the BVD based on the value of the most significant symbol of the first magnitude component of the BVD predictor and the indication.

[0302] Clause 4. The method of any of clauses 1 to 3, wherein the one or more symbols predicted for the first magnitude component of the BVD comprise one or more most significant symbols of a suffix of the codeword for the first magnitude component of the BVD.

[0303] Clause 5. The method of any one of clauses 1 to 4, wherein the codeword is a Golomb codeword.

[0304] Clause 6. A method according to any one of clauses 1 to 5, wherein determining the number of symbols predicted for the first amplitude component is further based on whether the number of symbols available for prediction in the first amplitude component of the BVD is greater than the number of symbols available for prediction in the second amplitude component of the BVD.

[0305] Clause 7. A method according to any one of clauses 1 to 5, wherein determining the number of symbols predicted for the first amplitude component is further based on whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD.

[0306] Clause 8. A method according to any one of clauses 1 to 5, wherein determining the number of symbols predicted for the first amplitude component is further based on the sum of: half of the total number of symbols predicted for both the first amplitude component and the second amplitude component; and the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD.

[0307] Clause 9. The method of any of clauses 1 to 5, further comprising determining a number of symbols available for prediction in the first magnitude component of the BVD based on a number of symbols of a prefix of a codeword for the first magnitude component of the BVD.

[0308] Clause 10. A method according to any one of clauses 1 to 9, further comprising entropy decoding a second indication of whether the value of the next most significant symbol of the first amplitude component of the BVD matches the value of the next most significant symbol of the first amplitude component of the BVD predictor based on the number of symbols predicted for the first amplitude component; and determining the value of the next most significant symbol of the first amplitude component of the BVD based on the value of the next most significant symbol of the first amplitude component of the BVD predictor and the second indication.

[0309] Clause 11. A method according to any one of clauses 1 to 10, further comprising determining the number of symbols predicted for the second amplitude component of the BVD based on the number of symbols predicted for the first amplitude component; entropy decoding an indication of whether the value of the most significant symbol of the second amplitude component of the BVD matches the value of the most significant symbol of the second amplitude component of the BVD predictor based on the number of symbols predicted for the second amplitude component of the BVD; and determining the value of the most significant symbol of the second amplitude component of the BVD based on the value of the most significant symbol of the second amplitude component of the BVD predictor and the indication.

[0310] Clause 12. The method of any one of clauses 1 to 11, wherein the first magnitude component of the BVD is a horizontal component of the BVD and the second magnitude component of the BVD is a vertical component of the BVD.

[0311] Clause 13. The method of any one of clauses 1 to 11, wherein the first magnitude component of the BVD is a vertical component of the BVD and the second magnitude component of the BVD is a horizontal component of the BVD.

[0312] Clause 14. The method of any one of clauses 1 to 13, further comprising determining a block vector (BV) based on a block vector predictor (BVP) and a BVD.

[0313] Clause 15. A computing device comprising one or more processors and memory storing instructions that, when executed, cause the computing device to perform the method of any one of clauses 1 to 14.

[0314] Clause 16. A system comprising: a first computing device configured to perform a method according to any one of clauses 1 to 14; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol of the first amplitude component of the BVD matches the value of the most significant symbol of the first amplitude component of the BVD predictor.

[0315] Clause 17. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 1 to 14.

[0316] Clause 18. A method comprising determining a number of symbols predicted for a magnitude component of a block vector difference (BVD) associated with decoding of a current block based on a total number of symbols predicted for the BVD.

[0317] Clause 19. A method according to clause 18, further comprising entropy decoding an indication of whether the value of the most significant symbol of the magnitude component of the BVD matches the value of the most significant symbol of the magnitude component of the BVD predictor associated with the current block based on the number of symbols predicted for the first magnitude component.

[0318] Clause 20. The method of any of clauses 18 to 19, further comprising determining a value of a most significant symbol of the magnitude component of the BVD based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication.

[0319] Clause 21. The method of any of clauses 18 to 20, wherein the one or more symbols predicted for the magnitude component of the BVD comprise one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD.

[0320] Clause 22. A method according to any one of clauses 18 to 21, wherein the amplitude component is a first amplitude component of a BVD, and the determination of the number of symbols predicted for the first amplitude component is further based on whether the number of symbols available for prediction in the first amplitude component of the BVD is greater than the number of symbols available for prediction in the second amplitude component of the BVD, and whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD.

[0321] Clause 23. A method according to any one of clauses 18 to 22, further comprising entropy decoding a second indication of whether the value of the next most significant symbol of the amplitude component matches the value of the next most significant symbol of the amplitude component of the BVD predictor based on the number of symbols predicted for the first amplitude component; and determining the value of the next most significant symbol of the amplitude component of the BVD based on the value of the next most significant symbol of the amplitude component of the BVD predictor and the second indication.

[0322] Clause 24. The method of any one of clauses 18 to 23, further comprising determining a block vector (BV) based on a block vector predictor (BVP) and a BVD.

[0323] Clause 25. A computing device comprising one or more processors and memory storing instructions that, when executed, cause the computing device to perform the method of any one of clauses 18 to 24.

[0324] Clause 26. A system comprising: a first computing device configured to perform a method according to any one of clauses 18 to 24; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol of the first amplitude component of the BVD matches the value of the most significant symbol of the first amplitude component of the BVD predictor.

[0325] Clause 27. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 18 to 24.

[0326] Clause 28. A method comprising determining, based on a total number of symbols predicted for a block vector difference (BVD) associated with decoding of a current block, a number of most significant symbols predicted for a magnitude component of the BVD.

[0327] Clause 29. A method according to clause 28, further comprising, for each most significant symbol of the number of symbols predicted for the most significant symbol of the first amplitude component of the amplitude component, entropy decoding an indication of whether the value of the most significant symbol matches the value of the most significant symbol of the amplitude component of the BVD predictor associated with the current block; and determining the value of the most significant symbol of the amplitude component of the BVD based on the value of the most significant symbol of the amplitude component of the BVD predictor and the indication.

[0328] Clause 30. The method of any one of clauses 28 to 29, further comprising determining a block vector (BV) based on a block vector predictor (BVP) and a BVD.

[0329] Clause 31. The method of any of clauses 28 to 30, wherein the one or more symbols predicted for the magnitude component of the BVD comprise one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD.

[0330] Clause 32. A method according to any one of clauses 28 to 31, wherein the amplitude component is a first amplitude component of a BVD, and the determination of the number of symbols predicted for the first amplitude component is further based on whether the number of symbols available for prediction in the first amplitude component of the BVD is greater than the number of symbols available for prediction in the second amplitude component of the BVD, and whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD.

[0331] Clause 33. A method according to any one of clauses 28 to 32, wherein the amplitude component of the BVD is a first amplitude component of the BVD, and the determination of the number of symbols predicted for the first amplitude component is further based on the sum of: half of the total number of symbols predicted for both the first amplitude component and the second amplitude component; and the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD.

[0332] Clause 34. A method according to any one of clauses 28 to 32, wherein the amplitude component of the BVD is a first amplitude component of the BVD, and the method further comprises: determining the number of symbols predicted for the second amplitude component of the BVD based on the number of symbols predicted for the first amplitude component; entropy decoding an indication of whether the value of the most significant symbol of the second amplitude component of the BVD matches the value of the most significant symbol of the second amplitude component of the BVD predictor based on the number of symbols predicted for the second amplitude component of the BVD; and determining the value of the most significant symbol of the second amplitude component of the BVD based on the value of the most significant symbol of the second amplitude component of the BVD predictor and the indication.

[0333] Clause 35. A computing device comprising one or more processors and memory storing instructions that, when executed, cause the computing device to perform the method of any one of clauses 28 to 34.

[0334] Clause 36. A system comprising: a first computing device configured to perform a method according to any one of clauses 28 to 34; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol of the first amplitude component of the BVD matches the value of the most significant symbol of the first amplitude component of the BVD predictor.

[0335] Clause 37. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 28 to 34.

[0336] A computing device may perform a method comprising a plurality of operations. A number of symbols may be predicted for a first magnitude component of a block vector difference (BVD) associated with decoding of a current block. The number of symbols may be predicted based on the total number of symbols predicted for both the first and second magnitude components of the BVD. An indication of whether a value of a most significant symbol of the first magnitude component of the BVD matches a value of a most significant symbol of a first magnitude component of a BVD predictor associated with the current block may be entropy decoded. An indication of whether a value of a most significant symbol of the first magnitude component of the BVD matches a value of a most significant symbol of the first magnitude component of the BVD predictor may be entropy decoded based on the number of symbols predicted for the first magnitude component. A value of the most significant symbol of the first magnitude component of the BVD may be determined. The value of the most significant symbol may be determined based on the value of the most significant symbol of the first magnitude component of the BVD predictor and the indication. The one or more symbols predicted for the first magnitude component of the BVD may include one or more most significant symbols of a suffix of a codeword for the first magnitude component of the BVD. The codeword may be a Golomb codeword. Determining the number of symbols predicted for the first amplitude component may be further based on whether the number of symbols available for prediction in the first amplitude component of the BVD is greater than the number of symbols available for prediction in the second amplitude component of the BVD. Determining the number of symbols predicted for the first amplitude component may be further based on whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD. Determining the number of symbols predicted for the first amplitude component may be further based on the sum of: half the total number of symbols predicted for both the first amplitude component and the second amplitude component; and the difference between the number of symbols available for prediction in the first amplitude component of the BVD and the number of symbols available for prediction in the second amplitude component of the BVD. The number of symbols available for prediction in the first amplitude component of the BVD may be determined. The number of symbols available for prediction in the first amplitude component of the BVD may be determined based on the number of symbols in a prefix of a codeword for the first amplitude component of the BVD. A second indication of whether the value of the next most significant symbol of the first magnitude component of the BVD matches the value of the next most significant symbol of the first magnitude component of the BVD predictor. The second indication may be entropy decoded based on the number of symbols predicted for the first magnitude component. The value of the next most significant symbol of the first magnitude component of the BVD may be determined. The value of the next most significant symbol of the first magnitude component of the BVD may be determined based on the value of the next most significant symbol of the first magnitude component of the BVD predictor and the second indication. The number of symbols predicted for the second magnitude component of the BVD may be determined. The number of symbols predicted for the second magnitude component of the BVD may be determined based on the number of symbols predicted for the first magnitude component.A determination may be made as to whether a value of a most significant symbol of a second magnitude component of the BVD matches an indication of a value of a most significant symbol of a second magnitude component of a BVD predictor, and the indication may be entropy decoded. An indication of whether a value of a most significant symbol of the second magnitude component of the BVD matches a value of a most significant symbol of a second magnitude component of the BVD predictor may be determined based on a number of symbols predicted for the second magnitude component of the BVD, and the indication may be entropy decoded. The value of the most significant symbol of the second magnitude component of the BVD may be determined. The value of the most significant symbol of the second magnitude component of the BVD may be determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication. The first magnitude component of the BVD may be a horizontal component of the BVD, and the second magnitude component of the BVD may be a vertical component of the BVD. The first magnitude component of the BVD may be a vertical component of the BVD, and the second magnitude component of the BVD may be a horizontal component of the BVD. A computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. A system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements to be performed.

[0337] A computing device may perform a method comprising a plurality of operations. A number of symbols predicted for a magnitude component of a block vector difference (BVD) associated with decoding of a current block may be determined. The number of symbols predicted for the magnitude component of the BVD may be determined based on the total number of symbols predicted for the BVD. An indication of whether a value of a most significant symbol of the magnitude component of the BVD matches a value of a most significant symbol of a magnitude component of a BVD predictor associated with the current block may be entropy decoded. An indication of whether a value of a most significant symbol of the magnitude component of the BVD matches a value of a most significant symbol of a magnitude component of the BVD predictor may be entropy decoded based on the number of symbols predicted for a first magnitude component. A value of the most significant symbol of the magnitude component of the BVD may be determined. The value of the most significant symbol of the magnitude component of the BVD may be determined based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication. The one or more symbols predicted for the magnitude component of the BVD may include one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD. The magnitude component may be a first magnitude component of a BVD. Determining the number of symbols predicted for the first magnitude component may be further based on whether the number of symbols available for prediction in the first magnitude component of the BVD is greater than the number of symbols available for prediction in the second magnitude component of the BVD, and whether the total number of symbols predicted for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols available for prediction in the first magnitude component of the BVD and the number of symbols available for prediction in the second magnitude component of the BVD. A second indication of whether the value of the next most significant symbol of the magnitude component matches the value of the next most significant symbol of the magnitude component of the BVD predictor may be entropy decoded. A second indication of whether the value of the next most significant symbol of the magnitude component matches the value of the next most significant symbol of the magnitude component of the BVD predictor may be entropy decoded based on the number of symbols predicted for the first magnitude component. A value of the next most significant symbol of the magnitude component of the BVD may be determined. The value of the next most significant symbol of the magnitude component of the BVD may be determined based on the value of the next most significant symbol of the magnitude component of the BVD predictor and the second indication. A block vector (BV) may be determined. The BV may be determined based on a block vector predictor (BVP) and a BVD. A computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. A system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol of the magnitude component of the BVD matches the value of the most significant symbol of the magnitude component of the BVD predictor.A computer-readable medium may store instructions that, when executed, cause the described methods to be performed, additional operations, and / or additional elements to be included.

[0338] A computing device may perform a method comprising a plurality of operations. A number of symbols predicted for a magnitude component of a block vector difference (BVD) associated with decoding of a current block may be determined. A number of most significant symbols predicted for the magnitude component of the BVD may be determined based on the total number of symbols predicted for the BVD. For each most significant symbol of the number of symbols predicted for the most significant symbol of a first magnitude component of the magnitude components, an indication of whether the value of the most significant symbol matches the value of the most significant symbol of a magnitude component of a BVD predictor associated with the current block may be entropy encoded. A value of the most significant symbol of the magnitude component of the BVD may be determined. A value of the most significant symbol of the magnitude component of the BVD may be determined based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication. A block vector (BV) based on a block vector predictor (BVP) and the BVD may be determined. The one or more symbols predicted for the magnitude component of the BVD may include one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD. The magnitude component may be the first magnitude component of the BVD. Determining the number of symbols predicted for the first magnitude component may be further based on whether the number of symbols available for prediction in the first magnitude component of the BVD is greater than the number of symbols available for prediction in the second magnitude component of the BVD, and whether the total number of symbols predicted for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols available for prediction in the first magnitude component of the BVD and the number of symbols available for prediction in the second magnitude component of the BVD. Determining the number of symbols predicted for the first magnitude component may be further based on the sum of: half the total number of symbols predicted for both the first magnitude component and the second magnitude component; and the difference between the number of symbols available for prediction in the first magnitude component of the BVD and the number of symbols available for prediction in the second magnitude component of the BVD. The number of symbols predicted for the second magnitude component of the BVD may be determined. The number of symbols predicted for the second magnitude component of the BVD may be determined based on the number of symbols predicted for the first magnitude component. An indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor may be entropy decoded. An indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor may be entropy decoded based on the number of symbols predicted for the second magnitude component of the BVD. A value of the most significant symbol of the second magnitude component of the BVD may be determined. The value of the most significant symbol of the second magnitude component of the BVD may be determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication. A computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements.A system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to entropy encode an indication of whether the value of the most significant symbol matches the value of the most significant symbol of the magnitude component of the BVD predictor associated with the current block. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements to be performed.

[0339] A computing device may perform a method comprising a plurality of operations. The number N of most significant symbols to be predicted in a first magnitude component of a block vector difference (BVD) may be determined. XBP The number N of symbols that can be predicted based on both the first magnitude component of the BVD and the second magnitude component of the BVD BP To determine the number N XBP For the N to be predicted in the first amplitude component of BVD XBP Each of the N most significant symbols may entropy encode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. XBP The N most significant symbols may be the suffix of the codeword representing the first magnitude component of the BVD XBP The most significant symbol. The codeword is a Golomb codeword. The number of symbols N that can be used for prediction in the first amplitude component of the BVD is AXB may be determined to be greater than the number N of symbols available for prediction in the second magnitude component of the BVD AYB . Determine the number N XBP It may include a response to the number N AXB Greater than the number N AYB , the number N is determined based on the sum of XBP :N AXB -N AYB ; and N BP / 2 or N BP / 2 lower or upper limit. Determine the number N XBP may include responding to the number N AXB Greater than the number N AYB And the number N BP Greater than N AXB -N AYB , determine the number N based on the sum of XBP :N AXB -N AYB ; and N BP / 2 or N BP The number N of the most significant symbols to be predicted in the second magnitude component of the BVD is YBPCan be determined to be equal to N BP / 2 or N BP / 2 lower or upper bound. Can be based on the number N AXB Greater than the number N AYB The number N of the most significant symbols to be predicted in the second amplitude component of BVD is YBP Determined to be equal to N BP / 2 or N BP / 2 lower limit or upper limit. For the N to be predicted in the second amplitude component of BVD YBP Each of the most significant symbols may entropy encode an indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor. AXB Greater than the number N AYB The number of symbols N in the first magnitude component of the BVD that can be used for prediction may include determining that the number of symbols in the prefix of the codeword representing the first magnitude component of the BVD is greater than the number of symbols in the prefix of the codeword representing the second magnitude component of the BVD. AXB can be determined to be equal to the number N of symbols available for prediction in the second magnitude component of the BVD AYB . Determine the number N XBP It may include determining the number N XBP Equal to N BP / 2 or N BP / 2 lower or upper bound. Based on the number N AXB Equal to the number N AYB , we can determine the number N XBP Equal to N BP / 2 or N BP The number N of the most significant symbols to be predicted in the second magnitude component of the BVD is YBP Can be determined to be equal to N BP / 2 or N BP / 2 lower or upper bound. Based on the number N AXB Equal to the number N AYB , the number N of the most significant symbols to be predicted in the second magnitude component of BVD YBP Can be determined to be equal to N BP / 2 or N BP / 2 lower limit or upper limit. For the N to be predicted in the second amplitude component of BVD YBP Each of the most significant symbols may entropy encode an indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor. XBP It may include a response to the number N BP Equal to zero and determined: the number N XBPis equal to zero; and the number N of most significant symbols to be predicted in the second magnitude component of the BVD YBP The number of symbols N that can be used for prediction in the first magnitude component of the BVD is equal to zero. AXB The value of the most significant symbol of the first magnitude component of the BVD may be determined based on the number of symbols of the suffix of the codeword representing the first magnitude component of the BVD minus the given number of symbols. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. A system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to decode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements to be performed.

[0340] A computing device may perform a method comprising a plurality of operations. The number N of symbols that may be predicted based on both a first magnitude component of a cross-block vector difference (BVD) and a second magnitude component of the BVD. BP Determine the number N of most significant symbols of the first magnitude component of the predicted BVD XBP For the predicted first magnitude component of BVD, N XBP For each of the most significant symbols of the BVD, an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor may be entropy decoded. The value of the most significant symbol of the first magnitude component of the BVD may be determined based on the value of the most significant symbol of the first magnitude component of the BVD predictor and the indication. XBP The N most significant symbols may be the suffix of the codeword representing the first magnitude component of the BVD XBP The most significant symbols. The codeword may be a Golomb codeword. The number of symbols N that have been used for prediction in the first magnitude component of the BVD AXB may be determined to be greater than the number N of symbols in the second magnitude component of the BVD that were once available for prediction. AYB . Determine the number N XBP may include responding to the number N AXB Greater than the number N AYB , determine the number N based on the sum of XBP :N AXB -N AYB ; and N BP / 2 or N BP / 2 lower or upper bound. Determine the number NXBP It may include a response to the number N AXB Greater than the number N AYB and the number N BP Greater than N AXB -N AYB , determine the number N based on the sum of XBP :N AXB -N AYB ; and N BP / 2 or N BP The number N of the most significant symbols of the second magnitude component of the predicted BVD is YBP Can be determined to be equal to N BP / 2 or N BP / 2 lower or upper bound. Based on the number N AXB Greater than the number N AYB , the number N of the most significant symbols of the second magnitude component of the predicted BVD YBP Can be determined to be equal to N BP / 2 or N BP / 2 lower or upper bound. For the second magnitude component of the predicted BVD, N YBP For each of the most significant symbols, an indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor may be entropy decoded; and the value of the most significant symbol of the second magnitude component of the BVD may be determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication. Determine the number N AXB Greater than the number N AYB The number of symbols N that were once available for prediction in the first magnitude component of the BVD may include determining that the number of symbols in the prefix of the codeword representing the first magnitude component of the BVD is greater than the number of symbols in the prefix of the codeword representing the second magnitude component of the BVD. AXB can be determined to be equal to the number N of symbols in the second magnitude component of the BVD that were once available for prediction AYB . Determine the number N XBP It can include a number based on N AXB Equal to the number N AYB , determine the number N XBP Equal to N BP / 2 or N BP / 2 lower limit or upper limit. The method according to technical solution 10 further includes: AXB Equal to the number N AYB , determine the number N of the most significant symbols to be predicted in the second magnitude component of the BVD YBP Equal to N BP / 2 or N BP / 2 lower limit or upper limit. For the N to be predicted in the second amplitude component of BVD YBP For each of the most significant symbols, an indication of whether the value of the most significant symbol of the second magnitude component of the BVD matches the value of the most significant symbol of the second magnitude component of the BVD predictor may be entropy decoded; and the value of the most significant symbol of the second magnitude component of the BVD may be determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication. Determine the number N XBP It may include a response to the number N BP Equal to zero and determined: the number N XBP is equal to zero; and the number N of the most significant symbols ever to be predicted in the second magnitude component of the BVD YBP The number of symbols N that have been used for prediction in the first magnitude component of the BVD is equal to zero. AXB The value of the most significant symbol of the first magnitude component of the BVD may be determined based on the number of symbols of the suffix of the codeword representing the first magnitude component of the BVD minus the given number of symbols. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. A system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to encode an indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements to be performed.

[0341] One or more examples described herein can be depicted as a process that can be described as a flow chart, a flow diagram, a data flow diagram, a structure diagram, and / or a block diagram. Although a flow chart can describe an operation as a continuous process, one or more of the operations can be performed in parallel or simultaneously. The order of the operations shown can be rearranged. A process can be terminated when its operation is completed, but can have additional steps not shown in the figure. A process can correspond to a method, a function, a program, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination can correspond to the function returning to the calling function or the main function.

[0342] The operations described herein can be implemented by hardware, software, firmware, middleware, microcode, hardware description language, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments for performing the necessary tasks (e.g., computer program products) can be stored in a computer-readable or machine-readable medium. A processor can perform the necessary tasks. Features of the present disclosure can be implemented in hardware using, for example, hardware components such as application specific integrated circuits (ASICs) and gate arrays. It will also be apparent to those skilled in the art to implement a hardware state machine to perform the functions described herein.

[0343] One or more features described herein may be implemented in computer-usable data and / or computer-executable instructions executed by one or more computers or other devices, such as in one or more program modules. Generally speaking, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types when executed by a processor or other data processing device in a computer. Computer-executable instructions may be stored on one or more computer-readable media, such as a hard disk, an optical disk, a removable storage medium, a solid-state memory, RAM, etc. The functions of the program modules may be combined or distributed as needed. The functions may be implemented in whole or in part in firmware or hardware equivalents, such as integrated circuits, field programmable gate arrays (FPGAs), etc. Specific data structures may be used to more efficiently implement one or more features described herein, and such data structures are contemplated as being within the scope of the computer-executable instructions and computer-usable data described herein. Computer-readable media may include, but are not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, accommodating, or carrying instructions and / or data. Computer-readable media may include non-transient media in which data may be stored and does not include carrier waves and / or transient electronic signals transmitted wirelessly or via wired connections. The example of non-transitory medium may include, but is not limited to, disk or tape, optical storage medium, such as compact disc (CD) or digital versatile disc (DVD), flash memory, memory or memory device. Code and / or machine executable instructions may be stored on the computer readable medium, and the code and / or machine executable instructions may represent any combination of program, function, subroutine, program, routine, subroutine, module, software package, category or instruction, data structure or program statement. Code segment can be coupled to another code segment or hardware circuit by transmitting and / or receiving information, data, independent variable, parameter or memory content. Information, independent variable, parameter, data etc. can be transmitted, forwarded or transmitted via any suitable mode including memory sharing, message passing, token passing, network transmission etc.

[0344] A non-transitory, tangible computer-readable medium may include instructions executable by one or more processors configured to cause the operations described herein. An article of manufacture may include a non-transitory, tangible computer-readable machine-accessible medium having encoded thereon instructions for enabling programmable hardware to enable a device (e.g., an encoder, decoder, transmitter, receiver, etc.) to enable the operations described herein. A device or one or more devices in a system may include one or more processors, memories, interfaces, and / or the like.

[0345] The communication described herein can use any number of messages, information elements, fields, parameters, values, instructions, information, bits and / or the like to determine, generate, send and / or receive. Although any one of the terms / phrases message, information element, field, parameter, value, instruction, information, bit and / or the like may be used herein to describe one or more examples, it will be understood by those skilled in the art that any one or more of these terms may be used to perform such communication, including other such terms. For example, one or more parameters, fields and / or information elements (IEs) may include one or more information objects, values and / or any other information. An information object may include one or more other objects. At least some (or all) parameters, fields, IEs, etc. may be available and interchangeable according to context. If a meaning or definition is given, such meaning or definition shall prevail.

[0346] One or more elements in the examples described herein can be implemented as modules. A module can be an element that performs a limited function and / or has a limited interface that is interfaced with other elements. A module can be implemented in hardware, software in combination with hardware, firmware, wetware (for example, hardware with biological elements) or a combination thereof, all of which may be behaviorally equivalent. For example, a module can be implemented as a software routine written in a computer language, which is configured to be executed by a physical computer (such as C, C++, Fortran, Java, Basic, Matlab, etc.) or a modeling / simulation program (such as Simulink, Stateflow, GNU Octave or LabVIEW MathScript). Additionally or alternatively, a module can be implemented using physical hardware in combination with discrete or programmable analog, digital and / or quantum hardware. Examples of programmable hardware can include: a computer, a microcontroller, a microprocessor, an application specific integrated circuit (ASIC); a field programmable gate array (FPGA); and / or a complex programmable logic device (CPLD). A computer, a microcontroller and / or a microprocessor can be programmed using languages such as assembly, C, C++, etc. FPGAs, ASICs, and CPLDs are typically programmed using a hardware description language (HDL), such as VHSIC Hardware Description Language (VHDL) or Verilog, which configures the connections between internal hardware modules with relatively small functions on the programmable device. The above-mentioned techniques can be used in combination to achieve the results of functional modules.

[0347] One or more of the operations described herein may be conditional. For example, if certain criteria are met, such as in a computing device, a communication device, an encoder, a decoder, a network, combinations thereof, and / or the like, then one or more operations may be performed. Example criteria may be based on one or more conditions, such as device configuration, traffic load, initial system settings, packet size, traffic characteristics, combinations thereof, and / or the like. If the one or more criteria are met, various examples may be used. Any portion of the examples described herein may be implemented in any order and based on any conditions.

[0348] Although examples have been described above, features and / or steps of those examples may be combined, divided, omitted, rearranged, modified, and / or augmented in any desired manner. Various changes, modifications, and improvements will readily occur to those skilled in the art. Although not expressly set forth herein, such changes, modifications, and improvements are intended to be part of this specification and are intended to be within the spirit and scope of the description herein. Therefore, the foregoing description is illustrative only and not restrictive.

Claims

1. A method comprising: determining a number of symbols predicted for a first magnitude component of a block vector difference (BVD) associated with decoding of a current block based on a total number of symbols predicted for both the first magnitude component and the second magnitude component of the BVD; entropy decoding an indication of whether a value of a most significant symbol of the first magnitude component of the BVD matches a value of a most significant symbol of a first magnitude component of a BVD predictor associated with the current block based on the number of symbols predicted for the first magnitude component; as well as The value of the most significant symbol of the first magnitude component of the BVD is determined based on the value of the most significant symbol of the first magnitude component of the BVD predictor and the indication.

2. The method of claim 1, wherein the one or more symbols predicted for the first magnitude component of the BVD include one or more most significant symbols of a suffix of a codeword for the first magnitude component of the BVD. The method of claim 2 , wherein the codeword is a Golomb codeword.

4. The method according to any one of claims 1 to 3, wherein the determination of the number of symbols predicted for the first amplitude component is further based on whether the number of symbols that can be used for prediction in the first amplitude component of the BVD is greater than the number of symbols that can be used for prediction in the second amplitude component of the BVD.

5. The method of claim 1 , wherein the determining the number of symbols predicted for the first magnitude component is further based on whether the total number of symbols predicted for both the first magnitude component and the second magnitude component is greater than a difference between: the number of symbols in the first amplitude component of the BVD that can be used for prediction; and The number of symbols in the second magnitude component of the BVD that can be used for prediction.

6. The method of any one of claims 1 to 3, wherein said determining said number of symbols predicted for said first magnitude component is further based on the sum of: half the total number of symbols predicted for both the first magnitude component and the second magnitude component; and The difference between: the number of symbols in the first amplitude component of the BVD that can be used for prediction; and The number of symbols in the second magnitude component of the BVD that can be used for prediction.

7. The method according to any one of claims 1 to 3, further comprising: The number of symbols in the first magnitude component of the BVD that can be used for prediction is determined based on the number of symbols of a prefix of a codeword for the first magnitude component of the BVD.

8. The method according to any one of claims 1 to 7, further comprising: entropy decoding a second indication of whether a value of a next most significant symbol of the first magnitude component of the BVD matches a value of a next most significant symbol of the first magnitude component of the BVD predictor based on the number of symbols predicted for the first magnitude component; as well as The value of the next most significant symbol of the first magnitude component of the BVD is determined based on the value of the next most significant symbol of the first magnitude component of the BVD predictor and the second indication.

9. The method according to any one of claims 1 to 8, further comprising: determining a number of symbols predicted for the second magnitude component of the BVD based on the number of symbols predicted for the first magnitude component; entropy decoding an indication of whether a value of a most significant symbol of the second magnitude component of the BVD matches a value of a most significant symbol of a second magnitude component of the BVD predictor based on the number of symbols predicted for the second magnitude component of the BVD; as well as The value of the most significant symbol of the second magnitude component of the BVD is determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication.

10. The method of any one of claims 1 to 9, wherein the first magnitude component of the BVD is a horizontal component of the BVD, and the second magnitude component of the BVD is a vertical component of the BVD.

11. The method of any one of claims 1 to 9, wherein the first magnitude component of the BVD is a vertical component of the BVD, and the second magnitude component of the BVD is a horizontal component of the BVD.

12. The method according to any one of claims 1 to 11, further comprising determining a block vector (BV) based on a block vector predictor (BVP) and the BVD.

13. A computing device comprising: one or more processors; as well as A memory storing instructions which, when executed, cause the computing device to perform the method according to any one of claims 1 to 12.

14. A system comprising: a first computing device configured to perform the method according to any one of claims 1 to 12; as well as A second computing device is configured to entropy encode the indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor.

15. A computer readable medium storing instructions which, when executed, cause the method according to any one of claims 1 to 12 to be performed.

16. A method comprising: determining a number of symbols predicted for a magnitude component of a block vector difference (BVD) associated with decoding of a current block based on a total number of symbols predicted for the BVD; entropy decoding an indication of whether a value of a most significant symbol of the magnitude component of the BVD matches a value of a most significant symbol of a magnitude component of a BVD predictor associated with the current block based on the number of symbols predicted for the first magnitude component; as well as The value of the most significant symbol of the magnitude component of the BVD is determined based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication.

17. The method of claim 16, wherein the one or more symbols predicted for the magnitude component of the BVD include one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD.

18. The method of any one of claims 16 to 17, wherein the magnitude component is a first magnitude component of the BVD, and the determining the number of symbols predicted for the first magnitude component is further based on: whether the number of symbols that can be used for prediction in the first amplitude component of the BVD is greater than the number of symbols that can be used for prediction in the second amplitude component of the BVD; and Whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols that can be used for prediction in the first amplitude component of the BVD and the number of symbols that can be used for prediction in the second amplitude component of the BVD.

19. The method according to any one of claims 16 to 18, further comprising: entropy decoding a second indication of whether a value of a next most significant symbol of the magnitude component matches a value of the next most significant symbol of the magnitude component of the BVD predictor based on the number of symbols predicted for the first magnitude component; as well as The value of the next most significant symbol of the magnitude component of the BVD is determined based on the value of the next most significant symbol of the magnitude component of the BVD predictor and the second indication.

20. The method according to any one of claims 16 to 19, further comprising determining a block vector (BV) based on a block vector predictor (BVP) and the BVD.

21. A computing device comprising: one or more processors; as well as A memory storing instructions which, when executed, cause the computing device to perform the method according to any one of claims 16 to 20.

22. A system comprising: a first computing device configured to perform the method according to any one of claims 16 to 20; as well as A second computing device is configured to entropy encode the indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor.

23. A computer readable medium storing instructions which, when executed, cause performance of the method according to any one of claims 16 to 20.

24. A method comprising: determining a number of most significant symbols predicted for a magnitude component of a block vector difference (BVD) associated with decoding of a current block based on a total number of symbols predicted for the BVD; For each most significant symbol of the number of symbols predicted for the first magnitude component most significant symbol of the magnitude components: entropy decoding an indication of whether the value of the most significant symbol matches the value of a most significant symbol of a magnitude component of a BVD predictor associated with the current block; as well as determining the value of the most significant symbol of the magnitude component of the BVD based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication; as well as A block vector (BV) is determined based on a block vector predictor (BVP) and the BVD.

25. The method of claim 24, wherein the one or more symbols predicted for the magnitude component of the BVD include one or more most significant symbols of a suffix of a Golomb codeword for the magnitude component of the BVD.

26. The method of any one of claims 24 to 26, wherein the magnitude component is a first magnitude component of the BVD, and the determining the number of symbols predicted for the first magnitude component is further based on: whether the number of symbols that can be used for prediction in the first amplitude component of the BVD is greater than the number of symbols that can be used for prediction in the second amplitude component of the BVD; and Whether the total number of symbols predicted for both the first amplitude component and the second amplitude component is greater than the difference between the number of symbols that can be used for prediction in the first amplitude component of the BVD and the number of symbols that can be used for prediction in the second amplitude component of the BVD.

27. The method of any one of claims 24 to 26, wherein the magnitude component of the BVD is a first magnitude component of the BVD, and the determining the number of symbols predicted for the first magnitude component is further based on the sum of: half the total number of symbols predicted for both the first magnitude component and the second magnitude component; and The difference between: the number of symbols in the first amplitude component of the BVD that can be used for prediction; and The number of symbols in the second magnitude component of the BVD that can be used for prediction.

28. The method of any one of claims 24 to 26, wherein the magnitude component of the BVD is a first magnitude component of the BVD, and the method further comprises: determining a number of symbols predicted for a second magnitude component of the BVD based on the number of symbols predicted for the first magnitude component; entropy decoding an indication of whether a value of a most significant symbol of the second magnitude component of the BVD matches a value of a most significant symbol of a second magnitude component of the BVD predictor based on the number of symbols predicted for the second magnitude component of the BVD; as well as The value of the most significant symbol of the second magnitude component of the BVD is determined based on the value of the most significant symbol of the second magnitude component of the BVD predictor and the indication.

29. A computing device comprising: one or more processors; as well as A memory storing instructions which, when executed, cause the computing device to perform the method according to any one of claims 24 to 28.

30. A system comprising: a first computing device configured to perform the method according to any one of claims 24 to 28; as well as A second computing device is configured to entropy encode the indication of whether the value of the most significant symbol of the first magnitude component of the BVD matches the value of the most significant symbol of the first magnitude component of the BVD predictor.

31. A computer readable medium storing instructions which, when executed, cause performance of the method according to any one of claims 24 to 28.