Magnitude symbol decisions for encoding and decoding

By limiting the number of symbols for block vector difference magnitude prediction, the method addresses inefficiencies in video encoding and decoding, enhancing compression efficiency and reducing signaling overhead for improved video data storage and transmission.

JP2025533505AActive Publication Date: 2025-10-07COMCAST CABLE COMM LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025517115
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-20
Filing Date
2023-09-20
Publication Date
2025-10-07
Estimated Expiration
2043-09-20

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in efficiently compressing video data due to high signaling overhead in block vector difference prediction, which affects compression efficiency and requires significant resources for storage and transmission.

Method used

Implementing a method to limit the number of symbols used for block vector difference magnitude prediction, based on available symbols, to improve accuracy and reduce signaling overhead, while using predictive coding and decoding techniques to encode and decode blocks within frames.

Benefits of technology

This approach enhances compression efficiency by improving the accuracy of magnitude symbol prediction and reducing the overhead required for signaling, thereby optimizing storage and transmission of video data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025533505000001_ABST
    Figure 2025533505000001_ABST
Patent Text Reader

Abstract

Encoding and / or decoding a block of a video frame may be based on a previously decoded reference block 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 make predictions for symbols of one or more magnitude components of the BVD. The number of symbols used for BVD magnitude prediction may be limited. The limited number of symbols used for prediction may be assigned to one or more of the magnitude components. The assignment of symbols used for BVD magnitude prediction may be based on the total number of symbols used for BVD magnitude prediction and the respective number of symbols available for prediction of each of the magnitude components. Similarly, motion vector difference (MVD) symbols may be predicted.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Patent Application No. 63 / 408,137, filed September 20, 2022. The above-referenced application is incorporated herein by reference in its entirety. [Background technology]

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

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

[0004] Video may include a sequence of frames (pictures) that are displayed consecutively. In predictive coding and decoding, information associated with a block in a frame may be used to encode and / or decode other blocks within the same frame or between frames (e.g., consecutive frames) in a sequence of frames. For example, information associated with a block (e.g., the luma and / or chroma components of the block) may be coded using previously decoded information associated with a reference block in the same frame or a previous frame. The 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 coded or decoded. The BV may be indicated as a function of certain factors, 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 make predictions for symbols of one or more magnitude components of the BVD, e.g., the horizontal magnitude component and the vertical magnitude component. The number of symbols used for BVD magnitude prediction may be limited. The limited number of symbols used for BVD magnitude prediction may be assigned to one or more magnitude components of the BVD. A limited number of symbols may be assigned based on the number of symbols available for prediction in each BVD magnitude component. Assigning a limited number of symbols based on the number of symbols available for prediction may improve the accuracy of magnitude symbol prediction, improve the compression efficiency of prediction, and reduce the overhead required for signaling predictions to a decoder, for example. Similarly, motion vector difference (MVD) symbols may be predicted.

[0005] These and other features and advantages are described in more detail below. [Brief explanation of the drawings]

[0006] Certain features are illustrated by way of example, and not by way of limitation, in the accompanying drawings in which like numerals refer to like elements and in which:

[0007] [Figure 1]1 illustrates an exemplary video encoding / decoding system. [Figure 2] 1 illustrates an exemplary encoder. [Figure 3] 1 illustrates an exemplary decoder. [Figure 4] 1 illustrates an exemplary quadtree division of a coding tree block (CTB). [Figure 5] 5 illustrates an exemplary quadtree corresponding to the exemplary quadtree division of the CTB of FIG. 4. [Figure 6] 1 illustrates exemplary binary and ternary tree partitioning. [Figure 7] An example of a combined quadtree and multitype tree partitioning of CTB is shown. [Figure 8] The tree corresponding to the combination of the CTB quadtree and multitype tree partitioning shown in Fig. 7 is shown. [Figure 9] 10 illustrates an exemplary set of reference samples determined for intra prediction of a current block. [Figure 10A] 1 illustrates exemplary intra-prediction modes. [Figure 10B] 1 illustrates exemplary intra-prediction modes. [Figure 11] The current block and the corresponding reference sample are shown. [Figure 12] 10 illustrates an exemplary application of intra-prediction modes for prediction of a current block. [Figure 13A] 10 illustrates an example of inter prediction. [Figure 13B] 1 shows exemplary motion vectors. [Figure 14] 1 illustrates an example of bi-prediction. [Figure 15A] 1 illustrates exemplary spatial candidate neighboring blocks for a current block. [Figure 15B] 1 illustrates an exemplary temporally co-located block of the current block. [Figure 16] 1 illustrates an embodiment of intra block copy (IBC) for coding. [Figure 17]1 illustrates an embodiment of a context-based adaptive binary arithmetic coding (CABAC) encoder. [Figure 18A] An example of an IBC is shown. [Figure 18B] 1 shows an exemplary BVD candidate that can be used to entropy encode the magnitude symbol of the BVD. [Figure 18C] An example is shown in which an indication of whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of a BVD candidate that is used as a predictor of the BVD is entropy coded. [Figure 18D] An example is shown in which an indication of 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 of the BVD is entropy decoded and the indication is used to determine the magnitude symbol of the BVD. [Figure 19] 1 illustrates an embodiment of a method for encoding a prediction associated with the magnitude component of a BVD. [Figure 20] 10 illustrates an exemplary method for determining the number of symbols to be predicted for the magnitude component of the BVD. [Figure 21] 1 illustrates an exemplary method for decoding a prediction associated with a magnitude component of a BVD. [Figure 22] 10 illustrates an exemplary method for determining the number of predicted symbols for the magnitude component of the BVD. [Figure 23] 1 illustrates an exemplary computer system upon which embodiments of the present disclosure may be implemented. [Figure 24] 1 illustrates exemplary elements of a computing device that may be used to implement any of the various devices described herein. [Figure 25A] 1 shows exemplary test results associated with the present disclosure. [Figure 25B] 1 shows exemplary test results associated with the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

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

[0009] A video sequence including multiple pictures / frames may be represented in a digital format for storage and / or transmission. Representing a video sequence in a digital format may require a large number of bits. The large data size that may be associated with a video sequence may require significant resources for storage and / or transmission. Video encoding may be used to compress the size of the video sequence for more efficient storage and / or transmission. Video decoding may be used to expand the compressed video sequence for display and / or other forms of consumption.

[0010] 1 shows an exemplary video encoding / decoding system. The video encoding / decoding system 100 may include a source device 102, a transmission medium 104, and a destination device 106. The source device 102 may encode a video sequence 108 into a bitstream 110 for more efficient storage and / or transmission. The source device 102 may store and / or transmit / send the bitstream 110 to the destination device 106 via the transmission medium 104. The destination device 106 may decode the bitstream 110 to display the video sequence 108. The destination device 106 may receive the bitstream 110 from the source device 102 via the transmission medium 104. The source device 102 and / or the 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.).

[0011] Source device 102 may comprise 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 and / or synthetically generated scenes. Synthetically generated scenes may be scenes including computer-generated graphics and / or screen content. Video source 112 may comprise a video capture device (e.g., a video camera), a video archive containing previously captured natural and / or synthetically generated scenes, a video feed interface for receiving captured natural and / or synthetically generated scenes from a video content provider, and / or a processor for generating synthetic scenes.

[0012] A video sequence, such as video sequence 108, may include a series of pictures (also referred to as frames). A video sequence may achieve the impression of motion based on the sequential presentation of the pictures of the video sequence using fixed or variable time intervals between pictures. A picture may include one or more sample arrays of intensity values. The intensity values ​​may be obtained (e.g., measured, determined, provided) at a series of regularly spaced locations within the picture. A color picture may (e.g., typically does) include a luminance sample array and two chrominance sample arrays. The luminance sample array may include intensity values ​​representing the brightness of the picture (e.g., the luma component, Y). The chrominance sample array may include intensity values ​​representing the blue and red components of the picture (e.g., the chroma components, Cb and Cr), respectively, separate from the brightness. Other color picture sample arrays may be possible based on different color schemes (e.g., a red, green, blue (RGB) color scheme). A pixel in a color picture can point to / contain / associate all intensity values ​​(e.g., luma component, chroma component) for a given location in the sample array used to represent the color picture. A monochrome picture may contain a single luma sample array. A pixel in a monochrome picture can point to / contain / associate an intensity value (e.g., luma component) at a given location in the single luma sample array used to represent the monochrome picture.

[0013] The encoder 114 may encode the video sequence 108 into the 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 may be predicted at a decoder and that does not need to be transmitted to the decoder for accurate decoding of the video sequence 108. For example, the encoder 114 may apply spatial prediction (e.g., intra-frame or intra-prediction), temporal prediction (e.g., inter-frame or inter-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 a picture including 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.

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

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

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

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

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

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

[0020] 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.

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

[0022] Encoder 114 and / or decoder 120 may operate according to one or more proprietary or industry video coding standards. For example, encoder 114 and / or decoder 120 may operate according to 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 Expert 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 other video coding protocols).

[0023] FIG. 2 illustrates an exemplary encoder. The encoder 200 illustrated in FIG. 2 may implement one or more 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 implemented in the video encoding / decoding system 100 (e.g., as encoder 114) as shown in FIG. 1 or in any computing, communication, or electronic device (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.). The encoder 200 may comprise 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.

[0024] The encoder 200 may divide a picture (e.g., a frame) of (e.g., including) the video sequence 202 into blocks and encode the video sequence 202 block by block. The encoder 200 may perform / apply a prediction technique on a block to be encoded using either an inter prediction unit 206 or an intra prediction unit 208. The inter prediction unit 206 may perform inter prediction by searching for a block similar to a block to be encoded in another reconstructed picture (e.g., a reference picture) of the video sequence 202. The reconstructed picture may be a coded and subsequently decoded picture. The block (e.g., a predictive block) determined during the search may then be used to predict the block to be coded to remove redundant information. The inter prediction unit 206 may determine the predictive block by exploiting temporal redundancy or similarity in scene content from picture to picture of the video sequence 202. For example, scene content between pictures of the video sequence 202 may be similar except for differences due to motion and / or affine transformation of screen content over time.

[0025] The intra prediction unit 208 may perform intra prediction by forming a predictive block based on data from reconstructed neighboring samples of a block encoded within the same picture of the video sequence 202. The reconstructed samples may be encoded and then decoded samples. The intra prediction unit 208 may determine the predictive block by exploiting spatial redundancy or similarity in scene content within a picture of the video sequence 202. For example, the texture of a region of scene content within a picture may be similar to the texture of the region immediately surrounding the region of scene content within the same picture.

[0026] The combiner 210 may determine a prediction error (e.g., a residual) based on the difference between the block to be coded and the prediction block. The prediction error may represent non-redundant information that can be transmitted / sent to a decoder for accurate decoding of the video sequence 202.

[0027] The transform and quantization unit (TR+Q) 214 may transform and quantize the prediction errors. The transform and quantization unit 214 may convert the prediction errors into transform coefficients, for example, by applying a DCT to reduce correlation information in the prediction errors. The transform and quantization unit 214 may quantize the coefficients by mapping the data of the transform coefficients to a set of predetermined 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 without producing visible and / or perceptible distortion in the video sequence 202 after decoding (e.g., at a receiving device).

[0028] 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.

[0029] 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 for prediction of one or more other blocks in the same and / or different pictures of the video sequence 202.

[0030] The encoder 200 may further include an encoder control unit. The encoder control unit may be configured to control one or more units of the encoder 200 shown in FIG. 2. The encoder control unit may control one or more units of the encoder 200 so that the bitstream 204 may be generated in accordance with the requirements of one or more proprietary coding protocols, industry video coding standards, and / or any other video coding protocol. For example, the encoder control unit may control one or more units of the encoder 200 so that the bitstream 204 may be generated in accordance with one or more of ITU-T H.263, AVC, HEVC, VVC, VP8, VP9, ​​AV1, and / or any other video coding standard / format.

[0031] The encoder control unit may attempt to minimize (or reduce) the bitrate of bitstream 204 and / or maximize (or increase) the reconstructed video quality (e.g., within the constraints of a proprietary coding protocol, an industry video coding standard, and / or any other video coding protocol). For example, the encoder control unit may attempt to minimize or reduce the bitrate of bitstream 204 so that the reconstructed video quality does not fall below a certain level / threshold, and / or may attempt to maximize or increase the reconstructed video quality so that the bitrate of bitstream 204 does not exceed a certain level / threshold. The encoder control unit may determine / control one or more of: dividing a picture 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 for the inter prediction of the block; an intra prediction mode among multiple intra prediction modes for the 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 a rate-distortion measurement for the block or picture being coded. The encoder control unit may determine / control one or more of the above to reduce the rate-distortion measurement for the block or picture being coded.

[0032] The prediction type (intra- or inter-prediction) used to code the block, the prediction information for the block (intra-prediction mode, motion vectors, etc., in the case of intra-prediction), and / or the transform and / or quantization parameters may be transmitted to entropy coding unit 218 for further compression (e.g., to reduce bitrate). The prediction type, prediction information, and / or the transform and / or quantization parameters may be packed with the prediction error to form bitstream 204.

[0033] Encoder 200 is merely one example, and encoders different from encoder 200 and / or improved versions of encoder 200 may implement the methods and processes described herein. For example, encoder 200 may include other components and / or arrangements. One or more of the components shown in FIG. 2 may optionally be included in encoder 200 (e.g., entropy coding unit 218 and / or filter 220).

[0034] FIG. 3 shows an exemplary decoder. The decoder 300 shown in FIG. 3 may implement one or more processes described herein. The decoder 300 may decode a bitstream 302 into a decoded video sequence 304 for display and / or some other form of consumption. The decoder 300 may be implemented in the video encoding / decoding system 100 of FIG. 1 and / or in a computing, communication, or electronic device (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, and / or a video streaming device). The decoder 300 may comprise 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 prediction unit 316, and / or an intra prediction unit 318.

[0035] The decoder 300 may comprise a decoder control unit configured to control one or more units of the decoder 300. The decoder control unit may control one or more units of the decoder 300 such that the bitstream 302 is decoded in accordance with 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 one or more units of the decoder 300 such that the bitstream 302 is decoded in accordance with one or more of ITU-T H.263, AVC, HEVC, VVC, VP8, VP9, ​​AV1, and / or any other video coding standards / formats.

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

[0037] 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 a prediction block to form a decoded block. The prediction block may be generated by the intra prediction unit 318 or the inter prediction unit 316 (e.g., as described above with respect to the encoder 200 of FIG. 2). The filter 312 may filter the decoded block using, for example, a deblocking filter and / or a sample adaptive offset (SAO) filter. The buffer 314 may store the decoded block for prediction of one or more other blocks in the same and / or different pictures of the video sequence in the bitstream 302. As shown in FIG. 3, the decoded video sequence 304 may be output from the filter 312.

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

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

[0040] Video encoding and / or decoding may be performed on a block-by-block basis. The process of dividing a picture into blocks may be adaptive based on the content of the picture. For example, to improve coding efficiency, larger block divisions may be used in areas of a picture that have a higher level of homogeneity.

[0041] A picture (e.g., HEVC, or any other coding standard / format) may be divided into non-overlapping square blocks, which may be referred to as coding tree blocks (CTBs). A CTB may contain samples of a sample array. A CTB may have a size of 2n×2n samples, where n may be specified by parameters of the coding system. For example, n may be 4, 5, 6, or any other value. A CTB may have any other size. A CTB may be further divided by a recursive quadtree division into coding blocks (CBs) of half-vertical and half-horizontal size. A CTB may form the root of the quadtree. A CB that is not further divided as part of the recursive quadtree division may be referred to as a leaf CB of the quadtree, or otherwise may be referred to as a non-leaf CB of the quadtree. A CB may have a minimum size specified by parameters of the coding system. For example, a CB may have a minimum size of 4×4, 8×8, 16×16, 32×32, 64×64 samples, or any other minimum size. The CB may be further divided into one or more prediction blocks (PBs) to perform inter-prediction and / or intra-prediction. A PB may be a rectangular block of samples to which the same prediction type / mode may be applied. For transforms, the CB may be divided into one or more transform blocks (TBs). A TB may be a rectangular block of samples that may determine / indicate the applied transform size.

[0042] FIG. 4 shows an exemplary quadtree partitioning of a CTB. FIG. 5 shows a quadtree corresponding to the exemplary quadtree partitioning of the CTB 400 of FIG. 4. As shown in FIGS. 4 and 5, the CTB 400 may initially be partitioned into four CBs of semi-vertical and semi-horizontal size. Three of the CBs resulting from the first level partitioning of the CTB 400 may be leaf CBs. The three leaf CBs of the first level partitioning of the CTB 400 are labeled 7, 8, and 9, respectively, in FIGS. 4 and 5. The non-leaf CBs of the first level partitioning of the CTB 400 may be partitioned into four sub-CBs of semi-vertical and semi-horizontal size. Three of the sub-CBs resulting from the second level partitioning of the CTB 400 may be leaf CBs. The three leaf CBs of the second level partitioning of the CTB 400 are labeled 0, 5, and 6, respectively, in FIGS. 4 and 5. The non-leaf CBs of the second level partitioning of the CTB 400 may be partitioned into four leaf CBs of semi-vertical and semi-horizontal size. The four lobes CB can be labeled 1, 2, 3, and 4 in Figures 4 and 5, respectively.

[0043] The CTB 400 in FIG. 4 may be divided into ten leaf CBs, labeled 0 through 9, and / or any other number of leaf CBs. The ten leaf CBs may correspond to ten CB leaf nodes (e.g., the ten CB leaf nodes of quadtree 500, as shown in FIG. 5). In other embodiments, the CTB may be divided into a different number of leaf CBs. The resulting quadtree division of the CTB 400 may be scanned using a z-scan (e.g., left to right, top to bottom) to form a sequence order for encoding / decoding the CB leaf nodes. The numeric indicator (e.g., indicator, index) of each CB leaf node in FIGS. 4 and 5 may correspond to the sequence 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 shown in FIGS. 4 and 5, each CB leaf node may include one or more PBs and / or TBs.

[0044] Pictures in VVC (or in any other coding standard / format) can be partitioned in a similar manner (such as HEVC). A picture can first be partitioned into non-overlapping square CTBs. The CTBs can then be partitioned into half-vertical and half-horizontal sized CBs using recursive quadtree partitioning. The quadtree leaf nodes (e.g., in VVC) can be further partitioned into unequal sized CBs by binary or ternary tree partitioning (or any other partitioning).

[0045] FIG. 6 illustrates exemplary binary tree and ternary tree partitioning. Binary tree partitioning may divide a parent block in half, either vertically 602 or horizontally 604. The resulting partitions may be half the size of the parent block. The resulting partitions may correspond to sizes less than and / or more than half the parent block size. Ternary tree partitioning may divide a parent block into three parts, either vertically 606 or horizontally 608. FIG. 6 illustrates an example in which a middle partition may be twice the size of the other two end partitions in the ternary tree partitioning. In other examples, the partitions may be other sizes relative to each other and 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 a parent block into other numbers of smaller blocks. A block partitioning strategy (e.g., in VVC) is sometimes referred to as a combination of quadtree and multi-type tree partitioning (quadtree + multi-type tree partitioning) because binary tree and / or ternary tree partitioning is added to quadtree partitioning.

[0046] FIG. 7 shows an example of a combined quadtree and multitype tree partitioning of a CTB. FIG. 8 shows a tree corresponding to the combined quadtree and multitype tree partitioning of CTB 700 shown in FIG. 7. In both FIGS. 7 and 8, the quadtree partitioning is shown with solid lines, and the multitype tree partitioning is shown with dashed lines. CTB 700 is shown with the same quadtree partitioning as CTB 400 described in FIG. 4, and a description of the quadtree partitioning of CTB 700 is omitted. The quadtree partitioning of CTB 700 is merely an example, and the CTB may be quadtree partitioned in a manner different from CTB 700. Additional multitype tree partitioning of CTB 700 may be performed on the three leaf CBs shown in FIG. 4. The three leaf CBs of FIG. 4 shown in FIG. 7 as being further partitioned may be leaves CBs 5, 8, and 9. The three leaf CBs may be further partitioned using one or more binary and / or ternary tree partitionings.

[0047] Leaf CB5 in FIG. 4 may be split into two CBs based on a vertical binary tree division. The resulting two CBs may be leaf CBs labeled 5 and 6 in FIGS. 7 and 8, respectively. Leaf CB8 in FIG. 4 may be split into three CBs based on a vertical ternary tree division. Two of the resulting three CBs may be leaf CBs labeled 9 and 14 in FIGS. 7 and 8, respectively. The remaining non-leaf CBs may be initially split into two CBs based on a horizontal binary tree division. One of the two CBs may be the leaf CB labeled 10. The other of the two CBs may be further split into three CBs based on a vertical ternary tree division. The resulting three CBs may be leaf CBs labeled 11, 12, and 13 in FIGS. 7 and 8, respectively. Leaf CB9 in FIG. 4 may be split into three CBs based on a horizontal ternary tree division. Two of the three CBs may be leaf CBs labeled 15 and 19 in FIGS. 7 and 8, respectively. The remaining non-leaf CBs can be split into three CBs based on another horizontal ternary tree division, and all three resulting CBs can be leaf CBs, labeled 16, 17, and 18 in Figures 7 and 8, respectively.

[0048] Overall, the CTB 700 may be divided into 20 leaf CBs, labeled 0 through 19, respectively. The 20 leaf CBs may correspond to 20 leaf nodes (e.g., the 20 leaf nodes of the tree 800 shown in FIG. 8). The resulting combined quadtree and multitype tree division of the CTB 700 may be scanned using a z-scan (left to right, top to bottom) to form a sequence order for encoding / decoding the CB leaf nodes. The numeric labels of each CB leaf node in FIGS. 7 and 8 may correspond to the sequence order for encoding / decoding, with CB leaf node 0 being encoded / decoded first and CB leaf node 19 being encoded / decoded last. Note that, although not shown in FIGS. 7 and 8, each CB leaf node may include one or more PBs and / or TBs.

[0049] 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 within a sample array. A unit may include collocated blocks of samples from different sample arrays (e.g., luma and chroma sample arrays) that form a picture, as well as syntax elements and prediction data for the block. A coding tree unit (CTU) may include collocated CTBs of different sample arrays and may form a complete entity in the encoded bitstream. A coding unit (CU) may include collocated CBs of different sample arrays and syntax structures used to code samples of the CBs. A prediction unit (PU) may include collocated PBs of different sample arrays and syntax elements used to predict the PBs. A transform unit (TU) may include TBs of different sample arrays and syntax elements used to transform the TBs.

[0050] 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 sub-block in the VP8 coding format, a superblock or sub-block in the VP9 coding format, and / or a superblock or sub-block in the AV1 coding format.

[0051] Samples of a block to be coded (e.g., the current block) may be predicted from samples in columns immediately adjacent to the leftmost column of the current block and samples in rows adjacent to the top row of the current block, such as in intra-prediction. Samples from immediately adjacent columns and rows may collectively be referred to as reference samples. Each sample of the current block may be predicted by projecting the sample's position in the current block in a given direction onto a point along the reference sample (e.g., in intra-prediction mode). If the projection does not fall directly on the reference sample, the sample may be predicted by interpolating between the two closest reference samples to the projection point. A prediction error (e.g., a residual) may be determined for the current block based on the difference between the predicted sample values ​​and the original sample values ​​of the current block.

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

[0053] 9 shows an example set of reference samples determined for intra-prediction of a current block. The current block 904 may correspond to a block to be coded and / or decoded. The current block 904 may correspond to block 3 of the split CTB 700 as shown in FIG. 7. As described herein, the numeric labels 0-19 of the blocks of the split CTB 700 may correspond to a sequence order for coding / decoding the blocks and may be used as in the example of FIG. 9.

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

[0055] Samples that may not be available for constructing the set of reference samples 902 may include samples within blocks that have not yet been coded and reconstructed at the encoder and / or decoded at the decoder based on the sequential order for encoding / decoding. Restricting such samples from inclusion in the set of reference samples 902 may allow for determining the same prediction result at both the encoder and the decoder. Samples from neighboring blocks 0, 1, and 2 may be available for constructing reference samples 902, given that these blocks are coded and reconstructed at the encoder and decoded at the decoder before coding of the current block 904. Samples from neighboring blocks 0, 1, and 2 may be available for constructing reference samples 902, for example, if there are no other issues (e.g., as described above) that prevent the availability of samples from neighboring blocks 0, 1, and 2. A portion of reference samples 902 from neighboring block 6 may not be available due to the sequential order for encoding / decoding (e.g., because block 6 has not yet been coded and reconstructed at the encoder and / or decoded at the decoder based on the sequential order for encoding / decoding).

[0056] Unavailable samples from the reference samples 902 may be filled with one or more of the available reference samples 902. For example, the unavailable reference sample 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 through the reference samples 902. The reference samples 902 may be filled with, for example, an intermediate value of the dynamic range in which the picture is coded when a reference sample is unavailable.

[0057] The reference samples 902 may be filtered based on the size of the current block 904 being coded and the applied intra-prediction mode. Figure 9 shows an example determination of reference samples for intra-prediction of a block. The reference samples may be determined in a manner different from that described above. For example, multiple reference lines may be used in other instances (e.g., in VVC).

[0058] The samples of the current block 904 may be intra predicted based on the reference sample 902, e.g., based on (e.g., after) determining and (optionally) filtering the reference sample. At least some (e.g., most) encoders / decoders may support multiple intra prediction modes according to one or more video coding standards. For example, HEVC supports 35 intra prediction modes, including planar mode, direct current (DC) mode, and 33 angular modes. VVC supports 67 intra prediction modes, including planar mode, DC mode, and 65 angular modes. Planar and DC modes may be used to predict smooth and gradually changing regions of a picture. Angular modes may be used to predict directional structure within a region of a picture. Any number of intra prediction modes may be supported.

[0059] 10A and 10B show exemplary intra prediction modes. FIG. 10A shows 35 intra prediction modes such as those supported by HEVC. The 35 intra prediction modes may be indicated / identified by indexes 0 through 34. Prediction mode 0 may correspond to planar mode. Prediction mode 1 may correspond to DC mode. Prediction modes 2 through 34 may correspond to angular modes. Prediction modes 2 through 18 may be referred to as horizontal prediction modes because the primary prediction source is horizontal. Prediction modes 19 through 34 may be referred to as vertical prediction modes because the primary prediction source is vertical.

[0060] FIG. 10B shows 67 intra prediction modes such as those supported by VVC. The 67 intra prediction modes may be indicated / identified by indexes 0 through 66. Prediction mode 0 may correspond to planar mode. Prediction mode 1 may correspond to DC mode. Prediction modes 2 through 66 may correspond to angular modes. Prediction modes 2 through 34 may be referred to as horizontal prediction modes because the primary prediction source is in the horizontal direction. Prediction modes 35 through 66 may be referred to as vertical prediction modes because the primary prediction source is in the vertical direction. Some of the intra prediction modes illustrated in FIG. 10B may be adaptively replaced by wide-angle directions because VVC blocks need not be square.

[0061] 11 shows a current block and corresponding reference samples. In FIG. 11, the current block 904 and reference sample 902 of FIG. 9 are

number

number

number

[0062] The reference sample 902 to the left of the current block 904 is a one-dimensional array

number

number

[0063] The prediction process determines the location in the current block 904.

number

number

number

number

number

number

number

number

number

number

number

[0064] Position within current block 904

number

number

number

[0065] Current location in block 904

number

number

number

[0066] 12 illustrates an example application of intra prediction modes for prediction of a current block.

number

number

number

number

number

number

number

[0067]

number

number

number

number

number

number

number

number

[0068] Location of the sample within the current block 904

number

number

number

number

[0069]

number

number

number

number

[0070]

number

number

number

number

number

[0071] The interpolation functions given by equations (7) and (10) may be implemented by an encoder and / or a decoder (e.g., encoder 200 of FIG. 2 and / or decoder 300 of FIG. 3). The interpolation functions may be implemented by finite impulse response (FIR) filters. For example, the interpolation functions may be implemented as a set of 2-tap FIR filters whose coefficients are

number

number

number

number

[0072] FIR filters may be used to predict chroma samples and / or luma samples. For example, a 2-tap interpolation FIR filter may be used to predict chroma samples, and the same and / or a different interpolation technique / filter may be used for luma samples. For example, a 4-tap FIR filter may be used to determine predicted values ​​for luma samples. The coefficients of the 4-tap FIR filter may be (e.g., similar to the 2-tap FIR filter)

number

number

number

number

number

number

number

number

[0073] The location of the sample within the current block 904 to be predicted

number

number

number

number

number

number

[0074] The encoder may determine / predict samples of a current block (e.g., current block 904) to be coded for multiple intra prediction modes (e.g., using one or more of the functions described herein). For example, the encoder may determine / predict samples of the current block for each of the 35 intra prediction modes in HEVC and / or the 67 intra prediction modes in VVC. For each applied intra prediction mode, the encoder may determine a corresponding prediction error for the current block based on the difference (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), or sum of absolute transformed 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 code the current block based on the determined prediction error. For example, the encoder may determine / select one of the intra prediction modes that results in the smallest 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 measure (e.g., a Lagrangian rate-distortion cost) determined using the prediction error. The encoder may transmit an indication of the determined / selected intra-prediction mode and its corresponding prediction error (e.g., a residual) to the decoder for decoding the current block.

[0075] The decoder may determine / predict samples of a current block (e.g., current block 904) to be decoded for an intra-prediction mode. For example, the decoder may receive an indication of an intra-prediction mode (e.g., angular intra-prediction mode) from the encoder for the current block. The decoder may construct a set of reference samples and perform intra-prediction based on the intra-prediction mode indicated by the encoder for the current block in a similar manner (e.g., as described above for the encoder). The decoder may add predicted values ​​of the samples (e.g., determined based on the intra-prediction mode) of the current block 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 from the encoder for the current block. The decoder may determine the intra-prediction mode based on, for example, other criteria. Although various embodiments herein correspond to intra-prediction modes in HEVC and VVC, the methods, devices, and systems described herein may be applied / used for other intra-prediction modes (e.g., as used in other video coding standards / formats such as VP8, VP9, ​​AV1, etc.).

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

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

[0078] FIG. 13A shows an example of inter prediction. Inter prediction may be performed on a current block 1300 of a current picture 1302 to be encoded. An encoder (e.g., encoder 200, as shown in FIG. 2) may perform inter prediction to determine and / or generate a reference block 1304 in a reference picture 1306. The reference block 1304 may be used to predict the current block 1300. The reference picture (e.g., reference picture 1306) may be a previously decoded picture available at the encoder and / or decoder. The availability of a previously decoded picture may depend / be based on whether a previously decoded picture is available in a decoded picture buffer when the current block 1300 is encoded and / or decoded. The encoder may search one or more reference pictures 1306 for a block that is similar (or substantially similar) to the current block 1300. The encoder may determine a best matching block from the blocks tested during the search process. The best matching block may be the reference block 1304. The encoder may determine that the 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). The one or more cost criteria may also be based on differences (e.g., SSD, SAD, and / or SATD) between predicted samples of the reference block 1304 and the original samples of the current block 1300.

[0079] The encoder may search for the 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 co-located position (or block) 1310 of the current block 1300 in the reference picture 1306. The co-located block 1310 may have the same position in the reference picture 1306 as the current block 1300 in the current picture 1302. The reference region (e.g., search range 1308) may extend at least partially outside the reference picture 1306. A fixed boundary extension may be used, for example, when the reference region (e.g., search range 1308) extends outside the reference picture 1306. A fixed boundary extension may be used so that values ​​of samples in a row or column of the reference picture 1306 that are immediately adjacent to a portion of the reference region (e.g., search range 1308) that extends outside the reference picture 1306 can be used for the location of samples outside the reference picture 1306. A subset of, or all of, the potential locations within the reference region (e.g., search range 1308) may be searched for the reference block 1304. The encoder may utilize one or more search implementations to determine and / or generate the reference block 1304. For example, the encoder may determine a set of candidate search locations based on motion information of blocks (e.g., motion vectors 1312) that neighbor the current block 1300.

[0080] One or more reference pictures may be searched by the encoder during inter-prediction to determine and / or generate a 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 contain one or more pictures. A reference picture 1306 of a reference block 1304 may be indicated by a reference index that points to a reference picture list that contains the reference picture 1306.

[0081] Figure 13B shows an example motion vector. The displacement between the reference block 1304 and the current block 1300 may be interpreted as an estimate of the motion between the reference block 1304 and the current block 1300 across their respective pictures. The displacement may be represented by a motion vector 1312. For example, the motion vector 1312 may be indicated by a horizontal component (MVx) and a vertical component (MVy) relative to the position of the current block 1300. A motion vector (e.g., the motion vector 1312) may have fractional or integer resolution. A motion vector with fractional resolution may point between two samples in the reference picture to provide a better estimate of the motion of the current block 1300. For example, the motion vector may have ½, ¼, ⅛, ⅙6, ⅛, or any other fractional sample resolution. Interpolation between two samples at integer positions may be used to generate a reference block and its corresponding sample at a fractional position, for example, if the motion vector points to a non-integer sample value in the reference picture. The interpolation may be performed by a filter with two or more taps.

[0082] 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 the difference between the reference block 1304 and the current block 1300, for example, based on / after the reference block 1304 was determined and / or generated using inter-prediction for the current block 1300. The difference may be a prediction error and / or a residual. The encoder may store and / or transmit (e.g., a signal) within / via a bitstream, the prediction error and / or associated motion information. The prediction error and / or associated motion information may be used for decoding (e.g., decoding the current block 1300) and / or other forms of consumption. The motion information may include a motion vector 1312 and / or a reference indicator / index. The reference indicator may point to a reference picture 1306 within a reference picture list. The motion information may include an indication of the motion vector 1312 and / or an indication of the reference index. The reference index may point to a reference picture 1306 in a reference picture list. The decoder may decode the current block 1300 by determining and / or generating a reference block 1304. The decoder may determine and / or generate the reference block 1304 based on, for example, a prediction error and / or associated 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.

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

[0084] Inter-prediction of the current block is obtained based on two pictures using bi-prediction. Bi-prediction may be useful, for example, when a video sequence includes fast motion, camera pans, zooms, and / or scene changes. Bi-prediction may also be useful for capturing a fade-out of one scene or a fade-out from one scene to another, where two pictures may be effectively displayed simultaneously at different levels of intensity.

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

[0086] Figure 14 shows an example of bi-prediction. Two reference blocks 1402 and 1404 may be used to predict a current block 1400. Reference block 1402 may be in one reference picture of reference picture list 0 or reference picture list 1. Reference block 1404 may be in another reference picture of reference picture list 0 or reference picture list 1. As shown in Figure 14, reference block 1402 may be in a first picture that precedes (e.g., temporally) the current picture of current block 1400, and reference block 1404 may be in a second picture that follows (e.g., temporally) the current picture of current block 1400. The first picture may precede the current picture in terms of picture order count (POC). The second picture may follow the current picture in terms of POC. The reference pictures may both precede or both follow the current picture in terms of POC. 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 approximately intended to be displayed. Pictures that are output may not necessarily be displayed, but may undergo different processing and / or consumption (e.g., transcoding). Two reference blocks determined and / or generated using / for bi-prediction may correspond to (e.g., be included in) the same reference picture. A reference picture may be included in both reference picture list 0 and reference picture list 1, for example, if the two reference blocks correspond to the same reference picture.

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

[0088] The encoder may use inter 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. The encoder may store and / or transmit / signal the prediction errors and / or their respective associated motion information in / via the bitstream. The prediction errors and their respective associated motion information may be used for decoding and / or other forms of consumption. The motion information for the reference block 1402 may include a motion vector 1406 and / or a reference indicator / index. The reference indicator may point to a reference picture for 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 point to a reference picture for the reference block 1402 in a reference picture list.

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

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

[0091] The motion information may be predictively coded, for example, 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 for a current block may be predictively coded based on the motion information of one or more blocks neighboring the current block. The motion information of neighboring blocks may often be correlated with the motion information of the current block because the motion of an object represented in the current block is often the same as (or similar to) the motion of an object in the neighboring block. Motion information prediction techniques may include advanced motion vector prediction (AMVP) and / or inter-prediction block merging.

[0092] An encoder (e.g., encoder 200, as shown in FIG. 2) may code a motion vector. The encoder may code the motion vector (e.g., using AMVP) as the difference between the motion vector of the current block being coded and a motion vector predictor (MVP). The encoder may determine / select an MVP from a list of candidate MVPs. The candidate MVP may be / correspond to previously decoded motion vectors of neighboring blocks in the current picture of the current block and / or blocks collocated or near the current block in other reference pictures. The encoder and / or decoder may generate and / or determine the list of candidate MVPs.

[0093] The encoder may determine / select an MVP from a list of candidate MVPs. The encoder may transmit / signal an indication of the selected MVP and / or motion vector difference (MVD) in / via the bitstream. The encoder may indicate the selected MVP in the bitstream using an index / indicator. The index may indicate the selected MVP in a 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 (e.g., represented by a horizontal component (MVx) and a vertical component (MVy)) that indicates a position relative to the position of the current block being coded, the MVD is calculated based on the difference between the two components

number

number

number

number

number

number

[0094] 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., candidate A and candidate B). Candidate A and candidate B may include up to two (or any other number) spatial candidate MVPs determined or derived from five (or any other number) spatially neighboring blocks of the current block being coded, one (or any other number) temporal candidate MVPs determined or derived from two (or any other number) temporally co-located blocks (e.g., when both of the two spatial candidate MVPs are unavailable or are identical), and / or a zero motion vector candidate MVP (e.g., when one or both of the spatial candidate MVP or the temporal candidate MVP are unavailable). Other numbers of spatial candidate MVPs, spatially neighboring blocks, temporal candidate MVPs, and / or temporally co-located blocks may also be used in the list of candidate MVPs.

[0095] Figure 15A shows spatial candidate neighboring blocks for a current block. For example, five (or any other number) spatial candidate neighboring blocks may be located relative to the current block 1500 being coded. The five spatial candidate neighboring blocks may be A0, A1, B0, B1, and B2. Figure 15B shows temporally co-located blocks for the current block. For example, two (or any other number) temporally co-located blocks may be located relative to the current block 1500. The two temporally co-located blocks may be C0 and C1. The two temporally co-located blocks may be in one or more reference pictures that may be different from the current picture of the current block 1500.

[0096] An encoder (e.g., encoder 200 as shown in FIG. 2) may code motion vectors using inter-prediction block merging (e.g., merge mode). An 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. An encoder (e.g., using merge mode) may reuse the same motion information of a temporally co-located block (e.g., one of temporally co-located blocks C0 and C1) for inter prediction of the current block. MVD does not need to be transmitted (e.g., indicated or signaled) for the current block because the same motion information as that of the neighboring or temporally co-located block can be used for the current block (e.g., at the encoder and / or decoder). Because MVD does not need to be indicated for the current block, signaling overhead for transmitting / signaling motion information of the current block may be reduced. The encoder and / or decoder may generate a candidate list of motion information from neighboring blocks or temporally co-located blocks of the current block (e.g., in a manner similar to AMVP). The encoder may decide to use (e.g., inherit) motion information of one neighboring block or one temporally co-located block in the candidate list to predict motion information of the current block being coded. The encoder may signal / transmit an indication of the determined motion information from the candidate list in / via the bitstream. For example, the encoder may signal / transmit an indicator / index. The index may point to the determined motion information in the list of candidate motion information. The encoder may signal / transmit an index to indicate the determined motion information.

[0097] A list of candidate motion information for merge mode (e.g., in HEVC, VVC, or any other coding format / standard / protocol) may include up to four (or any other number) spatial merge candidates derived / determined from five (or any other number) spatially neighboring blocks (e.g., as shown in Figure 15A), one (or any other number) temporal merge candidates derived from two (or any other number) temporally co-located blocks (e.g., as shown in Figure 15B), and / or additional merge candidates including both prediction candidates and zero motion vector candidates. The spatially neighboring blocks and temporally co-located blocks used for merge mode may be the same as the spatially neighboring blocks and temporally co-located blocks used for AMVP.

[0098] Inter prediction may be performed in other ways and variations than those described herein. For example, motion information prediction techniques other than AMVP and merge mode may be used. While various embodiments herein correspond to inter prediction modes such as those used in HEVC and VVC, the methods, devices, and systems described herein may be applied / 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 also be implemented / used and are within the scope of the present disclosure.

[0099] Block matching may be used (e.g., in inter prediction) to determine a reference block in a picture different from the picture of the current block being coded. Block matching may be used to determine a reference block in the same picture as the picture of the current block being coded. A reference block in the same picture as the current block determined using block matching may often not accurately predict the current block (e.g., in the case of camera-captured video). Prediction accuracy for screen content video is not similarly affected, for example, when a reference block in the same picture as the current block is used for coding. Screen content video may include, for example, computer-generated text, graphics, animation, etc. Screen content video may (e.g., often does) include repetitive patterns (e.g., repetitive patterns of text and / or graphics) within the same picture. Using a reference block (e.g., determined using block matching) in the same picture as the current block being coded may provide efficient compression for screen content video.

[0100] A prediction technique may be used (e.g., in HEVC, VVC, and / or any other coding standard / format / protocol) to exploit correlation between blocks of samples within the same picture (e.g., of screen content video). The prediction technique may be intra block copying (IBC) or current picture reference (CPR). The encoder may apply / use a block matching technique (e.g., similar to inter prediction) to determine a displacement vector (e.g., 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., according to intra block compensated 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 displacement 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 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). The one or more cost criteria may be based, for example, on one or more differences (e.g., differences determined based on SSD, SAD, SATD, and / or a hash function) between predicted samples of the reference block and original samples of the 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).

[0101] Figure 16 shows an example of an IBC for encoding. The exemplary IBC shown in Figure 16 may correspond to screen content. The rectangular portion / section with the arrow starting at their boundary may be the current block to be encoded. The rectangular portion / section to which the arrow points may be a reference block for predicting the current block.

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

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

[0104] An encoder that performs BV prediction and coding (e.g., encoder 200 as shown in FIG. 2) may code the BV as the difference between the BV of the current block being coded 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 in the current picture of the current block. The encoder and / or decoder may generate or determine the list of candidate BVPs.

[0105] The encoder may transmit / signal an indication of the selected BVP and 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 in 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 coded (e.g., represented by a horizontal component (BVx) and a vertical component (BVy)), the BVD may be calculated based on the difference between the two components

number

number

number

number

number

number

[0106] BVDx and BVDy may represent the horizontal and vertical components of the BVD, respectively. BVPx and BVPy may represent the horizontal and vertical components of the BVP, respectively. A decoder (e.g., decoder 300 as shown in FIG. 3) may decode the BV by adding the BVD to the BVP indicated in / via 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 as) a prediction of the current block. The decoder may decode the current block by combining the prediction with a prediction error.

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

[0108] A 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 five (or any other number) spatial neighboring blocks of the current block being coded, and / or one or more of the last two (or any other number) coded BVs (e.g., if spatial neighboring candidates are unavailable). Spatial neighboring candidates may not be available, for example, when neighboring blocks are coded using intra prediction or inter prediction. The locations of spatial candidate neighboring blocks relative to a current block coded using IBC may be illustrated in a manner similar to the spatial candidate neighboring blocks used to code motion vectors in inter prediction (e.g., as shown in FIG. 15A). For example, the five spatial candidate neighboring blocks for IBC may be denoted A0, A1, B0, B1, and B2, respectively.

[0109] As described herein (e.g., with respect to FIGS. 2 and 3), entropy coding may be performed at the end of a video encoding process and at the beginning of a video decoding process. Entropy coding is a technique for compressing a sequence of symbols (e.g., 0s and 1s) by representing more probable symbols with fewer bits than less probable symbols. Shannon's information theory provides that the optimal average code length for a symbol with probability p is −log2p, for example, when the compressed symbol sequence is represented in bits (e.g., {0, 1}).

[0110] Arithmetic coding is a method of entropy coding. Arithmetic coding is based on recursive interval subdivision. To arithmetically encode symbols that take values ​​from an m-ary source alphabet, an initial coding interval may be divided into m disjoint subintervals. Each of the m disjoint subintervals may have a width proportional to the probability that the symbol has a different one of the values ​​in the m-ary source alphabet. The probability of a symbol having a different value in the m-ary source alphabet may be referred to as a probability model for the symbol. A symbol is arithmetically encoded by selecting a subinterval that corresponds to the actual value of the symbol as a new coding interval. Given a sequence s = {s1, s2, ..., s N ) each symbol s i By recursively using this interval subdivision scheme, the encoder can determine the range of values ​​for the final coding interval after the Nth interval subdivision as the operational codeword for sequence s. Each successive symbol of sequence s to be encoded reduces the size of the coding interval according to a probability model for the symbol. More likely symbol values ​​reduce the size of the coding interval than less likely symbol values, thus adding fewer bits to the operational codeword for sequence s according to the general principles of entropy coding.

[0111] Arithmetic decoding is based on the same recursive interval subdivision. To operationally decode symbols that take values ​​from the m-ary source alphabet, the initial coding interval may be divided into m disjoint subintervals. Each of the m disjoint subintervals may have a width proportional to the probability that the symbol has a different one of the values ​​of the m-ary source alphabet. The probability of symbols having different values ​​in the m-ary source alphabet may be referred to as a probability model of the symbol as described herein. A symbol is operationally 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 computes a sequence s={s1, s2, ..., sN ) each symbol s i can be decoded sequentially by recursively using this interval subdivision scheme N times and determining in each iteration which subinterval the operation codeword falls within.

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

[0113] The disclosure herein provides examples of arithmetic coding. Other variations of arithmetic coding may be possible. A renormalization operation may be performed, for example, to ensure that when arithmetic coding is implemented, the precision required to represent the range and lower bound of the subinterval does not exceed the finite precision of the registers used to store these values. Other simplifications to the coding process may be made to reduce the complexity, increase the speed, and / or reduce the power requirements of an implementation of the coding process in either hardware, software, or some combination of hardware and software. For example, the symbol probabilities and the lower bound and range of the subinterval may be approximated or constant in such an implementation.

[0114] 17 shows an example of a context-based adaptive binary arithmetic coding (CABAC) encoder 1700. The CABAC encoder 1700 may be implemented in a video encoder, such as the video encoder 200 of FIG. 2, to entropy encode syntax elements of a video sequence. In this example, the CABAC encoder 1700 may include a binarizer 1702, an arithmetic encoder 1704, and a context modeler 1706.

[0115] The CABAC encoder 1700 may receive syntax elements 1708 for arithmetic encoding. 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 element may include an intra-prediction mode based on which the CU is intra-predicted, motion data (e.g., MVD- and MVP-related data) based on which the CU is intra-predicted, or displacement data (e.g., BVD- and BVP-related data) based on which the CU is predicted using IBC.

[0116] The binarizer 1702 may map the values ​​of the syntax elements 1708 to a sequence 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 a sequence of binary symbols. Binarization of the syntax elements may help improve the implementation of probability modeling and arithmetic encoding. The binarizer 1702 may implement one or more binarization processes. The one or more binarization processes performed 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 before the syntax element 1708. The binarizer 1702 may not process the syntax elements 1708, for example, based on syntax elements 1708 already represented by a sequence of one or more binary symbols. The binarizer 1702 may not be used, and syntax elements 1708 represented by a sequence of one or more non-binary symbols may be encoded directly by the CABAC encoder 1700.

[0117] One or more of the binary symbols may be processed by an arithmetic encoder 1704. One or more of the binary symbols may be processed by the arithmetic encoder 1704, for example, after the binarizer 1702 optionally maps values ​​of syntax elements 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, for example, a normal arithmetic encoding mode or a bypass arithmetic encoding mode.

[0118] The arithmetic encoder 1704 may process binary symbols that do not have a uniform (or near-uniform) probability distribution (e.g., binary symbols that do not have a probability distribution of 0.5 for each of their two possible values) in normal arithmetic encoding mode. The arithmetic encoder 1704 may, for example, perform the arithmetic encoding described herein in normal arithmetic encoding mode. For example, the arithmetic encoder 1704 may subdivide the current coding interval into m disjoint subintervals. Each of the m disjoint subintervals may have a width proportional to the probability of the binary symbol having a different one of the values ​​of the m-ary source alphabet. For binary symbols, m equals 2, and the current coding interval may be subdivided into two disjoint intervals, each having a width proportional to the probability of a different one of the two possible values ​​(e.g., {0, 1}) for the binary symbol being encoded. The probabilities of the two possible values ​​for the binary symbol may be dictated by the probability model 1710 for the binary symbol. The arithmetic encoder 1704 may encode the binary symbol. The arithmetic encoder 1704 may encode a binary symbol by, for example, selecting a subinterval that corresponds to the actual value of the binary symbol as the new coding interval for the next binary symbol to be encoded.

[0119] 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 within a sequence of binary symbols representing the syntax element 1708) or by an adaptive selection among two or more probability models (e.g., based on information related to the binary symbol). The probability model 1710 may be, for example, a least likely symbol (LPS) probability P LPS and the most likely symbol (MPS) value V MPS The probability model 1710 may include, for example, the probability of LPS P LPS In addition to or instead of this, the probability of MPS P MPSThe probabilistic model 1710 may include, for example, the value V of the MPS. MPS In addition to or instead of this, the value of LPS V LPS 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 symbols. The context modeler 1706 may adapt the probability model 1710 based on the one or more probability model update parameters 1712, for example. The one or more probability model update parameters 1712 may include, for example, actual coded values ​​of the binary symbols. The context modeler 1706 may adapt the probability model 1710 based on, for example, the one or more probability model update parameters 1712, for example, after the arithmetic encoder 1704 encodes the binary symbols. MPS If not equal to P LPS By increasing P LPS The probabilistic model 1710 may be updated by decreasing

[0120] The arithmetic encoder 1704 may process binary symbols that have (or are assumed to have) a uniform (or near-uniform) probability distribution in the bypass arithmetic encoding mode. Because the binary symbols processed by the arithmetic encoder 1704 in the bypass arithmetic encoding mode have (or are assumed to have) a uniform (or near-uniform) probability distribution, the arithmetic encoder 1704 may avoid determining and adapting a probability model, as is done in the normal arithmetic encoding mode, when encoding these binary symbols to speed up the encoding process, for example. The subdivision of the current coding interval may be simplified by considering a uniform (or assumed uniform) probability distribution. The current coding interval may be partitioned into two disjoint subintervals of equal width, which may be realized using a simple implementation that may further speed up the encoding process. The arithmetic encoder 1704 may encode a binary symbol by selecting a subinterval corresponding to the value of the binary symbol as the new coding interval for the next binary symbol to be encoded. Because CABAC encoding may have throughput limitations, the resulting increase in encoding speed for binary symbols encoded by the arithmetic encoder 1704 in the bypass arithmetic encoding mode is often significant.

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

[0122] Two syntax elements that may be coded in the bypass arithmetic coding mode include the motion vector difference (MVD) magnitude and the block vector difference (BVD) magnitude. These syntax elements may be determined as part of advanced motion vector prediction (AMVP) for inter prediction and AMVP for intra block copy (IBC), respectively, as described herein. The bypass arithmetic coding mode may be used to speed up the arithmetic coding process. Compression of symbols for these syntax elements coded in the bypass arithmetic coding mode may be limited because their probability distribution is uniform (or at least assumed to be uniform). Information theory suggests that a symbol cannot be compressed at a rate lower than its entropy without loss of information, and that symbols with a uniform probability distribution have the greatest entropy. Symbols coded using the bypass arithmetic coding mode may generally require more bits to code than symbols coded using the normal arithmetic coding mode.

[0123] The disclosure provided herein improves the compression efficiency of one or more magnitude symbols of BVD. Instead of entropy coding the magnitude symbol of BVD, an indication indicating whether the value of the magnitude symbol of BVD matches the value of the magnitude symbol of a BVD candidate used as a predictor of BVD ("BVD predictor") may be entropy coded. The BVD predictor may be selected from among multiple BVD candidates based on, for example, the cost of each of the multiple BVD candidates. The cost of each BVD candidate of the multiple BVD candidates may be calculated based on the difference between a template of the current block and a template of the candidate reference block. The candidate reference block may be displaced 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 BVD matches the value of the magnitude symbol of a BVD predictor may have a non-uniform probability distribution and may therefore provide improved compression efficiency over coding the magnitude symbol of BVD based on a uniform probability distribution. Entropy coding an indication instead of the magnitude symbol of BVD may reduce the bit rate. By reducing the bit rate, overhead is required to signal the magnitudes (eg, the magnitudes of the horizontal and vertical components of the BVD) to the decoder.

[0124] The present disclosure is further directed to improving the compression efficiency of one or more magnitude symbols of an MVD. Instead of entropy coding 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 coded. The MVD predictor may be selected from among multiple MVD candidates, for example, based on the cost of the multiple MVD candidates. The cost of one or more MVD candidates in the multiple MVD candidates may be calculated, for example, based on the difference between a template of the current block and a template of a candidate reference block. The candidate reference block may be displaced relative to the same position of the current block in a reference frame 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, thus providing improved compression efficiency over coding the magnitude symbol of the MVD based on a uniform probability distribution. Coentropy coding an indication instead of the magnitude symbol of the MVD may reduce the bit rate and hence the overhead required to signal the magnitude (e.g., the magnitude of each of the horizontal and vertical components of the MVD) to the decoder.

[0125] As described herein, both HEVC and VVC include a prediction technique that exploits the correlation between blocks of samples within the same picture. This technique is referred to as Intra-Block Coding (IBC). IBC is also included in the Enhanced Compression Model (ECM) software algorithm, which is currently being coordinated exploratory research by the ITU-T Video Coding Experts Group (VCEG) and ISO / IEC MPEG's Joint Video Exploration Team (JVET) as a potential enhancement video coding technique beyond the capabilities of VVC.

[0126] FIG. 18A shows an example of IBC. For example, when implementing IBC, the encoder may determine a block vector (BV) 1802 that may indicate the displacement from a current block 1804 to a reference block (or intra-block compensated prediction) 1806. For example, when implementing a search process, the encoder may determine a reference block 1806 from among one or more tested reference blocks. For each of the tested one or more reference blocks, for example, when implementing a search process, the encoder may determine a difference (e.g., a sum of squared differences (SSD), a sum of absolute differences (SAD), a sum of absolute transformed differences (SATD), or a difference determined based on a hash function) between a sample of the reference block and a sample of the current block 1804. The encoder may determine the reference block 1806 from among the one or more reference blocks. For example, the encoder may determine the reference block 1806 from among the one or more reference blocks based on the reference block 1806 having the smallest difference from the current block 1804 among the one or more reference blocks. The encoder may determine the reference block 1806 from among one or more reference blocks based on, for example, some other or additional criteria. The reference block 1806 and, for example, when performing a search process, one or more other reference blocks examined 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.

[0127] The encoder may use the reference block 1806 to predict the current block 1804, e.g., after the reference block 1806 is determined for the current block 1804. The encoder may determine and / or use a difference (e.g., a 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 associated prediction information in the bitstream. The prediction information may include the BV 1802. The prediction information may include an indication of the BV 1802. A decoder, such as the decoder 300 of FIG. 3, may receive the bitstream and decode the current block 1804. The decoder may receive the bitstream, determine the reference block 1806 to form a prediction of the current block 1804, and decode the current block 1804 by, e.g., combining the prediction with the prediction error using the prediction information.

[0128] The BV 1802 may be predictively coded. The BV 1802 may be predictively coded, for example, before being signaled in the bitstream. The BV 1802 may be predictively coded based on the BVs of neighboring blocks of the current block 1804 or the BVs of other blocks. The encoder may predictively code the BV 1802, for example, using merge mode or AMVP described herein. When implementing AMVP, the encoder may encode the BV 1802, for example, as the difference between the BV 1802 and a BV predictor (BVP) 1808, as shown in FIG. 18A . The encoder may select the BVP 1808 from a list of candidate BVPs. The candidate BVPs may be obtained from previously decoded BVs of neighboring blocks of the current block 1804 or from other sources. Both the encoder and the decoder may generate or determine the list of candidate BVPs.

[0129] The encoder may signal an indication of the BVP 1808 and the BV difference (BVD) 1810 within the bitstream, for example, after the encoder selects the BVP 1808 from a list of candidate BVPs. The encoder may indicate the BVP 1808 within the bitstream by an index (e.g., pointing to) a list of candidate BVPs or by one or more flags. The BVD 1810 may be calculated based on the difference between the BV 1802 and the BVP 1808. The BVD 1810 may be calculated based on the horizontal component (BVD), which may be determined according to equations (17) and (18) above, respectively. x )1812 and vertical component (BVD y ) 1814. Two components of BVD x 1812 and BVD y 1814 may each include a magnitude and a sign. For purposes of illustration and in this example only, the horizontal component, BVD x 1812 has a magnitude of 10011 in fixed-length binary (or base 10 19) and a negative sign (in the example of FIG. 18A, positive horizontal points to the right and negative horizontal points to the left). For this example and for purposes of illustration only, the vertical component, BVD y 1814 has magnitude 01011 in fixed-length binary (or base 10 11) and positive sign (in the example of FIG. 18A, positive vertical direction points down and negative vertical direction points up). The encoder calculates its two components, BVD x 1812 and BVD y 1814, the BVD 1810 in the bitstream may be indicated.

[0130] A decoder may decode BV 1802 by adding BVD 1810 to BVP 1808. The decoder may use BV 1802 to determine a reference block 1806 that forms a prediction of current block 1804 and decode current block 1804 by combining the prediction with the prediction error. The decoder may determine reference block 1806 by adding BV 1802 to the location of current block 1804, which results in the location of reference block 1806.

[0131] As described herein, the magnitude of the BVD 1810 may be coded using a bypass arithmetic coding mode. The bypass arithmetic coding mode may be used to speed up the arithmetic coding process. Compression of BVD 1810 magnitude symbols coded using a bypass arithmetic coding mode may be limited because their probability distribution is uniformly distributed (or at least assumed to be uniformly distributed). Information theory suggests that symbols cannot be compressed at a rate lower than their entropy without loss of information, and that symbols with uniform probability distributions have the greatest entropy. Therefore, symbols coded using a bypass arithmetic coding mode may generally require more bits to code than symbols coded using a normal arithmetic coding mode.

[0132] The disclosure herein may improve the compression efficiency of one or more magnitude symbols of BVD (e.g., BVD 1810) compared to existing techniques. For example, instead of directly entropy encoding the magnitude symbol of BVD 1810, an encoder (e.g., encoder 200 as shown in FIG. 2) may entropy encode an indication of whether the value of the magnitude symbol of BVD 1810 matches the value of the same magnitude symbol of a BVD candidate used as a predictor of BVD 1810. The indication of whether the value of the magnitude symbol of BVD 1810 matches the value of the magnitude symbol of a BVD predictor may have a non-uniform probability distribution and may therefore provide improved compression efficiency. The encoder may select a BVD predictor from among multiple BVD candidates. The encoder may select a BVD predictor from among multiple BVD candidates based, for example, on the cost of each of the multiple BVD candidates. The BVD candidates may include a BVD candidate for each possible value of the magnitude symbol of BVD 1810. For example, the magnitude symbol of 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 for each possible value of the magnitude symbol in BVD 1810 being encoded): a first BVD candidate equal to BVD 1810 itself, and a second BVD candidate equal to BVD 1810 but with the opposite (or other) value of the magnitude symbol of BVD 1810. A cost of each BVD candidate among the multiple BVD candidates may be calculated. The cost of each BVD candidate among the multiple BVD candidates may be calculated based on, for example, the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block may be displaced relative to the current block by the sum of the BVD candidate and BVP 1808.

[0133] Figure 18A shows a specific example. Figure 18A shows an example magnitude symbol 1816 of a BVD 1810 that is entropy coded. The magnitude symbol 1816 of the BVD 1810 is the horizontal component of the BVD 1810, xThe magnitude symbol 1816 of the BVD 1810 is the second most significant bit in the fixed-length binary representation of the BVD 1812 and has a binary value of "0." Instead of directly entropy encoding the magnitude symbol 1816 of the BVD 1810 as described herein, an 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 of the BVD 1810. The encoder may select a BVD predictor from among multiple BVD candidates. The encoder may select a BVD predictor from among multiple BVD candidates based on, for example, the cost of each of the multiple BVD candidates. The BVD candidates may include a BVD candidate for each of the two possible values ​​(e.g., {0, 1}) of the magnitude symbol 1816 of BVD 1810, e.g., a first BVD candidate 1818 equal to BVD 1810 itself, and a second BVD candidate 1820 equal to BVD 1810 but with the opposite (or other) value of the magnitude symbol 1816 of BVD 1810.

[0134] Figure 18B shows exemplary BVD candidates that can be used to entropy encode the magnitude symbol of BVD. Both BVD candidates shown in Figure 18B can be used, for example, to entropy encode the magnitude symbol 1816 of BVD 1810. More specifically, Figure 18B shows BVD candidate 1818, which is equal to BVD 1810 itself, and BVD candidate 1820, which is equal to BVD 1810 but whose magnitude symbol 1817 value ("1" in Figure 18B) is the opposite (or other) value of the magnitude symbol 1816 of BVD 1810 ("0" in Figure 18A). With the opposite (or other) value of the magnitude symbol 1816 of BVD candidate 1818, BVD candidate 1820 encodes a horizontal component with a magnitude of 11011 in fixed-length binary (or base 10 27) and a negative sign, BVD x 1822. The vertical component of BVD candidate 1820, BVD y 1824 has the same magnitude of 01011 in fixed length binary (or 11 in base 10) and the vertical component of BVD candidate 1818 (or BVD1810), BVD y It has a positive sign as 1814.

[0135] The cost of a BVD candidate among the plurality of BVD candidates may be obtained (e.g., determined, calculated). The cost of a BVD candidate among the plurality of BVD candidates may be obtained (e.g., determined, calculated), for example, based on the difference between the template of the current block 1804 and the template of a candidate reference block that is displaced relative to the current block 1804 by the sum of the BVD candidate and the BVP 1808. An encoder (e.g., the encoder 114 as shown in FIG. 1 or the encoder 200 as shown in FIG. 2) may determine the cost of a BVD candidate 1818. An encoder (e.g., the encoder 114 as shown in FIG. 1 or the encoder 200 as shown in FIG. 2) may determine the cost of a BVD candidate 1818 based, for example, on the difference between the template 1826 of the current block 1804 and the template 1828 of a candidate reference block 1830 that is displaced 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 template 1826 and template 1828, for example, based on the difference between samples of template 1826 and template 1828 (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). The encoder may determine the cost of BVD candidate 1820, for example, based on the difference between template 1826 of current block 1804 and template 1832 of candidate reference block 1834 displaced relative to current block 1804 by the sum of BVD candidate 1820 and BVP 1808. The encoder may determine the difference between template 1826 and template 1832, for example, based on the difference between samples of template 1826 and template 1828 (e.g., SSD, SAD, SATD, mean removed SAD, or mean removed SSD). 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.18B shows an exemplary position and shape (L-shape rotated 90 degrees clockwise) of templates 1826, 1828, and 1832. Additional and alternative positions and / or shapes can be used for the templates.

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

[0137] FIG. 18C shows an example of entropy encoding an indication of whether the value of the magnitude symbol for BVD matches the value of the magnitude symbol for a BVD candidate used as a predictor for BVD. More specifically, FIG. 18C shows a table 1870 having the components (e.g., horizontal and vertical) and cost of each BVD candidate 1818 and 1820 in respective rows 1872 and 1874. In this example, BVD candidates 1818 and 1820 are assumed to be the only BVD candidates for purposes of illustration. More BVD candidates may be used. The rows of table 1870 are sorted in this example based on the cost of BVD candidates 1818 and 1820 (e.g., from lowest to highest, with the BVD candidate with the lowest (e.g., smallest) cost listed in first row 1872). In this example, BVD candidate 1818 has the lowest (e.g., smallest) cost among BVD candidates 1818 and 1820. The encoder may select a BVD candidate 1818 as the BVD predictor 1836 for BVD 1810 based on, for example, the lowest cost associated with the BVD candidate 1818. The rows of table 1870 may alternatively be sorted from highest to lowest, with the BVD candidate with the highest cost listed in the first row.

[0138] For example, after selecting a BVD candidate 1818 as a BVD predictor 1836, the encoder may 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 of the BVD predictor 1836. The magnitude symbol 1819 of the BVD predictor 1836 has a value of “0,” which 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 the value “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. The indication 1838 may have a value of, for example, "1" if the value of the magnitude symbol 1816 of the BVD 1810 does not match the value of the magnitude symbol 1819 of the BVD predictor 1836. Alternatively, the value of the indication 1838 may be, for example, "1" 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, or may be "0" if the value of the magnitude symbol 1816 of the BVD 1810 does not match the value of the magnitude symbol 1819 of the BVD predictor 1836. Logic 1840 may be used to determine the indication 1838. The logic 1840 may implement, for example, a logical exclusive (XOR) function. The value of the magnitude symbol may not be binary. The instruction 1838 may, for example, indicate the first candidate among multiple candidates (e.g., sorted based on their respective costs) having a magnitude symbol value that may match the value of the magnitude symbol 1816 of the BVD 1810, if the magnitude symbol value is binary.

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

[0140] The arithmetic encoder 1842 may receive a probabilistic model 1844 from a context modeler 1846. The context modeler 1846 may determine the probabilistic model 1844 for the instruction 1838 by a fixed or adaptive selection from among two or more probabilistic models. The context modeler 1846 may, for example, determine the horizontal component of the BVD 1810, the BVD x The position of the magnitude symbol 1816 in 1812, or the horizontal component of BVD 1810, BVD x Based on the index of the position (e.g., the value it indicates) of the magnitude symbol 1816 in 1812, the probability model 1844 may be determined by a fixed or adaptive selection from among two or more probability models. xThe position (or position index) of the magnitude symbol 1816 in 1812 may provide an indication of the horizontal distance 1864 (as shown in FIG. 18B) between two candidate BVDs. y (e.g., BVD y The position (or position index) of the magnitude symbol in the BVD predictor 1836 (1812) 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 at 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 degree of difference between the respective templates of the candidate BVDs may be greater the greater the value of the distance 1864 between the candidate BVDs. A greater difference between the respective templates of the BVD candidates may correspond to the respective costs of the BVD candidates more accurately reflecting the BVD candidate associated with the magnitude symbol value that matches the value of the magnitude symbol 1816 of the BVD 1810. x The position (or position index) of the magnitude symbol 1816 in 1812 may be useful in selecting a probability model 1844 for the instruction 1838.

[0141] The context modeler may determine (e.g., select, identify, or indicate) a probabilistic model for indicating whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor. The context modeler may determine (e.g., select, identify, or indicate) a probabilistic model for indicating whether the value of the magnitude symbol of the BVD predictor matches the value of the magnitude symbol of the BVD predictor. x , or vertical component, BVD y) to one or more thresholds. The encoder and decoder may, for example, use the same thresholds for encoding and decoding, respectively. Thus, the threshold values ​​may be standard and thus defined in the video coding standard. The context modeler may, for example, select a probability model from among multiple probability models based on whether the position (or position index) satisfies a threshold (e.g., satisfies, is greater than, is less than). The context modeler may select a probability model from among multiple probability models as described herein for adaptive selection among probability models.

[0142] The context modeler 1846 may, for example, use the horizontal component of the BVD 1810, the BVD x The position (or position index) of the magnitude symbol 1816 in 1812 may be compared to one or more thresholds. For example, the context modeler 1846 may compare the horizontal component of the BVD 1810, the BVD x The position (or position index) of the magnitude symbol 1816 in 1812 may be compared to a first threshold. The context modeler 1846 may, for example, compare the horizontal component of the BVD 1810, the BVD x The context modeler 1846 may select a first probabilistic model for the indication 1838 based on the position (or position index) of the magnitude symbol 1816 in 1812 being less than (or equal to or greater than, depending on the particular implementation) a first threshold. x The context modeler 1846 may select a second (e.g., different) probability model for the indication 1838 based on the position (or position index) of the magnitude symbol 1816 in 1812 being greater than (or equal to, or less than, the first threshold, depending on the particular implementation). xBased on the position (or position index) of the magnitude symbol 1816 in 1812 being greater than (or equal to or less than, depending on the particular implementation) a first threshold, the horizontal component of BVD 1810, BVD x The context modeler 1846 may compare the position (or position index) of the magnitude symbol 1816 in 1812 to a second threshold. x The context modeler 1846 may select a second probabilistic model for the indication 1838 based on the position (or position index) of the magnitude symbol 1816 in 1812 being less than (or equal to or greater than, depending on the particular implementation) a second threshold. x A third probability model may be selected for the instruction 1838 based on the position (or position index) of the magnitude symbol 1816 in 1812 being greater than a second threshold (or equal to or less than the second threshold, depending on the particular implementation).

[0143] The disclosure described herein relates to the vertical component of BVD, BVD y A context modeler (e.g., context modeler 1846) may be used to determine (e.g., select, identify, indicate) one or more probabilistic models for indicating whether the value of the magnitude symbol of the vertical component of the BVD predictor matches the value of the magnitude symbol of the vertical component of the BVD predictor. A context modeler (e.g., context modeler 1846) may be used to adaptively select among two or more probabilistic models for, for example, adaptively selecting among two or more probabilistic models for the vertical component of the BVD (e.g., BVD 1810), BVD y The position (or index of the position) of the magnitude symbol in BVD may be compared to one or more thresholds. For example, the context modeler may compare the vertical component of BVD, BVD y The context modeler may compare the position (or index of the position) of the magnitude symbol in ∇ ... yThe context modeler may select a first probabilistic model for the indication based on the position (or index of the position) of the magnitude symbol in (BVD) being less than (or equal to or greater than) a first threshold, depending on the particular implementation. y the vertical component of the BVD, BVD, based on the position (or index of the position) of the magnitude symbol in y The context modeler may compare the position (or index of the position) of the magnitude symbol in ∇ ... y The context modeler may select a second probability model for the indication based on the position (or position index) of the magnitude symbol in (BVD) being less than (or equal to or greater than) a second threshold, depending on the particular implementation. y The third probability model may be selected for the instruction based on the position (or position index) of the magnitude symbol in being greater than (or equal to or less than) a second threshold, depending on the particular implementation.

[0144] The context modeler 1846 may determine (e.g., select, identify, or indicate) the probabilistic model 1844 by a fixed or adaptive selection from among two or more probabilistic models. The context modeler 1846 may, for example, determine the magnitude of the BVD 1810 (or the horizontal component of the BVD 1810, BVD 1810) for an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x 1812) for an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x The change in value of 1812) is 2 (n-1) where n is the horizontal component of BVD1810, BVD x18A-D, for example, n=4 (the magnitude symbol 1816 is in the fourth position in the bit sequence), and therefore the magnitude of BVD 1810 (or the horizontal component of BVD 1810, BVD x The change in value of 1812) is 2 (4-1) or 8. The magnitude of BVD 1810 (or the horizontal component of BVD 1810, BVD x 1812) may indicate a distance 1864 (as shown in FIG. 18B) between two candidate BVDs (e.g., BVD candidate 1818 and BVD candidate 1820 in FIG. 18B). As described herein, 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 degree of difference between the respective templates of the candidate BVDs may be greater the greater the value of the distance 1864 between the candidate BVDs. A greater difference between the respective templates of the BVD candidates may correspond to the respective cost of the BVD candidate more accurately reflecting the BVD candidate associated with the magnitude symbol value that matches the value of the magnitude symbol 1816 of the BVD 1810. 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 (or the horizontal component of the BVD 1810, BVD x Changes in the values ​​of 1812) can be useful in determining (e.g., selecting, identifying, instructing) a probabilistic model 1844 for an instruction 1838.

[0145] The disclosures described herein also provide a method for determining the vertical component, BVD, by fixed or adaptive selection among two or more probability models. y (e.g., BVD yA context modeler (e.g., context modeler 1846) may be used to determine (e.g., select, identify, or indicate) a probabilistic model for a BVD (e.g., BVD 1810, or the vertical component of BVD 1810, BVD 1814) or a BVD (e.g., BVD 1810) for, for example, incremental changes in the value of the magnitude symbol of the BVD. y A probability model may be determined based on the change in the value of BVD (or the vertical component of BVD 1810, BVD 1814) for incremental changes in the value of the magnitude symbol of BVD. y The change in value of 1814) is 2 (n-1) where n is the vertical component of BVD, BVD y The bit position of the magnitude symbol in BVD (or the vertical component of BVD, BVD y 1814) may indicate the distance between two candidate BVDs. As described herein, the likelihood that the value of the magnitude symbol of the BVD predictor matches the value of the magnitude symbol of the BVD may be related to the distance. The degree of difference between the respective templates of the candidate BVDs may be greater the greater the value of the distance between the candidate BVDs. The greater the difference between the respective templates of the BVD candidates, the more likely the cost of the BVD candidate may accurately reflect the BVD candidate with a magnitude symbol value that matches the value of the magnitude symbol of the BVD. The effect of the BVD (or the vertical component of the BVD, BVD y Changes in the values ​​of 1814) can help determine (e.g., select, discriminate, or direct) the probabilistic model for the instruction.

[0146] The context modeler 1846 calculates the magnitude of the BVD 1810 (or the horizontal component of the BVD 1810, BVD x 1812) to one or more thresholds for adaptive selection among two or more probability models, for example. For example, the context modeler 1846 may compare the value of the BVD 1810 (or the horizontal component of the BVD 1810, BVD 1812) to one or more thresholds for adaptive selection among two or more probability models, for example. xThe context modeler 1846 may compare the value of the BVD 1810 (or the horizontal component of the BVD 1810, BVD 1812) to a first threshold. x The context modeler 1846 may determine (e.g., select, identify, indicate) a first probabilistic model for the indication 1838 based on the value of the magnitude symbol 1816 of the BVD 1810 being less than (or equal to or greater than, depending on the particular implementation) a first threshold value. x The context modeler 1846 may select a second (e.g., different) probability model for the indication 1838 based on the value of the magnitude symbol 1816 of the BVD 1810 being greater than (or equal to or less than) the first threshold, depending on the particular implementation. x 1812) is greater than (or equal to or less than, depending on the particular implementation) a first threshold, the magnitude symbol 1816 of BVD 1810 is increased by a factor of 1. x The context modeler 1846 may compare the value of the BVD 1810 (or the horizontal component of the BVD 1810, BVD 1812) to a second threshold, for example, for an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. x The context modeler 1846 may select a second (e.g., different) probability model for the indication 1838 based on the value of the magnitude symbol 1816 of the BVD 1810 being less than (or equal to or greater than, depending on the particular implementation) a second threshold. xA third probability model for instruction 1838 may be selected based on the value of 1812) being greater than (or equal to or less than) a second threshold, depending on the particular implementation.

[0147] The disclosure described herein relates to the vertical component of BVD (e.g., BVD1810), BVD y (e.g., BVD y A context modeler (e.g., context modeler 1846) may be used to compare the value of the vertical component of the BVD (e.g., BVD 1810) with respect to incremental changes in the value of the magnitude symbol of the BVD, BVD y (e.g., BVD y 1812) to one or more thresholds for adaptively selecting among two or more probability models. For example, the context modeler may compare the value of the BVD (or the vertical component of the BVD, BVD ... y ) to a first threshold. The context modeler may, for example, compare the value of the BVD (or the vertical component of the BVD, BVD) to an incremental change in the value of the magnitude symbol of the BVD. y ) is less than (or equal to or greater than, depending on the particular implementation) a first threshold. The context modeler may, for example, determine (e.g., select, identify, or indicate) a first probabilistic model for the indication based on the value of the BVD (or the vertical component of the BVD, BVD y ) is greater than (or equal to or less than, depending on the particular implementation) the first threshold, the context modeler may determine (e.g., select, identify, indicate) a second (e.g., different) probabilistic model for the indication. The context modeler may then calculate the magnitude of the BVD (or the vertical component of the BVD, BVD) for incremental changes in the value of the magnitude symbol of the BVD. y ) for an incremental change in the value of the magnitude symbol of the BVD (or the vertical component of the BVD, BVD y) is greater than (or equal to or less than, depending on the particular implementation) the first threshold, the second threshold, and the second threshold. The context modeler may, for example, compare the magnitude of the BVD (or the vertical component of the BVD, BVD) to an incremental change in the value of the magnitude symbol of the BVD. y ) is less than (or equal to or greater than, depending on the particular implementation) a second threshold value, the context modeler may determine (e.g., select, identify, indicate) a second (e.g., different) probability model for the indication. The context modeler may, for example, determine a BVD (or a vertical component of the BVD, BVD) for an incremental change in the value of the magnitude symbol of the BVD. y The third probability model for the instruction may be selected based on the value of (i.e., (ii)) being greater than (or equal to or less than) a second threshold, depending on the particular implementation.

[0148] The probabilistic model may include multiple parameters, such as the probability P of the least likely symbol (LPS) for indicating whether the value of the magnitude symbol in the BVD matches the value of the magnitude symbol in the BVD predictor. LPS , the most likely symbol (MPS) value for the instruction V MPS , (e.g., the probability of LPS for instruction 1838 P LPS In addition to or instead of (in addition to or instead of) the probability P of MPS for the indication MPS , and / or (e.g., the value V of the MPS for the indication MPS In addition to or instead of (V) the LPS value for indication LPS The example probabilistic model 1844 shown in FIG. 18C may include P LPS and V MPS Includes.

[0149] The computational encoder may provide parameters used to adapt the probability model. For example, the computational encoder 1842 may provide one or more probability model update parameters 1850 to the context modeler 1846. The computational encoder 1842 may provide the one or more probability model update parameters 1850, for example, after the computational encoder 1842 encodes the instruction 1838. The context modeler 1846 may adapt the probability model 1844 based on the one or more probability model update parameters 1850. The one or more probability model update parameters 1850 may include, for example, an actual coded value of the instruction 1838. The context modeler 1846 may, for example, adapt the P of the instruction 1838. LPS The context modeler 1846 may update the probabilistic model 1844 by, for example, increasing or decreasing V MPS If not equal to P LPS The context modeler 1846 may, for example, determine whether the actual coded value of the instruction 1838 is V MPS If it is equal to P in instruction 1838 LPS can be reduced.

[0150] An arithmetic encoder (e.g., arithmetic encoder 1842) may determine a value in the range of the final coding interval as an arithmetic codeword for a binary symbol. For example, arithmetic encoder 1842 may determine a value in the range of the final coding interval as an arithmetic codeword 1852 for a binary symbol. Arithmetic encoder 1842 may, for example, determine a value after processing a number of binary symbols (e.g., corresponding to one or more syntax elements). Arithmetic encoder 1842 may output arithmetic codeword 1852. For example, arithmetic encoder 1842 may output arithmetic codeword 1852 to a bitstream (e.g., bitstream 110 as shown in FIG. 1 , bitstream 204 as shown in FIG. 2 , or bitstream 302 as shown in FIG. 3 ). The bitstream may be received and processed by a video decoder.

[0151] 18D shows an example of a decoder (e.g., decoder 120 as shown in FIG. 1 or decoder 300 as shown in FIG. 3) that may receive an opcode word 1852, computationally decode an instruction 1838 from the opcode word 1852, and use the instruction 1838 to determine a magnitude symbol 1816 for a BVD 1810 as described herein.

[0152] The decoder may receive the op codeword 1852 in the bitstream. The decoder may provide the op codeword 1852 to an op decoder 1854. The instructions 1838 may have a non-uniform probability distribution, e.g., based on a method for determining the instructions 1838 as described herein. The op decoder 1854 may process the instructions 1838 in a normal op decoding mode. For example, the op decoder 1854 may perform a recursive interval subdivision as described herein to decode the symbols encoded by the op codeword 1852. The op decoder 1854 may arithmetically decode symbols that take values ​​from an m-ary source alphabet. The arithmetic decoder 1854 may arithmetically decode symbols that take values ​​from an m-ary source alphabet, e.g., by dividing the initial coding interval into m disjoint subintervals. Each of the m disjoint subintervals may have a width proportional to the probability that the symbol has a different one of the values ​​of the m-ary source alphabet. For example, for a binary symbol such as instruction 1838, m equals 2, and the initial coding interval may be subdivided into two disjoint intervals, each with a width proportional to the probability of a different one of two possible values ​​(e.g., {0, 1}). The probabilities of symbols having different values ​​in the m-ary source alphabet may be referred to as a probability model for the symbol, as described herein. A symbol may be operationally decoded from an operational code word 1852 by determining the symbol value corresponding to the subinterval in which the operational code word falls. The decoder may compute the sequence s = {s1, s2, ..., s} encoded by the operational code word 1852. N ) each symbol s i , may be sequentially decoded (e.g., as shown in FIG. 18D , the horizontal component of the BVD predictor 1836, BVD x The sequence "10011" and the vertical component of the BVD predictor, BVD yThe decoder may, for example, use this interval subdivision scheme recursively N times to determine in each iteration which subinterval the operation codeword 1852 falls within, thereby generating a sequence s={s1, s2, ..., s N ) each symbol s i can be decoded sequentially.

[0153] The arithmetic decoder 1854 may receive the probability model 1844 for the instruction 1838 from the context modeler 1846, for example, when decoding a symbol corresponding to the instruction 1838. The context modeler 1856 may determine the probability model 1844 for the instruction 1838 with a fixed selection from among two or more probability models, in the same manner as described herein for the context modeler 1846, as shown in FIG. 18C. The context modeler 1856 may determine the probability model 1844 for the instruction 1838 with an adaptive selection from among two or more probability models, in the same manner as described herein for the context modeler 1846, as shown in FIG.

[0154] 18D , the operation decoder 1854 may provide one or more probability model update parameters 1850 to the context modeler 1856, for example, after the operation decoder 1854 decodes the instruction 1838. The context modeler 1856 may adapt the probability model 1844 based on the one or more probability model update parameters 1850. For example, the one or more probability model update parameters 1850 may include the actual decoded value of the instruction 1838. The context modeler 1856 may then adapt the probability model 1844 based on the P LPS The context modeler 1856 may update the probability model 1844 by, for example, increasing or decreasing V MPS If not equal to P LPS The context modeler 1856 may, for example, increase V MPS If it is equal to P in instruction 1838 LPS can be reduced.

[0155] An arithmetic decoder (e.g., arithmetic decoder 1854) may determine the value of the magnitude symbol of the BVD based on the value of the magnitude symbol of the BVD predictor and the value of the indication of whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor. The decoder may, for example, determine the value of the magnitude symbol 1816 of the BVD 1810 based on the value of the magnitude symbol 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, for example, determine the value of the magnitude symbol 1816 of the BVD 1810 to be equal to the magnitude symbol of the BVD predictor 1836 based on the indication 1838 indicating 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 decoder may determine that the value of the magnitude symbol 1816 of BVD 1810 is not equal to (or equal to) the opposite value of the magnitude symbol 1819 of the BVD predictor 1836 based on the indication 1838 indicating that the value of the magnitude symbol 1816 of BVD 1810 does not match the value of the magnitude symbol 1819 of the BVD predictor 1836. In this example, the magnitude symbol 1819 of the BVD predictor 1836 may have a value of "0," which may match the value of the magnitude symbol 1816 of BVD 1810. In this example, the indication 1838 may indicate that the value of the magnitude symbol 1816 of BVD 1810 matches the value of the magnitude symbol 1819 of the BVD predictor 1836. The indication 1838 may be a single bit that may have a value of "0", for example, 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, and may have a value of "1", for example, if the value of the magnitude symbol 1816 of the BVD 1810 does not match the value of the magnitude symbol 1819 of the BVD predictor 1836. Alternatively, the value of the indication 1838 may be "1", for example, 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, and may be "0" if the value of the magnitude symbol 1816 of the BVD 18010 does not match the value of the magnitude symbol 1819 of the BVD predictor 1836.Logic 1858 may be used to determine the magnitude symbol 1816 of the BVD 1810. The logic 1858 may implement, for example, a logical XOR function. If the magnitude symbol is not binary, the indication may indicate a first candidate among multiple candidates (e.g., sorted based on their respective costs) that has a magnitude symbol value that matches the value of the magnitude symbol in the BVD.

[0156] The decoder may determine the value of the magnitude symbol 1819 of the BVD predictor 1836 in the same manner as the encoder, as described herein. More specifically, the decoder may select the BVD predictor 1836 from among multiple BVD candidates. The decoder may select the BVD predictor 1836 from among multiple BVD candidates, for example, based on respective costs obtained (e.g., determined, calculated) for the multiple BVD candidates. The BVD candidates may include a BVD candidate for each possible value of the magnitude symbol of BVD 1810. For example, the magnitude symbol of BVD (e.g., BVD 1810) represented in binary form has only two possible values: {0, 1}. Thus, BVD candidates for a BVD having a magnitude symbol with only two possible values ​​may include at least two BVD candidates for BVD (one for each possible value of the magnitude symbol of the BVD being encoded), i.e., a first BVD candidate equal to BVD itself (e.g., BVD candidate 1818 for BVD 1810) and a second BVD candidate equal to BVD but with the opposite (or other) value of the magnitude symbol of BVD (e.g., BVD candidate 1820 for BVD 1810). The cost of each BVD candidate of the multiple BVD candidates may be calculated as described herein for the encoder, for example, based on the difference between a template of a current block (e.g., current block 1804 shown in Figures 18A and B) and a template of a candidate reference block (e.g., candidate reference block 1806, candidate reference block 1830, candidate reference block 1843 shown in Figures 18A and B). A candidate reference block may be displaced relative to the current block by the sum of the BVD candidate and the BVP (e.g., BVP 1808, as shown in Figures 18A and B). The decoder may select the BVD candidate with the lowest cost as the BVD predictor (e.g., BVD predictor 1836).

[0157] The disclosure provided herein (see, e.g., FIGS. 18A-D) may 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 a magnitude symbol of a BVD matches the value of the magnitude symbol of a BVD candidate used as a predictor for BVD may be applied to multiple magnitude symbols of a BVD. The disclosure provided herein may be applied to multiple magnitude symbols of a BVD candidate, e.g., horizontal components other than magnitude symbol 1816, e.g., BVD x It may be applied to one or more magnitude symbols of 1812. Horizontal component, BVD x For each additional magnitude symbol in 1812, an additional BVP candidate may be determined. For example, the disclosure provided herein (e.g., with respect to FIGS. 18A-D) provides a method for determining the horizontal component, BVD x 1812, which may be applied to N magnitude symbols, N (2^N) different BVP candidates (where N is an integer) - horizontal component, BVD x A cost may be determined for each of the BVP candidates, one for each possible combination of values ​​of the N magnitude symbols in 1812. The cost is calculated by dividing the horizontal component, BVD x The N magnitude symbols of 1812 may be sorted to determine a BVP predictor for encoding and / or decoding each of the N magnitude symbols.

[0158] The disclosure provided herein (see, e.g., FIGS. 18A-D) may be applied to the vertical component of a BVD. For example, the disclosure provided herein for entropy encoding and / or decoding an indication of whether the magnitude symbol value of a BVD matches the magnitude symbol value of a BVD candidate used as a predictor for the BVD may be applied to the vertical component of a BVD. y (e.g., BVD y 1814). The disclosure provided herein applies to the horizontal component, BVD x (e.g., BVD x 1816) in addition to, or instead of, one or more magnitude symbols of the vertical component (e.g., BVD y 1814) may be applied to one or more magnitude symbols.

[0159] Other binarizations of the components of the BVD and BVD candidates may be possible. For example, as disclosed herein, the vertical component of the BVD 1810, the BVD y 1814, and horizontal component, BVD x The components of the BVD candidate 1816 can be represented using fixed-length binary. y 1814, and horizontal component, BVD x 1816, as well as other possible binarizations of the vertical and horizontal components of the BVD candidate. For example, the vertical component BVD y 1814 and horizontal component BVD x 1816 may be represented using unary, truncated unary, kth-truncated Rice, kth-exponential-Golomb (EGk), or any combination of two or more of the binarization processes disclosed herein. For EGk, each codeword has length L N +1 unary prefix and length L N may contain a +k suffix,

number

[0160] The disclosure provided herein may be applied in other contexts (e.g., see FIG. 18A-D). For example, the disclosure provided herein may be applied to one or more magnitude symbols of MVD used in inter prediction. For example, the disclosure provided herein may be applied to one or more magnitude symbols of BVD used in IBC. For example, the disclosure provided herein may be applied to one or more magnitude symbols of MVD used in inter prediction, in addition to or instead of one or more magnitude symbols of BVD used in IBC. For inter prediction, the terms BV, BVP, BVD, and BVD candidate used with reference to FIG. 18A-D may be replaced with the terms MV, MVP, MVD, and MVD.

[0161] The disclosure provided herein (see, e.g., Figures 18A-D) may be applied to IBC and inter prediction. The disclosure provided herein may be applied to IBC and inter prediction, for example, based on a translational motion model of the prediction block. The disclosure provided herein (see, e.g., Figures 18A-D) may be applied to IBC and inter prediction, for example, based on an affine motion model of the prediction block.

[0162] The disclosure provided herein (see, e.g., FIGS. 18A-D) may be applied to multiple magnitude symbols of BVD. For example, the disclosure provided herein for entropy coding and / or decoding an indication of whether the value of a magnitude symbol of a BVD matches the value of a magnitude symbol of a BVD candidate used as a predictor of BVD may be applied to multiple magnitude symbols of BVD. The disclosure provided herein may be applied to, for example, horizontal components other than magnitude symbol 1816, BVD x The disclosure provided herein may be applied to one or more magnitude symbols of BVD 1812. y 1814. The disclosure provided herein (see, e.g., Figures 18A-D) may be applied to one or more magnitude symbols of the BVD components (e.g., BVD x 1812 and / or BVD yFor each additional magnitude symbol (N=1814), an additional BVP candidate can be determined. For example, if N is an integer value, then the horizontal component, BVD x (e.g., BVD x 1812), and / or vertical component, BVD y (e.g., BVD y 1814), applying the disclosure provided herein (e.g., with respect to Figures 18A-D),

number

[0163] The disclosure provided herein (see, e.g., Figures 18A-D) may be applied to a limited number of magnitude symbols of BVD. For example, applying the disclosure provided herein (see, e.g., Figures 18A-D) to N magnitude symbols of BVD, where N is an integer value, yields:

number

number

[0164] The disclosure provided herein may satisfy a need to determine how to divide (or otherwise allocate, allocate, distribute) the number of magnitude symbols predicted for BVD, for example, when the number of magnitude symbols to be predicted for BVD is less than the number of magnitude symbols available for prediction for BVD. More generally, the disclosure provided herein may satisfy a need to determine how to use a prediction budget for BVD magnitude prediction. The number of symbols N that are predicted or to be predicted in the magnitude component of the block vector difference (BVD) is XBP The symbol may be the most significant symbol (e.g., the highest order symbol) of the BVD. The number of symbols N that are predicted or to be predicted for the magnitude component of the BVD may be determined as follows: XBP is the total number of symbols N that are predicted or to be predicted across both the first magnitude component of the BVD (e.g., horizontal component) and the second magnitude component of the BVD (e.g., vertical component). BP The total number of magnitude symbols that are or should be predicted, N BP can be limited, for example, by the total number of predicted or expected magnitude symbols N BP may be limited to a number less than the total number of symbols available for prediction across both the first magnitude component of the BVD and the second magnitude component of the BVD. The first magnitude component may be, for example, the horizontal magnitude component of the BVD or the vertical magnitude component of the BVD. The second magnitude component of the BVD may be the other of the two magnitude components (e.g., the vertical magnitude component if the first magnitude component is the horizontal magnitude component, or the horizontal magnitude component if the first magnitude component is the vertical magnitude component). The disclosure provided herein (see, e.g., Figures 18A-D) may be used to, for example, limit the N magnitude components of the BVD that are predicted or to be predicted. XBP It may be applied to each of the most significant symbols, for example, N of the magnitude components of the BVD that are predicted or to be predicted. XBPFor each most significant symbol (e.g., a most significant symbol), entropy encode and / or decode (e.g., in accordance with the disclosure provided herein with reference to Figures 18A-D) an indication of whether the value of the most significant symbol of the magnitude component of the BVD predictor matches the value of the most significant symbol of the magnitude component of the BVD predictor. These and other features are described further below.

[0165] 19 illustrates an exemplary method for encoding a prediction associated with a magnitude component of a BVD based on the number of symbols to be predicted for the magnitude component. More specifically, FIG. 19 illustrates a flowchart 1900 of exemplary method steps for encoding a prediction associated with a magnitude component of a BVD. The encoding of 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 the exemplary flowchart 1900 may be performed by an encoder such as the encoder 114 shown in FIG. 1 and / or the encoder 200 shown in FIG. 2.

[0166] In step 1902, the encoder calculates the total number of symbols to be predicted across both the first magnitude component of the BVD and the second magnitude component of the BVD, N BP The number N of most significant symbols in the first magnitude component of the block vector difference (BVD) to be predicted based on XBP The most significant symbol to be predicted may be the most significant 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., most significant) symbol corresponds to the bit corresponding to the highest numerical value, specifically, the bit whose total numerical value is (b 1× 2 3 )+(b 2× 2 2 )+(b 3× 2 1 )+(b4 × 2 0) corresponds to 23 in the 4-bit binary sequence given by . In this example, the next most significant (e.g., next most significant) symbol corresponds to the next highest numerical value in the 4-bit binary sequence, specifically 2 2 The least significant (e.g., least significant) symbol corresponds to the bit with the lowest numerical value, especially 2. 0 The first magnitude component may be a horizontal magnitude component of the BVD or a vertical magnitude component of the BVD. The second magnitude component may be the other of the two magnitude components (e.g., the vertical magnitude component if the first magnitude component is a horizontal magnitude component, or the horizontal magnitude component if the first magnitude component is a vertical magnitude component). The symbol to be predicted may be predicted as disclosed herein (e.g., see FIGS. 18A-D).

[0167] Total number N BP may be limited to a number less than the total number of symbols available for prediction across both the first magnitude component of the BVD and the second magnitude component of the BVD, e.g., to limit complexity in the encoder and / or decoder. For example, returning to FIG. 18A , the total number N BP is the horizontal magnitude component of BVD1810, BVD x Vertical magnitude components of 1812 and BVD1810, BVD y 18A-D). BP may be determined based on the size of the block to be predicted (e.g., the current block 1804 in FIG. 18A). BP may be relatively small for relatively small block sizes. x The number of symbols available for prediction across the binary representation of a BVD (e.g., horizontal component, BVD) may be equal to the total number of symbols in the binary representation of the horizontal component. xThe number of symbols available for prediction across the binary representation of BVD 1812 may be, for example, 5 symbols (or bits). y The number of symbols available for prediction across the binary representation of a BVD (1814) may be equal to the total number of symbols in the binary representation of the vertical component. The number of symbols available for prediction across the binary representation of the vertical component of a BVD may be, for example, 5 symbols (or bits). The total number of symbols available for prediction across both the horizontal and vertical components of a BVD may 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 5, then the horizontal component BVDx and the vertical component BVDy The total number of symbols available for prediction across both , may be equal to 5 + 5 or 10 symbols (or bits). For example, the total number of symbols to be predicted, N BP If is equal to 3 symbols, the total number, N BP is the horizontal component of the BVD, BVDx and the vertical component, BVDy The total number of symbols available for prediction across both .times. ...

[0168] In step 1902, the encoder determines the number of most significant symbols in one of the magnitude components of the BVD to be predicted, N XBP In Figure 19, the encoder may determine a number, N XBP The magnitude component that determines BVD is referred to as the "first magnitude component" in step 1902. For example, the encoder may determine the horizontal component of BVD, BVD x (e.g., BVD1810 x 1812) or the vertical component of BVD, BVD y (e.g., BVD1810 y Number N of 1814 XBP The encoder may determine, for example, the total number of symbols to be predicted across both the first magnitude component of the BVD and the second magnitude component of the BVD, N BPThe number of most significant symbols to be predicted, N XBP For example, in step 1902, the encoder may determine the number of most significant symbols in the first magnitude component, N XBPを , may be determined to be equal to a number of symbols less than or equal to the total number of symbols indicated (or otherwise specified) by the NBP. The total number of symbols to be predicted for BVD, N BP is 3, the encoder determines the number of most significant symbols to be predicted for the first magnitude component, N XBP may be determined to be equal to 0, 1, 2, or 3. The total number of symbols to be predicted for BVD, N BP are assigned (or otherwise allocated or distributed) to the first magnitude component, then the magnitude symbols of the second magnitude component may not be predicted (e.g., in accordance with the disclosure provided herein with reference to Figures 18A-D). The total number of symbols N to be predicted for the BVD across both the first magnitude component of the BVD and the second magnitude component of the BVD BP The number N of most significant symbols of the first magnitude component to be predicted based on XBP Additional details regarding the determination of are disclosed herein, for example, with reference to FIG.

[0169] In 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 an n-bit binary sequence representing the first magnitude component, the most significant symbol of the binary sequence is the 2 most significant symbol of the binary sequence. n-1 position (e.g., 2 for a 4-bit binary sequence) (4-1) =2 3 ) The encoder calculates the N magnitude components of the first BVD to be predicted. XBPFor each of the most significant symbols in the first magnitude component of the BVD, a respective indication of whether the value of the most significant symbol in the first magnitude component of the BVD predictor (e.g., as disclosed herein with reference to Figures 18A-D) is entropy coded. For example, the number of most significant symbols to be predicted for a magnitude component, N, represented by a 4-bit binary sequence (n=4), may be entropy coded. XBP If σ is 3, the encoder determines that for the first three most significant symbols, the values ​​of the three most significant symbols in the first magnitude component of the BVD predictor are equal to the three most significant symbols in the first magnitude component of the BVD predictor (e.g., σ 2 ). 3 Symbol at position, symbol 2 2 Position and Symbol 2 1 Each indication of whether a match occurs with a particular location may be entropy coded.

[0170] FIG. 20 illustrates an exemplary method for determining the number of symbols to be predicted for the magnitude component of BVD. More specifically, FIG. 20 illustrates a flowchart 2000 of exemplary method steps for determining the number of symbols to be predicted for the magnitude component of BVD. The exemplary flowchart 2000 illustrated in FIG. 20 may correspond to step 1902 of FIG. 19. One or more steps of the exemplary flowchart 2000 may be performed by an encoder, such as the encoder 114 illustrated in FIG. 1 and / or the encoder 200 illustrated in FIG. 2. One or more of the steps of the exemplary flowchart 2000 may be optional. One or more steps of the exemplary flowchart 2000 may be omitted. The order of the steps illustrated in the exemplary flowchart 2000 is not necessarily the only order for performing the steps of the exemplary flowchart 2000. The order of the steps of the exemplary flowchart 2000 may be modified.

[0171] In step 2002, the encoder determines the number of symbols in the first magnitude component of the BVD that are available for prediction, NAXB is the number of symbols in the second magnitude component of BVD available for prediction, NAYB may determine whether AXB >N AYB As described herein, the first magnitude component may be the horizontal magnitude of the BVD or the vertical magnitude component of the BVD, and the second magnitude component may be the other of the two magnitude components of the BVD.

[0172] N AXB and / or N AYB may be determined, for example, 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 may be equal to the number of symbols used to represent the first magnitude component and the number of symbols used to represent the second magnitude component, respectively. For example, the horizontal magnitude component BVD of BVD 1810 in FIG. 18A may be equal to the number of symbols used to represent the first magnitude component and the second magnitude component, respectively. x The binary representation of 1812 is the horizontal component BVD x Five symbols (or bits) are used to represent 1812. N AXB is the horizontal component BVDx For example, if you want to use 1812, AXB is the five symbols (or bits), or alternatively the horizontal component, BVD x It may be determined that the number of symbols used to represent 1812 is equal to the number of symbols used to represent 1812.

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

[0174] The first magnitude component and the second magnitude component may be represented by one of a variety of codes. As disclosed herein, the code used to represent the magnitude components may include two parts: a first part referred to as a "prefix" and a second part referred to as a "suffix." Exemplary codes include Rice codes and Golomb codes (e.g., Golomb-Rice codes or Exponential-Golomb codes). For example, referring to FIG. 18A, the horizontal component BVD 1810 is x The magnitude of 1812 may be binarized using a Golomb-Rice code. A Golomb-Rice code has the structure disclosed herein, i.e., a prefix indicating a range of values ​​and a suffix indicating an exact value within the range of values. A Golomb-Rice code C of degree k is grk (v) contains the unary coded prefix and k suffix bits, where k suffix bits are integers 0≦i<2 k An example of a Golomb-Rice code for k=4 is shown in Table 1 below. In the table and the following disclosure, x0, x1, ..., x n teeth,

number

[0175] The number of prefix bits is denoted by np and the number of suffix bits is denoted by ns. For Golomb-Rice codes, the number of suffix bits is ns=k. When encoding a value v, the number of prefix bits is determined by the following formula:

number

number

number

[0176] 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 use the horizontal component (e.g., BVDx It can further be used to binarize the magnitude of the k-th order Exp-Golomb code C egk (v) includes unary prefix codes and variable length suffixes. Suffix n s The number of bits in the value n is p is determined based on the

number

[0177] Cegk (v) prefix bit n p The number of is determined from the value v given by:

number

[0178] Then the suffix is s It is a bit representation.

number

[0179] An example of an Exp-Golomb code with k=1 is shown in Table 2 below. [Table 2]

[0180] In FIG. 18A, for example, the horizontal component of BVD1810, BVDx The magnitude of 1812 has 19 values ​​in base 10, which can be represented by a Golomb-Rice code or an Exp-Golomb code. For example, the horizontal component, BVDx The magnitude of BVD1812 can be represented by an Exp-Golomb code of degree k=4 with a prefix of "0001" and a suffix of "0101". The prefix "0001" in this example represents the horizontal component of BVD1810, BVDx The prefix "0101" in this embodiment indicates that the magnitude of BVD 1812 is within the range of values ​​14 to 29 (e.g., a magnitude range of 14 to 29 or a magnitude range of 14 to 29). BVDx This indicates that the magnitude of 1812 has a precise value of 19, which is within the range of 14 to 29. In FIG. 18A, for example, the vertical component of BVD 1810, BVDy The magnitude of 1814 has 11 values ​​in the base 10, which can be represented by a Golomb-Rice code or an Exp-Golomb code. For example, the vertical component, BVDyThe magnitude of 1814 can be represented by an Exp-Golomb code of order k=1, with a prefix of "001" and a suffix of "101". The prefix "001" in this example represents the vertical component, BVDy The suffix "101" in this example indicates that the magnitude of 1814 is within the range of values ​​6 to 13 (e.g., the magnitude range of 6 to 13 or the magnitude range of 6 to 13). BVDy Indicates that the magnitude of 1814 has 11 precise values, which are in the range of values ​​6 to 13.

[0181] Referring to FIG. 20, the encoder calculates N AXB N AYB The encoder may determine whether the first magnitude component is greater than the second magnitude component based on, for example, the number of prefix symbols of the codeword used to represent the first magnitude component and the number of prefix symbols of the codeword used to represent the second magnitude component. NAXB 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 whether N AXB N AYB The symbols of the first magnitude component of the BVD available for prediction may be restricted. For example, the symbols of the first magnitude component of the BVD available for prediction may be limited to the symbols of a suffix of the codeword used to represent the first magnitude component. The symbols of the second magnitude component of the BVD available for prediction may be restricted. For example, the symbols of the second magnitude component of the BVD available for prediction may be limited to the symbols of a suffix of the codeword used to represent the second magnitude component. The number of symbols of the prefix may provide an indication of the number of symbols of the suffix.

[0182] The encoder may, for example, in step 2002, AXB NAYB In step 2004, the encoder may perform step 2004 based on determining that the total number of magnitude symbols to predict for BVD, N BP is the number of magnitude symbols of the first magnitude component of BVD available for prediction, N AXB and the number of magnitude symbols of the second magnitude component of BVD available for prediction, N AYB (N BP >N AXB -N AYB ).

[0183] The encoder may, for example, determine in step 2004 that N BP N AXB and N AYB In step 2006, the encoder may perform step 2006 based on determining that the difference between N is greater than the difference between N and N. In step 2006, the encoder may perform step 2006 based on determining that the difference between N is greater than the difference between N and N, based on determining ... XBP For example, the encoder may determine N AXB and N AYB The difference between (N AXB -N AYB ), and the total number of magnitude symbols to predict BVD, N BP Half of (N BP / 2) to predict the number of magnitude symbols N for the first magnitude component of the BVD. XBP For example, N XBP is (N AXB -N AYB )+N BP / 2. The total number, N BP If is not evenly divisible by 2, then N BP / 2 floor or ceiling (e.g.,

number

number

[0184] In step 2006, the encoder also calculates the number N of magnitude symbols of the second magnitude component of the BVD to be predicted. YBP The encoder may determine the total number of magnitude symbols to be predicted for BVD, N BP the number of magnitude symbols of the second magnitude component to be predicted based on YBP For example, the encoder may determine the number of magnitude symbols of the second magnitude component to be predicted, N YBP But, N BP / 2 (or for example, N BP If is not evenly divisible by 2, then N BP As disclosed herein, the predicted N for the second magnitude component may be determined to be equal to the floor or ceiling of N / 2. YBP The magnitude symbol of the second magnitude component N YBP The encoder calculates the N magnitude components of the second magnitude component of the BVD to be predicted. YBP For each of the most significant symbols in the second magnitude component of the BVD, a respective indication of whether the value of the most significant symbol in the second magnitude component of the BVD predictor matches the value of the corresponding most significant symbol in the second magnitude component of a BVD predictor (e.g., as disclosed herein with respect to Figures 18A-D) may be entropy coded.

[0185] An example illustrating the operation of step 2006 may be as follows: The total number of magnitude symbols to predict for BVD, N BP may be limited to 4. The number of symbols in the first magnitude component of BVD available for prediction, N AXB may be 5. The number of symbols in the second magnitude component of BVD available for prediction, N AYB may be 3. N AXB >N AYB (5>3) and N BP >N AXB -N AYB Considering (4>5-3→4>2), in this embodiment, N of the symbols to be predicted for the first magnitude component XBP is 4(5-3)+(4 / 2)=2+2=4), and the Nth symbol to predict for the second magnitude component YBP is 2 (4 / 2=2). Therefore, the total number of magnitude symbols to predict for BVD, N BP For example, N BP may be split (or otherwise distributed, apportioned, allocated) between the first and second magnitude components of the BVD if it is limited to less than all of the magnitude symbols of each of the first and second magnitude components available for prediction.

[0186] The encoder may, for example, determine in step 2004 that N BP But, N AXB and N AYB is less than or equal to the difference between (N BP <N AXB -N AYB ) to predict the first magnitude component of the BVD. XBP The encoder may determine N BP The number of magnitude symbols to predict the first magnitude component of the BVD based on XBP For example, the encoder may determine the total number of magnitude symbols, N BPThe encoder may allocate (or otherwise distribute or allocate) the entirety of N. For example, the encoder may allocate (or otherwise distribute or allocate) N BP (N XBP =N BP ), the number of magnitude symbols we predict to be equal to XBP In step 2008, the encoder may determine the total number of magnitude symbols to predict for BVD, N BP is allocated (or otherwise distributed or assigned) to the first magnitude component of the BVD for prediction, the number of magnitude symbols predicted for the second component of the BVD, N YBP is equal to zero (N YBP = 0).

[0187] An example illustrating the operation of step 2008 may be as follows: The total number of magnitude symbols to predict for BVD, N BP may be limited to 2. The number of symbols in the first magnitude component of BVD available for prediction, N AXB may be 5. The number of symbols in the second magnitude component of BVD available for prediction, N AYB may be 3. N AXB >N AYB (5>3) and N BP =N AXB -N AYB Considering (2=5-3→2=2), in this embodiment, the number of symbols to predict the first magnitude component, N XBP is 2(total number, N BP ), and the number of symbols for predicting the second magnitude component, N YBP is zero. Therefore, the total number of magnitude symbols for predicting BVD, N BP For example, N BP may be fully allocated (or otherwise allocated or assigned) to the first magnitude component of the BVD if limited to some extent such that there is an insufficient number of symbols to allocate (or otherwise allocate or assign) to the second component of the BVD.

[0188] The encoder may, for example, in step 2002, AXB NAYB In step 2010, the encoder may perform step 2010 based on determining that N AXB is the number of symbols in the second magnitude component of BVD that are available for prediction, N AYB It may be determined whether AXB <N AYB ). The encoder may, for example, in step 2010, AXB N AYB In step 2012, the encoder may perform step 2012 based on determining that N is less than the total number of magnitude symbols to predict for BVD. BP is the number of magnitude symbols of the first magnitude component of BVD available for prediction, N AYB and the number of magnitude symbols of the second magnitude component of BVD available for prediction, N AXB (N BP >N AYB -N AXB ).

[0189] The encoder may, for example, determine in step 2012 that N BP N AYB and NAXB. In step 2014, the encoder may perform step 2014 by determining that N is greater than the difference between N and N. YBP The encoder may determine, for example, N AYB and N AXB The difference between (N AYB -N AXB ), and the total number of magnitude symbols to predict BVD, N BP Half of (N BP / 2) to predict the number of magnitude symbols N for the first magnitude component of the BVD. YBP For example, N YBP is (N AYB -N AXB )+N BP / 2. The total number, N BPIf is not evenly divisible by 2, then N BP / 2 floor or ceiling (e.g.,

number

number

[0190] In step 2014, the encoder determines the number of magnitude symbols of the first magnitude component of the BVD to be predicted, N XBP The encoder may determine the total number of magnitude symbols to be predicted for BVD, N BP the number of magnitude symbols of the first magnitude component to be predicted based on XBP For example, the encoder may determine the number of magnitude symbols of the first magnitude component to be predicted, N XBP But, N BP / 2 (or for example, N BP If is not evenly divisible by 2, then N BP As disclosed herein, the predicted N for the first magnitude component may be determined to be equal to the floor or ceiling of N / 2. XBP The magnitude symbol of the first magnitude component N XBP The encoder calculates the N magnitude components of the first BVD signal to be predicted. XBPFor each of the most significant symbols in the first magnitude component of the BVD, a respective indication of whether the value of the most significant symbol in the first magnitude component of the BVD predictor matches the value of the corresponding most significant symbol in the first magnitude component of a BVD predictor (e.g., as disclosed herein with respect to Figures 18A-D) may be entropy coded.

[0191] The encoder may, for example, determine in step 2012 that N BP But, N AXB and N AYB is less than or equal to the difference between (N BP <N AYB -N AXB ), in step 2018, the encoder may perform step 2018 based on determining the number of magnitude symbols, N YBP The encoder may determine, for example, N BP The number of magnitude symbols to predict the second magnitude component of BVD based on YBP For example, the encoder may determine the total number of magnitude symbols, N BP The encoder may allocate (or otherwise distribute or allocate) the entirety of N. For example, the encoder may allocate (or otherwise distribute or allocate) N BP (N YBP =N BP ), the number of magnitude symbols we predict to be equal to yBP In step 2018, the encoder may determine the total number of magnitude symbols to predict for BVD, N BP has been allocated (or otherwise allocated or assigned) to the second magnitude component of the BVD for prediction, the number of magnitude symbols N predicted for the first component of the BVD is XBP is equal to zero (N XBP = 0).

[0192] The encoder may, for example, in step 2010, AXB N AYBStep 2020 may be performed based on determining that the encoder is already at least N AXB N AYB Considering that we have determined that N AXB =N AYB In step 2020, the encoder calculates the total number of magnitude symbols N to be predicted for BVD. BP Based on N XBP and N YBP For example, the total number of magnitude symbols to predict for BVD, N BP If N is evenly divisible by 2, the encoder may divide (or otherwise apportion, distribute, or assign) the magnitude symbols evenly between the first and second magnitude components of the BVD for prediction. The encoder may, for example, assign the number of magnitude symbols, N, that predict the first magnitude component of the BVD. XBP , and the number of magnitude symbols predicting the second magnitude component of the BVD, N YBP Both of these predict the BVD magnitude of the total number of symbols, N BP Half of (N BP / 2).

[0193] N XBP and N YBP is equal, and the total number of magnitude symbols to predict for BVD is N BP If is not evenly divisible by 2, the encoder BP Half the floor or ceiling (e.g.

number

number

number

number

[0194] N BP If is equal to zero, the encoder XBP and N YBP For example, the encoder may determine both N and N to be equal to zero before performing any of the steps of the example flowchart 2000 shown in FIG. BPThe encoder can determine whether N is equal to zero. The encoder can then ... BP To the magnitude component of the BVD that has more of the most significant symbols available for prediction (e.g., as disclosed herein with reference to Figures 18A-D), for example, five magnitude symbols of a first magnitude component (e.g., horizontal magnitude component) of the BVD may be available for prediction, and three magnitude symbols of a second magnitude component (e.g., vertical magnitude component) of the BVD may be available for prediction. The encoder may, for example, allocate (or otherwise assign or distribute) the total number of symbols to be predicted for the BVD, N BP may be allocated (or otherwise assigned and distributed) to the first magnitude component, which has five magnitude symbols available for prediction. The total number of symbols used for magnitude prediction of the BVD, N BP When allocating (or otherwise assigning, distributing, or dividing) , the most significant symbols of the magnitude components of the BVD may be prioritized. As disclosed herein, the most significant symbols of the magnitude components may be assigned to, for example, magnitude components having relatively more significant symbols (larger magnitude components) than the N magnitude components. BP Priority can be given by allocating N BP Any remaining number may be divided (e.g., equally) among the respective magnitude symbols of the BVD magnitude components available for prediction. Prioritizing one or more of the most significant symbols of the BVD magnitude components available for BVD magnitude prediction (e.g., as disclosed herein with respect to Figures 18A-D) may improve the accuracy of the BVD magnitude prediction and may improve the compression efficiency of the magnitude symbol prediction. For example, magnitude symbol prediction for a magnitude component with more significant symbols available for prediction may have greater compression efficiency. Improving the compression efficiency of the magnitude symbol prediction may improve the achieved coding gain, e.g., reduce the overhead required for signaling magnitude symbol prediction to a decoder.

[0195] One magnitude component of a BVD may have more magnitude symbols available for prediction compared to another magnitude component of the BVD, for example, due to the aspect ratio of the video frame and / or the manner in which the reference region used to encode and / or decode the video frame is determined. 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. Therefore, a BVD candidate associated with the current block may include, for example, a horizontal magnitude component that is likely larger than the vertical magnitude component of the BVD candidate. Thus, a binary representation of a relatively large horizontal magnitude component may include more significant symbols than a binary representation of a relatively small vertical magnitude component.

[0196] 21 illustrates an exemplary method for decoding a prediction associated with a magnitude component of a BVD. Decoding a prediction associated with a magnitude component of a BVD may be based on, for example, the number of symbols predicted for the magnitude component. More specifically, FIG. 21 illustrates a flowchart 2100 of steps of an exemplary method 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 the exemplary flowchart 2100 may be performed by a decoder such as the decoder shown in FIG. 1 and / or the decoder 300 shown in FIG. 3.

[0197] In step 2102, the decoder calculates the total number of predicted symbols across both the first magnitude component of the BVD and the second magnitude component of the BVD, N BP The number of most significant symbols in the first magnitude component of the predicted block vector difference (BVD) is N XBPmay be determined. As disclosed herein, the predicted most significant symbol may be the highest order symbol of the magnitude component. The first magnitude component may be the horizontal magnitude component of the BVD or the vertical magnitude component of the BVD. The second magnitude component may be the other of the two magnitude components of the BVD. The predicted symbol may have been predicted as disclosed herein (e.g., see FIGS. 18A-D).

[0198] Total number N BP may be limited to a number less than the total number of symbols available for prediction across both the first magnitude component of the BVD and the second magnitude component of the BVD, e.g., to limit complexity in the encoder and / or decoder. For example, returning to FIG. 18A , the total number, N BP is the horizontal magnitude component of BVD1810, BVD x Vertical magnitude components of 1812 and BVD1810, BVD y 18A-D) across both the total number N BP may be determined based on the size of the block to be predicted (e.g., the current block 1804 in FIG. 18A). BP may be relatively small for relatively small block sizes. x The number of symbols that were available for prediction across the binary representation of the BVD (e.g., 1812) is given by the horizontal component of the BVD (e.g., the horizontal component of the BVD x The vertical component of the BVD (e.g., the vertical component of the BVD 1810 in FIG. 18A, BVD yThe number of symbols available for prediction across the entire binary representation of a BVD (1814) may be equal to the total number of symbols in the binary representation of the vertical component. The number of symbols available for prediction across the entire binary representation of the vertical component of the BVD may be, for example, 5 symbols (or bits). The total number of symbols available for prediction across both the horizontal and vertical components of the BVD may 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 5, then the horizontal component BVDx and the vertical component BVDy The total number of symbols available for prediction across both , may be equal to 5 + 5 or 10 symbols (or bits). For example, the total number of symbols to be predicted, N BP If is equal to 3 symbols, the total number, N BP is the horizontal component of the BVD, BVDx and the vertical component, BVDy The total number of symbols available for prediction across both the .times. ...

[0199] In step 2102, the decoder calculates the number N of the most significant symbols in one of the predicted BVD magnitude components. XBP In Figure 21, the decoder determines a number, N XBP The magnitude component that determines BVD is referred to as the "first magnitude component" in step 1902. For example, the encoder may determine the horizontal component of BVD, BVD x (e.g., BVD1810 x 1812) or the vertical component of BVD, BVD y (e.g., BVD1810 y Number N of 1814 XBP The encoder may determine the total number of predicted symbols across both the first magnitude component of the BVD and the second magnitude component of the BVD, N BP Based on this, the number of most important predicted symbols, N XBP For example, in step 2102, the decoder may determine the number of most significant symbols in the first magnitude component, N XBPを, may be determined to be equal to the number of symbols less than or equal to the number of symbols indicated (or otherwise specified) by NBP. The total number of symbols to be predicted for BVD, N BP is 3, the decoder uses the number of most significant symbols predicted for the first magnitude component, N XBP may be determined to be equal to 0, 1, 2, or 3. The total number of predicted symbols for BVD, N BP are allocated (or otherwise assigned or distributed) to the first magnitude component, the magnitude symbols of the second magnitude component may not be predicted (e.g., as disclosed herein with reference to Figures 18A-D). The total number of predicted symbols for BVD across both the first magnitude component of BVD and the second magnitude component of BVD, N BP the number of most significant symbols in the first magnitude component predicted based on XBP Additional details regarding the determination of are disclosed herein, for example, with reference to FIG.

[0200] In 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 in the first magnitude component of the BVD predictor, the decoder may entropy decode a respective indication of whether the value of the most significant symbol in the first magnitude component of the BVD predictor matches the value of the corresponding most significant symbol in the first magnitude component of the BVD predictor (e.g., as disclosed herein with reference to Figures 18A-D). The decoder may determine the value of the most significant symbol in the first magnitude component of the BVD predictor based on the value of the most significant symbol in the first magnitude component of the BVD predictor and the indication.

[0201] FIG. 22 illustrates an exemplary method for determining the number of predicted symbols for a magnitude component of BVD. More specifically, FIG. 22 illustrates a flowchart 2200 of exemplary method steps for determining the number of predicted symbols for a magnitude component of BVD. The exemplary flowchart 2200 illustrated in FIG. 22 may correspond to step 2102 of FIG. 21. One or more of the steps of the exemplary flowchart 2200 may be optional. One or more steps of the exemplary flowchart 2200 may be omitted. The order of the steps illustrated in the exemplary flowchart 2200 is not necessarily the only order for performing the steps of the exemplary flowchart 2200. The order of the steps of the flowchart 2200 may be modified.

[0202] In step 2202, the decoder calculates the number of symbols in the first magnitude component of the BVD that were available for prediction, N AXB is the number of symbols in the second magnitude component of BVD that were available for prediction, N AYB may determine whether AXB >N AYB As described herein, the first magnitude component may be the horizontal magnitude of the BVD or the vertical magnitude component of the BVD, and the second magnitude component may be the other of the two magnitude components of the BVD.

[0203] N AXB and / or N AYB may be determined, for example, 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 may be equal to the number of symbols used to represent the first magnitude component and the number of symbols used to represent the second magnitude component, respectively. For example, the horizontal magnitude component of BVD 1810 in FIG. 18A, BVDx The binary representation of 1812 uses five symbols (or bits) to represent the horizontal component, BVDx Represents 1812. N AXB is the horizontal component,BVDx If it corresponds to 1812, N AXB is the horizontal component of the five symbols (or bits), or BVDx It may be determined that the number of symbols used to represent 1812 is equal to the number of symbols used to represent 1812.

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

[0205] The first magnitude component and the second magnitude component may be represented by one of a variety of codes. As disclosed herein, the code used to represent the magnitude components may include two parts: a first part referred to as a "prefix" and a second part referred to as a "suffix." Exemplary codes include Rice codes and Golomb codes (e.g., Golomb-Rice codes or Exponential-Golomb codes). For example, referring to FIG. 18A, the horizontal component of BVD 1810, BVD x The magnitude of 1812 may be binarized using a Rice code or a Golomb code.

[0206] Referring to FIG. 22, the decoder, in step 2202, AXB N AYB The encoder may determine whether N is greater than N based on, for example, the number of prefix symbols of the codeword used to represent the first magnitude component and the number of prefix symbols of the codeword used to represent the second magnitude component. AXB 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 whether N AXB N AYB The symbols of the first magnitude component of the BVD that were available for prediction may be limited. For example, the symbols of the first magnitude component of the BVD that were available for prediction may be limited to the symbols of a suffix of the codeword used to represent the first magnitude component. The symbols of the second magnitude component of the BVD that were available for prediction may be limited. For example, the symbols of the second magnitude component of the BVD that were available for prediction may be limited to the symbols of a suffix of the codeword used to represent the second magnitude component. The number of symbols of the prefix may provide an indication of the number of symbols of the suffix.

[0207] The encoder may, for example, in step 2202, AXB N AYB In step 2204, the decoder may perform step 2204 based on determining that the total number of predicted magnitude symbols for BVD, N BP is the number of magnitude symbols of the first magnitude component of BVD available for prediction, N AXB and the number of magnitude symbols of the second magnitude component of BVD available for prediction, N AYB (N BP >N AXB -N AYB ).

[0208] The decoder may, for example, in step 2204, BP But, N AXB and N AYB In step 2206, the decoder may perform step 2206 based on determining that the number of predicted magnitude symbols for the first magnitude component of the BVD, N XBP For example, the encoder may determine N AXB and N AYB The difference between (N AXB -N AYB ), and the total number of predicted magnitude symbols for BVD, N BP Half of (N BP / 2), the number of predicted magnitude symbols for the first magnitude component of the BVD XBP For example, N XBP is (N AXB -N AYB )+N BP / 2. The total number, N BP If is not evenly divisible by 2, then N BP / 2 floor or ceiling (e.g.,

number

number

[0209] In step 2206, the decoder also calculates the number of magnitude symbols of the second magnitude component of the predicted BVD, N YBP The decoder may determine the total number of predicted magnitude symbols for BVD, N BP The number of magnitude symbols of the predicted second magnitude component, N YBP For example, the encoder may determine the number of magnitude symbols of the second magnitude component to be predicted, N YBP But, N BP / 2 (or for example, N BP If is not evenly divisible by 2, then N BP As disclosed herein, the predicted N for the second magnitude component may be determined to be equal to the floor or ceiling of N / 2. YBP The magnitude symbol of the second magnitude component N YBP The decoder then calculates the N magnitude of the second magnitude component of the predicted BVD. YBP For each of the most significant symbols in the second magnitude component of the BVD predictor, the decoder may entropy decode a respective indication of whether the value of the most significant symbol in the second magnitude component of the BVD predictor matches the value of the corresponding most significant symbol in the second magnitude component of the BVD predictor (e.g., as disclosed herein with reference to Figures 18A-D). The decoder may determine the value of the most significant symbol in the second magnitude component of the BVD predictor based on the value of the most significant symbol in the second magnitude component of the BVD predictor and the indication.

[0210] The decoder may, for example, in step 2204, BP But, N AXB and N AYB is less than or equal to the difference between (N BP <N AXB -N AYB ) in step 2208. In step 2208, the decoder may perform step 2208 based on determining that N BP The number of predicted magnitude symbols for the first magnitude component of the BVD, N XBP For example, the decoder may determine the total number of predicted magnitude symbols for BVD, N BP The decoder may allocate (or otherwise allocate) the entirety of N to the first magnitude component of the BVD. For example, the decoder may allocate the number of predicted magnitude symbols for the first magnitude component of the BVD, N XBP But, N BP (N XBP =N BP In step 2208, the decoder calculates the total number of predicted magnitude symbols for BVD, N BP has been allocated (or otherwise allocated or assigned) to the first magnitude component of the BVD, the number of magnitude symbols predicted for the second component of the BVD, N YBP may be determined to be equal to zero.

[0211] The encoder may, for example, in step 2202, AXB N AYB In step 2210, the decoder may perform step 2210 based on determining that N AXB is the number of symbols in the second magnitude component of BVD that were available for prediction, N AYB It may be determined whether AXB <N AYB ) The decoder may, for example, in step 2210, AXB N AYBIn step 2212, the decoder may perform step 2212 based on determining that the total number of predicted magnitude symbols for BVD, N BP is the number of magnitude symbols of the first magnitude component of BVD that were available for prediction, N AYB and the number of magnitude symbols of the second magnitude component of BVD available for prediction, N AXB (N BP >N AXB -N AYB ).

[0212] The decoder may, for example, in step 2212, BP N AYB and N AXB In step 2214, the decoder may perform step 2214 based on determining that the number of predicted magnitude symbols for the second magnitude component of the BVD, N YBP The decoder may determine, for example, N AYB and N AXB The difference between (N AYB -N AXB ), and the total number of predicted magnitude symbols for BVD, N BP Half of (N BP / 2), the number of predicted magnitude symbols for the first magnitude component of the BVD YBP For example, N YBP is (N AYB -N AXB )+N BP / 2. The total number, N BP If is not evenly divisible by 2, then N BP / 2 floor or ceiling (e.g.,

number

number

[0213] In step 2214, the decoder calculates the number of magnitude symbols of the first magnitude component of the predicted BVD, N XBP The decoder may determine the total number of predicted magnitude symbols for BVD, N BP The number of magnitude symbols of the predicted first magnitude component, N XBP For example, the decoder may determine the number of magnitude symbols in the predicted first magnitude component, N XBP But, N BP / 2 (or for example, N BP If is not evenly divisible by 2, then N BP As disclosed herein, the predicted N for the first magnitude component may be determined to be equal to the floor or ceiling of N / 2. XBP The magnitude symbol of the first magnitude component N XBP The decoder calculates the N most significant symbols of the first magnitude component of the predicted BVD. XBP For each of the most significant symbols in the first magnitude component of the BVD, a respective indication of whether the value of the most significant symbol in the first magnitude component of the BVD predictor matches the value of the corresponding most significant symbol in the first magnitude component of a BVD predictor (e.g., as disclosed herein with respect to Figures 18A-D) may be entropy coded.

[0214] The decoder may, for example, in step 2212, BP But, N AXB and N AYB is less than or equal to the difference between (N BP <N AYB -N AXB ), the decoder may perform step 2218 based on determining the number of predicted magnitude symbols for the second magnitude component of the BVD, N YBP The decoder may determine, for example, N BP The number of predicted magnitude symbols for the second magnitude component of the BVD, N YBP For example, the decoder may determine the total number of predicted magnitude symbols for BVD, N BP The decoder may allocate (or otherwise allocate) the entirety of N to the second magnitude component of the BVD. For example, the decoder may allocate the number of magnitude symbols N predicted for the first magnitude component of the BVD. YBP But, N BP is equal to (N YBP =N BP In step 2218, the decoder may determine the total number of predicted magnitude symbols for BVD, N BP has been allocated (or otherwise allocated or assigned) to the second magnitude component of the BVD, the number of magnitude symbols predicted for the first component of the BVD, N XBP is equal to zero (N XBP = 0).

[0215] The decoder may, for example, in step 2210, AXB N AYB Step 2220 may be performed based on determining that the encoder is equal to or greater than N (in step 2002, the encoder may have already determined that the encoder is equal to or greater than N). AXB N AYB Considering that we have determined that N AXB =N AYB In step 2220, the decoder calculates the total number of predicted magnitude symbols for BVD, N BPBased on N XBP and N YBP For example, the total number of predicted magnitude symbols for BVD, N BP If N is evenly divisible by 2, the decoder may divide (or otherwise apportion, distribute, or allocate) the predicted magnitude symbols evenly between the first and second magnitude components of the BVD. The decoder may, for example, divide the number of predicted magnitude symbols for the first magnitude component of the BVD, N XBP , and the number of predicted magnitude symbols for the second magnitude component of the BVD, N YBP Both of these are the magnitudes of the BVD predictions, the total number of symbols, N BP Half of (N BP / 2).

[0216] N XBP and N YBP is equal to the total number of predicted magnitude symbols for BVD, N BP If is not evenly divisible by 2, the decoder BP Half the floor or ceiling (e.g.

number

number

[0217] N BP If is equal to zero, the decoder XBP and N YBP For example, the decoder may determine both N and N to be equal to zero before performing any of the steps of the example flowchart 2200 shown in FIG. BP It may be determined whether is equal to zero.

[0218] The disclosure provided herein may be used to predict, for example, one or more magnitude symbols of MVD used in inter prediction, in addition to or instead of one or more magnitude symbols of BVD used in IBC, e.g., with reference to Figures 19 to 22. For inter prediction, the terms BV, BVP, BVD, and BVD candidate may be replaced with the terms MV, MVP, MVD, and MVD.

[0219] 23 illustrates an exemplary computer system that may implement embodiments of the present disclosure. For example, the exemplary computer system 2300 illustrated in FIG. 23 may implement one or more of the methods described herein. For example, various devices and / or systems described herein (e.g., FIGS. 1, 2, and 3) may be implemented in the form of one or more computer systems 2300. Furthermore, each of the steps of the flowcharts depicted in the present disclosure may be performed on one or more computer systems 2300.

[0220] 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 communications infrastructure 2302 (e.g., a bus or network). Computer system 2300 may also include main memory 2306 (e.g., random access memory (RAM)) and / or secondary memory 2308.

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

[0222] Secondary memory 2308 may comprise other similar means for allowing computer programs or other instructions to be loaded into computer system 2300. Such means may comprise a removable storage unit 2318 and / or interface 2314. Examples of such means may include program cartridges and / or cartridge interfaces (such as video game devices), removable memory chips (such as erasable programmable read-only memory (EPROM) or programmable read-only memory (PROM)), and associated sockets, thumb drives, and USB ports, and / or other removable storage units 2318 and interfaces 2314 that may allow software and / or data to be transferred from the removable storage unit 2318 to the computer system 2300.

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

[0224] 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 disk drive 2310. A computer program product may be a means for providing software to computer system 2300. Computer programs (which may also be referred to as computer control logic) may be stored in main memory 2306 and / or secondary memory 2308. Computer programs may be received via communications interface 2320. Such computer programs, when executed, may enable computer system 2300 to implement the present disclosure as discussed herein. In particular, the computer programs, when executed, may enable processor 2304 to perform processes of the present disclosure, such as any of the methods described herein. Thus, such computer programs may represent controllers of computer system 2300.

[0225] 24 illustrates exemplary elements of a computing device that may be used to implement any of the various devices described herein, 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. The computing device 2430 may include one or more processors 2431 that may execute instructions stored on random access memory (RAM) 2433, removable media 2434 (such as a universal serial bus (USB) drive, a compact disc (CD) or digital versatile disc (DVD), or a floppy disk drive), or any other desired storage medium. Instructions may also be stored on an attached (or internal) hard drive 2435. Computing device 2430 may also include a security processor (not shown) that may execute instructions of one or more computer programs to monitor processes running 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. There may also be one or more user input devices 2438, such as a remote control, keyboard, mouse, touchscreen, microphone, etc. Computing device 2430 may also include one or more network interfaces, such as network interface 2439, which may be a wired interface, a wireless interface, or a combination of the two.The network interface 2439 may provide an interface through which the computing device 2430 communicates with a 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 communications link, an external network, a home network, a provider's wireless, coaxial, fiber, or hybrid fiber / coaxial distribution system (e.g., a DOCSIS network), or any other desired network. Additionally, 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, with possible assistance from an external server and antenna, determine the geographic location of the computing device 2430.

[0226] While the example of FIG. 24 may be a hardware configuration, the components shown may be implemented as software. Changes may be made, as desired, to add, remove, combine, divide, etc., components of computing device 2430. Additionally, components may be implemented using basic computing devices and components, and the same components (e.g., processor 2431, ROM storage 2432, display 2436, etc.) may be used to implement any of the other computing devices and components described herein. 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, as shown in FIG. 24. Some or all of the entities described herein may be software-based and coexist on a common physical platform (e.g., a requesting entity may be a separate software process and program from a dependent entity, both of which may run as software on a common computing device).

[0227] FIG. 25A shows example test results 2500a associated with the disclosure herein. FIG. 25B shows example test results 2500b associated with the disclosure herein. The example test results 2500a in FIG. 25A demonstrate that the disclosure provided herein can achieve increased benefits by prioritizing prediction of the most significant symbol of a magnitude component of a BVD over the least significant symbol of the magnitude component of a BVD. The example test results 2500b in FIG. 25B illustrate that the disclosure provided herein can achieve further increased gains with faster encoding and / or decoding by prioritizing prediction of the most significant symbol of a magnitude component of a BVD (e.g., a horizontal magnitude component) that has relatively more significant symbols compared to other magnitude components of the BVD (e.g., a vertical magnitude component).

[0228] In Figures 25A and 25B, the exemplary symbols of the magnitude component are referred to as "bins," and the most significant and least significant symbols are referred to as the most significant bin (MSB) and least significant bin (LSB), respectively. As can be seen in Figures 25A and 25B, the importance of the bins increases from right to left, with the MSB of the bin sequence being the leftmost bin and the LSB of the bin sequence being the rightmost bin. Figures 25A and 25B show an exemplary bin sequence 2502 for the horizontal magnitude component and an exemplary bin sequence 2504 for the vertical magnitude component. The exemplary bin sequence 2502 for the horizontal component has five bins (e.g., {h1=2 4 , h2=2 3 , h3=2 2 , h4=2 1 , h5=2 0}), and the exemplary bin sequence 2504 includes three bins (e.g., {v1=2 2 , v2=2 1 , v3=2 0}).

[0229] 25A and 25B also illustrate different orders of prediction for the bins of bin sequences 2502 and 2504. In FIG. 25A, for example, as disclosed herein, a prediction order 2506a prioritizes prediction for the MSB of each of both the bin sequence 2502 for the horizontal magnitude component and the bin sequence 2504 for the vertical magnitude component. Thus, the exemplary prediction order 2506a orders predictions from the most significant bin to the least significant bin, alternating between predictions for the horizontal and vertical magnitude components (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}. Therefore, the exemplary test results 2500a illustrate that gains can be achieved by prioritizing predictions for the MSB of each of the magnitude components of the BVD. In FIG. 25B, for example, as disclosed herein, the prediction order 2506b prioritizes predictions for the MSB of the magnitude component with more MSBs (the larger of the two magnitude components). In FIG. 25B, for example, the larger magnitude component with more MSBs is the horizontal magnitude component, which is represented by the 5-bin sequence 2502 (compared to the 3-bin sequence 2504 of the vertical magnitude component). Therefore, the exemplary prediction order 2506b alternates between predictions for the horizontal and vertical magnitude components, starting with the MSB of the horizontal magnitude component (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, the example test result 2500b illustrates that further gains can be achieved by prioritizing predictions for the MSB of magnitude components with more MSBs.

[0230] Exemplary test results 2500a shown in FIG. 25A and exemplary test results 2500b shown in FIG. 25B were obtained using the Common Test Conditions (CTC) for contributions to the Joint Video Exploration Team (JVET). The CTC used to obtain the exemplary results in FIGS. 25A and 25B identifies eight video sequences grouped into two classes, Class F and Class TGM (Text and Graphics with Motion), according to the type of content within the video sequences. The Class A sequences used included one camera-captured video sequence, one video gaming video sequence, and two screen content sequences using spatial high-definition (HD) resolutions of 720p and 1080p. The four Class TGM sequences used included screen-captured content from a computer screen containing highly textured images and motion graphics at 1080p resolution. Encoder performance may be evaluated using a metric called the Bjontegaard Delta Bitrate (BD-Rate), which indicates the percentage of bitrate that can be achieved by implementing a video encoding / decoding technique in the Enhanced Compression Model (ECM) video encoder / decoder reference model while maintaining the same quality as measured by an objective metric. BD-Rate may be reported for three independent components of a video sequence, such as the luma component (Y) and two chrominance components (U and V). A negative value of BD-Rate (e.g., less than zero) may indicate that the bitrate of the encoded bitstream is reduced compared to the bitrate of the ECM model. Consequently, if a negative BD-Rate value is obtained or otherwise observed, the proposed video encoding / decoding technique may be deemed more efficient than the ECM model due to the obtained gain. New versions of the encoder / decoder model may be periodically released by JVET, for example, including video encoding / decoding techniques accepted as part of a hypothetical future standard.Exemplary test results 2500a shown in FIG. 25A and exemplary test results 2500b shown in FIG. 25B were reported for ECM version 6.0.

[0231] Various features are highlighted below in sets of numbered clauses or paragraphs. These features are not to be construed as limiting the invention or inventive concept, but are provided merely as highlighting some of the features described herein, without implying the importance or relevance of any particular order of such features.

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

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

[0234] Clause 3. The method of clause 1 or 2, further comprising determining a 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.

[0235] Clause 4. The method of any one of clauses 1-3, wherein the one or more predicted symbols 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.

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

[0237] Clause 6. The method of any one of clauses 1-5, wherein determining the number of symbols to be predicted for the first magnitude component is further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction.

[0238] Clause 7. The method of any one of clauses 1-5, wherein determining the number of symbols to be predicted for the first magnitude component is further based on whether a total amount of symbols to be 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 magnitude component of the BVD available for prediction and the number of symbols in the second magnitude component of the BVD available for prediction.

[0239] Clause 8. The method of any one of clauses 1-5, wherein determining the number of predicted symbols for the first magnitude component is further based on a sum of half the total number of predicted symbols for both the first magnitude component and the second magnitude component and a difference between the number of symbols in the first magnitude component of the BVD available for prediction and the number of symbols in the second magnitude component of the BVD available for prediction.

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

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

[0242] Clause 11. The method of any one of clauses 1-10, further comprising: determining a number of predicted symbols for a second magnitude component of the BVD based on the number of predicted symbols for the first magnitude component; entropy decoding an indication of whether a value of the most significant symbol of the second magnitude component of the BVD matches a value of the most significant symbol of the second magnitude component of the BVD predictor based on the number of predicted symbols for the second magnitude component of the BVD; and determining a 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.

[0243] Clause 12. The method of any one of clauses 1-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.

[0244] Clause 13. The method of any one of clauses 1-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.

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

[0246] Clause 15. A computing device including 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.

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

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

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

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

[0251] Clause 20. The method of clause 18 or 19, further comprising determining a 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.

[0252] Clause 21. The method of any one of clauses 18-20, wherein the one or more predicted symbols 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.

[0253] Clause 22. The method of any one of clauses 18-21, wherein the magnitude component is a first magnitude component of a BVD, and determining the number of symbols to be predicted for the first magnitude component is further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction, and whether the total number of symbols to be predicted for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction.

[0254] Clause 23. The method of any one of clauses 18-22, further comprising: entropy decoding a second indication of whether a value of the 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; and determining a value of the next most significant symbol of the BVD magnitude component based on the value of the next most significant symbol of the magnitude component of the BVD predictor and the second indication.

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

[0256] Clause 25. A computing device including 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.

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

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

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

[0260] Clause 29. The method of Clause 28, further including: entropy decoding a most significant symbol of the number of predicted symbols for the first magnitude component, for each most significant symbol of the magnitude component, an indication of whether the value of the most significant symbol matches the value of the most significant symbol of the magnitude component of a BVD predictor associated with the current block; and determining a value of the most significant symbol of the BVD magnitude component based on the value of the most significant symbol of the magnitude component of the BVD predictor and the indication.

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

[0262] Clause 31. The method of any one of clauses 28-30, wherein the one or more predicted symbols 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.

[0263] Clause 32. The method of any one of clauses 28-31, wherein the magnitude component is a first magnitude component of a BVD, and determining the number of symbols to be predicted for the first magnitude component is further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction, and whether the total number of symbols to be predicted for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction.

[0264] Clause 33. The method of any one of clauses 28-32, wherein the magnitude component of the BVD is a first magnitude component of the BVD, and determining the number of predicted symbols for the first magnitude component is further based on a sum of half the total number of predicted symbols for both the first magnitude component and the second magnitude component and a difference between the number of symbols in the first magnitude component of the BVD available for prediction and the number of symbols in the second magnitude component of the BVD available for prediction.

[0265] Clause 34. The method of any one of clauses 28-32, further comprising: determining a number of predicted symbols for a second magnitude component of the BVD based on the number of predicted symbols for the first magnitude component, the magnitude component of the BVD being a first magnitude component of the BVD; entropy decoding an indication of whether a value of the most significant symbol of the second magnitude component of the BVD matches a value of the most significant symbol of the second magnitude component of the BVD predictor based on the number of predicted symbols for the second magnitude component of the BVD; and determining a 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.

[0266] Clause 35. A computing device including 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.

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

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

[0269] A computing device may perform a method including 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 a total number of symbols predicted for both the first magnitude component and the second magnitude component 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 a first magnitude component of a BVD predictor may be entropy decoded based on a number of symbols predicted for the first magnitude component. A value of a 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 predicted symbols for the first magnitude component may be further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction. Determining the number of predicted symbols for the first magnitude component may be further based on whether the total number of predicted symbols for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction. Determining the number of predicted symbols for the first magnitude component may be further based on the sum of half the total number of predicted symbols for both the first magnitude component and the second magnitude component and the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction.A number of symbols of the first magnitude component of the BVD available for prediction may be determined. The number of symbols of the first magnitude component of the BVD available for prediction may be determined based on the number of symbols of a prefix of the codeword of the first magnitude component of the BVD. 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 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. A 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 symbol of the BVD predictor and the second indication. A 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 determined and 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. A 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. The computing device may include one or more processors and memory that stores instructions that, when executed by the one or more processors, cause the computing device to perform the described methods, additional operations, and / or include additional elements.The system may include a first computing device configured to perform the described methods, 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 matched 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 methods, additional operations, and / or include additional elements.

[0270] A computing device may perform a method including a plurality of operations. A number of predicted symbols for a magnitude component of a block vector difference (BVD) associated with decoding of a current block may be determined. The number of predicted symbols for the magnitude component of the BVD may be determined based on a total number of predicted symbols for the BVD. An indication of whether a value of a most significant symbol of a 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 a magnitude component of the BVD matches a value of a most significant symbol of a magnitude component of a BVD predictor may be entropy decoded based on a number of predicted symbols for a first magnitude component. A value of a most significant symbol of a magnitude component of the BVD may be determined. The value of a most significant symbol of a magnitude component of the BVD may be determined based on an indication and a value of a most significant symbol of a magnitude symbol of a BVD predictor. The predicted one or more symbols 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 the BVD. Determining the number of predicted symbols for the first magnitude component may be further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction, and whether the total number of predicted symbols for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction. 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. The value of the next most significant symbol of the BVD magnitude component 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 symbol of the BVD predictor and a second indication. A block vector (BV) may be determined. The BV may be determined based on the block vector predictor (BVP) and 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 methods, additional operations, and / or include additional elements. A system may include a first computing device configured to perform the described methods, 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 computing device to perform the described methods, additional operations, and / or include additional elements.

[0271] A computing device may perform a method including a plurality of operations. A number of predicted symbols for a magnitude component of a block vector difference (BVD) associated with decoding of a current block may be determined. The number of most significant symbols predicted for the magnitude component of the BVD may be determined based on a total number of predicted symbols for the BVD. For each most significant symbol of the number of predicted symbols for the first magnitude component, an indication of whether the value of the most significant symbol matches the value of the most significant symbol of the magnitude component of a BVD predictor associated with the current block may be entropy coded. 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 and the indication of the most significant symbol of the magnitude symbol of the BVD predictor. A block vector (BV) may be determined based on a block vector predictor (BVP) and the BVD. The one or more predicted symbols 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 predicted symbols for the first magnitude component may be further based on whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction, and whether the total number of predicted symbols for both the first magnitude component and the second magnitude component is greater than the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction. Determining the number of predicted symbols for the first magnitude component may further be based on the sum of half the total number of predicted symbols for both the first magnitude component and the second magnitude component and the difference between the number of symbols of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction. The number of predicted symbols 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. 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. A computing device may comprise one or more processors and memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described methods, additional operations, and / or include additional elements. The system may comprise a first computing device configured to perform the described methods, 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 a magnitude component of a BVD predictor associated with the current block. A computer-readable medium may store instructions that, when executed, cause the described methods, additional operations, and / or include additional elements.

[0272] The computing device may implement a method that includes a number of operations: XBP The number N may be determined. XBP is the number of symbols N to be predicted across both the first magnitude component of the BVD and the second magnitude component of the BVD. BP The N of the first magnitude component of the BVD to be predicted can be determined based on XBPFor each of the most significant symbols of the first magnitude component of the BVD, an indication of whether the value of the most significant symbol of the first magnitude component of the BVD predictor matches the value of the most significant symbol of the first magnitude component of the BVD predictor may be entropy coded. XBP The most significant symbol of is the Nth symbol in the prefix of the codeword, which represents the first magnitude component of the BVD. XBP The codeword is a Golomb codeword. The number of symbols in the first magnitude component of the BVD that are available for prediction, N AXB is the number of symbols in the second magnitude component of the BVD that are available for prediction, N AYB It can be determined that the number N is greater than XBP Determining the number N AXB is the number N AYB In response to being greater than the number N XBP , N AXB -N AYB And, N BP / 2 or N BP The determination may include determining the number N based on the sum of the number N and the floor or ceiling of N / 2. XBP Determining the number N AXB is the number N AYB is larger than the number N BP is the number N AXB -N AYB In response to being greater than the number N XBP , N AXB -N AYB And, N BP / 2 or N BP The number of most significant symbols in the second magnitude component of the BVD to be predicted, N, may be determined based on a summation with the floor or ceiling of / 2. YBP is N BP / 2 or N BP The number N of most significant symbols in the second magnitude component of the BVD to be predicted can be determined to be equal to the floor or ceiling of ∂ ... YBP is the number N AXB is the number N AYB Based on being greater than N BP / 2 or N BPThe second magnitude component of the BVD to be predicted, N, can be determined to be equal to the floor or ceiling of N / 2. YBP For each most significant symbol of the number N, 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 coded. AXB is the number N AYB 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 may include determining that the number of symbols in the prefix of the codeword representing the second magnitude component of the BVD is greater than the number of symbols in the prefix of the codeword representing the first magnitude component of the BVD. AXB is the number of symbols in the second magnitude component of the BVD that are available for prediction, N AYB The number N can be determined to be equal to XBP Determining the number N XBP N BP / 2 or N BP This may include determining that the number N is equal to the floor or ceiling of / 2. XBP is the number N AXB is the number N AYB Based on the fact that it is equal to N BP / 2 or N BP The number N of most significant symbols in the second magnitude component of the BVD to be predicted can be determined to be equal to the floor or ceiling of ∂ ... YBP is N BP / 2 or N BP The number N of most significant symbols in the second magnitude component of the BVD to be predicted can be determined to be equal to the floor or ceiling of ∂ ... YBP is the number N AXB is the number N AYB Based on the fact that it is equal to N BP / 2 or N BP The second magnitude component of the BVD to be predicted can be determined to be equal to the floor or ceiling of N / 2. YBP For each of the most significant symbols of N, 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 coded. XBPDetermining the number is N BP In response to the number being equal to zero, N XBP number equal to zero, and the number N of the most significant symbols in the second magnitude component of the BVD that should be predicted to be equal to zero. YBP The method may include determining that N is equal to zero. AXB may be determined based on the number of symbols in the suffix of the codeword representing the first magnitude component of the BVD minus a given number of symbols. A computing device may comprise 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 methods, additional operations, and / or include additional elements. A system may comprise a first computing device configured to perform the described methods, 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 computing device to perform the described methods, additional operations, and / or include additional elements.

[0273] The computing device may perform a method that includes a number of operations: BP The number N of most significant symbols in the first magnitude component of the block vector difference (BVD) predicted based on XBP The first magnitude component of the predicted BVD may be determined as N XBPFor each of the most significant symbols of the first magnitude component of the BVD, an indication of whether the value of the most significant symbol of the first magnitude component of the BVD predictor 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 most significant symbol of is the Nth symbol in the prefix of the codeword, which represents the first magnitude component of the BVD. XBP The codeword may be a Golomb codeword. The number of symbols in the first magnitude component of the BVD that were available for prediction, N AXB is the number of symbols in the second magnitude component of the BVD that were available for prediction, N AYB It can be determined that the number N is greater than XBP Determining the number N AXB is the number N AYB In response to being greater than the number N XBP , N AXB -N AYB And, N BP / 2 or N BP The determination may include determining the number N based on the sum of the number N and the floor or ceiling of N / 2. XBP Determining the number N AXB is the number N AYB is larger than the number N BP is the number N AXB -N AYB In response to being greater than the number N XBP , N AXB -N AYB And, N BP / 2 or N BP The number of most significant symbols in the second magnitude component of the predicted BVD, N, may be determined based on a summation with the floor or ceiling of / 2. YBP is N BP / 2 or N BP The number of most significant symbols in the second magnitude component of the predicted BVD, N, can be determined to be equal to the floor or ceiling of YBP is the number N AXB is the number N AYBBased on being greater than N BP / 2 or N BP The second magnitude component of the predicted BVD can be determined to be equal to the floor or ceiling of N / 2. YBP For each of the most significant symbols of the number N, 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. AXB is the number N AYB 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 may include determining that the number of symbols in the prefix of the codeword representing the second magnitude component of the BVD is greater than the number of symbols in the prefix of the codeword representing the first magnitude component of the BVD that were available for prediction, N AXB is the number of symbols in the second magnitude component of the BVD that were available for prediction, N AYB The number N can be determined to be equal to XBP Determining the number N AXB is the number N AYB Based on being equal to the number N XBP N BP / 2 or N BP This may include determining that the number N is equal to the floor or ceiling of / 2. AXB is the number N AYB The number N of most significant symbols in the second magnitude component of the BVD that should have been predicted based on YBP But, N BP / 2 or N BP 11. The method of claim 10, further comprising determining a floor or ceiling of N / 2 of the second magnitude component of the BVD to be predicted. YBPFor each of the most significant symbols of the number N, 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. XBP Determining the number N BP In response to being equal to zero, the number N XBP is equal to zero and the number N of the most significant symbols in the second magnitude component of the BVD that should have been predicted YBP The number of symbols in the first magnitude component of the BVD that were available for prediction, N, may be determined to be equal to zero. AXB may be determined based on the number of symbols in the suffix of the codeword representing the first magnitude component of the BVD minus a given number of symbols. A computing device may comprise 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 methods, additional operations, and / or include additional elements. A system may comprise a first computing device configured to perform the described methods, 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 computing device to perform the described methods, additional operations, and / or include additional elements.

[0274] One or more embodiments herein may be described as a process, which may be depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, and / or a block diagram. A flowchart may describe operations as a sequential process, but one or more of the operations may be performed in parallel or concurrently. The order of operations shown may be rearranged. A process may terminate when its operations are completed, but may have additional steps not shown in the figures. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

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

[0276] One or more features described herein may be implemented in computer-usable data and / or computer-executable instructions, such as one or more program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types when executed by a processor in a computer or other data processing device. Computer-executable instructions may be stored on one or more computer-readable media, such as hard disks, optical disks, removable storage media, solid-state memory, RAM, etc. The functionality of the program modules may be combined or distributed as desired. All or a portion of the functionality may be implemented in firmware or hardware equivalents, such as integrated circuits, field programmable gate arrays (FPGAs), and the like. Certain data structures may be used to more effectively implement one or more features described herein, and such data structures are contemplated 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, containing, or carrying instructions and / or data. Computer-readable media may also include non-transitory media that can store data and do not include carrier waves and / or transitory electronic signals propagated via wireless or wired connections. Examples of non-transitory media include, but are not limited to, magnetic disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, memory, or memory devices. Computer-readable media may store code and / or machine-executable instructions, which may represent procedures, functions, subprograms, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements.A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. can be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, or the like.

[0277] 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 encoded with instructions for enabling programmable hardware to cause a device (e.g., an encoder, decoder, transmitter, receiver, and the like) to perform the operations described herein. A device, or one or more devices, such as in a system, may include one or more processors, memory, interfaces, and / or the like.

[0278] Communications described herein may be determined, generated, transmitted, and / or received using any number of messages, information elements, fields, parameters, values, instructions, information, bits, and / or the like. While one or more embodiments may be described herein using any of the terms / phrases message, information element, field, parameter, value, instruction, information, bit, and / or the like, those skilled in the art will understand that such communications may be implemented using any one or more of these terms, 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, and / or the like may be used and may be interchangeable depending on the context. Where meanings or definitions are given, such meanings or definitions are controlling.

[0279] One or more elements of the embodiments described herein may be implemented as a module. A module may be an element that performs a defined function and / or has a defined interface to other elements. A module may be implemented in hardware, software in combination with hardware, firmware, wetware (e.g., hardware with biological components), or a combination thereof, all of which may be behaviorally equivalent. For example, a module may be implemented as a software routine written in a computer language configured to execute on a hardware machine (C, C++, Fortran, Java, Basic, Matlab, or the like), or as a modeling / simulation program such as Simulink, Stateflow, GNU Octave, LabVIEW MathScript, etc. Additionally or alternatively, it may be possible to implement a module using physical hardware incorporating discrete or programmable analog, digital, and / or quantum hardware. Examples of programmable hardware may include computers, microcontrollers, microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and / or complex programmable logic devices (CPLDs). Computers, microcontrollers, and / or microprocessors may be programmed using languages ​​such as Assembly, C, C++, or the like. FPGAs, ASICs, and CPLDs are often programmed using hardware description languages ​​(HDLs) such as Verilog or VHSIC Hardware Description Language (VHDL), which may configure connections between internal hardware modules that reduce the functionality of the programmable device. The techniques described above may also be used in combination to achieve functionally modular results.

[0280] One or more of the operations described herein may be conditional. For example, one or more operations may be performed if certain criteria are met, such as the state of a computing device, a communication device, an encoder, a decoder, a network, a combination of the above, and / or the like. Exemplary criteria may be based on one or more conditions, such as device configuration, traffic load, initial system setup, packet size, traffic characteristics, a combination of the above, and / or the like. If one or more criteria are met, various embodiments may be used. It may be possible to implement any part of the embodiments described herein in any order and based on any condition.

[0281] Although embodiments are described above, features and / or steps of these embodiments may be combined, divided, omitted, rearranged, modified, and / or extended in any desired manner. Various changes, modifications, and improvements will readily occur to those skilled in the art. Such changes, modifications, and improvements, although not expressly described herein, are intended to be a part of this specification and are intended to be within the spirit and scope of the description herein. Accordingly, the foregoing description is by way of example only and not by way of limitation.

Claims

1. 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 the current block based on a total number of symbols predicted for both the first magnitude component and a second magnitude component of the BVD; entropy decoding an indication of whether a value of the most significant symbol of the first magnitude component of the BVD predictor matches a value of the 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; determining the value of the most significant symbol of the first magnitude component of the BVD predictor based on the indication and the value of the most significant symbol of the first magnitude component of the BVD predictor.

2. 2. The method of claim 1 , wherein the one or more predicted symbols 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.

3. The method of claim 2 , wherein the codewords are Golomb codewords.

4. 4. The method of claim 1, wherein determining the number of symbols to be predicted for the first magnitude component is further based on whether a number of symbols of the first magnitude component of the BVD available for prediction is greater than a number of symbols of the second magnitude component of the BVD available for prediction.

5. Determining the number of symbols predicted for the first magnitude component is performed by determining whether the total number of symbols predicted for both the first magnitude component and the second magnitude component is: the number of symbols of the first magnitude component of the BVD available for prediction; and The method of any one of claims 1 to 3, further based on whether the difference between the number of symbols of the second magnitude component of the BVD available for prediction is greater than the difference between the number of symbols of the second magnitude component of the BVD available for prediction.

6. determining the number of symbols predicted for the first magnitude component; half the total number of symbols predicted for both the first magnitude component and the second magnitude component; and the number of symbols of the first magnitude component of the BVD available for prediction; and The method of any one of claims 1 to 3, further based on the sum of differences between the number of symbols of the second magnitude component of the BVD that are available for prediction.

7. 4. The method of claim 1, further comprising determining a number of symbols of the first magnitude component of the BVD available for prediction based on a number of symbols of a prefix of a codeword for the first magnitude component of the BVD.

8. entropy decoding a second indication of whether a value of a next most significant symbol of the first magnitude component of the BVD predictor matches a value of a next most significant symbol of the first magnitude component based on the number of symbols predicted for the first magnitude component; and and determining the value of the next most significant symbol of the first magnitude component of the BVD predictor based on the value of the next most significant symbol of the first magnitude component of the BVD predictor and the second indication.

9. 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 the most significant symbol of the second magnitude component of the BVD matches a value of the most significant symbol of the second magnitude component of the BVD predictor based on the number of symbols predicted for the second magnitude component of the BVD; and determining the value of the most significant symbol of the second magnitude component of the BVD predictor based on the indication and the value of the most significant symbol of the second magnitude component of the BVD predictor.

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 of 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. 1. A computing device comprising: one or more processors; A computing device comprising: a memory storing instructions that, when executed, cause the computing device to perform the method of any one of claims 1 to 12.

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

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

16. 1. A method comprising: determining a number of predicted symbols for a magnitude component of a block vector difference (BVD) associated with decoding of the current block based on a total number of predicted symbols for the BVD; entropy decoding an indication of whether a value of the most significant symbol of the magnitude component of the BVD predictor associated with the current block matches a value of the 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; determining the value of the most significant symbol of the magnitude component of the BVD predictor based on the indication and the value of the most significant symbol of the magnitude component of the BVD predictor.

17. 17. The method of claim 16, wherein the one or more predicted symbols 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 magnitude component is a first magnitude component of the BVD, and determining the number of the symbols predicted for the first magnitude component whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction; 18. The method of claim 16 or 17, 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 of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction.

19. 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; and determining the value of the next most significant symbol of the magnitude component of the BVD predictor 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 of 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. 1. A computing device comprising: one or more processors; A computing device comprising: a memory storing instructions that, when executed, cause the computing device to perform a method according to any one of claims 16 to 20.

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

23. A computer readable medium storing instructions that, when executed, cause the method of any one of claims 16 to 20 to be performed.

24. 1. 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 the current block based on a total number of symbols predicted for the BVD; the most significant symbol of the number of symbols predicted for the first magnitude component, for each most significant symbol of the magnitude component: entropy decoding 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; determining the value of the most significant symbol of the magnitude component of the BVD predictor based on the indication and the value of the most significant symbol of the magnitude component of the BVD predictor; determining a block vector (BV) based on a block vector predictor (BVP) and the BVD.

25. 25. The method of claim 24, wherein the one or more predicted symbols 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 magnitude component is a first magnitude component of the BVD, and determining the number of the symbols predicted for the first magnitude component whether the number of symbols of the first magnitude component of the BVD available for prediction is greater than the number of symbols of the second magnitude component of the BVD available for prediction; 27. The method of claim 24, 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 of the first magnitude component of the BVD available for prediction and the number of symbols of the second magnitude component of the BVD available for prediction.

27. the magnitude component of the BVD is a first magnitude component of the BVD, and determining the number of the symbols predicted for the first magnitude component half the total number of symbols predicted for both the first magnitude component and the second magnitude component; and the number of symbols of the first magnitude component of the BVD available for prediction; and The method of any one of claims 24 to 26, further based on the sum of differences between the number of symbols of the second magnitude component of the BVD available for prediction.

28. the magnitude component of the BVD is a first magnitude component of the BVD; 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 the most significant symbol of the second magnitude component of the BVD matches a value of the most significant symbol of the second magnitude component of the BVD predictor based on the number of symbols predicted for the second magnitude component of the BVD; 27. The method of claim 24, further comprising: determining the value of the most significant symbol of the second magnitude component of the BVD predictor based on the indication and the value of the most significant symbol of the second magnitude component of the BVD predictor.

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

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

31. A computer readable medium storing instructions that, when executed, cause the method of any one of claims 24 to 28 to be performed.

Citation Information

Patent Citations

  • Intra-block copy block vector signaling for video coding

    JP2017519447A

  • Methods for motion vector differential (mvd) and intra-block copy vector differential (bvd) coding of screen content video data

    JP2017525262A