Context Modeling for Sign and Magnitude Prediction

By entropy coding the indication of BVD prediction candidate matching and selecting based on cost calculation, the video encoding method enhances compression efficiency by addressing uniform probability distribution issues in BVD magnitude coding.

JP2026504718APending Publication Date: 2026-02-09COMCAST CABLE COMM LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025533325
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-09
Filing Date
2023-12-08
Publication Date
2026-02-09

AI Technical Summary

Technical Problem

Existing video encoding methods face inefficiencies in compressing video data due to uniform probability distribution assumptions in bypass arithmetic coding, leading to suboptimal compression efficiency in block vector difference (BVD) magnitude coding.

Method used

Implementing entropy coding of an indication of whether the magnitude symbol of a BVD prediction candidate matches the magnitude symbol of the BVD, using a non-uniform probability distribution, and selecting a BVD prediction candidate based on a cost calculation between a current block and a candidate reference block.

Benefits of technology

Improves compression efficiency by optimizing the coding process for BVD magnitude, reducing the bit rate required for video transmission and storage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026504718000001_ABST
    Figure 2026504718000001_ABST
Patent Text Reader

Abstract

The probability model may be selected based on an indication of whether a magnitude symbol of a block vector difference (BVD) matches a magnitude symbol of a BVD predictor. The determined probability model may be used to decode an indication of whether other magnitude symbols of the BVD match other magnitude symbols of the BVD predictor. The magnitude of the BVD may be determined using the value of the magnitude symbol of the BVD predictor and an indication of whether the magnitude symbol of the BVD matches a magnitude symbol of the BVD predictor.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Patent Application No. 63 / 431,623, filed December 9, 2022. The above-referenced application is incorporated herein by reference in its entirety.

[0002] In bypass theory coding modes, a block vector difference (BVD) magnitude may be determined, which can be used as part of advanced motion vector prediction (AMVP) for inter prediction and intra block copy (IBC). Summary of the Invention

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

[0004] Bypass arithmetic coding may be used to speed up the arithmetic coding process. The magnitude of the block vector difference (BVD) may be coded in bypass arithmetic coding mode, but the BVD syntax elements may be limited because the probability distribution of the syntax elements is assumed to be uniform. Entropy coding of an indication of whether the magnitude symbol of a BVD prediction candidate matches the magnitude symbol of the BVD may be performed, for example, rather than entropy coding the magnitude symbol of the BVD. Improved compression efficiency may be achieved because the indication may have a non-uniform probability distribution. A BVD prediction candidate may be selected from multiple BVD prediction candidates based on, for example, a cost of the BVD candidate calculated based on the difference between a template of the current block and a template of a candidate reference block.

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

[0006] Some examples of various embodiments of the present disclosure are described herein with reference to the drawings.

[0007] [Figure 1] FIG. 1 shows an exemplary video encoding / decoding system. [Figure 2] FIG. 2 shows an exemplary encoder. [Figure 3] FIG. 3 shows an exemplary decoder. [Figure 4] FIG. 4 shows an exemplary quadtree division of a coding tree block (CTB). [Figure 5] FIG. 5 shows an exemplary quadtree corresponding to the exemplary quadtree division of the CTB of FIG. [Figure 6] FIG. 6 shows exemplary binary and ternary tree partitioning. [Figure 7] FIG. 7 shows an example of a combined quadtree and multitype tree partitioning of the CTB. [Figure 8] FIG. 8 shows the tree corresponding to the combination of the CTB quadtree and multitype tree partitioning shown in FIG. [Figure 9] FIG. 9 shows an exemplary set of reference samples determined for intra prediction of a current block. [Figure 10A] FIG. 10A shows exemplary intra-prediction modes. [Figure 10B] FIG. 10B shows exemplary intra-prediction modes. [Figure 11] FIG. 11 shows the current block and the corresponding reference samples. [Figure 12] FIG. 12 shows an exemplary application of intra prediction modes for prediction of a current block. [Figure 13A] FIG. 13A shows an example of inter prediction. [Figure 13B] FIG. 13B shows an example motion vector. [Figure 14] FIG. 14 shows an example of bi-prediction. [Figure 15A]FIG. 15A shows exemplary spatial candidate neighboring blocks for a current block. [Figure 15B] FIG. 15B shows an example of a block that is temporally co-located with the current block. [Figure 16] FIG. 16 shows an example of intra block copy (IBC) for coding. [Figure 17] FIG. 17 shows an example of a context-based adaptive binary arithmetic coding (CABAC) encoder. [Figure 18A] FIG. 18A shows an example of intra-block copy (IBC). [Figure 18B] FIG. 18B shows an example of a BVD candidate for entropy coding the magnitude symbol of BVD. [Figure 18C] FIG. 18C shows an exemplary table containing ingredients and costs of BVD candidates. [Figure 18D] FIG. 18D shows an embodiment of a decoder that determines the magnitude signal of the BVD. [Figure 19] FIG. 19 shows how the context modeler determines a probabilistic model for a display. [Figure 20] FIG. 20 shows an example of how the context modeler determines a probabilistic model of an instruction. [Figure 21A] FIG. 21A shows an example of deriving a context model using a first-order Markov model. [Figure 21B] FIG. 21B shows an example of deriving a context model using a first-order Markov model. [Figure 21C] FIG. 21C shows an example of deriving a context model using a first-order Markov model. [Figure 21D] FIG. 21D shows an example of deriving a context model using a first-order Markov model. [Figure 22A] FIG. 22A shows an example of deriving a context model using a second-order Markov chain. [Figure 22B]FIG. 22B shows an example of deriving a context model using a second-order Markov chain. [Figure 23] FIG. 23 shows an example of switching between context derivation techniques. [Figure 24] FIG. 24 illustrates an exemplary method for selecting the most significant bins (MSBs) of the horizontal and vertical components of the vector difference. [Figure 25] FIG. 25 shows an example of how to encode an indication of whether the value of a magnitude symbol matches the expected value of that magnitude symbol. [Figure 26] FIG. 26 illustrates an exemplary method for determining the value of the magnitude symbol. [Figure 27] FIG. 27 illustrates an exemplary computer system capable of implementing embodiments of the present disclosure. [Figure 28] FIG. 28 illustrates exemplary elements of a computing device that may be used to implement any of the various devices described herein. 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 video encoding and decoding systems that may be used in the technical fields 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 a video sequence for more efficient storage and / or transmission. Video decoding may be used to restore 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 / transmit 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 include one or more of a video source 112, an encoder 114, and / or an output interface 116 (e.g., for encoding video sequence 108 into bitstream 110). Video source 112 may provide and / or generate video sequence 108 based on the capture of natural and / or synthetically generated scenes. Synthetically generated scenes may be scenes including computer-generated graphics and / or screen content. Video source 112 may include 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 called 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 luma sample array and two chroma sample arrays. The luma sample array may include intensity values ​​representing the brightness of the picture (e.g., luma component, Y). The chroma sample array may include intensity values ​​representing the blue and red components of the picture (e.g., 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., red, green, blue (RGB) color schemes). 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] For example, for temporal prediction, 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. The encoder 114 may then predict the block to be coded using a block (e.g., a predictive block) determined during the search. For example, for spatial prediction, 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. 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 / communicated 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 and other information used to determine the prediction blocks based thereon using a prediction type, motion vectors, and prediction modes. 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. Quantization and / or entropy coding may further reduce the amount 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 send / transmit, upload, and / or stream the bitstream 110 to the destination device 106 via the transmission medium 104. The output interface 116 may include a wired and / or wireless transmitter configured to send / transmit, upload, and / or stream the bitstream 110 according to one or more proprietary, open source, and / or standardized communication protocols (e.g., 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, Third 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 include one or more wires, cables, air interfaces, optical disks, flash memory, and / or magnetic memory. The transmission medium 104 may include one or more networks (e.g., the Internet) or file servers configured to store and / or transmit / transmit encoded video data.

[0018] Destination device 106 may decode bitstream 110 into video sequence 108 for display. Destination device 106 may include 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 include 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 protocols (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 to decode the video sequence 108. The decoder 120 may generate predictive blocks using / based on prediction types, prediction modes, and / or motion vectors received in the bitstream 110. The decoder 120 may determine prediction errors using transform coefficients received in the bitstream 110. The decoder 120 may determine prediction errors by using the transform coefficients to weight transform basis functions. The decoder 120 may combine the predictive blocks and 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 an example, and video encoding / decoding systems other than video encoding / decoding system 100 and / or modified versions of video encoding / decoding system 100 may perform 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] The encoder 114 and / or the decoder 120 may operate according to one or more proprietary or industry video coding standards. For example, the encoder 114 and / or the 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 Motion Picture Experts Group (MPEG)-4 Visual (also known as Advanced Video Coding (AVC)), ITU-T H.265 and MPEG-H Part 2 (also known as High Efficiency Video Coding (HEVC)), ITU-T H.265 and MPEG-I Part 3 (also known as Versatile Video Coding (VVC)), WebM VP8 and VP9 codecs, and / or AOMedia Video 1 (AV1)), and / or other video coding protocols.

[0023] FIG. 2 shows an example encoder. The encoder 200 shown 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 include one or more of an inter-prediction unit 206, an intra-prediction unit 208, combiners 210 and 212, a transform and quantization unit (TR+Q) 214, an inverse transform and quantization unit (iTR+iQ) 216, an entropy coding unit 218, one or more filters 220, and / or a buffer 222.

[0024] The encoder 200 may divide (e.g., include) a picture (e.g., a frame) of the video sequence 202 into blocks and encode the video sequence 202 block by block. The encoder 200 may perform / apply prediction techniques on the blocks 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 picture that has been coded and then decoded. 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 in a picture may be similar to the texture of the region immediately surrounding the region of scene content in 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 / communicated 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 of 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 compliance with one or more of ITU-T H.263, AVC, HEVC, VVC, VP8, VP9, ​​AV1, and / or any other video coding standards / formats.

[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 particular 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 particular level / threshold. The encoder control unit may determine / control one or more of: the division of a picture of the video sequence 202 into blocks, whether the block is inter predicted by the inter prediction unit 206 or intra predicted by the intra prediction unit 208; the motion vector for inter prediction of the block; the intra prediction mode among multiple intra prediction modes for intra prediction of the block; the 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 encode the block, the prediction information of the block (intra-prediction mode, motion vector, 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 an example, and encoders other than encoder 200 and / or modified versions of encoder 200 may implement the methods and processes described herein. For example, encoder 200 may have 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 include an entropy decoding unit 306, an inverse transform and quantization (iTR+iQ) unit 308, a combiner 310, one or more filters 312, a buffer 314, an inter prediction unit 316, and / or an intra prediction unit 318.

[0035] The decoder 300 may include a decoder control unit configured to control one or more units of the decoder 300. The decoder control unit may control 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 the following: a motion vector for inter prediction of a block, an intra prediction mode among multiple intra prediction modes for intra prediction of a block, the filtering performed by the filter 312, and / or one or more inverse transform types and / or inverse quantization parameters applied by the inverse transform and quantization unit 308, regardless of whether the block is inter predicted by the inter prediction unit 316 or intra predicted by the intra prediction unit 318. One or more of the control parameters used by the decoder control unit may be packed into 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 an example, and decoders other than 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 FIG. 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 take advantage of 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). The CTBs may contain samples of a sample array. The CTBs may have a size of 2n x 2n samples, where n may be specified by parameters of the encoding system. For example, n may be 4, 5, 6, or any other value. The CTBs may have any other size. The CTBs may be further divided by a recursive quadtree division into coding blocks (CBs) of half-vertical and half-horizontal size. The CTBs may form the root of the quadtree. CBs that are not further divided as part of the recursive quadtree division may be referred to as leaf CBs of the quadtree, otherwise they may be referred to as non-leaf CBs of the quadtree. The CBs may have a minimum size specified by parameters of the encoding system. For example, the CBs may have a minimum size of 4 x 4, 8 x 8, 16 x 16, 32 x 32, 64 x 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 transformation, 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 example of a quadtree partitioning of a CTB. FIG. 5 shows a quadtree corresponding to the example quadtree partitioning of CTB 400 in FIG. 4. As shown in FIGS. 4 and 5, CTB 400 may first be partitioned into four CBs of semi-vertical and semi-horizontal size. Three of the CBs resulting from the first level partitioning of CTB 400 may be leaf CBs. The three leaf CBs of the first level partitioning of CTB 400 are labeled 7, 8, and 9, respectively, in FIGS. 4 and 5. The non-leaf CBs of the first level partitioning of 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 CTB 400 may be leaf CBs. The three leaf CBs of the second level partitioning of CTB 400 are labeled 0, 5, and 6, respectively, in FIGS. 4 and 5. The non-leaf CBs of the second level partitioning of 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 10 leaf CBs, labeled 0 through 9, and / or any other number of leaf CBs. The 10 leaf CBs may correspond to 10 CB leaf nodes (e.g., the 10 CB leaf nodes of quadtree 500, as shown in FIG. 5). In other examples, 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 label (e.g., indicator, index) of each CB leaf node in FIGS. 4 and 5 may correspond to a 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 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. 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 a ternary tree partitioning. In other examples, the partitions may be other sizes relative to each other and 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 amounts of smaller blocks. A block partitioning strategy (e.g., in VVC) may be referred to as a combination of quadtree and multi-type tree partitioning (quadtree + multi-type tree partitioning) 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 FIG. 7 and FIG. 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 partitioning.

[0047] Leaf CB5 in FIG. 4 may be split into two CBs based on a vertical binary tree partition. 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 partition. Two of the three resulting 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 partition. 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 partition. 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 partition. Two of the three CBs may be the 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 tree 800 shown in FIG. 8). The resulting combination of quadtree + multitype tree divisions 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 contain 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 region 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., a current block) may be predicted from samples in columns 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 adjacent columns and rows may be collectively 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 onto the reference sample, the sample may be predicted by interpolating between the two closest reference samples of 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 value and the original sample value 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 send 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 encoded 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 encoding / decoding the blocks and may be used as in the example of FIG. 9.

[0054] The current block 904 may be w × h samples in size. 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 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 examples, 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 concept of slices 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 are not 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 enable both the encoder and the decoder to determine the same prediction result. 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 sample 902 may be filtered based on the size of the current block 904 to be coded and the applied intra-prediction mode. Figure 9 shows an example determination of a reference sample for intra-prediction of a block. The reference sample may be determined in a manner different from that described above. For example, multiple reference lines may be used in other instances (e.g., VVC).

[0058] The samples of the current block 904 may be intra predicted based on the reference sample 902, e.g., based on determining the reference sample and (optionally) filtering. 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 in regions of a picture. Any amount 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 illustrates 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 samples 902 of FIG. 9 are shown in a two-dimensional x, y plane, where the samples may be referenced as p[x][y]. To simplify the prediction process, the reference samples 902 may be arranged in two one-dimensional arrays. The reference samples 902 above the current block 904 may be arranged in a one-dimensional array ref1[x].

number

number

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

number

number

number

[0063] The sample at position [x][y] in the current block 904 may be predicted by the average of the reference samples 902, such as in DC mode. The predicted sample p[x][y] in the current block 904 may be determined / calculated as follows:

number

[0064] The sample at position [x][y] within the current block 904 may be predicted by projecting position [x][y] onto a point on a horizontal or vertical line of samples that includes the reference sample 902, for example, for a given angular mode, in a direction specified by the given angular mode. The sample at position [x][y] may be predicted by interpolating between the two nearest reference samples to the projection point if the projection does not fall directly on the reference sample. The direction specified by the angular mode may be given by an angle φ defined with respect to the y-axis for vertical prediction modes (e.g., modes 19-34 of HEVC and modes 35-66 of VVC). The direction specified by the angular mode may be given by an angle φ defined with respect to the x-axis for horizontal prediction modes (e.g., modes 2-18 of HEVC and modes 2-34 of VVC).

[0065] FIG. 12 illustrates an exemplary application of intra prediction modes for predicting a current block. FIG. 12 specifically illustrates prediction of a sample at a position [x][y] within a current block 904 for a vertical prediction mode 906. The vertical prediction mode 906 may be given by an angle φ with respect to the vertical axis. In the vertical prediction mode, the position [x][y] within the current block 904 may be projected to a point (e.g., a projection point) on the horizon of the reference sample ref1[x]. The reference sample 902 is only partially illustrated in FIG. 12 for ease of illustration. As illustrated in FIG. 12, the projection point on the horizon of the reference sample ref1[x] may not be located exactly on the reference sample. For example, if the projection point is located at a fractional sample position between two reference samples, the prediction sample p[x][y] within the current block 904 may be determined / calculated by linearly interpolating between the two reference samples. The prediction sample p[x][y] may be determined / calculated as follows:

number

number

number

number

[0066] The position [x][y] of the sample in the current block 904 may be projected onto a vertical line of the reference sample ref2[y], such as for a horizontal prediction mode. The predicted sample p[x][y] for the horizontal prediction mode may be determined / calculated as follows:

number

number

number

number

[0067] The interpolation functions given by equations (7) and (10) may be implemented by an encoder and / or a decoder (e.g., the encoder 200 of FIG. 2 and / or the 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. The coefficients of the 2-tap FIR filters are (1-i f ) and i f The prediction samples p[x][y] in angular intra prediction may be calculated at some predetermined level of sample accuracy (e.g., 1 / 32 sample accuracy, or accuracy defined by any other metric). For 1 / 32 sample accuracy, the set of 2-tap FIR interpolation filters may include up to 32 different 2-tap FIR interpolation filters, which are used to calculate the projection displacement i f In other examples, different levels of sample precision may be used.

[0068] An FIR filter may be used to predict chroma samples and / or luma samples. For example, a 2-tap interpolating 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 the predicted values ​​for luma samples. The coefficients of the 4-tap FIR filter are f For 1 / 32 sample accuracy, the set of 32 different 4-tap FIR filters may include up to 32 different 4-tap FIR filters, which may be determined based on the projection displacement i f One for each of the 32 possible values ​​of the fractional part of i. In other examples, different levels of sample precision may be used. The set of 4-tap FIR filters is stored in a look-up table (LUT) and f The prediction samples p[x][y] for the vertical prediction mode may be determined based on a 4-tap FIR filter as follows:

number

number

[0069] A supplemental reference sample may be determined / constructed if the position [x][y] of a sample in the current block 904 to be predicted is projected to a negative x coordinate. The position [x][y] of the sample may be projected to a negative x coordinate, for example, if a negative vertical prediction angle φ is used. The supplemental reference sample may be determined / constructed by projecting the reference sample at [ref]_2[y] within the vertical line of reference samples 902 onto the horizontal line of reference samples 902 using the negative vertical prediction angle φ. Similarly, a supplemental reference sample may be determined / constructed if the position [x][y] of a sample in the current block 904 to be predicted is projected to a negative y coordinate. The position [x][y] of the sample may be projected to a negative y coordinate, for example, if a negative horizontal prediction angle φ is used. The supplemental reference sample may be determined / constructed by projecting the reference sample at [ref]_1[x] on the horizontal line of reference samples 902 onto the vertical line of reference samples 902 using the negative horizontal prediction angle φ.

[0070] The encoder may determine / predict samples of a current block (e.g., current block 904) to be encoded 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 encode 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 send 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.

[0071] A 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., an angular intra-prediction mode) from the encoder of 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 the predicted values ​​of the current block (e.g., determined based on the intra-prediction mode) to the residuals of the current block to reconstruct the current block. It is not necessary for the decoder to receive an indication of the angular intra-prediction mode from the encoder of the current block. The decoder may determine the intra-prediction mode based on, for example, other criteria. Although various examples herein correspond to intra-prediction modes of 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.).

[0072] Intra prediction may utilize correlation between spatially adjacent samples of the same picture of a video sequence to perform video compression. Inter prediction is another coding tool that can be used to perform video compression. Inter prediction may utilize time-domain correlation between sample blocks of 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 of a current picture being encoded may have / be associated with a corresponding block of samples of 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.

[0073] 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 as a prediction error and / or a residual. The encoder may then store and / or transmit (e.g., signal) a 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.

[0074] 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 pre-decoded picture available to the encoder and / or decoder. The availability of a previous decoded picture may depend / be based on whether a previous decoded picture is available in the 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 be based on the difference (e.g., SSD, SAD, and / or SATD) between the predicted samples of the reference block 1304 and the original samples of the current block 1300.

[0075] 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 disposed 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. Certain boundary extensions may be used such that values ​​of samples in a row or column of the reference picture 1306 adjacent to a portion of a reference region (e.g., search range 1308) that extends outside the reference picture 1306 may be used for sample positions outside the reference picture 1306. A subset of, or all of, the potential positions 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 positions based on motion information of neighboring blocks (e.g., motion vector 1312) relative to the current block 1300.

[0076] 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 the reference picture list that contains the reference picture 1306.

[0077] 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 ½, ¼, ⅛, 1 / 16, 1 / 32, or any other fractional sample resolution. Interpolation between two samples at integer positions may be used to generate the 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.

[0078] 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 with respect to 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 indicate a reference picture 1306 in a reference picture list. The motion information may include an indication of the motion vector 1312 and / or an indication of the reference index. The reference index may indicate a reference picture 1306 in a reference picture list. A 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., take into account) a prediction of the current block 1300. The decoder may decode the current block 1300 based on combining the prediction with the prediction error.

[0079] 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 predicting a current block using a single picture may be referred to as uni-prediction.

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

[0081] 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 may determine and / or generate a second reference block for predicting the current block, for example, from reference picture list 1 if the encoder uses bi-prediction.

[0082] 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 picture may precede or 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 generally 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.

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

[0084] 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 within / via a 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 indicate a reference picture for the reference block 1402 within a reference picture list. The motion information for the reference block 1402 may include an indication of the motion vector 1406 and / or an indication of a reference index. The reference index may indicate a reference picture for the reference block 1402 within a reference picture list.

[0085] The motion information for the reference block 1404 may include a motion vector 1408 and / or a reference index / indicator. The reference indicator may indicate 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 indicate a reference picture for the reference block 1404 in a reference picture list.

[0086] 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 based on, for example, a prediction error and / or associated motion information of each of reference blocks 1402 and 1404. Reference blocks 1402 and 1404 may correspond to / form (e.g., take into account) a prediction of current block 1400. The decoder may decode current block 1400 based on combining the prediction with the prediction error.

[0087] The motion information may be predictively coded, for example, before being stored and / or transmitted / signaled in / via a bitstream (e.g., 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.

[0088] An encoder (e.g., encoder 200, as shown in FIG. 2) may encode a motion vector. The encoder may encode 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 correspond to / be a previously decoded motion vector of a neighboring block of the current picture of the current block and / or a block collocated or near the current block in another reference picture. The encoder and / or decoder may generate and / or determine the list of candidate MVPs.

[0089] 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 the list of candidate MVPs. The MVD may be determined / calculated based on the difference between the motion vector of the current block and the selected MVP. For example, for a motion vector indicating a position (e.g., represented by a horizontal component (MVx) and a vertical component (MVy)) relative to the position of the current block being coded, the MVD may be represented by two components MVD_x and MVD_y. MVD_x and MVD_y are determined / calculated as follows:

number

number

[0090] MVDx and MVDy may represent the horizontal and vertical components of the MVD, respectively. MVPx and MVPy may represent the horizontal and vertical components of the MVP, respectively. A decoder (e.g., decoder 300 as shown in FIG. 3) may decode a motion vector by adding the MVD to an MVP indicated in / via the bitstream. The decoder may decode a current block by determining and / or generating a reference block. The decoder may determine and / or generate a reference block, for example, based on a decoded motion vector. The reference block may correspond to / form (e.g., take into account) a prediction of the current block. The decoder may decode the current block by combining the prediction with a prediction error.

[0091] A list of candidate MVPs for AMVP (e.g., HEVC, VVC, and / or one or more other communication protocols) may include two or more candidates (e.g., Candidate A and B). Candidate A and Candidate B can include up to two (or any other number) spatial candidate MVPs determined or derived from five (or any other number) of spatial 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) of temporally co-located blocks (e.g., when both spatial candidate MVPs are unavailable or identical), and / or a zero motion vector candidate MVP (e.g., when one or both of the spatial candidate MVPs or the temporal candidate MVPs are unavailable). Other quantities of spatial candidate MVPs, spatial neighboring blocks, temporal candidate MVPs, and / or temporally co-located blocks can be used in the list of candidate MVPs.

[0092] Figure 15A shows spatial candidate neighboring blocks relative to a current block. For example, five (or any other number) spatial candidate neighboring blocks may be located relative to a 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 relative to 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.

[0093] An encoder (e.g., encoder 200 as shown in FIG. 2) may encode motion vectors using inter-prediction block merging (e.g., merge mode). The encoder (e.g., using merge mode) may reuse the same motion information of a neighboring block (e.g., one of neighboring blocks A0, A1, B0, B1, and B2) for inter prediction of the current block. The encoder (e.g., using merge mode) may reuse the same motion information of a temporally 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 block 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) the motion information of one neighboring block or one temporally co-located block in the candidate list to predict the motion information of the current block being encoded. 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 / send an indicator / index. The index may indicate the determined motion information in the list of candidate motion information. The encoder may signal / transmit the index to indicate the determined motion information.

[0094] A list of candidate motion information for a 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) spatial 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 spatial neighboring blocks and temporally co-located blocks used for the merge mode may be the same as the spatial neighboring blocks and temporally co-located blocks used for AMVP.

[0095] Inter prediction may be performed in other ways and variants than those described herein. For example, motion information prediction techniques other than AMVP and merge mode may be used. While various examples 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 with other inter prediction modes (e.g., as used in other video coding standards / formats such as VP8, VP9, ​​AV1, etc.). History-based motion vector prediction (HMVP), combined intra / inter prediction mode (CIIP), and / or merge mode with motion vector difference (MMVD) (e.g., as described in VVC) may be performed / used and are within the scope of the present disclosure.

[0096] Block matching may be used (e.g., in inter prediction) to determine a reference block in a picture different from that of the current block being coded. Block matching may be used to determine a reference block in the same picture as that of the current block being coded. A reference block determined using block matching in the same picture as that of the current block often may not accurately predict the current block (e.g., in the case of video captured by a camera). Prediction accuracy for screen content video may not be similarly affected, for example, when a reference block in the same picture as that of 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 that of the current block being coded may provide efficient compression for screen content video.

[0097] Prediction techniques 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 a 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).

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

[0099] A reference block may be determined and / or generated for the current block for IBC. The encoder may determine a difference (e.g., corresponding sample-by-sample difference) between the reference block and the current block. 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 within / via a 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., a BV). The reference block may correspond to / form (e.g., take into account) a prediction of the current block. The decoder may decode the current block by combining the prediction with the prediction error.

[0100] 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 of 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).

[0101] An encoder that performs BV prediction and coding (e.g., encoder 200 as shown in FIG. 2) may encode the BV as the difference between the BV of the current block to be coded and a block vector predictor (BVP). The encoder may select / determine a BVP from a list of candidate BVPs. The candidate BVP 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.

[0102] After the encoder selects a BVP from the list of candidate BVPs, the encoder may signal an indication of the selected BVP and the BV difference (BVD) in the bitstream. The encoder may indicate the selected BVP in the bitstream by an index that points to the list of candidate BVPs. The BVD may be calculated based on the difference between the BV of the current block and the selected BVP. For example, the horizontal component (BV) relative to the position of the current block being coded is x ) and vertical component (BV y ), the BVD can be expressed as two components calculated as follows:

number

number

[0103] In HEVC and VVC, the list of candidate BVPs may include two candidates, referred to as candidates A and B. Candidates A and B may include up to two spatial candidate BVPs derived from the five spatial neighboring blocks of the current block being coded, or one or more of the last two coded BVPs when spatial neighboring candidates are unavailable (e.g., because they are coded in intra or inter mode). The positions of the five spatial candidate neighboring blocks relative to the current block coded using IBC are the same as those shown in Figure 15A for inter prediction. The five spatial candidate neighboring blocks are denoted A0, A1, B0, B1, and B2, respectively.

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

[0105] Arithmetic coding is a method of entropy coding that may be based on recursive interval subdivision. For example, an initial coding interval may be divided into m disjoint subintervals, and symbols that take values ​​from an m-ary source alphabet may be arithmetically coded. 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 may be arithmetically coded by selecting the subinterval that corresponds to the symbol's actual value as the new coding interval. This interval subdivision scheme may be applied to a given sequence s = {s1, s2, ..., s N ) each symbol s i By recursively using , the encoder can determine the values ​​within the final coding interval as the operational codewords for the sequence s. We can apply this interval subdivision scheme to a given sequence s = {s1, s2, ..., s N ) each symbol s i By recursively using , the encoder can determine a value within the range of the final coding interval after, for example, the Nth interval subdivision as the operational codeword for sequence s. Each successive symbol of sequence s that is 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, and therefore add fewer bits to the operational codeword for sequence s, according to the general principles of entropy coding.

[0106] Arithmetic decoding may be based on the same recursive interval subdivision. To operationally decode symbols that take values ​​from an m-ary source alphabet, the initial coding interval may be divided into m relatively prime subintervals. Each of the m relatively prime 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 for the symbol, as described herein. A symbol may be operationally decoded from an arithmetic codeword by determining the symbol value corresponding to the subinterval in which the arithmetic codeword falls. This subinterval may then become the new coding interval. The decoder recursively uses this interval subdivision scheme N times, determining in each iteration which subinterval the arithmetic codeword falls into, thereby generating a sequence s={s1, s2, ..., s N ) each symbol s i can be decoded sequentially.

[0107] Different probability models may be used to subdivide the coding interval for each arithmetically coded symbol. For example, the probability model for a symbol may be determined, for example, by a fixed selection (e.g., based on the position of the symbol in the symbol sequence) and / or by an adaptive selection from among two or more probability models (e.g., based on information related to the symbol). For two or more symbols in a sequence of symbols, a joint probability model may be used. The selection of a probability model for a symbol may be referred to as context modeling. Arithmetic coding employing context modeling may be referred to as context-based arithmetic coding. The selected probability model may be updated, for example, based on the actual coded value of the symbol in addition to the selection of the probability model for the symbol. The probability of the actual coded value of the symbol may be increased, for example, with the probability model, and the probabilities of all other values ​​may be decreased. Arithmetic coding employing both context modeling and probability model adaptation may be referred to as context-based adaptive arithmetic coding.

[0108] Other variations of arithmetic coding may be possible. When arithmetic coding occurs, a renormalization operation may be performed, for example, to ensure that the precision required to represent the range and lower bound of the subintervals does not exceed the finite precision of the registers used to store these values. Other simplifications to the coding process may also be made in order to reduce the complexity, increase the speed, and / or reduce the power requirements when implementing the coding process in either hardware, software, or a combination of the two. The symbol probabilities, as well as the lower bounds and ranges of the subintervals, may, for example, be approximated or constant in such implementations.

[0109] 17 shows an example of a context-based adaptive binary arithmetic coding (CABAC) encoder. The CABAC encoder (e.g., CABAC encoder 1700) may be implemented within a video encoder for entropy encoding syntax elements of a video sequence, such as the video encoder 200 described herein with respect to FIG. 2. As shown in FIG. 17, the CABAC encoder (e.g., CABAC encoder 1700) may include a binarizer 1702, an arithmetic encoder 1704, and / or a context modeler 1706.

[0110] A CABAC encoder (e.g., CABAC encoder 1700) may receive syntax elements 1708 for arithmetic encoding. The syntax elements (e.g., syntax elements 1708) may be generated at a video encoder and / or may describe how a video signal is reconstructed at a video decoder. The syntax elements may include an intra-prediction mode based on which a coding unit (CU) is intra-predicted. The syntax elements may include motion data (e.g., MVD and MVP-related data) based on which a CU is inter-predicted. The syntax elements may include displacement data (e.g., BVD and BVP-related data) based on which a CU is predicted using IBC.

[0111] A binarizer (e.g., binarizer 1702) may map the values ​​of a syntax element (e.g., syntax element 1708) to a sequence of binary symbols (e.g., bins). The binarizer 1702 may define a unique mapping of the values ​​of the syntax element 1708 to a sequence of binary symbols. Binarization of syntax elements may help improve the implementation of probability modeling and arithmetic coding. The binarizer 1702 may implement one or more binarization processes (e.g., unary, truncated unary, k-th truncated Rice, k-th Exponential-Golomb (EGk), fixed length, or a combination of two or more of these binarization processes). The binarizer 1702 may select the binarization process. The binarizer 1702 may select the binarization process based on, for example, 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 element 1708. The binarizer 1702 may not process the syntax element 1708, for example, based on the syntax element 1708 already represented by a sequence of one or more binary symbols. The binarizer 1702 may not be used and the syntax element 1708 may be encoded directly by the CABAC encoder 1700, for example, if it is represented by a sequence of one or more non-binary symbols.

[0112] The one or more binary symbols may be processed by an arithmetic encoder (e.g., arithmetic encoder 1704). One or more of the binary symbols may be processed by arithmetic encoder 1704, for example, based on (or after) binarizer 1702 optionally mapping values ​​of syntax elements 1708 to a sequence of binary symbols. Arithmetic encoder 1704 may process each of the one or more binary symbols in one of at least two modes: a normal arithmetic encoding mode or a bypass arithmetic encoding mode.

[0113] An arithmetic encoder (e.g., 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 a normal arithmetic encoding mode. In a normal arithmetic encoding mode, the arithmetic encoder 1704 may perform arithmetic encoding as described herein. The arithmetic encoder 1704 may, for example, subdivide the current coding interval into m relatively prime subintervals. Each of the m relatively prime subintervals may have a width proportional to the probability of a binary symbol having a different one of the values ​​of the m-ary source alphabet. For example, for a binary symbol, the value of m may be equal to 2, and the current coding interval may be divided into two relatively prime intervals with widths proportional to the probability of a different one of the two possible values ​​{0, 1} of the binary symbol being encoded. The probabilities of the two possible values ​​of the binary symbol may be represented by a probability model of the binary symbol (e.g., probability model 1710). The arithmetic encoder 1704 may encode a binary symbol by selecting the sub-interval that corresponds to the actual value of the binary symbol as the new coding interval for the next binary symbol to be encoded.

[0114] An arithmetic encoder (e.g., arithmetic encoder 1704) may receive a probability model 1710 from a context modeler (e.g., context modeler 1706). The context modeler 1706 may determine the probability model 1710 for the binary symbol by a fixed selection. The context modeler 1706 may determine the probability model 1710 for the binary symbol by a fixed selection, for example, based on the position of the binary symbol within a sequence of binary symbols representing the syntax element 1708. The context modeler 1706 may adaptively select from among two or more probability models to determine the probability model 1710 for the binary symbol. The context modeler 1706 may determine the probability model 1710 for the binary symbol by adaptively selecting from among two or more probability models, for example, based on information related to the binary symbol. As shown in FIG. 17 , the probability model (e.g., probability model 1710) may determine the probability P of the least likely symbol (LPS). LPS and the most likely symbol (MPS) value V MPS The probability model 1710 can include two parameters: the probability of LPS P LPS In addition to or instead of, the probability of MPS P MPS Similarly, a probabilistic model (e.g., probabilistic model 1710) may be used to calculate the MPS value V MPS In addition to or alternatively to 、The LPS value VLPS may include a value of the LPS. The arithmetic encoder (e.g., arithmetic encoder 1704) may provide one or more probability model update parameters (e.g., probability model update parameters 1712) to the context modeler (e.g., context modeler 1706). The arithmetic encoder 1704 may provide the one or more probability model update parameters 1712 to the context modeler 1706, for example, after the arithmetic encoder 1704 encodes the binary symbol. The context modeler 1706 may adapt the probability model 1710. 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 comprise an actual coded value of the binary symbol. The context modeler 1706 may determine whether the actual coded value of the binary symbol is VLPS. MPS If not equal to P LPS otherwise, P LPS The probabilistic model 1710 can be updated by decreasing

[0115] The arithmetic encoder (e.g., arithmetic encoder 1704) can process binary symbols that may 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 may have a uniform or near-uniform probability distribution, the arithmetic encoder 1704 can bypass the determination and / or adaptation of the probability model performed in the normal arithmetic encoding mode when encoding these binary symbols to speed up the encoding process. Furthermore, the uniform or near-uniform probability distribution can simplify the subdivision of the current coding interval. The current coding interval may be partitioned, for example, into two disjoint subintervals of equal width, which can be realized using a simple implementation that can further speed up the encoding process. The arithmetic encoder (e.g., arithmetic encoder 1704) can encode the binary symbol by selecting the subinterval corresponding to the value of the binary symbol as the new coding interval for the next binary symbol to be encoded. Because CABAC encoding can have throughput limitations, the resulting increase in encoding speed for binary symbols encoded by the arithmetic encoder 1704 in the bypass arithmetic encoding mode can often be significant.

[0116] An arithmetic encoder (e.g., arithmetic encoder 1704) can determine a value within the range of the final coding interval as an arithmetic codeword (e.g., arithmetic codeword 1714) for a binary symbol. The arithmetic encoder 1704 may determine a value within the range of the final coding interval as an arithmetic codeword 1714 for the binary symbol, for example, based on processing several binary symbols (e.g., corresponding to one or more syntax elements). 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 can be received and processed by a video decoder.

[0117] Two syntax elements that may be coded in the bypass arithmetic coding mode are the motion vector difference (MVD) magnitude and the block vector difference (BVD) magnitude. The MVD and BVD 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. While the bypass arithmetic coding mode can be used to speed up the arithmetic coding process, compression of symbols for MVD and BVD syntax elements coded in the bypass arithmetic coding mode may be limited because their probability distributions are presumed 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 the bypass arithmetic coding mode may generally require more bits to code than symbols coded using the normal arithmetic coding mode.

[0118] The improvements described herein include advantages such as improved compression efficiency of one or more magnitude symbols of BVD. Instead of entropy coding the magnitude symbol of BVD, entropy coding can be performed on an indication of 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. The BVD predictor can 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 among the multiple BVD candidates can be calculated based on, for example, the difference between a template of the current block and a template of the candidate reference block. The candidate reference block can be displaced relative to the current block by 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 thus may provide improved compression efficiency over coding the magnitude symbol of BVD based on a uniform probability distribution.

[0119] The improvements described herein further include advantages such as improved compression efficiency of one or more magnitude symbols of the MVD. Instead of entropy coding the magnitude symbol of the MVD, entropy coding of an indication of whether the value of the magnitude symbol of the MVD matches the value of a magnitude symbol of an MVD candidate that can be used as a predictor of the MVD may be performed. 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 each MVD candidate in the multiple MVD candidates may be calculated, for example, based on the difference between the template of the current block and / or the template of the candidate reference block. The candidate reference block may be displaced relative to the same position of the current block in the reference frame by the sum of the costs of the MVD candidates and / or motion vector predictors (MVPs). 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.

[0120] Both HEVC and VVC include prediction techniques that exploit correlations between blocks of samples within the same image, for example, as described herein. The prediction techniques may be referred to as intra-block coding (IBC). IBC is also included in the Enhanced Compression Model (ECM) software algorithm, which is currently under 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.

[0121] FIG. 18A illustrates an example of IBC. When IBC occurs, an encoder may determine a block vector (BV) 1802 indicating the displacement from a current block 1804 to a reference block or intrablock-corrected prediction 1806. The encoder may determine a reference block 1806 from among one or more reference blocks tested during the search process. For each of the one or more reference blocks tested during the 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), and / or a difference determined based on a hash function) between samples of the reference block and samples of the current block 1804. The encoder may determine the reference block 1806 from among the one or more reference blocks based on the reference block 1806 with the smallest difference from the current block 1804 among the one or more reference blocks and / or based on other criteria. The reference block 1806 and / or one or more other reference blocks tested during the search process may include decoded and / or reconstructed samples. The decoded and / or reconstructed samples may not have been processed by an in-loop filtering operation (eg, deblocking and / or SAO filtering).

[0122] The encoder may predict the current block 1804 using the reference block 1806. The encoder may predict the current block 1804 using the reference block 1806, for example, if 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 / or related prediction information in the bitstream. The prediction information may include the BV 1802. The prediction information may include an indication of the BV 1802. A decoder (e.g., a decoder as described herein with respect to FIG. 3) may receive the bitstream and / or decode the current block 1804 by determining a reference block 1806 that can use the prediction information and / or combine the prediction and prediction error to form a prediction of the current block 1804.

[0123] The BV (e.g., BV 1802) may be predictively coded. For example, the BV (e.g., BV 1802) may be predictively coded before being signaled in the bitstream. The BV (e.g., BV 1802) may be predictively coded, for example, 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 using, for example, merge mode or AMVP described herein. The encoder may code the BV 1802 as the difference between the BV 1802 and a BV predictor (BVP) 1808 of AMVP, 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.

[0124] The encoder may signal an indication of the BVP (e.g., BVP 1808) and the BV difference (e.g., BVD 1810) in the bitstream. The encoder can signal an indication of the BVP 1808 and BVD 1810 in the bitstream, for example, based on the encoder's selection of the BVP 1808 from a list of candidate BVPs. The encoder can indicate the BVP 1808 in the bitstream by an index that points to the list of candidate BVPs and / 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 1810), which may be determined according to equations (17) and (18) above, respectively. x )1812 and the vertical component (BVD y ) 1814. Two components of BVD x 1812 and BVD y 1814 each include a magnitude and a sign. As shown in FIG. 18A, x 1812 has a magnitude of 10011 in fixed-length binary (or 19 in decimal) and has a negative sign. The positive horizontal direction points to the right in the example shown in FIG. 18A. As shown in FIG. 18A, BVD y 1814 has a magnitude of 01011 in fixed length binary (or 11 in decimal) and a positive sign. The positive vertical direction is indicated downwards in the example shown in Figure 18A. The encoder calculates its two components, BVD x 1812 and BVD y 1814, the BVD 1810 in the bitstream may be displayed.

[0125] A decoder may decode a BV (e.g., BV 1802) by adding BVD 1810 to BVP 1808. The decoder can decode a current block (e.g., current block 1804) by using BV 1802 to determine a reference block (e.g., reference block 1806) that forms a prediction of current block 1804 and combining the prediction error with that prediction. The decoder may determine reference block 1806 by adding BV 1802 to the location of current block 1804, thereby obtaining the location of reference block 1806.

[0126] As described herein, the magnitude of a BVD (e.g., BVD1810) may be encoded in a bypass arithmetic encoding mode. While the bypass arithmetic encoding mode may be used to accelerate the arithmetic encoding process, compression of BVD1810 magnitude symbols encoded in a bypass arithmetic encoding mode may be limited because their probability distribution may be uniformly or nearly uniformly distributed. Information theory suggests that symbols cannot be compressed at a rate lower than the entropy without loss of information, and that symbols with uniform probability distributions have the greatest entropy. Symbols encoded using a bypass arithmetic encoding mode may generally require more bits to encode than symbols encoded using a normal arithmetic encoding mode.

[0127] As described herein, the compression efficiency of one or more magnitude symbols of a BVD (e.g., BVD1810) may be improved. An encoder can entropy encode an indication of whether the value of a magnitude symbol of BVD1810 matches the value of the same magnitude symbol of a BVD candidate used as a predictor of BVD1810. The encoder may, for example, entropy encode this indication instead of directly entropy encoding the magnitude symbol of BVD1810. The indication of whether the value of a magnitude symbol of BVD1810 matches the value of the magnitude symbol of a BVD predictor may have a non-uniform probability distribution and thus 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 the multiple BVD candidates. The BVD candidates may include a BVD candidate for each possible value of the magnitude symbol of BVD1810. There are only two possible values ​​for the magnitude symbol of BVD1810 that can be represented in binary form. Thus, the BVD candidates may include two BVD candidates for this representation (one for each possible value of the magnitude symbol in the BVD 1810 to be 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. The cost of each BVD candidate in the plurality of BVD candidates may be calculated based, for example, on the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block may be displaced relative to the current block by the sum of the BVD candidate and BVP 1808.

[0128] 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 BVD xThe magnitude symbol 1812 is the second most significant bit in the fixed-length binary representation of the BVD 1810 and may have the binary value "0." As described herein, instead of directly entropy encoding the magnitude symbol 1816 of the BVD 1810, the encoder may, for example, 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, for example, select a BVD predictor from among multiple BVD candidates based on a respective cost of the multiple BVD candidates. The BVD candidates may include a BVD candidate for each of the two possible values ​​({0, 1}) of the magnitude symbol 1816 of the BVD 1810, a first BVD candidate 1818 equal to BVD 1810 itself, and a second BVD candidate 1820 equal to BVD 1810 but having the opposite (or other) value of the magnitude symbol 1816 of the BVD 1810.

[0129] 18B shows examples of BVD candidates for entropy coding the magnitude symbol 1816 of BVD 1810. Specifically, FIG. 18B shows an example of a BVD candidate 1818 that is equal to BVD 1810 itself, and an example of a BVD candidate 1820 that is equal to BVD 1810 but has the opposite (or other) value of the magnitude symbol 1816 of BVD 1810. With the opposite (or other) value of the magnitude symbol 1816 of BVD candidate 1818, BVD candidate 1820 has a horizontal component with a magnitude of 11011 in fixed-length binary (or 27 in decimal) and a negative sign, BVD x 1822. The vertical component of BVD candidate 1820, BVD y 1824 is the same magnitude of 01011 in fixed length binary (or 11 in decimal), and the vertical component of BVD candidate 1818 (or BVD1810), BVD y It has a positive sign as 1814.

[0130] The cost of each BVD candidate in the plurality of BVD candidates may be calculated based on, for example, the difference between the template of the current block 1826 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 BVP 1808. The encoder may determine the cost of the BVD candidate 1818 based on, for example, 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 BVP 1808. The encoder may determine the difference between the template 1826 and the template 1828 based on, for example, the difference between the samples of the template 1826 and the template 1828. The difference may include, for example, the sum of squared differences (SSD), the sum of absolute differences (SAD), the sum of absolute transformed differences (SATD), the mean removed SAD, and / or the mean removed SSD. The encoder may determine the cost of the BVD candidate 1820 based on, for example, the difference between the template 1826 of the current block 1804 and the template 1832 of the candidate reference block 1834 that is displaced relative to the current block 1804 by the sum of the BVD candidate 1820 and the BVP 1808. The encoder may determine the difference between the template 1826 and the template 1832 based on, for example, the difference between the samples of the template 1826 and the samples of the template 1828 (e.g., SSD, SAD, SATD, mean removed SAD, or mean removed SSD). The templates 1826, 1828, and 1832 may include one or more samples to the left and / or above the respective blocks. The templates 1826, 1828, and 1832 may include samples from one or more columns of the respective blocks to the left and / or from one or more rows above the respective blocks. FIG. 18B shows an exemplary position and shape (eg, an L-shape rotated 90 degrees clockwise) of templates 1826, 1828, and 1832.

[0131] 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, based on determining the cost of each of the multiple BVD candidates. The encoder may select the BVD candidate that may have the smallest cost from among the multiple BVD candidates as the BVD predictor. Figure 18C shows an example table including the components and costs of the BVD candidates. BVD candidates 1818 and 1820 may be assumed to be the only BVD candidates. More BVD candidates may be used. The rows of the table may be sorted by the costs of the BVD candidates 1818 and 1820, with the BVD candidates with the smallest costs at the top. BVD candidate 1818 may have the smallest cost among the BVD candidates 1818 and 1820. For example, because BVD candidate 1818 has the smallest cost among BVD candidates 1818 and 1820, the encoder may select BVD candidate 1818 as the BVD predictor 1836 for BVD 1810.

[0132] The encoder may entropy encode an indication (e.g., indication 1838) of whether the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836. The encoder may entropy encode the indication 1838 of whether the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836, for example, based on selecting the BVD candidate 1818 as the BVD predictor 1836. The magnitude symbol 1816 of the BVD predictor (e.g., BVD predictor 1836) may have a value of “0,” which matches the value of the magnitude symbol 1816 of the BVD 1810. The indication 1838 may indicate that the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836. The indication (e.g., indication 1838) may be a single bit having a value of “0” if the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836. The indication (e.g., indication 1838) may be a single bit having a value of “1” if the value of the magnitude symbol 1816 of the BVD 1810 does not match the value of the magnitude symbol 1816 of the BVD predictor 1836. Logic (e.g., logic 1840) may be used to determine the indication 1838. The logic 1840 may implement a logical exclusive OR (XOR) function. The indication 1838 may indicate that a first candidate among multiple candidates (e.g., sorted based on their respective costs) is likely to have a magnitude symbol 1816 value that matches the magnitude symbol 1816 value of the BVD 1810, for example, if the magnitude symbol 1816 is non-binary.

[0133] In FIG. 18C , the encoder may entropy code the representation 1838 using an arithmetic encoder (e.g., arithmetic encoder 1842). The representation 1838 may have a non-uniform probability distribution, for example, based on the methods for determining the representation (e.g., representation 1838) described herein. Thus, the arithmetic encoder 1842 may process the representation 1838 in a normal arithmetic encoding mode, as described herein. The arithmetic encoder 1842 may subdivide the current coding interval into m relatively prime subintervals. Each of the m relatively prime subintervals may have a width proportional to the probability that the symbol to be encoded has a different one of the values ​​of the m-ary source alphabet. For a representation 1838 that is binary, the value of m may be equal to 2, and the current coding interval may be subdivided into two relatively prime intervals with widths proportional to the probability of a different one of the two possible values ​​{0, 1} of the representation 1838 to be encoded. The probabilities of the two possible values ​​for the representation 1838 may be represented by a probability model 1844 for the representation 1838. The arithmetic encoder 1842 may encode the representation 1838 by selecting the subinterval that corresponds to the actual value of the representation 1838 as the new coding interval for the next binary symbol to be encoded.

[0134] An arithmetic encoder (e.g., arithmetic encoder 1842) may receive a probability model (e.g., probability model 1844) from a context modeler (e.g., context modeler 1846). The context modeler 1846 may determine the probability model 1844 for a representation (e.g., representation 1838) by fixed or adaptive selection from among two or more probability models. The context modeler 1846 may, for example, select the BVD of BVD 1810. x Position of magnitude symbol 1816 in 1812, or BVD in BVD1810 x Based on the index of the position (e.g., the value indicating it) of the magnitude symbol 1816 in 1812, the probability model 1844 can be determined by fixed or adaptive selection from among two or more probability models. xThe position (e.g., position index) of the magnitude symbol 1816 in 1812 can provide an indication of the distance 1853 (as described herein with respect to FIG. 18B ) between two candidate BVDs. The likelihood that the value of the magnitude symbol 1816 of the BVD predictor 1836 matches the value of the magnitude symbol 1816 of the BVD 1810 can be related to the distance 1853. More specifically, the greater the value of the distance 1853 between the candidate BVDs, the greater the degree of difference between the respective templates of the candidate BVDs. The greater the difference between the respective templates of the BVD candidates, the more likely the cost of the BVD candidate accurately reflects a BVD candidate with a magnitude symbol 1816 value that matches the value of the magnitude symbol 1816 of the BVD 1810. The BVD of the BVD 1810 x The position (eg, position index) of the magnitude symbol 1816 in 1812 aids in selecting a probabilistic model 1844 for the display 1838 .

[0135] Context Modeler 1846 is the BVD of BVD1810 x The position and / or index of the position of the magnitude symbol 1816, also referred to herein as the significance of the magnitude symbol 1816 in 1812, may be compared to one or more thresholds for adaptive selection from among two or more probability models. x The position and / or position index of the magnitude symbol 1816 in 1812 may be compared to a first threshold. x The context modeler 1846 may select a first probabilistic model for the display 1838 based on the position and / or position index of the magnitude symbol 1816 in 1812 being below a threshold. x The context modeler 1846 may select a second probabilistic model for the display 1838 based on the position and / or position index of the magnitude symbol 1816 in 1812 being greater than a threshold. xBased on the position and / or position index of the magnitude symbol 1816 in 1812 being greater than a threshold, the BVD of BVD 1810 x The context modeler 1846 may compare the position and / 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 display 1838 based on the position and / or position index of the magnitude symbol 1816 in 1812 being less than a second threshold. x A third probability model may be selected for display 1838 based on the position and / or index of the position of magnitude symbol 1816 in 1812 being greater than a second threshold.

[0136] The context modeler 1846 may determine the probabilistic model 1844 by fixed and / or adaptive selection from among two or more probabilistic models, for example, based on a change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of BVD 1810, also referred to herein as the significance of the magnitude symbol 1816. The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of BVD 1810 may be determined by a fixed and / or adaptive selection from among two or more probabilistic models. (n-1) where n is the BVD of BVD1810 x The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of BVD 1810 is, for example, 2 if n=4. (4-1)or 8. The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of BVD 1810 may provide an indication of the distance 1854 (e.g., as described herein with respect to FIG. 18B ) between two candidate BVDs. As described herein, the probability that the value of the magnitude symbol 1816 of BVD predictor 1836 matches the value of the magnitude symbol 1816 of BVD 1810 may be associated with the distance 1854. More specifically, the greater the value of the distance 1854 between candidate BVDs, the greater the degree of difference between the respective templates of the candidate BVDs. The greater the difference between the respective templates of the BVD candidates, the more likely the cost of the BVD candidate will accurately reflect a BVD candidate with a magnitude symbol 1816 value that matches the magnitude symbol 1816 value of BVD 1810. Thus, changes in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 for incremental changes in the value of the magnitude symbol 1816 of BVD 1810 may be useful in selecting a probability model 1844 for display 1838.

[0137] The context modeler 1846 can compare the value of BVD 1810 and / or BVDx 1812 of BVD 1810 with one or more thresholds for an incremental change in the value of the magnitude symbol 1816 of BVD 1810 to adaptively select from two or more probability models. The context modeler 1846 can compare the value of BVD 1810 and / or BVDx 1812 of BVD 1810 with a first threshold for an incremental change in the value of the magnitude symbol 1816 of BVD 1810. The context modeler 1846 can select a first probability model for display 1838, for example, based on the value of BVD 1810 and / or BVDx 1812 of BVD 1810 when the incremental change in the value of the magnitude symbol 1816 of BVD 1810 is less than the threshold. The context modeler 1846 may select a second probability model for the display 1838 based on, for example, the value of BVD 1810 and / or BVDx 1812 of BVD 1810 for an incremental change in the value of the magnitude symbol 1816 of BVD 1810 being greater than a threshold. The context modeler 1846 may compare the value of BVD 1810 and / or BVDx 1812 of BVD 1810 for an incremental change in the value of the magnitude symbol 1816 of BVD 1810 to a second threshold, for example, based on the value of BVD 1810 and / or BVDx 1812 of BVD 1810 being greater than a threshold for an incremental change in the value of the magnitude symbol 1816 of BVD 1810. The context modeler 1846 may select a second probability model for the indication 1838 based on, for example, the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810 for incremental changes in the value of the magnitude symbol 1816 of BVD 1810 greater than a second threshold. The context modeler 1846 may select a third probability model for the indication 1838 based on, for example, the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810 for incremental changes in the value of the magnitude symbol 1816 of BVD 1810 greater than a second threshold.

[0138] As shown in FIG. 18C, a probability model (e.g., probability model 1844) may be configured with two parameters: the probability P of the least likely symbol (LPS) of representation 1838LPS and the value V of the maximum likely symbol (MPS) of 1838 MPS The probability model 1844 may include the probability P of the LPS of the display 1838. LPS In addition to, or instead of, displaying the probability of 1838 MPS, P MPS Similarly, a probabilistic model (e.g., probabilistic model 1844) may be used to determine the value V of the MPS of display 1838. MPS In addition to or instead of displaying 1838 LPS values, V LPS 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 to the context modeler 1846, for example, based on the encoded representation 1838 of the computational encoder 1842. 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 an actual coded value of the representation 1838 ... MPS If not equal to, display 1838 P LPS By increasing the P LPS A probabilistic model (e.g., probabilistic model 1844) may be updated by decreasing

[0139] An arithmetic encoder (e.g., arithmetic encoder 1842) can determine a value within the range of the final coding interval as an arithmetic codeword of a binary symbol (e.g., arithmetic codeword 1852). The arithmetic encoder 1842 can determine a value within the range of the final coding interval as an arithmetic codeword of a binary symbol 1852, for example, based on processing of several binary symbols (e.g., corresponding to one or more syntax elements). The arithmetic encoder 1842 can output the arithmetic codeword 1852. The arithmetic encoder 1842 can output the arithmetic codeword 1852 to a bitstream that can be received and processed by a video decoder.

[0140] 18D shows an example of a decoder that determines the magnitude signal of the BVD. Figure 18D shows an example of a decoder (e.g., decoder 300 described with reference to Figure 3) that can receive an opcode word (e.g., opcode word 1852), an opcode decoded indication (e.g., opcode decoded indication 1838) from opcode word 1852, and a usage indication 1838 to determine a magnitude symbol (e.g., magnitude symbol 1816) of the BVD 1810.

[0141] The decoder may receive an opcode word (e.g., opcode word 1852) in the bitstream. The decoder may provide the opcode word (e.g., opcode word 1852) to an opcode decoder 1854. Based on the method for determining the indication 1838 as described herein, the indication 1838 may have a non-uniform probability distribution. The opcode decoder 1854 may process the indication 1838 in a normal opcode decoding mode. The opcode decoder (e.g., opcode decoder 1854) may perform recursive interval subdivision as described herein to decode the symbols encoded by the opcode word 1852. The opcode decoder (e.g., opcode decoder 1854) may arithmetically decode symbols that can take on values ​​from an m-ary source alphabet by dividing the initial coding interval into m relatively prime subintervals. Each of the m relatively prime subintervals may have a width proportional to the probability of a symbol having a different one of the values ​​in the m-ary source alphabet, where the value m may be equal to 2, and the initial coding interval may be subdivided into two relatively prime intervals, each having a width proportional to the probability of a symbol having a different one of the two possible values ​​{0, 1} for a binary symbol such as representation 1838. 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 computationally decoded from an operation codeword 1852 by determining the symbol value corresponding to the subinterval in which the operation codeword falls. A decoder may, for example, use this interval subdivision scheme recursively N times to decode a sequence s={s1, s2, ..., s N ) each symbol s i can be decoded sequentially.

[0142] A computation decoder (e.g., computation decoder 1854) may receive a probability model (e.g., probability model 1844) for representation 1838 from context modeler 1846. The computation decoder (e.g., computation decoder 1854) may receive the probability model (e.g., probability model 1844) of representation 1838 from context modeler 1846, for example, when decoding symbols corresponding to representation 1838. The context modeler (e.g., context modeler 1856) may determine the probability model 1844 for representation 1838 by fixed or adaptive selection from among two or more probability models, as described herein with respect to context modeler 1846, as shown in FIG. 18C .

[0143] As shown in FIG. 18D , a computation decoder (e.g., computation decoder 1854) can provide one or more probability model update parameters 1850 to a context modeler (e.g., context modeler 1856). The computation decoder 1854 can provide the one or more probability model update parameters 1850 to the context modeler 1856, for example, based on (e.g., after) the computation decoder 1854 decoding the representation 1838. The context modeler 1856 can adapt the probability model 1844. The context modeler 1856 can adapt the probability model 1844 based on, for example, the one or more probability model update parameters 1850. The one or more probability model update parameters 1850 can include actual decoded values ​​of the representation 1838. The context modeler 1856 can determine whether the actual decoded values ​​of the representation 1838 are V MPS If not equal to, display 1838 P LPS By increasing the P LPS The probability model 1844 can be updated by decreasing

[0144] 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 1816 of the BVD predictor 1836 and the value of the indication 1838. 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 1816 of the BVD predictor 1836 and the value of the indication 1838, 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 1816 of the BVD predictor 1836. The decoder may determine that the value of the magnitude symbol 1816 of the BVD 1810 is not equal to or equal to the opposite value of the magnitude symbol 1816 of the BVD predictor 1836, for example, based on the indication 1838 indicating that the value of the magnitude symbol 1816 of the BVD 1810 does not match the value of the magnitude symbol 1816 of the BVD predictor 1836. The magnitude symbol 1816 of the BVD predictor 1836 may have a value of “0” that matches the value of the magnitude symbol 1816 of the BVD 1810. The indication 1838 may indicate that the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836. The indication 1838 may be, for example, a single bit that can have a value “0” if the value of the magnitude symbol 1816 of the BVD 1810 matches the value of the magnitude symbol 1816 of the BVD predictor 1836. Indication 1838 may be, for example, a single bit that can have a value of “1” if the value of magnitude symbol 1816 of BVD 1810 does not match the value of magnitude symbol 1816 of BVD predictor 1836. Logic 1858 may be used to determine the magnitude symbol 1816 of BVD 1810. Logic 1858 may implement a logical XOR function. Indication 1838 may, for example, display the first candidate among multiple candidates (e.g., sorted based on their respective costs) having a magnitude symbol 1816 value that can match the magnitude symbol 1816 value of BVD 1810 if the magnitude symbol 1816 is non-binary.

[0145] The decoder may determine the value of the magnitude symbol 1816 of the BVD predictor 1836 described herein. More specifically, the decoder may select a BVD predictor (e.g., the BVD predictor 1836) from among multiple BVD candidates based on the cost of the multiple BVD candidates. The BVD candidates may include a BVD candidate for each possible value of the magnitude symbol of BVD 1810. The magnitude symbol of BVD 1810 represented in binary form may have only two possible values. Thus, the BVD candidates may include at least two BVD candidates of this representation (one for each possible value of the magnitude symbol of BVD 1810 being encoded). That is, a first BVD candidate is equal to BVD 1810 itself, and a second BVD candidate is equal to BVD 1810 but has the opposite, or other, value of the magnitude symbol of BVD 1810. The cost of each BVD candidate in the multiple BVD candidates may be calculated as described herein with respect to the encoder. The cost of each BVD candidate in the plurality of BVD candidates may be calculated as described herein for the encoder, for example, based on the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block may be displaced relative to the current block by the sum of the BVD candidate and the BVP 1808. The decoder may select the BVD candidate with the lost cost as the BVD predictor 1836.

[0146] As described herein with respect to Figures 18A-D, an exemplary approach of entropy coding an indication of whether the value of a BVD magnitude symbol matches or does not match the value of a BVD candidate magnitude symbol used as a predictor of BVD can be used with multiple magnitude symbols of BVD. This exemplary approach can be used with BVDs other than magnitude symbol 1816. x 18A-D. x For each of the 1816 additional magnitude symbols, an additional candidate BVP can be determined. Using this approach, for example, xFor N magnitude symbols of 1816 (where N is an integer value), 2^N different BVP candidates may be determined, and the BVD x One for each possible combination of values ​​for the N magnitude symbols in 1816. In addition, the cost value of each BVP candidate is determined and sorted to generate the BVD x A BVP predictor for encoding each of the 1816 N magnitude symbols may be determined.

[0147] As described herein with respect to FIGS. 18A-D, an exemplary approach for entropy coding an indication of whether the value of the magnitude symbol of the BVD matches or does not match the value of the magnitude symbol of the BVD candidate used as a predictor of BVD is x In addition to or instead of one or more of the 1816 magnitude symbols, BVD y It may be used with one or more of the magnitude symbols of 1814.

[0148] 18A-D may be used with respect 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 in Figures 18A-D may be replaced with the terms MV, MVP, MVD, and MVD candidate, based on this disclosure.

[0149] 18A-D can be used in IBC and inter prediction, for example, based on a translational motion model for the prediction block. With respect to FIG. 18A-D, embodiments as described herein can be used in IBC and inter prediction, for example, based on an affine motion model for the prediction block.

[0150] The approach described herein with respect to Figures 18A-D for entropy coding 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 of the BVD can be used with respect to multiple magnitude symbols of the BVD. The approach described herein can be used with respect to BVDs other than magnitude symbol 1816, for example. x One or more magnitude symbols of 1812 and / or BVD y 1814. Additional candidate BVPs may be used for one or more magnitude symbols of 1814. x 1812 and / or BVD y For each additional magnitude symbol of 1814, N Different BVP candidates may be determined, e.g., BVD x 1812 and / or BVD y For N magnitude symbols of 1814 (where N is an integer value), by using the approach described herein with respect to FIGS. 18A-D, x 1812 and / or BVD y One can be determined for each possible combination of values ​​for the N magnitude symbols in 1814. x 1812 and / or BVD y To determine a BVD predictor for encoding each of the 1814 N magnitude symbols, a cost value may be determined for each of the BVP candidates.

[0151] Ingredients of BVD1810BVD y 1814 and BVD x 1816, as well as other binarizations of the components of the BVD candidate may be possible other than being represented using fixed-length binaries. For example, the component BVD of BVD 1810 y 1814 and BVD xBVD 1816 can be represented by one of a wide variety of codes, which may include two parts: a prefix and a suffix. Such codes include Rice codes and Golomb codes (e.g., Golomb-Rice codes or Exponential-Golomb codes). For example, considering Figures 18A-D, the horizontal component of BVD 1810, BVD x The magnitude of 1812 can be binarized using a Golomb-Rice code. Golomb-Rice codes have the structure described herein, with a prefix indicating a range of values ​​and a suffix indicating the exact value within the range of values. A Golomb-Rice code of degree k, C grk (v) contains the unary coded prefix and k suffix bits, where k suffix bits are integers 0≦i<2 k Table 1 below shows an example of a Golomb-Rice code for k=4. In the table and the following discussion, x0, x1, ..., x n teeth,

number

number

number

number

[0152] In the Golomb-Rice code described above, a fixed-length suffix may be used. The length of the suffix may also be determined by the length of the prefix. Exponential-Golomb codes (e.g., Exp-Golomb) can use this approach, and furthermore, the horizontal component of BVD1810, BVD x It can be used to binarize the magnitude of 1812. k-th Exponential Golomb Code C egk (v) may include unary prefix codes and / or variable length suffixes. s The number of bits in the value n is p is determined by.

number

number

number

[0153] Table 2 below shows an example of an Exponential-Golomb code with k=1. [Table 2]

[0154] Considering Figures 18A-D, the horizontal component of BVD1810, BVD x The magnitude of 1812 can have a decimal value of 19, which can be represented by Golomb-Rice and / or Exponential-Golomb codes. For example, BVD xThe magnitude of 1812 can be represented by an exponential-Golomb code of degree k=4 with the prefix "0001" and the suffix "0101". The prefix "0001" is a BVD x The suffix "0101" may indicate that the magnitude of 1812 is in the range of values ​​14 to 29. x 18A-D, the vertical component BVD of BVD 1810 can be seen to have a value of 19, which is within the range of values ​​from 14 to 29. y The magnitude of 1814 can have a decimal value of 11, which can be represented by a Golomb-Rice code or an Exponential-Golomb code. For example, BVD y The magnitude of 1814 can be represented by an exponential-Golomb code of degree k=4 with the prefix "001" and the suffix "101". The prefix "001" is the BVD y The suffix "101" may indicate that the magnitude of 1814 is in the range of values ​​6 to 13. y It can be shown that the magnitude of 1814 can have 11 precise values ​​within the range of 6 to 13.

[0155] Figure 19 illustrates a method for a context modeler to determine a probabilistic model for a display. More specifically, Figure 19 illustrates a method for a context modeler 1846 to determine a probabilistic model 1844 for a display 1838. The steps of Figure 19 are described herein as being performed by the context modeler 1846. One or more steps (e.g., all of the steps) of Figure 19 may be performed by an encoder.

[0156] As described herein with respect to FIG. 19 , in step 1902, the context modeler 1846 determines whether the magnitude symbol 1816 of the BVD 1810 is in the horizontal component of the BVD 1810 (i.e., the BVD x 1812) or in the vertical component of BVD1810 (i.e., BVD y 1814).

[0157] The context modeler 1846 may, for example, determine if the magnitude symbol 1816 of the BVD 1810 is the horizontal component of the BVD 1810 (i.e., the BVD x 1812, proceed to step 1904. In step 1904, the context modeler 1846 may determine whether the significance of the magnitude symbol 1816 of the BVD 1810 is less than a threshold T. For example, the significance of the magnitude symbol 1816 may refer to a change in the value of the position (and / or position index) of the magnitude symbol 1816 and / or the BVD 1810 (and / or the BVDx 1812 of the BVD 1810) relative to an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. The change in the value of the BVD 1810 and / or the BVDx 1812 of the BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of the BVD 1810 may be 2 (n-1) where n is the BVD of BVD1810 x The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of BVD 1810 is, for example, 2 if n=4. (4-1) or 8. The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 for an incremental change in the value of the magnitude symbol 1816 of BVD 1810 may be multiplied by a scaling factor, for example, before being compared to a threshold T. The significance of the magnitude symbol 1816 may be determined, for example, by S=F*2 for a scaling factor F. (n-1) The value of the scaling factor F may be defined using an integer motion vector (IMV) flag, for example, if the magnitude symbol 1816 is part of the suffix of a Golomb-Rice code. The scaling factor F may be set equal to 4, for example, if the IMV flag is equal to 1, or the scaling factor F may be set equal to 0 otherwise. The threshold T may be set equal to a value of 4.

[0158] The context modeler 1846 may proceed to step 1906, for example, if the context modeler 1846 determines in step 1904 that the significance of the magnitude symbol 1816 is less than the threshold T. In step 1906, the context modeler 1846 may select a first probability model as the probability model 1844 from among the multiple probability models.

[0159] Alternatively, the context modeler 1846 may proceed to step 1908, for example, if in step 1904 the context modeler 1846 determines that the significance of the magnitude symbol 1816 is greater than or equal to the threshold T. As described herein, the approach described above with respect to Figures 18A-D for entropy coding 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 may be used with respect to multiple magnitude symbols of the BVD. Entropy coding may be used to entropy code, for example, BVDs other than the magnitude symbol 1816. x With respect to one or more magnitude symbols of 1812 and / or BVD yThe context modeler 1846 may use an indication of whether a value of another magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD to select a probabilistic model 1844 from among the plurality of probabilistic models. The indication may correspond to an indication that was entropy coded before the indication determined for the magnitude symbol 1816. The context modeler 1846 may select a second probabilistic model as the probabilistic model 1844 from among the plurality of probabilistic models in step 1910. The context modeler 1846 may select the second probabilistic model as the probabilistic model 1844 based on, for example, a previous indication that a magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. The context modeler 1846 may select the third probability model as the probability model 1844 from among the plurality of probability models at step 1912. The context modeler 1846 may select the third probability model as the probability model 1844 based on, for example, a previous indication that the magnitude symbol of the BVD 1810 (e.g., the magnitude symbol may be different from the magnitude symbol 1816) does not match the value of the same magnitude symbol of the BVD candidate used as a predictor of the BVD. With reference to Figures 18A-D, the indication that may be determined for the BVD 1810 based on the approaches described herein may be entropy coded in order from the most significant bit position to the least significant bit position. With reference to Figures 18A-D, the indication that may be determined for the BVD 1810 based on the approaches discussed herein may be entropy coded in order from the least significant bit position to the most significant bit position.

[0160] The context modeler 1846 may, for example, determine whether the magnitude symbol 1816 of the BVD 1810 is a y1814), proceed to step 1914. In step 1914, the context modeler 1846 may determine whether the significance of the magnitude symbol 1816 of the BVD 1810 is less than a threshold T. The significance of the magnitude symbol 1816 may refer, for example, to the position and / or position index of the magnitude symbol 1816, or the change in the value of the BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. The change in the value of the BVD 1810 and / or BVDx 1812 of the BVD 1810 relative to an incremental change in the value of the magnitude symbol 1816 of the BVD 1810 may be multiplied by a scaling factor, for example, before being compared to the threshold T. The significance of the magnitude symbol 1816 may be calculated, for example, for a scaling factor F, as S=F*2 (n-1) The value of the scaling factor F may be defined using an integer motion vector ("IMV") flag, for example, if the magnitude symbol 1816 is part of the suffix of a Golomb-Rice code. The scaling factor F may be set equal to 4 if the flag is equal to 1 and set to 0 otherwise. The threshold T may be set equal to a value of 4.

[0161] Context modeler 1846 may proceed to step 1916, for example, if in step 1914, context modeler 1846 determines that the significance of magnitude symbol 1816 is less than threshold T. In step 1916, context modeler 1846 may select a fourth probability model as probability model 1844 from among the multiple probability models.

[0162] Alternatively, the context modeler 1846 may proceed to step 1918, for example, if in step 1914 the context modeler 1846 determines that the significance of the magnitude symbol 1816 is greater than or equal to threshold T. As described herein, the approaches discussed above with respect to Figures 18A-D may be used with respect to multiple magnitude symbols of the BVD to entropy code 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. Entropy coding may be used to entropy code, for example, BVDs other than magnitude symbol 1816. x With respect to one or more magnitude symbols of 1812 and / or BVD yThe context modeler 1846 may further use an indication of whether a value of another magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD to select the probabilistic model 1844 from among the plurality of probabilistic models. The indication may correspond to an indication that was entropy coded before the indication determined for the magnitude symbol 1816. The context modeler 1846 may select the fifth probabilistic model as the probabilistic model 1844 from among the plurality of probabilistic models in step 1920. The context modeler 1846 may select the fifth probabilistic model as the probabilistic model 1844 based on, for example, a previous indication that a magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. Context modeler 1846 may select the sixth probability model as probability model 1844 from among the plurality of probability models in step 1922. Context modeler 1846 may select the sixth probability model as probability model 1844 based on, for example, a previous indication that the magnitude symbol of BVD 1810 (e.g., a magnitude symbol that may differ from magnitude symbol 1816) does not match the value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. With reference to Figures 18A-D, the indication determined for BVD 1810 based on the approaches discussed herein may be entropy coded in order from the most significant bit position to the least significant bit position. With reference to Figures 18A-D, the indication determined for BVD 1810 based on the approaches discussed herein may be entropy coded in order from the least significant bit position to the most significant bit position.

[0163] 19 without regard to whether the magnitude symbol 1816 is in a horizontal or vertical component of the BVD 1810 (e.g., by omitting step 1902). The context modeler 1846 may additionally or alternatively select the probabilistic model 1844 described herein with respect to FIG. 19 without regard to the significance of the magnitude symbol 1816 being less than threshold T (e.g., by omitting steps 1904, 1906, 1914, and / or 1916).

[0164] The context modeler 1856 and / or decoder may determine the probability model 1844 for the display 1838 by fixed selection and / or by adaptive selection from among two or more probability models in the same manner as described herein with respect to FIG. 19 for the context modeler 1846.

[0165] Figure 20 illustrates an exemplary method for a context modeler to determine a probabilistic model for a display 1838. More specifically, Figure 20 illustrates an exemplary method for a context modeler 1846 to determine a probabilistic model 1844 for a display 1838. One or more steps of Figure 20 are described herein as being performed by a context modeler (e.g., context modeler 1846). However, one or more steps (e.g., all of the steps) of Figure 20 may be performed by an encoder.

[0166] 20 , the context modeler 1846 may determine in step 2002 whether the significance of the magnitude symbol 1816 of the BVD 1810 is less than a threshold T. The significance of the magnitude symbol 1816 may refer, for example, to the position and / or index of the position of the magnitude symbol 1816 of the BVD 1810, or the change in the value of the BVD 1810 and / or BVDx 1812 for an incremental change in the value of the magnitude symbol 1816 of the BVD 1810. The change in the value of the BVD 1810 and / or BVDx 1812 for the BVD 1810 for an incremental change in the value of the magnitude symbol 1816 of the BVD 1810 may be 2 (n-1) where n is the BVD of BVD1810. x The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 in response to an incremental change in the value of the magnitude symbol 1816 of BVD 1810 is, for example, 2 (4-1) or 8. The change in the value of BVD 1810 and / or BVDx 1812 of BVD 1810 for an incremental change in the value of the magnitude symbol 1816 of BVD 1810 may be multiplied by a scaling factor, for example, before being compared to a threshold T. The significance of the magnitude symbol 1816 may be determined, for example, by S=F*2 for a scaling factor F. (n-1) The value of the scaling factor F may be defined using an IMV flag, for example, if the magnitude symbol 1816 is part of the suffix of a Golomb-Rice code. The scaling factor F may be set equal to 4, for example, if the IMV flag is equal to 1 and set to 0 otherwise. The threshold T may be set equal to a value of 4.

[0167] The context modeler 1846 may proceed to step 2004, for example, if the context modeler 1846 determines in step 2002 that the significance of the magnitude symbol 1816 is less than the threshold T. As described herein with respect to Figures 18A-D, entropy coding may be used with respect to multiple magnitude symbols of a BVD as 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. Entropy coding may be used, for example, to determine whether the value of the magnitude symbol of a BVD candidate matches the value of the magnitude symbol of a BVD candidate other than the magnitude symbol 1816. x With respect to one or more magnitude symbols of 1812 and / or BVD yThe context modeler 1846 may use an indication of whether a value of another magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD to select the probabilistic model 1844 from among the plurality of probabilistic models. The indication may correspond to an indication that was entropy coded before the indication determined for the magnitude symbol 1816. The context modeler 1846 may select the first probabilistic model as the probabilistic model 1844 from among the plurality of probabilistic models in step 2006 based, for example, on a previous indication that a magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. Context modeler 1846 may select a second probability model from among the plurality of probability models as probability model 1844 in step 2008 based on, for example, a previous indication that a magnitude symbol of BVD 1810 (e.g., a magnitude symbol different from magnitude symbol 1816) does not match the value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. With reference to Figures 18A-D, the indication determined for BVD 1810 based on the approaches discussed herein may be entropy coded from the most significant bit position to the least significant bit position. With reference to Figures 18A-D, the indication determined for BVD 1810 based on the approaches discussed herein may be entropy coded from the least significant bit position to the most significant bit position.

[0168] Alternatively, the context modeler (e.g., context modeler 1846) may proceed to step 2010, for example, if the context modeler determines in step 2002 that the significance of magnitude symbol 1816 is greater than or equal to threshold T. In step 2010, the context modeler 1846 (e.g., context modeler 1846) may determine whether magnitude symbol 1816 of BVD 1810 is within a horizontal component of BVD 1810 (e.g., BVD x 1812) or whether it is within the vertical component of BVD1810 (e.g., BVD y 1814) can be determined.

[0169] The context modeler 1846 may, for example, determine if the magnitude symbol 1816 of the BVD 1810 is the horizontal component of the BVD 1810 (e.g., BVD x 18A-D may be used with respect to multiple magnitude symbols of BVD to entropy code 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 BVD. The disclosure described herein with respect to FIGS. 18A-D may be used with respect to multiple magnitude symbols of BVD other than magnitude symbol 1816, for example, to entropy code 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 BVD. x 18A-D to entropy an indication of whether the value of a magnitude symbol of a BVD matches the value of a magnitude symbol of a BVD candidate that is used as a predictor of BVD. yThe context modeler 1846 may use an indication of whether a value of another magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD to select the probabilistic model 1844 from among the plurality of probabilistic models. The indication may correspond to an indication that was entropy coded before the indication determined for the magnitude symbol 1816. The context modeler 1846 may select the third probabilistic model as the probabilistic model 1844 from among the plurality of probabilistic models in step 2014 based on, for example, a previous indication that a magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. The context modeler 1846 may select a fourth probability model from among the plurality of probability models as the probability model 1844 in step 2016 based on, for example, a previous indication that the magnitude symbol of the BVD 1810 (e.g., the magnitude symbol may be different from the magnitude symbol 1816) does not match the value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. The indication determined for the BVD 1810 based on the disclosures and approaches discussed herein with respect to Figures 18A-D may be entropy coded in order from the most significant bit position to the least significant bit position. With respect to Figures 18A-D, the indication determined for the BVD 1810 based on the disclosures and approaches discussed herein may be entropy coded in order from the least significant bit position to the most significant bit position.

[0170] The context modeler 1846 may, for example, determine in step 2010 that the magnitude symbol 1816 of the BVD 1810 is in the vertical component of the BVD 1810 (e.g., BVD yIf it is determined that the BVD magnitude symbol matches the value of the magnitude symbol of the BVD candidate used as a predictor of the BVD, the method may proceed to step 2020. Entropy coding may be used for multiple magnitude symbols of the BVD to provide an indication of whether the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD candidate used as a predictor of the BVD. Entropy coding may be used for BVD magnitude symbols other than magnitude symbol 1816. x With respect to one or more magnitude symbols of 1812 and / or BVD y The context modeler 1846 may use an indication of whether a value of another magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD to select the fifth probabilistic model 1844 from among the plurality of probabilistic models in step 2022. The indication may correspond to an indication that may be entropy coded before the indication determined for the magnitude symbol 1816. The context modeler 1846 may select the fifth probabilistic model as the probabilistic model 1844 from among the plurality of probabilistic models in step 2022 based, for example, on a previous indication that a magnitude symbol of the BVD 1810 (e.g., a magnitude symbol that may be different from the magnitude symbol 1816) matches a value of the same magnitude symbol of a BVD candidate used as a predictor of the BVD. The context modeler 1846 may select the sixth probability model from among the plurality of probability models as the probability model 1844 in step 2024, for example, based on a previous indication that the magnitude symbol of the BVD 1810 (e.g., the magnitude symbol may be different from the magnitude symbol 1816) does not match the value of the same magnitude symbol of the BVD candidate used as a predictor of the BVD. With reference to Figures 18A-D, the representation determined for the BVD 1810 based on the disclosures and approaches discussed herein may be entropy coded from the most significant bit position to the least significant bit position. With reference to Figures 18A-D, the representation determined for the BVD 1810 based on the disclosures and approaches discussed herein may be entropy coded from the least significant bit position to the most significant bit position.

[0171] The context modeler 1846 may select the probabilistic model 1844 described herein with respect to FIG. 20 regardless of whether the magnitude symbol 1816 is a horizontal or vertical component of the BVD 1810 (e.g., by omitting steps 2010 and 2012, or by omitting steps 2010 and 2020). The context modeler 1846 may additionally or alternatively select the probabilistic model 1844 described herein with respect to FIG. 20 regardless of the significance of the magnitude symbol 1816 being less than threshold T (e.g., by omitting steps 2002 and 2004, or by omitting steps 2002 and 2010).

[0172] A context modeler (e.g., context modeler 1856), or decoder, may determine the probability model 1844 for display 1838 by fixed selection and / or by adaptive selection from among two or more probability models in the same manner as described herein with respect to context modeler 1846 discussed herein with respect to FIG. 20.

[0173] Multiple previously coded bins of a suffix may be used to determine the context of the coded suffix bin. One or more coded bins of a suffix may indicate the accuracy of the prediction of the actual bin (e.g., the bin of the suffix selected by the encoder of this syntax element). For example, if a previous bin is correctly predicted, there may be a higher chance that the current bin can be correctly predicted. A set of predicted bins coded in a coding order and having probabilistic dependencies between them may be modeled using a Markov chain. A Markov chain is also called a discrete-time Markov chain and may be described as follows: A sequence is said to follow a kth-order Markov model if: P(x n |x n-1 , ..., x nーk )=P(xn |x n-1 , ..., x n-k ,...).(twenty four) Knowledge of the past k symbols can be equivalent to knowledge of the entire past history of the process. Thus, given the probabilities of several previously coded bins, a Markov chain model can be used to predict the probability of the next coding bin.

[0174] 21A-21D show an example of deriving a context model using a first-order Markov model. With reference to FIG. 21A, a context model for a non-significant suffix bin may be derived according to the values ​​of previous, more significant bins, including the sign. As shown in FIG. 21B, some of the lowest suffix bins may be bypass coded, i.e., no context model may be selected for the lowest bin. FIG. 21C shows a different approach, where a context model for a more significant suffix bin, including the sign, may be derived by using the value of one previous, more significant bin. Similar to FIG. 21B, FIG. 21D shows that some bins may be bypass coded, e.g., such bins are not considered when selecting context models for other bins.

[0175] 22A and 22B show an example of deriving a context model using a second-order Markov chain. For example, when selecting a context model for a suffix bin by using a second-order Markov chain, two (2) previous codes or suffix bins can be used to derive a context model for a given bin. As shown in FIG. 22A, a context model for a less significant bin can be selected based on the values ​​of up to two (2) more significant bins. FIG. 22B shows a different case for deriving a context model for a more significant bin based on up to two (2) less significant bins.

[0176] FIG. 23 illustrates an example of switching between context derivation techniques. More specifically, FIG. 23 illustrates an example of a mechanism for switching between the two (2) context derivation techniques discussed herein. The two (2) context derivation techniques may be described herein with respect to FIGS. 21A-21D for a first-order Markov chain (first context derivation technique) and in FIGS. 22A and 22B for a second-order Markov chain (second context derivation technique). Data from neighboring CUs may be used as input information for determining switching. As shown in FIGS. 21C and 21D or 22B, a context derivation technique may be used when, for example, the number of correctly guessed hypotheses in the BVD suffix of the neighboring CU is large for less significant bins. Otherwise, the order of context derivation may be defined such that FIGS. 21A and 21B and FIG. 22A illustrate first-order and second-order Markov chains, respectively.

[0177] The coding order of the code and / or suffix bins may differ from the predicted order of the bins when performing hypothesis checking. Bin prediction may be performed in order from most significant to least significant, and the code bin may be considered to have higher significance than the most significant predicted suffix bin. In the encoder, the binary strings of predicted bins may be signaled in a different order (e.g., from less significant bins to more significant bins). Accordingly, in the decoder, the binary strings may be restored during the parsing process in the same order as they are coded in the encoder. Context selection for bin encoding and / or decoding may utilize previously coded bins. Thus, the coding order of predicted bin signaling determines whether the context comes from a bin of lower significance or a bin of higher significance.

[0178] The value of the previously coded bin of the suffix of the vector difference component may be set equal to, for example, the bin that, if the most significant bin of the suffix were coded, would encode the accuracy of the code prediction for this component. Figure 24 shows an example method for selecting the most significant bin (MSB) of the horizontal and vertical components of the vector difference. A BVSD (Block Vector Code Derivation) index may be a binary string containing a set of bins. The number of bins in the BVSD binary string may depend on the number of non-zero components in the indicated BVSD. These bins may be utilized as part of a previously coded bin sequence. Figure 24 shows an example of the most significant bin (MSB) of the suffix that may be context coded, and the context of the MSB that may be determined using the previously indicated code prediction bin that may be part of the BVSD index. Context derivation of the MSB of the suffix of the horizontal and vertical components may be performed in "Get context to encode MSB" stages 2405 and 2410. Here, the context may be selected based on the corresponding BVSD bin value and / or depending on the indicated component (e.g., horizontal or vertical component). The dashed lines in Figure 20 indicate the relationship between values ​​that may be signaled in BVSD index coding, with the conditions checked for the BVD suffix bins. Context derivation of the MSB of the horizontal component suffix may be performed in "Get context to encode MSB" 2405, for example, if the horizontal component is non-zero. Context derivation of the MSB of the horizontal component suffix may be performed in "Get context to encode MSB" 2410, for example, if the vertical component is non-zero. For MV coding, the same approach can be used to select the context of the MVD suffix bin based on the MVSD index.

[0179] The HOR and VER code predictors may be coded as part of an index, for example. The predictors may be BVSD (Block Vector Code Derivation) indices for block vector differences, while the predictors may be MVSD (Motion Vector Code Derivation) indices for motion vector differences.

[0180] FIG. 25 illustrates an example of a method for encoding an indication of whether a value of a magnitude symbol matches a predicted value of that magnitude symbol. More specifically, FIG. 25 illustrates a flowchart 2500 of an example method for encoding (e.g., computationally encoding) an indication of whether a value of a magnitude symbol matches a predicted value of that magnitude symbol based on a probability model. One or more steps of the example method illustrated in flowchart 2500 may be performed by an encoder (e.g., an encoder described herein with respect to FIG. 2). In step 2502, the encoder may determine a block vector difference (BVD), for example, based on a difference between a block vector (BV) and a block vector predictor (BVP). In step 2504, the encoder may select a probability model. The encoder may select a probability model based, for example, on a first indication of whether a value of a first magnitude symbol of the BVD matches a value of a first magnitude symbol of a first BVD predictor.

[0181] The encoder may select the probability model based on, for example, the significance of the second magnitude symbol. The significance of the second magnitude symbol may be determined based on, for example, the position of the second magnitude symbol in the BVD. The significance of the second magnitude symbol may be determined based on, for example, a change in the value of the BVD relative to an incremental change in the value of the second magnitude symbol of the BVD. The encoder may select the probability model based on, for example, the size of a block that may be predicted based on the BVD. The encoder may further select the probability model based on a directional component of the BVD that includes the first magnitude symbol and / or the second magnitude symbol. The directional component of the BVD may be one of a horizontal component and / or a vertical component. The encoder may select the probability model based on a third indication of whether the value of the third magnitude symbol of the BVD matches the value of the third magnitude symbol of the third BVD predictor.

[0182] In step 2506, the encoder may encode (e.g., arithmetically encode) a second indication of whether the value of the second magnitude symbol of the BVD matches the value of the second magnitude symbol of the second BVD predictor based on the probability model. The first indication may be encoded (e.g., arithmetically encoded), for example, before the second indication.

[0183] FIG. 26 illustrates an example method for determining a value of a magnitude symbol. More specifically, FIG. 26 illustrates a flowchart 2600 of an example method for determining a value of a magnitude symbol based on a value of a magnitude predictor and a computationally decoded indication. One or more steps of the method illustrated in flowchart 2600 may be performed by a decoder (e.g., a decoder described herein with respect to FIG. 3). In step 2602, the decoder may select a probability model. The decoder may select the probability model based on, for example, a first indication of whether the value of a first magnitude symbol of a block vector difference (BVD) matches the value of the first magnitude symbol of a first BVD predictor.

[0184] The decoder may select a probability model based on the significance of the second magnitude symbol. The significance of the second magnitude symbol may be determined, for example, based on the position of the second magnitude symbol in the BVD. The significance of the second magnitude symbol may be determined, for example, based on a change in the value of the BVD relative to an incremental change in the value of the second magnitude symbol in the BVD.

[0185] The decoder may select a probability model based on, for example, a size of a block that can be predicted based on the BVD. The decoder may select a probability model based on, for example, a directional component of the BVD that includes a first magnitude symbol and a second magnitude symbol. The directional component of the BVD may be one of a horizontal component and / or a vertical component. The decoder may select a probability model based on, for example, a third indication of whether the value of a third magnitude symbol of the BVD matches the value of a third magnitude symbol of a third BVD predictor.

[0186] In step 2604, the decoder may decode (e.g., computationally decode) a second indication of whether the value of the second magnitude symbol of the BVD matches the value of the second magnitude symbol of the second BVD predictor based on the probability model. In step 2606, the decoder may determine the value of the second magnitude symbol of the BVD based on, for example, the value of the second magnitude symbol of the BVD predictor and the indication. The first indication may be decoded (e.g., computationally decoded), for example, before the second indication.

[0187] 25-26 may be used with respect 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 may be replaced with the terms MV, MVP, MVD, and MVD.

[0188] 27 illustrates an exemplary computer system capable of implementing embodiments of the present disclosure. For example, as shown in FIG. 27, exemplary computer system 2700 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 2700. Furthermore, each of the steps of the flowcharts illustrated in the present disclosure may be implemented on one or more computer systems 2700.

[0189] Computer system 2700 may include one or more processors, such as processor 2704. Processor 2704 may be a special purpose processor, a general purpose processor, a microprocessor, and / or a digital signal processor. Processor 2704 may be connected to a communications infrastructure 2702 (e.g., a bus or network). Computer system 2700 may also include main memory 2706 (e.g., random access memory (RAM)) and / or secondary memory 2708.

[0190] The secondary memory 2708 may include a hard disk drive 2710 and / or a removable storage drive 2712 (e.g., a magnetic tape drive, an optical disk drive, and / or the like). The removable storage drive 2712 may read from and / or write to a removable storage unit 2716. The removable storage unit 2716 may include a magnetic tape, an optical disk, and / or the like. The removable storage unit 2716 may be read by and / or written to the removable storage drive 2712. The removable storage unit 2716 may include a computer-usable storage medium having computer software and / or data stored therein.

[0191] The secondary memory 2708 may include other similar means for allowing computer programs or other instructions to be loaded into the computer system 2700. Such means may include a removable storage unit 2718 and / or an interface 2714. Examples of such means may include a program cartridge and / or cartridge interface (such as a video game device), a removable memory chip (such as an erasable programmable read-only memory (EPROM) or a programmable read-only memory (PROM)), and associated sockets, thumb drives, and USB ports, and / or other removable storage units 2718 and interfaces 2714 that may allow software and / or data to be transferred from the removable storage unit 2718 to the computer system 2700.

[0192] Computer system 2700 may also include a communications interface 2720. Communications interface 2720 may allow software and data to be transferred between computer system 2700 and external devices. Examples of communications interface 2720 may include a modem, a network interface (e.g., an Ethernet card), a communications port, etc. The software and / or data transferred via communications interface 2720 may be in the form of signals, which may be electronic, electromagnetic, optical, and / or other signals that can be received by communications interface 2720. The signals may be provided to communications interface 2720 via communications path 2722. Communications path 2722 may transmit 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.

[0193] Computer program medium and / or computer-readable medium may be used to refer to tangible storage media, such as removable storage units 2716 and 2718, or a hard disk installed in hard disk drive 2710. A computer program product may be a means for providing software to computer system 2700. Computer programs (which may also be called computer control logic) may be stored in main memory 2706 and / or secondary memory 2708. Computer programs may be received via communications interface 2720. Such computer programs, when executed, may enable computer system 2700 to implement the present disclosure as discussed herein. In particular, computer programs, when executed, may enable processor 2704 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 2700.

[0194] 28 shows exemplary elements of a computing device that may be used to implement any of the various apparatuses 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 2830 may include one or more processors 2831 that may execute instructions stored on random access memory (RAM) 2833, removable media 2834 (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 2835. The computing device 2830 may also include a security processor (not shown) that may execute instructions of one or more computer programs to monitor processes running on the processor 2831 and any processes requesting access to any hardware and / or software components of the computing device 2830 (e.g., ROM 2832, RAM 2833, removable media 2834, hard drive 2835, device controller 2837, network interface 2839, GPS 2841, Bluetooth interface 2842, WiFi interface 2843, etc.). The computing device 2830 may include one or more output devices such as a display 2836 (e.g., a screen, display device, monitor, television, etc.) and may include one or more output device controllers 2837, such as a video processor. There may also be one or more user input devices 2838, such as a remote control, keyboard, mouse, touchscreen, microphone, etc. The computing device 2830 may also include one or more network interfaces, such as a network interface 2839, which may be a wired interface, a wireless interface, or a combination of the two.The network interface 2839 may provide an interface for the computing device 2830 to communicate with a network 2840 (e.g., a RAN, or any other network). The network interface 2839 may include a modem (e.g., a cable modem), and the external network 2840 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 2830 may include a location detection device such as a global positioning system (GPS) microprocessor 2841, which may be configured to receive and process global positioning signals and, with possible assistance from external servers and antennas, determine the geographic location of the computing device 2830.

[0195] While the example of FIG. 28 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 2830. Furthermore, components may be implemented using basic computing devices and components, and the same components (e.g., processor 2831, ROM storage 2832, display 2836, 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. 28. 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).

[0196] 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 merely provided as highlighting of some of the features described herein, without implying the importance or relevance of any particular order of such features.

[0197] Article 1. A method comprising determining a block vector difference (BVD) based on a difference between a block vector (BV) and a block vector predictor (BVP).

[0198] Article 2. 10. The method of claim 1, further comprising selecting a probabilistic model based on a first indication of whether a value of a first symbol of the BVD matches a value of a first symbol of a first BVD predictor.

[0199] Article 3. The method of any one of clauses 1-2, further comprising encoding a second indication of whether the value of the second symbol of the BVD matches the value of the second symbol of the second BVD predictor based on the probabilistic model.

[0200] Article 4. 4. The method of any one of clauses 1 to 3, wherein the first representation is encoded before the second representation.

[0201] Article 5. 5. The method of any one of clauses 1 to 4, wherein selecting the probabilistic model is further based on the significance of either the second symbol of the second BVD predictor or the second symbol of the BVD.

[0202] Article 6. The method of any one of clauses 1 to 5, further comprising determining the significance of the second symbol of the BVD based on the position of the second symbol in the BVD.

[0203] Article 7. The method of any one of clauses 1 to 6, further comprising determining the significance of the second symbol of the BVD based on a change in the value of the BVD relative to an incremental change in the value of the second symbol of the BVD.

[0204] Article 8. 8. The method of any one of clauses 1-7, wherein selecting a probability model further comprises selecting a probability model based on a size of a block predicted using BVD.

[0205] Article 9. 9. The method of any one of clauses 1 to 8, wherein selecting the probability model further comprises selecting the probability model based on a directional component of the BVD, the directional component comprising a first symbol and a second symbol of the BVD.

[0206] Article 10. 10. The method of any one of clauses 1 to 9, wherein the directional component of the BVD is one of a horizontal component or a vertical component.

[0207] Article 11. 11. The method of any one of clauses 1-10, wherein selecting the probabilistic model further comprises selecting the probabilistic model based on a third indication of whether the value of the third symbol of the BVD matches the value of the third symbol of a third BVD predictor.

[0208] Article 12. 12. The method of any one of clauses 1 to 11, wherein the first representation is decoded before the second representation.

[0209] Article 13. 13. The method of any one of clauses 1 to 12, wherein selecting the probability model is further based on the significance of a second symbol of the BVD.

[0210] Article 14. 14. The method of any one of clauses 1 to 13, further comprising determining the significance of the second symbol based on the position of the second symbol of the BVD.

[0211] Article 15. A computing device comprising 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 method of any one of clauses 1 to 14.

[0212] Article 16. 15. A system comprising: a first computing device configured to perform the method of any one of clauses 1 to 14; and a second computing device configured to decode the display.

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

[0214] Article 18. A method comprising: selecting a probabilistic model based on a first indication of whether a value of a first symbol of a block vector difference (BVD) matches a value of a first symbol of a first BVD predictor.

[0215] Article 19. 19. The method of clause 18, further comprising decoding, based on the probability model, a second indication of whether a value of the second symbol of the BVD matches a value of the second symbol of the second BVD predictor.

[0216] Article 20. 20. The method of any one of clauses 18-19, further comprising determining a value of a second symbol of BVD based on the second indication and the value of a second symbol of the second BVD predictor.

[0217] Article 21. 21. The method of any one of clauses 18 to 20, wherein the significance of the second symbol is determined based on a change in the value of the BVD relative to an incremental change in the value of the second symbol of the BVD.

[0218] Article 22. A computing device comprising 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 method of any one of clauses 18 to 21.

[0219] Article 23. 22. A system comprising: a first computing device configured to perform the method of any one of clauses 18 to 21; and a second computing device configured to encode a representation.

[0220] Article 24. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 18-21.

[0221] Article 25. A method comprising: decoding a first indication of whether a value of a first symbol of a block vector difference (BVD) matches a value of a first symbol of a first BVD predictor.

[0222] Article 26. 26. The method of clause 25, further comprising determining a significance of the second symbol based on the position of the second symbol in the BVD.

[0223] Article 27. 27. The method of any one of clauses 25-26, further comprising selecting a probability model based on the significance of the first representation and the second symbol in the BVD.

[0224] Article 28. 28. The method of any one of clauses 25-27, further comprising decoding, based on the probability model, a second indication of whether the value of the second symbol of the BVD matches the value of the second symbol of a second BVD predictor based on the probability model.

[0225] Article 29. 29. The method of any one of clauses 25-28, further comprising determining a value of a second symbol of BVD based on the second indication and the value of the second symbol of the BVD predictor.

[0226] Article 30. 30. The method of any one of clauses 25 to 29, wherein selecting the probability is further based on one or more of the significance of the second symbol of the BVD, the size of the block predicted based on the BVD, a directional component of the BVD including the first and second symbols of the BVD, and a third indication of whether the value of the third symbol of the BVD matches the value of the third symbol of a third BVD predictor, and wherein the significance of the second symbol is determined based on the position of the second symbol in the BVD.

[0227] Article 31. 31. The method of any one of clauses 25 to 30, wherein the first representation is decoded before the second representation.

[0228] Article 32. 32. The method of any one of clauses 25 to 31, wherein selecting the probability model is further based on the significance of a second symbol of the BVD.

[0229] Article 33. 33. The method of any one of clauses 25 to 32, further comprising determining the significance of the second symbol based on the position of the second symbol of the BVD.

[0230] Article 34. 34. The method of any one of clauses 25 to 33, wherein selecting a probability model further comprises selecting a probability model based on a size of a block to be predicted using BVD.

[0231] Article 35. 35. The method of any one of clauses 25-34, wherein selecting the probability model further comprises selecting the probability model based on a directional component of the BVD, the directional component comprising a first symbol of the BVD predictor and a second symbol of the BVD predictor.

[0232] Article 36. 36. The method of any one of clauses 25 to 35, wherein the directional component of the BVD is one of a horizontal component or a vertical component.

[0233] Article 37. 37. The method of any one of clauses 25-36, wherein selecting the probabilistic model further comprises selecting the probabilistic model based on a third indication of whether the value of the third symbol of the BVD matches the value of the third symbol of a third BVD predictor.

[0234] Article 38. A computing device including 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 method of any one of clauses 25 to 37.

[0235] Article 39. A system comprising: a first computing device configured to perform the method of any one of clauses 25 to 37; and a second computing device configured to encode a representation.

[0236] Article 40. A computer readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 25-37.

[0237] A computing device may perform a method including a plurality of operations. The computing device may determine a block vector difference (BVD) based on a difference between a block vector (BV) and a block vector predictor (BVP). The computing device may select a probability model that may be based on a first indication of whether a value of a first symbol of the BVD matches a value of a first symbol of a first BVD predictor. The computing device may encode a second indication of whether a value of a second symbol of the BVD matches a value of a second symbol of a second BVD predictor that may be based on the probability model. The first indication may be encoded before the second indication. Selecting the probability model may be further based on a significance of the second symbol of the BVD or the second symbol of the BVD predictor. The significance of the second symbol may be determined based on a position of the second symbol in the BVD. The significance of the second symbol may be determined based on a change in the value of the BVD relative to an incremental change in the value of the second symbol of the BVD. Selecting the probability model may be further based on a size of the block predicted based on the BVD. Selecting the probabilistic model may be further based on a directional component of the BVD, including the first and second symbols of the BVD. The directional component of the BVD may be one of a horizontal component or a vertical component. Selecting the probabilistic model may further include selecting the probabilistic model based on a third indication of whether a value of a third symbol of the BVD matches a value of a third symbol of a third BVD predictor. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described 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 decode the indication. A computer-readable medium may store instructions that, when executed, perform the described methods, cause additional operations, and / or include additional elements.

[0238] A computing device may perform a method including a plurality of operations. The computing device may select a probability model based on a first indication of whether a value of a first symbol of a block vector difference (BVD) matches a value of a first symbol of a first BVD predictor. The computing device may decode a second indication of whether a value of a second symbol of the BVD matches a value of a second symbol of a second BVD predictor, the second indication being based on the probability model. The computing device may determine a value of the second symbol of the BVD based on the value of the second symbol of the BVD predictor and the indication. The first indication may be decoded before the second indication. Selecting the probability model may be further based on a significance of the second symbol of the BVD. The significance of the second symbol may be determined based on a position of the second symbol in the BVD. The significance of the second symbol may be determined based on a change in the value of the BVD relative to an incremental change in the value of the second symbol of the BVD. Selecting the probability model may further be based on a size of a block that may be predicted based on the BVD. Selecting the probabilistic model may be further based on a directional component of the BVD including the first and second symbols. The directional component of the BVD may be one of a horizontal component or a vertical component. Selecting the probabilistic model may further be based on a third indication of whether the value of a third symbol of the BVD matches the value of a third symbol of a third BVD predictor. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described 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 encode the indication. A computer-readable medium may store instructions that, when executed, cause the described methods, additional operations, and / or include additional elements.

[0239] A computing device may perform a method including a plurality of operations. The computing device may decode a first indication of whether a value of a first symbol of a block vector difference (BVD) matches a value of a first symbol of a first BVD predictor. The computing device may determine a significance of the second symbol based on a position of the second symbol. The computing device may select a probability model, which may be based on the first indication. The computing device may decode a second indication of whether a value of the second symbol of the BVD matches a value of a second symbol of a second BVD predictor, which may be based on the probability model. The computing device may determine a value of the second symbol of the BVD based on the second indication and the value of the second symbol of the BVD predictor. Selecting the probability may be further based on one or more of the significance of the second symbol of the BVD, the size of a block that may be predicted based on the BVD, a directional component of the BVD including the first and second symbols of the BVD, and a third indication of whether a value of a third symbol of the BVD matches a value of a third symbol of a third BVD predictor. The significance of the second symbol may be determined based on the position of the second symbol in the BVD. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described 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 encode the representation. A computer-readable medium may store instructions that, when executed, perform the described methods, cause additional operations, and / or include additional elements.

[0240] 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 operations may be performed in parallel or simultaneously. 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 figure. 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.

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

[0242] 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 or other data processing device within a computer. 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 on which data may be stored and which 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 disks (CDs) or digital versatile disks (DVDs), flash memory, memory, or memory devices.A computer-readable medium may store code and / or machine-executable instructions, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, 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. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0243] 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, etc.) to perform the operations described herein. One or more devices, such as an apparatus or in a system, may include one or more processors, memory, interfaces, and / or the like.

[0244] Communications described herein may be determined, generated, sent, and / or received using any amount of messages, information elements, fields, parameters, values, indications, 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, indication, 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.

[0245] One or more elements of the examples 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 combined 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 run 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 VHSIC Hardware Description Language (VHDL) or Verilog, which may configure connections between internal hardware modules that reduce the functionality of the programmable device. The techniques described above may be used in combination to achieve functionally modular results.

[0246] 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 by a computing device, a communications 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 of device configuration, traffic load, initial system setup, packet size, traffic characteristics, a combination of the above, and / or the like. Various embodiments may be used if one or more criteria are met. It may be possible to implement any part of the embodiments described herein in any order and based on any condition.

[0247] Although embodiments are described above, features and / or steps of these embodiments may be combined, divided, omitted, rearranged, revised, 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 illustrative only and not limiting.

Claims

1. 1. A method comprising: selecting a probability model based on a first indication of whether a value of a first symbol of a block vector difference (BVD) matches a value of a first symbol of a first BVD predictor; decoding a second indication of whether a value of a second symbol of the BVD predictor matches a value of a second symbol of a second BVD predictor based on the probability model; determining a value of the second symbol of the BVD based on the second indication and a value of the second symbol of the second BVD predictor.

2. The method of claim 1 , wherein the first representation is decoded before the second representation.

3. The method according to any one of claims 1 to 2, wherein the selecting of the probability model is further based on the significance of the second symbol of the BVD.

4. The method of any one of claims 1 to 3, further comprising determining the significance of a second symbol of the BVD based on the position of the second symbol.

5. 5. The method of claim 1, further comprising determining, based on a change in the value of the BVD relative to an incremental change in the value of the second symbol of the BVD, the significance of the second symbol is determined.

6. selecting the probabilistic model The method of any one of claims 1 to 5, further comprising selecting the probability model based on the size of a block to be predicted using the BVD.

7. selecting the probabilistic model 6. The method of claim 1, further comprising selecting the probability model based on a directional component of the BVD, the directional component comprising the first symbol of the BVD predictor and the second symbol of the BVD predictor.

8. selecting the probabilistic model 6. The method of claim 1, further comprising selecting the probability model based on a third indication of whether a value of a third symbol of the BVD matches a value of a third symbol of a third BVD predictor.

9. The method of any one of claims 1 to 5, wherein the selecting of the probability model is further based on the significance of the second symbol of the BVD.

10. The method of any one of claims 1 to 9, wherein the directional component of the BVD is one of a horizontal component or a vertical component.

11. 11. The method of claim 1, further comprising determining a significance of the second symbol of the BVD based on a change in value of the BVD relative to an incremental change in value of the second symbol of the BVD.

12. The method of any one of claims 1 to 11, further comprising determining the significance of the second symbol based on the position of the second symbol in the BVD.

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

14. 1. A system comprising: a first wireless device configured to perform the method of any one of claims 1 to 12; a second wireless device configured to encode the one or more representations.

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

Citation Information

Patent Citations

  • Method for motion vector difference (MVD) and intra block copy vector difference (BVD) coding of screen content video data

    US9854253B2