Context modeling for sign and amplitude prediction

By using entropy coding in the bypass arithmetic coding mode to perform entropy coding on the difference between the amplitude sign of the candidate predicted by BVD and the current block template, the problem of low efficiency of block vector difference coding is solved, and efficient compression of video coding is achieved.

CN120958804APending Publication Date: 2025-11-14COMCAST CABLE COMM LLC
View PDF 0 Cites 0 Cited by

Patent Information

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

AI Technical Summary

Technical Problem

In bypass arithmetic coding mode, the magnitude coding efficiency of block vector difference (BVD) is limited because it assumes that the probability distribution of syntax elements is uneven, resulting in low coding efficiency.

Method used

By using the bypass arithmetic coding mode, entropy coding is performed by utilizing the difference between the magnitude sign of the BVD prediction candidate and the current block template, and the optimal BVD prediction candidate is selected to improve coding efficiency.

Benefits of technology

It improves the compression efficiency of video encoding by optimizing the encoding process of block vector difference through context-based entropy coding technology, thereby reducing the amount of bitstream data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120958804A_ABST
    Figure CN120958804A_ABST
Patent Text Reader

Abstract

A 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 amplitude symbols of the BVD match other amplitude symbols of the BVD predictor. A magnitude of the BVD may be determined using a value of the magnitude symbol of the BVD predictor and the indication of whether the magnitude symbol of the BVD matches the magnitude symbol of the BVD predictor.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-referencing related applications

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 431,623, filed December 9, 2022. The entire contents of the application cited above are incorporated herein by reference. Background Technology

[0003] In bypass arithmetic coding mode, the magnitude of block vector difference (BVD) can be determined. BVD can be used as part of advanced motion vector prediction (AMVP) for inter-frame prediction and AMVP for intra-frame block copy (IBC). Summary of the Invention

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

[0005] Bypass arithmetic coding can be used to accelerate the arithmetic coding process. The magnitude of the block vector difference (BVD) can be encoded in the bypass arithmetic coding mode; however, the BVD syntax elements may be limited because it assumes a uniform probability distribution. For example, instead of entropy coding the magnitude sign of the BVD, entropy coding can be performed on an indication of whether the magnitude sign of the BVD prediction candidate matches the magnitude sign of the BVD. Improved compression efficiency can be achieved because this indication may have a non-uniform probability distribution. A BVD prediction candidate can be selected from multiple BVD prediction candidates, for example, based on the cost of the BVD candidate, which can be calculated based on the difference between the template of the current block and the template of the candidate reference block.

[0006] These and other features and advantages are described in more detail below. Attached Figure Description

[0007] Examples of several embodiments of the present disclosure are described herein with reference to the accompanying drawings.

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

[0009] Figure 2 An example encoder is shown.

[0010] Figure 3 An example decoder is shown.

[0011] Figure 4 An example quadtree partition is shown, which is a coded tree block (CTB).

[0012] Figure 5 It shows the corresponding Figure 4 Example quadtree partitioning of CTB in the example quadtree.

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

[0014] Figure 7 Examples of combined quadtree and multi-type tree partitions of CTB are shown.

[0015] Figure 8 It shows the corresponding Figure 7 The CTB shown is a combined quadtree and a multi-type tree partitioned tree.

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

[0017] Figure 10A and Figure 10B An example intra-frame prediction mode is shown.

[0018] Figure 11 The current block and its corresponding reference sample are shown.

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

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

[0021] Figure 13B An example motion vector is shown.

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

[0023] Figure 15A The example spatial candidate neighboring blocks of the current block are shown.

[0024] Figure 15B The example time-displacing block of the current block is shown.

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

[0026] Figure 17 An example of a context-based adaptive binary arithmetic code (CABAC) encoder is shown.

[0027] Figure 18A An example of intra-block copy (IBC) is shown.

[0028] Figure 18B An example BVD candidate is shown for entropy encoding of magnitude symbols in BVD.

[0029] Figure 18CA sample table showing components and costs with BVD candidates is provided.

[0030] Figure 18D An example of a decoder for determining the amplitude signal of BVD is shown.

[0031] Figure 19 This illustrates a method by which a context modeler determines the probabilistic model of an indication.

[0032] Figure 20 An example method is shown for the context modeler to determine the probabilistic model of the indication.

[0033] Figures 21A-21D An example of deriving a context model using a first-order Markov model is shown.

[0034] Figure 22A and 22B An example of deriving a context model using a 2nd-order Markov chain is shown.

[0035] Figure 23 An example of switching between context export techniques is shown.

[0036] Figure 24 An example method for selecting the most significant bin (MSB) of the horizontal and vertical components of the vector difference is shown.

[0037] Figure 25 An example method is shown for encoding an indication of whether the value of an amplitude symbol matches the predicted value of the amplitude symbol.

[0038] Figure 26 An example method for determining the value of the amplitude sign is shown.

[0039] Figure 27 An example computer system in which the present disclosure can be implemented is shown.

[0040] Figure 28 Example elements of a computing device are shown that can be used to implement any of the various devices described herein. Detailed Implementation

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

[0042] Video sequences comprising multiple images / frames can be represented digitally for storage and / or transmission. Representing a video sequence digitally 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 can be used to compress the size of a video sequence for more efficient storage and / or transmission. Video decoding can be used to decompress a compressed video sequence for display and / or other uses.

[0043] Figure 1 An example video encoding / decoding system is illustrated. 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 send / 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 variety of different devices, such as a desktop computer, laptop computer, tablet computer, smartphone, wearable device, television, camera, video game console, set-top box, video streaming device, etc.

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

[0045] Video sequences, such as video sequence 108, may include a series of pictures (also referred to as frames). A video sequence can achieve a motion impression based on continuously presenting pictures of the video sequence using constant or variable time intervals between pictures. A picture may include one or more sample arrays of intensity values. Intensity values ​​may be acquired (e.g., measured, determined, provided) at a series of regularly spaced locations within the picture. A color picture may include (e.g., typically includes) a luminance sample array and two chrominance sample arrays. The luminance sample array may include intensity values ​​representing the luminance of the picture (e.g., the luminance component Y). The chrominance sample arrays may include intensity values ​​representing the blue and red components (e.g., chrominance components Cb and Cr) of the picture, separate from the luminance. Other color picture sample arrays are possible based on different color schemes (e.g., red, green, blue (RGB) color schemes). A pixel in a color picture may refer to / include all intensity values ​​(e.g., luminance components, chrominance components) used to represent a given location in the sample array of the color picture / associated with said intensity values. A monochrome picture may include a single luminance sample array. A pixel in a monochrome image can refer to / include / be associated with an intensity value (e.g., a luminance component) at a given location in a single luminance sample array used to represent the monochrome image.

[0046] Encoder 114 can encode video sequence 108 into bitstream 110. Encoder 114 can apply / use one or more prediction techniques (e.g., to encode video sequence 108) to reduce redundant information in video sequence 108. Redundant information may include information that can be predicted at the decoder and does not need to be transmitted to the decoder for accurate decoding of video sequence 108. For example, encoder 114 can 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 video sequence 108. Encoder 114 can, for example, partition the image including video sequence 108 into rectangular regions called blocks before applying one or more prediction techniques. Encoder 114 can then encode the blocks using one or more of the prediction techniques.

[0047] Encoder 114 can search for blocks similar to those being encoded in another picture (e.g., a reference picture) of video sequence 108, for example, for temporal prediction. The blocks identified during the search (e.g., prediction blocks) can then be used to predict the block being encoded. Encoder 114 can form prediction blocks based on data from reconstructed neighboring samples of the block to be encoded within the same picture of video sequence 108, for example, for spatial prediction. The reconstructed samples can be samples that have been encoded and then decoded. Encoder 114 can determine prediction errors (e.g., residuals) based on the differences between the block being encoded and the prediction blocks. Prediction errors can represent non-redundant information that can be sent / transmitted to the decoder for accurate decoding of video sequence 108.

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

[0049] Output interface 116 can be configured to write and / or store bit stream 110 onto transmission medium 104 for transmission to destination device 106. Output interface 116 can be configured to send / transmit, upload, and / or stream bit stream 110 to destination device 106 via transmission medium 104. Output interface 116 may include wired and / or wireless transmitters configured to send / transmit, upload, and / or stream bit stream 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, Cable Service Interface Data Specification (DOCSIS) standards, 3GPP standards, Institute of Electrical and Electronics Engineers (IEEE) standards, Internet Protocol (IP) standards, Wireless Application Protocol (WAP) standards, and / or any other communication protocols).

[0050] 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 discs, flash memory, and / or magnetic storage. The transmission medium 104 may include one or more networks (e.g., the Internet) or file servers configured to store and / or send / transmit encoded video data.

[0051] Destination device 106 can 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 wired and / or wireless receivers configured to receive, download, and / or stream bitstream 110 according to one or more proprietary, open-source, standardized communication protocols and / or (e.g., as cited herein) any other communication protocols.

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

[0053] The video display 122 can display the video sequence 108 to a user. The video display 122 may include a cathode rate 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 the video sequence 108.

[0054] Video encoding / decoding system 100 is merely an example, and different video encoding / decoding systems 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 omitted entirely (e.g., if video sequence 108 is intended for use 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 devices.

[0055] Encoder 114 and / or decoder 120 may operate according to one or more proprietary or industry video coding standards. For example, encoder 114 and / or decoder 120 may operate according to one or more proprietary, open-source and / or standardized protocols (e.g., ITU-T H.263, ITU-T H.264 and Moving Picture Experts Group (MPEG)-4 Vision (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 Multi-Functional Video Coding (VVC)), WebM VP8 and VP9 codecs and / or AOMedia Video 1 (AV1)) and / or any other video coding protocol.

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

[0057] Encoder 200 can partition images (e.g., frames) of video sequence 202 (e.g., including the video sequence) into blocks and encode video sequence 202 block by block. Encoder 200 can perform / apply prediction techniques on blocks being encoded using inter-frame prediction unit 206 or intra-frame prediction unit 208. Inter-frame prediction unit 206 can perform inter-frame prediction by searching for blocks similar to those being encoded in another reconstructed image (e.g., a reference image) of video sequence 202. The reconstructed image can be an encoded and then decoded image. Blocks (e.g., prediction blocks) then determined during the search can be used to predict the encoded blocks to remove redundant information. Inter-frame prediction unit 206 can utilize temporal redundancy or similarity in scene content between images in video sequence 202 to determine prediction blocks. For example, scene content between images in video sequence 202 can be similar, except for differences due to motion and / or affine transformations of screen content over time.

[0058] Intra-prediction unit 208 can perform intra-prediction by forming prediction blocks based on data from reconstructed neighboring samples of blocks encoded within the same image of video sequence 202. The reconstructed samples can be encoded and then decoded samples. Intra-prediction unit 208 can utilize spatial redundancy or similarity in scene content within images of video sequence 202 to determine prediction blocks. For example, the texture of a region of scene content in an image can be similar to the texture of the immediately surrounding regions of the same region of scene content in the same image.

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

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

[0061] 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, 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 bit stream 204.

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

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

[0064] The encoder control unit may attempt to minimize (or reduce) the bit rate of bit stream 204 and / or maximize (or increase) the reconstructed video quality (e.g., within the constraints of proprietary coding protocols, industry video coding standards, and / or any other video coding protocols). For example, the encoder control unit may attempt to minimize or reduce the bit rate of bit stream 204 such that the reconstructed video quality is not lower than a certain level / threshold, and / or may attempt to maximize or increase the reconstructed video quality such that the bit rate of bit stream 204 does not exceed a certain level / threshold. The encoder control unit may determine / control one or more of the following: partitioning the images of video sequence 202 into blocks; whether the blocks are predicted inter-frame by inter-frame prediction unit 206 or intra-frame by intra-frame prediction unit 208; motion vectors for inter-frame prediction of blocks; intra-frame prediction mode among multiple intra-frame prediction modes for intra-frame prediction of blocks; filtering performed by filter 220; and / or one or more transform types and / or quantization parameters applied by transform and quantization unit 214. The encoder control unit can determine / control one or more of the above based on the rate-distortion metric of the block or image being encoded. The encoder control unit can determine / control one or more of the above to reduce the rate-distortion metric of the block or image being encoded.

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

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

[0067] Figure 3 An example decoder is shown. (e.g.) Figure 3 The decoder 300 shown can implement one or more of the processes described herein. Decoder 300 can decode bitstream 302 into a decoded video sequence 304 for display and / or some other form of use. Figure 1The video encoding / decoding system 100 is implemented in and / or in computing, communication, or electronic devices (e.g., desktop computers, laptops, tablets, smartphones, wearable devices, televisions, cameras, video game consoles, set-top boxes, and / or video streaming devices). 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-frame prediction unit 316, and / or an intra-frame prediction unit 318.

[0068] Decoder 300 may include a decoder control unit configured to control one or more units of decoder 300. The decoder control unit can control one or more units of decoder 300 to decode bitstream 302 according to the requirements of one or more proprietary coding protocols, industry video coding standards, and / or any other communication protocols. For example, the decoder control unit can control one or more units of decoder 300 to decode bitstream 302 according to one or more of ITU-TH.263, AVC, HEVC, VVC, VP8, VP9, ​​AV1, and / or any other video coding standards / formats.

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

[0070] Entropy decoding unit 306 can perform entropy decoding on bitstream 302. Inverse transform and quantization unit 308 can perform inverse quantization and / or inverse transform on the quantized transform coefficients to determine the decoded prediction error. Combiner 310 can combine the decoded prediction error with the prediction block to form a decoded block. The prediction block can be generated by intra-frame prediction unit 318 or inter-frame prediction unit 316 (e.g., as described above regarding...). Figure 2 (As described in encoder 200). Filter 312 may, for example, use a deblocking filter and / or a sample adaptive offset (SAO) filter to filter the decoded blocks. Buffer 314 may store the decoded blocks to predict one or more other blocks in the same and / or different images of the video sequence in bitstream 302. The decoded video sequence 304 may be output from filter 312, as... Figure 3 As shown in the image.

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

[0072] Although not in Figure 2 and 3 As shown, but in addition to the inter-frame prediction and intra-frame prediction units, each of the encoder 200 and decoder 300 may additionally include an intra-frame block copying unit. The intra-frame block copying unit may perform / operate similarly to the inter-frame prediction unit, but may predict blocks within the same frame. For example, the intra-frame block copying unit may utilize repeating patterns appearing in screen content. Screen content may include computer-generated text, graphics, animations, etc.

[0073] Video encoding and / or decoding can be performed on a block-by-block basis. The process of partitioning an image into blocks can be adaptive based on the image's content. For example, larger block partitions can be used in regions of an image with a high level of uniformity to improve encoding efficiency.

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

[0075] Figure 4 An example quadtree partition of CTB is shown. Figure 5 It shows the corresponding Figure 4 The example quadtree partitioned by CTB 400 in the example is a quadtree. Figure 4 and Figure 5 As shown, CTB 400 can be initially partitioned into four leaf CBs with semi-vertical and semi-horizontal sizes. Three of the leaf CBs resulting from the first-level partitioning of CTB 400 can be leaf CBs. The three leaf CBs of the first-level partitioning of CTB 400 are... Figure 4 and Figure 5 The numbers are labeled 7, 8, and 9 respectively. The non-leaf CBs of the first-level partition of CTB 400 can be partitioned into four sub-CBs with semi-vertical and semi-horizontal sizes. Three of the sub-CBs resulting from the second-level partition of CTB 400 can be leaf CBs. The three leaf CBs of the second-level partition of CTB 400 are... Figure 4 and Figure 5 The numbers are labeled 0, 5, and 6 respectively. The non-leaf CBs of the second-level partition of CTB 400 can be partitioned into four leaf CBs with semi-vertical and semi-horizontal sizes. The four leaf CBs can be... Figure 4 and Figure 5 They are labeled as 1, 2, 3 and 4 respectively.

[0076] Figure 4 The CTB 400 can be partitioned into 10 leaf CBs labeled 0-9 and / or any other number of leaf CBs. The 10 leaf CBs can correspond to 10 CB leaf nodes (e.g., as shown in the image). Figure 5 The quadtree 500 shown has 10 leaf nodes of the leaf CB. In other examples, the CTB can be partitioned into different numbers of leaf CBs. The resulting quadtree partitions of the CTB 400 can be scanned using a z-scan (e.g., from left to right, from top to bottom) to form a sequence order for encoding / decoding the leaf nodes of the CBs. Figure 4 and Figure 5 The numerical marker (e.g., indicator, index) of each CB leaf node can correspond to the sequence order used for encoding / decoding. For example, CB leaf node 0 can be encoded / decoded first, and CB leaf node 9 can be encoded / decoded last. Although not in Figure 4 and Figure 5 As shown in the figure, each CB leaf node may include one or more PBs and / or TBs.

[0077] Images in VVC (or any other encoding standard / format) can be partitioned in a similar manner (e.g., HEVC). The image can first be partitioned into non-overlapping square CTBs. Then, a recursive quadtree partitioning method can be used to partition the CTBs into CBs of semi-vertical and semi-horizontal sizes. Quadtree leaf nodes (e.g., in VVC) can be further partitioned into CBs of unequal sizes using binary or ternary tree partitioning (or any other partitioning method).

[0078] Figure 6 Example binary and ternary tree partitions are shown. A binary tree partition can divide the parent block in half along the vertical direction 602 or the horizontal direction 604. The resulting partition can be half the size of the parent block. The resulting partition can correspond to a size less than and / or greater than half the size of the parent block. A ternary tree partition can divide the parent block into three parts along the vertical direction 606 or the horizontal direction 608. Figure 6 An example is shown where the middle partition in a ternary tree partition may be twice the size of the other two end partitions. In other examples, partitions may have other sizes relative to each other and relative to the parent block. Binary tree partitions and ternary tree partitions are examples of multi-type tree partitions. Multi-type tree partitions may include partitioning the parent block into an additional number of smaller blocks. Due to the addition of binary and / or ternary tree partitions to quadtree partitions, a block partitioning strategy (e.g., in VVC) may be referred to as a combination of quadtree and multi-type tree partitions (quadritree + multi-type tree partitions).

[0079] Figure 7 Examples of combined quadtree and multi-type tree partitions of CTB are shown. Figure 8 It shows the corresponding Figure 7 The CTB 700 includes combined quadtrees and multi-type tree partitioning. Figure 7 and Figure 8 In the diagram, quadtree partitions are shown with solid lines, and multi-type tree partitions are shown with dashed lines. CTB 700 uses... Figure 4 The same quadtree partitioning as described in the CTB 400 is shown, and the description of quadtree partitioning in the CTB 700 is omitted. The quadtree partitioning of the CTB 700 is merely an example, and the CTB can perform quadtree partitioning in a different way than the CTB 700. Other multi-type tree partitioning of the CTB 700 can be performed relative to... Figure 4 The three leaf CBs shown are prepared. Figure 7 The middle part is shown as being further partitioned. Figure 4 The three leaf CBs in the tree can be leaf CBs 5, 8, and 9. The three leaf CBs can be further partitioned using one or more binary and / or ternary tree partitions.

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

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

[0082] Encoding standards / formats (e.g., HEVC, VVC, or any other encoding standard / format) can define various units (e.g., in addition to specifying various blocks (e.g., CTB, CB, PB, TB)). A block can include a rectangular region of samples in a sample array. A unit can include a juxtaposed block of samples from different sample arrays forming an image (e.g., luma and chroma sample arrays), as well as the block's syntax elements and prediction data. A coding tree unit (CTU) can include juxtaposed CTBs of different sample arrays and can form a complete entity in the encoded bitstream. A coding unit (CU) can include juxtaposed CBs of different sample arrays and a syntax structure for encoding samples of the CBs. A prediction unit (PU) can include juxtaposed PBs of different sample arrays and syntax elements for predicting the PBs. A transform unit (TU) can include TBs of different sample arrays and syntax elements for transforming the TBs.

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

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

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

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

[0087] The size of the current block 904 can be w x h samples. The reference sample 902 may include: 2w samples (or any other number of samples) from the top row immediately adjacent to the current block 904, 2h samples (or any other number of samples) from the leftmost column immediately adjacent to the current block 904, and the top-left corner sample of the current block 904. The current block 904 can be square, such that w = h = s. In other examples, the current block does not need to be square, such that w ≠ h. Available samples from neighboring blocks of the current block 904 can be used to construct the set of reference samples 902. For example, samples may not be used to construct the set of reference samples 902 if they are located outside the image of the current block, are part of a different slice of the current block (e.g., if the concept of slices is used), and / or belong to a block that has been inter-coded and indicates constrained intra-prediction. For example, if indicating constrained intra-prediction, intra-prediction may not depend on blocks that have been inter-coded.

[0088] Samples that may not be available for constructing reference sample 902 may include samples from blocks that have not yet been encoded and reconstructed at the encoder and / or decoded at the decoder based on the sequence order used for encoding / decoding. Restricting the inclusion of such samples in the group of reference sample 902 allows the same prediction to be determined at both the encoder and decoder. Samples from adjacent blocks 0, 1, and 2 may be used to construct reference sample 902 provided that these blocks were encoded and reconstructed at the encoder and decoded at the decoder prior to the encoding of the current block 904. For example, samples from adjacent blocks 0, 1, and 2 may be used to construct reference sample 902 if there are no other issues preventing the use of samples from adjacent blocks 0, 1, and 2 (e.g., as described above). A portion of reference sample 902 from adjacent block 6 may be unavailable due to the sequence order used for encoding / decoding (e.g., because block 6 may not yet have been encoded and reconstructed at the encoder and / or decoded at the decoder based on the sequence order used for encoding / decoding).

[0089] Unavailable samples from reference sample 902 can be filled using one or more available reference samples 902. For example, unavailable reference samples can be filled using the nearest available reference sample. The nearest available reference sample can be determined by moving through reference sample 902 in a clockwise direction from the position of the unavailable reference. For example, if no reference sample is available, reference sample 902 can be filled using the median of the dynamic range of the image being encoded.

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

[0091] Intra-frame prediction can be performed on samples of the current block 904 based on reference sample 902, for example, based on the determination of the reference sample and (optionally) filtering (e.g., after this). Depending on one or more video coding standards, at least some (e.g., most) encoders / decoders can support multiple intra-frame prediction modes. For example, HEVC supports 35 intra-frame prediction modes, including planar mode, DC mode, and 33 angular modes. VVC supports 67 intra-frame prediction modes, including planar mode, DC mode, and 65 angular modes. Planar and DC modes can be used to predict smooth and gradually changing regions of an image. Angular modes can be used to predict directional structures within regions of an image. Any number of intra-frame prediction modes can be supported.

[0092] Figure 10A and Figure 10B An example intra-frame prediction mode is shown. Figure 10A Thirty-five intra-frame prediction modes, such as those supported by HEVC, are shown. These 35 intra-frame prediction modes can be indicated / identified by indices 0 to 34. Prediction mode 0 can correspond to a planar mode. Prediction mode 1 can correspond to a DC mode. Prediction modes 2-34 can correspond to angular modes. Prediction modes 2-18 can be called horizontal prediction modes because the primary prediction source is in the horizontal direction. Prediction modes 19-34 can be called vertical prediction modes because the primary prediction source is in the vertical direction.

[0093] Figure 10B Sixty-seven intra-frame prediction modes are shown, as supported by VVC. These 67 intra-frame prediction modes can be indicated / identified by indices 0 to 66. Prediction mode 0 can correspond to a planar mode. Prediction mode 1 corresponds to a DC mode. Prediction modes 2-66 can correspond to angular modes. Prediction modes 2-34 can be called horizontal prediction modes because the primary prediction source is in the horizontal direction. Prediction modes 35-66 can be called vertical prediction modes because the primary prediction source is in the vertical direction. Figure 10B Some of the intra-prediction modes shown in the figure can be adaptively replaced in the wide-angle direction because blocks in VVC do not need to be square.

[0094] Figure 11 The current block and its corresponding reference sample are shown. Figure 11 From Figure 9 The current block 904 and the reference sample 902 are shown in a two-dimensional x, y plane, where the sample can be represented as To simplify the prediction process, reference sample 902 can be placed in a two-dimensional or one-dimensional array. Reference sample 902 above the current block 904 can be placed in a one-dimensional array. :

[0095]

[0096] The reference sample 902 to the left of the current block 904 can be placed in a one-dimensional array. :

[0097]

[0098] The prediction process may include determining the position in the current block 904. Predicted samples at the location (For example, predicted values). For planar patterns, the position in the current block 904 can be predicted by determining / calculating the mean of two interpolations. The sample at that location. The first of the two interpolations can be based on the location in the current block 904. The horizontal linear interpolation at that point. The second of the two interpolations can be based on the position in the current block 904. Vertical linear interpolation at the current location. Predicted samples in current block 904. It can be determined / calculated as follows:

[0099]

[0100] in

[0101]

[0102] It could be the position within the current block 904. Horizontal linear interpolation at the location, and

[0103]

[0104] It can be the position in the current block 904. The vertical linear interpolation at that point. s can be equal to the length of one side of the current block 904 (e.g., the number of samples on one side).

[0105] For example, in DC mode, the position in the current block 904 The sample at this location can be predicted using the mean of reference sample 902. The predicted sample in the current block 904... It can be determined / calculated as follows:

[0106]

[0107] The sample at position [x][y] in the current block 904, for example, for an angled pattern, can be predicted by projecting position [x][y] onto a point on a horizontal or vertical line that includes the reference sample 902 in the direction specified by the given angled pattern. If the projection does not fall directly on the reference sample, the sample at position [x][y] can be predicted by interpolation between the two nearest reference samples of the projection point. The direction specified by the angled pattern can be given by an angle φ relative to the y-axis for vertical prediction patterns (e.g., patterns 19-34 in HEVC and patterns 35-66 in VVC). The direction specified by the angled pattern can also be given by an angle φ relative to the x-axis for horizontal prediction patterns (e.g., patterns 2-18 in HEVC and patterns 2-34 in VVC).

[0108] Figure 12 An example application of the intra-prediction mode for predicting the current block is shown. Figure 12 Specifically, this illustrates the vertical prediction mode 906 in... The prediction of the sample at the current location in block 904. Vertical prediction mode 906 can be given by the angle φ relative to the vertical axis. In vertical prediction mode, the location in the current block 904... Points that can be projected onto the horizontal line of the reference sample (e.g., projection points). For ease of explanation, Figure 12 Only a partial view of reference sample 902 is shown. (For example...) Figure 12 As seen, the horizontal line of the reference sample The projection point on the reference sample may not exactly lie on the reference sample. For example, if the projection point falls at the fractional sample location between two reference samples, the predicted sample in the current block 904 can be determined / computed by performing linear interpolation between the two reference samples. Predicted Samples It can be determined / calculated as follows:

[0109]

[0110] It can be the integer part of the horizontal displacement of the projection point relative to the position [x][y]. The angle φ of the vertical prediction mode 906 can be used to determine / calculate the following:

[0111]

[0112] It can be a fraction of the horizontal displacement of the projection point relative to the position [x][y], and can be determined / calculated as:

[0113]

[0114] in It is an integer lower bound function.

[0115] For example, in the horizontal prediction mode, the position [x][y] of the sample in the current block 904 can be projected onto the vertical line of the reference sample. Above. Prediction samples used for horizontal prediction patterns. It can be determined / calculated as follows:

[0116]

[0117] It can be the integer part of the vertical displacement of the projection point relative to the position [x][y]. The angle φ of the horizontal prediction model can be determined / calculated as follows:

[0118]

[0119] It can be a fraction of the vertical displacement of the projection point relative to the position [x][y]. It can be determined / calculated as follows:

[0120]

[0121] in It is an integer lower bound function.

[0122] The interpolation function given by equations (7) and (10) can be derived by the encoder and / or decoder (e.g., Figure 2 encoder 200 and / or Figure 3 The interpolation function can be implemented using a finite impulse response (FIR) filter. For example, the interpolation function can be implemented as a group of two-tap FIR filters. The coefficients of the two-tap FIR filters can be respectively derived from (1- )and Given that, in intra-frame angular prediction, the predicted sample p[x][y] can be computed using a predefined level of sample accuracy (e.g., 1 / 32 sample accuracy or accuracy defined by any other metric). For 1 / 32 sample accuracy, the set of two-tap FIR interpolation filters can include up to 32 different two-tap FIR interpolation filters—each filter for each of 32 possible values ​​of the fractional part of the projected displacement. In other examples, different levels of sample accuracy can be used.

[0123] FIR filters can be used to predict chroma and / or luminance samples. For example, a two-tap interpolation FIR filter can be used to predict chroma samples, and the same and / or different interpolation techniques / filters can be used for luminance samples. For example, a four-tap FIR filter can be used to determine the predicted value of a luminance sample. This can be based on... (For example, similar to a two-tap FIR filter) to determine the coefficients of a four-tap FIR filter. For 1 / 32 sample accuracy, a group of 32 different four-tap FIR filters can include up to 32 different four-tap FIR filters—each filter used for projected shift. Each of the 32 possible values ​​for the fractional part. In other examples, different levels of sample accuracy can be used. The group of four-tap FIR filters can be stored in a lookup table (LUT) and based on... Reference. For the vertical prediction mode, the predicted sample p[x][y] can be determined based on a four-tap FIR filter as follows:

[0124]

[0125] Where fT[i], i = 0..3 can be filter coefficients, and It is an integer displacement. For horizontal prediction modes, the predicted samples... Based on the four-tap FIR filter, it can be determined as follows:

[0126]

[0127] If the position [x][y] of the sample to be predicted in the current block 904 is projected to a negative x-coordinate, a supplementary reference sample can be determined / constructed. For example, if a negative vertical prediction angle φ is used, the position [x][y] of the sample can be projected to a negative x-coordinate. A supplementary reference sample can be determined / constructed by projecting the reference sample in the vertical line of reference sample 902 [ref]_2 [y] onto the horizontal line of reference sample 902 using a negative vertical prediction angle φ. Similarly, if the position [x][y] of the sample to be predicted in the current block 904 is projected to a negative y-coordinate, a supplementary reference sample can be determined / constructed. For example, if a negative horizontal prediction angle φ is used, the position [x][y] of the sample can be projected to a negative y-coordinate. A supplementary reference sample can be determined / constructed by projecting the reference sample in the horizontal line of reference sample 902 [ref]_1 [x] onto the vertical line of reference sample 902 using a negative horizontal prediction angle φ.

[0128] The encoder can determine / predict samples of the current block (e.g., current block 904) being encoded for multiple intra prediction modes (e.g., using one or more functions described herein). For example, the encoder can 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. The encoder can determine the corresponding prediction error for the current block for each applied intra prediction mode based on the difference between the predicted samples determined for the intra prediction mode and the original samples of the current block (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), or sum of absolute transform differences (SATD)). The encoder can determine / select one of the intra prediction modes to encode the current block based on the determined prediction error. For example, the encoder can determine / select one of the intra prediction modes that produces the minimum prediction error for the current block. The encoder can determine / select the intra prediction mode to encode the current block based on a rate-distortion metric (e.g., Lagrangian rate-distortion cost) determined using the prediction error. The encoder can send an indication of a defined / selected intra-prediction mode and its corresponding prediction error (e.g., residual) to the decoder for decoding the current block.

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

[0130] Intra-frame prediction can perform video compression by leveraging the correlation between spatially adjacent samples in the same frame of a video sequence. Inter-frame prediction is another coding tool that can be used to perform video compression. Inter-frame prediction can leverage the temporal correlation between blocks of samples in different frames of a video sequence. For example, an object can be seen in multiple frames of a video sequence. The object can move (e.g., by some kind of translation and / or affine motion) or remain stationary in the multiple frames. The current block of a sample in the current frame being encoded may have a corresponding block of a sample in a previously decoded frame / be associated with said corresponding block. The corresponding block of the sample can accurately predict the current block of the sample. The corresponding block of the sample may be displaced from the current block of the sample, for example, due to the movement of the object represented in the two blocks in the corresponding frames of the blocks. The previously decoded frame can be a reference frame. The corresponding block of the sample in the reference frame can be a reference block for motion compensation prediction. The encoder can use block matching techniques to estimate the displacement (or motion) of the object and / or determine the reference block in the reference frame.

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

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

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

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

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

[0136] The encoder can determine the difference (e.g., the corresponding sample-by-sample difference) between reference block 1304 and current block 1300. The encoder can determine and / or generate reference block 1304 for the current block 1300, for example, based on inter-frame prediction, and subsequently determine the difference between reference block 1304 and current block 1300. The difference can be a prediction error and / or a residual. The encoder can store and / or transmit (e.g., signal) the prediction error and / or associated motion information in / via the bit stream. The prediction error and / or associated motion information can be used for decoding (e.g., decoding the current block 1300) and / or for other forms of use. The motion information can include motion vector 1312 and / or a reference indicator / index. The reference indicator can indicate reference image 1306 in a list of reference images. The motion information can include an indication of motion vector 1312 and / or an indication of a reference index. The reference index can indicate reference image 1306 in a list of reference images. The decoder can decode the current block 1300 by determining and / or generating reference block 1304. The decoder may determine and / or generate a reference block 1304, for example, based on prediction errors and / or relevant motion information. The reference block 1304 may correspond to / form (e.g., be considered) a prediction of the current block 1300. The decoder may decode the current block 1300 based on a combination of the prediction and the prediction error.

[0137] like Figure 13A As shown, an inter-frame prediction can be performed using a reference image 1306 as the prediction source for the current block 1300. Inter-frame prediction based on the prediction of the current block using a single image can be referred to as single prediction.

[0138] Inter-frame prediction of the current block using dual prediction can be based on two images. For example, dual prediction can be useful if the video sequence includes fast motion, camera panning, zooming, and / or scene changes. Dual prediction can be used to capture a fade-out of a scene or a fade-out from one scene to another, where the two images can be displayed effectively simultaneously at different intensity levels.

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

[0140] Figure 14 An example of dual prediction is shown. Two reference blocks, 1402 and 1404, can be used to predict the current block 1400. Reference block 1402 can be a reference image in one of the reference image lists, either reference image list 0 or reference image list 1. Reference block 1404 can be a reference image in the other reference image list, either reference image list 0 or reference image list 1. Figure 14 As shown, reference block 1402 may (e.g., temporally) be in a first picture preceding the current picture of current block 1400, and reference block 1404 may (e.g., temporally) be in a second picture following the current picture of current block 1400. According to the Picture Order Count (POC), the first picture may precede the current picture. According to the POC, the second picture may follow the current picture. According to the POC, the reference pictures may all precede or all follow the current picture. The POC may be / indicate (e.g., from the decoded picture buffer) the order in which the pictures are output. The POC may be / indicate the generally established order in which the pictures are displayed. The output pictures may not necessarily be displayed, but may undergo different processing and / or use (e.g., transcoding). Two reference blocks used for double prediction determination and / or generation may correspond to (e.g., be included in) the same reference picture. For example, if two reference blocks correspond to the same reference picture, the reference picture may be included in both reference picture list 0 and reference picture list 1.

[0141] Configurable weights and / or offset values ​​can be applied to one or more inter-frame prediction reference blocks. The encoder can use flags in the Picture Parameter Set (PPS) to implement weighted prediction. The encoder can send / signal weights and / or offset parameters in the slice segment header for the current block 1400. Different weights and / or offset parameters can be sent / signaled for the luma and / or chroma components.

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

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

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

[0145] Motion information can be predictively encoded, for example, before it is stored and / or transmitted / signaled in or via a bitstream (e.g., in HEVC, VVC, and / or other video coding standards / formats / protocols). The motion information of the current block can be predictively encoded based on the motion information of one or more adjacent blocks. The motion information of neighboring blocks is often correlated with the motion information of the current block because the motion of objects represented in the current block is often the same (or similar) to the motion of objects in neighboring blocks. Motion information prediction techniques may include Advanced Motion Vector Prediction (AMVP) and / or inter-frame prediction block merging.

[0146] Encoder (e.g., such as) Figure 2The encoder 200 shown can encode motion vectors. The encoder can (e.g., using AMVP) encode the motion vectors as the difference between the motion vector of the current block being encoded and the motion vector predictor factor (MVP). The encoder can determine / select an MVP from a list of candidate MVPs. A candidate MVP can be a previously decoded motion vector of a block at or near the juxtaposition of the current block in the current image and / or the current block in other reference images. The encoder and / or decoder can generate and / or determine a list of candidate MVPs.

[0147] The encoder can determine / select an MVP from the list of candidate MVPs. The encoder can send / signal the selected MVP and / or an indication of the motion vector difference (MVD) in the bit stream / via the bit stream. The encoder can use an index / indicator to indicate the selected MVP in the bit stream. The index can indicate the selected MVP in the list of candidate MVPs. The MVD can 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 the position relative to the position of the current block being encoded (e.g., represented by a horizontal component (MVx) and a vertical component (MVy)), the MVD can be represented by two components, MVD_x and MVD_y. MVD_x and MVD_y can be determined / calculated as:

[0148]

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

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

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

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

[0153] The list of candidate motion information used for merging patterns (e.g., in HEVC, VVC, or any other encoding format / standard / protocol) may include: up to four (or any other number) spatial merging candidates derived / determined from five (or any other number) spatially adjacent blocks (e.g., such as...). Figure 15A As shown); one (or any other number) time merge candidates derived from two (or any other number) time juxtaposition blocks (e.g., as shown) Figure 15B (as shown in the diagram); and / or additional merge candidates including dual prediction candidates and zero motion vector candidates. The spatial neighbor blocks and temporal juxtaposition blocks used for the merge mode can be the same as those used for AMVP.

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

[0155] Block matching can be used (e.g., in inter-frame prediction) to determine reference blocks in images different from the current block being encoded. Block matching can also be used to determine reference blocks in the same image as the current block being encoded. Reference blocks in the same image as the current block, determined using block matching, may often fail to accurately predict the current block (e.g., for video captured by a camera). For example, the prediction accuracy of screen content video may not be similarly affected if reference blocks in the same image as the current block are used for encoding. Screen content video may include, for example, computer-generated text, graphics, animations, etc. Screen content video may include (e.g., typically may include) repeating patterns within the same image (e.g., repeating patterns of text and / or graphics). Using reference blocks in the same image as the current block being encoded (e.g., determined using block matching) can provide efficient compression for screen content video.

[0156] Prediction techniques (e.g., in HEVC, VVC, and / or any other encoding standard / format / protocol) can be used to leverage the correlation between blocks of samples within the same frame (e.g., in screen content video). These prediction techniques may be referred to as Intra-Block Copying (IBC) or Current Picture Reference (CPR). The encoder may apply / use block matching techniques (e.g., similar to inter-frame prediction) to determine displacement vectors (e.g., block vectors (BV)). The BV can indicate the relative position of a reference block that best matches the current block from the position of the current block (e.g., based on intra-block compensation prediction). For example, the relative position of the reference block could be the relative position of the top-left corner (or any other point / sample) of the reference block. The BV can indicate the relative displacement from the current block to the reference block that best matches the current block. The encoder can determine the best-matching reference block from blocks tested during the search process (e.g., in a manner similar to that used for inter-frame prediction). The encoder can determine that a reference block is the best-matching reference block based on one or more cost criteria. One or more cost criteria may include rate-distortion criteria (e.g., Lagrange rate-distortion cost). One or more cost criteria may be based on one or more differences between, for example, the predicted samples of a reference block and the original samples of the current block (e.g., SSD, SAD, SATD, and / or differences determined by a hash function). The reference block may correspond to / include a previously decoded block of samples from the current image. The reference block may include a decoded block of samples from the current image prior to processing by in-loop filtering operations (e.g., deblocking and / or SAO filtering).

[0157] Figure 16 An example of IBC used for encoding is shown. Figure 16 The example IBC shown can correspond to screen content. The rectangular portion / segment that the arrow begins at its boundary can be the current block being encoded. The rectangular portion / segment that the arrow points to can be a reference block used to predict the current block.

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

[0159] BV can be predictively encoded (e.g., in HEVC, VVC, and / or any other encoding standard / format / protocol) before being stored in / via the bit stream and / or transmitted / signed. The BV of the current block can be predictively encoded based on the BVs of one or more adjacent blocks. For example, the encoder can use a merging mode (e.g., in a manner similar to that described herein for inter-frame prediction), AMVP (e.g., as described herein for inter-frame prediction), or a technique similar to AMVP to predictively encode the BV. A technique similar to AMVP could be BV prediction and differential coding (or AMVP for IBC).

[0160] Encoders that perform BV prediction and encoding (e.g., Figure 2 The encoder 200 shown encodes the block vector (BV) as the difference between the BV of the current block being encoded and the block vector prediction factor (BVP). The encoder can select / determine a BVP from a list of candidate BVPs. Candidate BVPs may include / correspond to previously decoded BVs of neighboring blocks in the current image. The encoder and / or decoder can generate or determine the list of candidate BVPs.

[0161] After the encoder selects a BVP from the candidate BVP list, it can signal an indication of the selected BVP and the difference between its BV and BV (BVD) in the bit stream. The encoder can indicate the selected BVP in the bit stream by an index pointing to the candidate BVP list. The BVD can be calculated based on the difference between the current block's BV and the selected BVP. For example, for the horizontal component (BVD) relative to the position of the current block being encoded... x ) and vertical component (BV) y BV, BVD, can be represented by two components calculated as follows:

[0162]

[0163] Among them BVD x and BVD y Let BVD represent the horizontal and vertical components, respectively, and BVP... x and BVP y These represent the horizontal and vertical components of the BVP, respectively. Decoder (e.g.) Figure 3The decoder 300 in the bitstream can decode the BV by adding the BVD to the BVP indicated in the bitstream. The decoder can then decode the current block by using the decoded BV and combining the prediction with the prediction error to determine and / or generate a reference block (forming the prediction of the current block).

[0164] In HEVC and VVC, the candidate BVP list can include two candidates referred to as Candidate A and Candidate B. Candidate A and Candidate B can include up to two spatial candidate BVPs derived from the five spatially adjacent blocks of the current block being encoded, or one or more of the last two encoded BVs when spatially adjacent candidates are unavailable (e.g., because they are encoded in intra-frame or inter-frame mode). The positions of the five spatial candidate adjacent blocks relative to the current block being encoded using IBC are... Figure 15A The positions shown in the inter-frame prediction are the same. The five spatial candidate neighbor blocks are represented as A0, A1, B0, B1, and B2, respectively.

[0165] (For example, as this article discusses...) Figure 2 and 3 Entropy coding can be performed at the end of the video encoding process and / or at the beginning of the video decoding process. Entropy coding is a technique for compressing a sequence of symbols by using fewer bits to represent symbols with higher probabilities of occurrence compared to symbols with lower probabilities of occurrence. Shannon's information theory states, for example, that if the compressed sequence of symbols is represented in bits {0, 1}, then the optimal average code length for a symbol with probability p is -log2p.

[0166] Arithmetic coding is an entropy coding method that can be based on recursive interval subdivision. For example, to arithmetically encode symbols that take values ​​from an m-ary source alphabet, the initial coding interval can be divided into m non-adjacent sub-intervals. Each of the m non-adjacent sub-intervals can have a width proportional to the probability that the symbol has a distinct value from the m-ary source alphabet. The probability of a symbol having a distinct value from the m-ary source alphabet can be called the probability model of the symbol. Arithmetic coding of symbols can be performed by selecting sub-intervals corresponding to the actual values ​​of the symbol as new coding intervals. This interval subdivision scheme is recursively applied to a given sequence s = {s1, s2, ..., s...} N Each symbol s i The encoder can determine the arithmetic codewords of the sequence s based on the values ​​within the final encoding interval range. This interval subdivision scheme is recursively applied to a given sequence s = {s1, s2, ..., s}. N Each symbol s iThe encoder can, for example, determine the arithmetic codeword of sequence s within the final encoded interval range after the Nth interval subdivision. The size of the encoded interval can be reduced for each consecutive symbol in the encoded sequence s based on the probability model of the symbols. According to the general principle of entropy coding, more likely symbol values ​​will reduce the size of the encoded interval less than less likely symbol values, and therefore fewer bits will be added to the arithmetic codeword of sequence s.

[0167] Arithmetic decoding can be based on the same recursive interval subdivision. To perform arithmetic decoding on symbols taking values ​​from an m-ary source alphabet, the initial encoding interval can be divided into m non-adjacent sub-intervals. Each of the m non-adjacent sub-intervals can have a width proportional to the probability that the symbol has a distinct value from the m-ary source alphabet. The probability that a symbol has a distinct value from the m-ary source alphabet can be called the probabilistic model of the symbol, as mentioned herein. By determining the symbol value corresponding to the sub-interval into which the arithmetic codeword falls, the symbol can be arithmetically decoded based on the arithmetic codeword. This sub-interval can then become the new encoding interval. The decoder can sequentially decode the sequence s = {s1, s2, ..., s} by recursively using this interval subdivision scheme N times and determining which sub-interval the arithmetic codeword falls into in each iteration. N Each symbol s i .

[0168] For each arithmetic-coded symbol, different probability models can be used to subdivide the coding interval. For example, a symbol's probability model can be determined by a fixed selection (e.g., based on the symbol's position in the symbol sequence) and / or by an adaptive selection from two or more probability models (e.g., based on information associated with the symbol). Two or more symbols in a symbol sequence can use a joint probability model. The selection of a symbol's probability model can be called context modeling. Arithmetic coding using context modeling can be called context-based arithmetic coding. For example, in addition to selecting a symbol's probability model, the selected probability model can be updated based on the symbol's actual coded value. For example, the probability of the symbol's actual coded value can be increased in the probability model, and the probabilities of all other values ​​can be decreased. Arithmetic coding that uses both context modeling and adaptive probability models can be called context-based adaptive arithmetic coding.

[0169] Other variations of arithmetic coding are possible. If arithmetic coding occurs, a renormalization operation can be performed, for example, to ensure that the precision required to represent the range and lower bound of sub-intervals does not exceed the finite precision of the registers used to store these values. Additionally, other simplifications can be made to the coding process to reduce complexity, increase speed, and / or reduce the power requirements of implementations of the coding process in hardware, software, or some combination of both. For example, in such implementations, the probability of symbols, as well as the lower bound and range of sub-intervals, can be approximated or quantized.

[0170] Figure 17 An example of a context-based adaptive binary arithmetic codec (CABAC) encoder is shown. A CABAC encoder (e.g., CABAC encoder 1700) can be implemented in a video encoder, such as those described in this paper. Figure 2 The video encoder 200 is used for entropy encoding of the syntax elements of a video sequence. For example... Figure 17 As shown, a CABAC encoder (e.g., CABAC encoder 1700) may include a binarizer 1702, an arithmetic encoder 1704, and / or a context modeler 1706.

[0171] A CABAC encoder (e.g., CABAC encoder 1700) may receive syntax elements 1708 for arithmetic coding. Syntax elements (e.g., syntax element 1708) may be generated at the video encoder and / or may describe how the video signal can be reconstructed at the video decoder. Syntax elements may include intra-frame prediction modes based on intra-predicted coding units (CUs). Syntax elements may include motion data (e.g., MVD and MVP related data) based on inter-frame predicted CUs. Syntax elements may include displacement data (e.g., BVD and BVP related data) based on CUs predicted using IBC.

[0172] A binarizer (e.g., binarizer 1702) can map the value of a syntax element (e.g., syntax element 1708) to a sequence of binary symbols (e.g., partitions). Binarizer 1702 can define a unique mapping from the value of syntax element 1708 to the sequence of binary symbols. Binarization of syntax elements can help improve probabilistic modeling and implementation of arithmetic coding. Binarizer 1702 can implement one or more binarization procedures (e.g., unary, truncated unary, k-order truncated Rice, k-order exponential Columbus (EGk), fixed length, or some combination of two or more of these binarization procedures). Binarizer 1702 can select the binarization procedure. Binarizer 1702 can select the binarization procedure, for example, based on the type of syntax element 1708 and / or one or more syntax elements processed by CABAC encoder 1700 before syntax element 1708. Binarizer 1702 may not process syntax element 1708. For example, since syntax element 1708 is already represented by a sequence of one or more binary symbols, binarizer 1702 may not process syntax element 1708. Binarizer 1702 may not be used, and, for example, if syntax element 1708 is represented by a sequence of one or more non-binary symbols, the syntax element may be directly encoded by CABAC encoder 1700.

[0173] One or more of the binary symbols may be processed by an arithmetic encoder (e.g., arithmetic encoder 1704). For example, based on (e.g., after) the value of syntax element 1708 is optionally mapped to a sequence of binary symbols by binarizer 1702, one or more of the binary symbols may be processed by arithmetic encoder 1704. Arithmetic encoder 1704 may process each of the one or more binary symbols in one of at least two modes: regular arithmetic coding mode or bypass arithmetic coding mode.

[0174] An arithmetic encoder (e.g., arithmetic encoder 1704) can process binary symbols that do not have a uniform or substantially uniform probability distribution in a conventional arithmetic coding mode (e.g., binary symbols that do not have a probability distribution of 0.5 for each of their two possible values). In a conventional arithmetic coding mode, arithmetic encoder 1704 can perform the arithmetic coding described herein. For example, arithmetic encoder 1704 can subdivide the current coding interval into m non-adjacent sub-intervals. Each of the m non-adjacent sub-intervals can have a width proportional to the probability that the binary symbol has a distinct value among the values ​​in the m-ary source alphabet. For example, with respect to the binary symbol, the value m can be equal to two, and the current coding interval can be subdivided into two non-adjacent intervals, each interval having a width proportional to the probability that the binary symbol is encoded as a distinct value among the two possible values ​​{0, 1}. The probabilities of the two possible values ​​of the binary symbol can be indicated by a probability model of the binary symbol (e.g., probability model 1710). Arithmetic encoder 1704 can encode the binary symbol by selecting a sub-interval corresponding to the actual value of the binary symbol as the new coding interval for the next binary symbol to be encoded.

[0175] An arithmetic encoder (e.g., arithmetic encoder 1704) can receive a probability model 1710 from a context modeler (e.g., context modeler 1706). The context modeler 1706 can determine the probability model 1710 of the binary symbol through fixed selection. Through fixed selection, for example based on the position of the binary symbol in the sequence of binary symbols representing syntax element 1708, the context modeler 1706 can determine the probability model 1710 of the binary symbol. The context modeler 1706 can determine the probability model 1710 of the binary symbol through adaptive selection from two or more probability models. The context modeler 1706 can determine the probability model 1710 of the binary symbol, for example based on information associated with the binary symbol, through adaptive selection from two or more probability models. Figure 17 As shown, a probability model (e.g., probability model 1710) can include two parameters: the probability P of the lowest probability sign (LPS). LPS And the value V of the highest probability sign (MPS) MPS The probability P of being an LPS LPS As a supplement or alternative, probability model 1710 may include the probability P of MPS. MPS Similarly, V, as the value of MPS MPS As a supplement or alternative, the probability model (e.g., probability model 1710) may include the value V of LPS. LPSAn arithmetic encoder (e.g., arithmetic encoder 1704) may provide one or more probabilistic model update parameters (e.g., probabilistic model update parameters 1712) to a context modeler (e.g., context modeler 1706). The arithmetic encoder 1704 may provide one or more probabilistic model update parameters 1712 to the context modeler 1706, for example, after the arithmetic encoder 1704 has encoded a binary symbol. The context modeler 1706 may adapt the probabilistic model 1710. The context modeler 1706 may adapt the probabilistic model 1710, for example, based on one or more probabilistic model update parameters 1712. The one or more probabilistic model update parameters 1712 may include the actual encoded value of the binary symbol. The context modeler 1706 may adapt the probabilistic model 1710 if the actual encoded value of the binary symbol is not equal to V. MPS In the case of increasing P LPS Update probability model 1710; otherwise, decrease P. LPS To update the probability model.

[0176] An arithmetic encoder (e.g., arithmetic encoder 1704) can process binary symbols with a uniform or substantially uniform probability distribution in a bypass arithmetic coding mode. For example, because the binary symbols processed by arithmetic encoder 1704 in bypass arithmetic coding mode can have a uniform or substantially uniform probability distribution, arithmetic encoder 1704 can bypass the probability model determination and / or adaptation performed in regular arithmetic coding mode when encoding these binary symbols to speed up the encoding process. Additionally, due to the uniform or substantially uniform probability distribution, the subdivision of the current coding interval can be simplified. For example, the current coding interval can be partitioned into two non-adjacent sub-intervals of equal width, which can be implemented using a simple implementation that can further speed up the encoding process. The arithmetic encoder (e.g., arithmetic encoder 1704) can encode binary symbols by selecting the sub-interval corresponding to the value of the binary symbol as the new coding interval for the next binary symbol to be encoded. The resulting improvement in encoding speed for binary symbols encoded by arithmetic encoder 1704 in bypass arithmetic coding mode can be significant because CABAC encoding may have throughput limitations.

[0177] An arithmetic encoder (e.g., arithmetic encoder 1704) can determine arithmetic codewords (e.g., arithmetic codeword 1714) as binary symbols for values ​​within a final encoding interval. The arithmetic encoder 1704 can determine the arithmetic codeword 1714 as binary symbols for values ​​within the final encoding interval, for example, based on processing (e.g., corresponding to one or more syntax elements) several binary symbols. The arithmetic encoder 1704 can output the arithmetic codeword 1714. The arithmetic encoder 1704 can output the arithmetic codeword 1714 to a bitstream that can be received and processed by a video decoder.

[0178] Two syntax elements that can be encoded in bypass arithmetic coding mode are the magnitude of the motion vector difference (MVD) and the magnitude of the block vector difference (BVD). The MVD and BVD syntax elements can be determined as part of Advanced Motion Vector Prediction (AMVP) for inter-frame prediction and AMVP for intra-frame block copying (IBC), respectively, as described herein. Although bypass arithmetic coding mode can be used to speed up the arithmetic coding process, the compression of symbols for the MVD and BVD syntax elements encoded in bypass arithmetic coding mode may be limited because the probability distribution of the symbols is assumed to be uniform. According to information theory, symbols cannot be compressed at a rate less than their entropy without losing information, and symbols with a uniform probability distribution have maximum entropy. Therefore, symbols encoded using bypass arithmetic coding mode typically require more bits to encode compared to symbols encoded using regular arithmetic coding mode.

[0179] The advantages of the improvements described herein include, for example, improved compression efficiency of one or more amplitude symbols of BVD. Instead of entropy encoding of the amplitude symbols of BVD, entropy encoding can be performed to indicate whether the value of the amplitude symbol of BVD matches the value of the amplitude symbol of a BVD candidate used as a predictor of BVD. The BVD predictor can be selected from multiple BVD candidates, for example, based on the cost of multiple BVD candidates. The cost of each of the multiple BVD candidates can be calculated, for example, based on the difference between the template of the current block and the template of a candidate reference block. The candidate reference block can be shifted relative to the current block by the sum of the BVD candidates and the block vector predictor (BVP). The indication of whether the value of the amplitude symbol of BVD matches the value of the amplitude symbol of the BVD predictor may have a non-uniform probability distribution, thereby achieving improved compression efficiency compared to encoding the amplitude symbols of BVD based on a uniform probability distribution.

[0180] The advantages of the improvements described herein also include, for example, improved compression efficiency of one or more amplitude symbols of the MVD. Instead of entropy coding of the amplitude symbols of the MVD, entropy coding can be performed on an indication of whether the value of the amplitude symbol of the MVD matches the value of the amplitude symbol of an MVD candidate used as a predictor of the MVD. The MVD predictor can be selected from multiple MVD candidates, for example, based on the cost of multiple MVD candidates. The cost of each of the multiple MVD candidates can 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 can be displaced relative to the common position of the current block in the reference frame by the sum of the costs of the MVD candidates and / or the motion vector predictor (MVP). The indication of whether the value of the amplitude symbol of the MVD matches the value of the amplitude symbol of the MVD predictor may have a non-uniform probability distribution, thereby achieving improved compression efficiency compared to encoding the amplitude symbols of the MVD based on a uniform probability distribution.

[0181] For example, as described in this paper, both HEVC and VVC include predictive techniques that utilize the correlation between sample blocks within the same image. These predictive 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 being coordinated and explored by the ITU-T Video Coding Experts Group (VCEG) and the Joint Video Exploration Team (JVET) of ISO / IEC MPEG as a potential enhanced video coding technique beyond the capabilities of VVC.

[0182] Figure 18A An example of IBC is shown. If IBC occurs, the encoder can determine a block vector (BV) 1802 that indicates the displacement from the current block 1804 to a reference block or intra-block compensation prediction 1806. The encoder can determine the reference block 1806 from one or more reference blocks tested during the search process. For example, for each of the one or more reference blocks measured during the search process, the encoder can determine the difference between a sample of the reference block and a sample of the current block 1804 (e.g., sum of squared differences (SSD), sum of absolute differences (SAD), sum of absolute transform differences (SATD), and / or a difference determined based on a hash function). The encoder can determine the reference block 1806 from one or more reference blocks based on the reference block 1806 having the minimum difference with the current block 1804 among one or more reference blocks and / or based on some other criterion. The reference block 1806 and / or one or more other reference blocks tested during the search process may include decoded and / or reconstructed samples. Decoded and / or reconstructed samples may not have been processed by in-loop filtering operations (e.g., deblocking and / or SAO filtering).

[0183] The encoder can use reference block 1806 to predict the current block 1804. For example, if reference block 1806 is determined for the current block 1804, the encoder can use reference block 1806 to predict the current block 1804. The encoder can determine and / or use the difference (e.g., the corresponding sample-by-sample difference) between reference block 1806 and the current block 1804. The difference can be referred to as prediction error or residual. The encoder can send the prediction error and / or related prediction information as a signal in the bit stream. The prediction information may include BV 1802. The prediction information may include an indication of BV 1802. The decoder (e.g., as described herein) Figure 3 The decoder can receive a bit stream and / or decode the current block 1804 by using prediction information and / or combining prediction with prediction error to determine a reference block 1806 (which can form a prediction of the current block 1804).

[0184] Predictive encoding can be performed on BV (e.g., BV 1802). This can be done, for example, before signaling BV (e.g., BV 1802) in the bitstream. Predictive encoding of BV (e.g., BV 1802) can be performed, for example, based on the BVs of neighboring blocks of the current block 1804 or the BVs of other blocks. The encoder can perform predictive encoding of BV 1802, for example, using a merge mode or AMVP as described herein. With AMVP, the encoder can encode BV 1802 as the difference between BV 1802 and the BV predictor factor (BVP) 1808, such as... Figure 18A As shown. The encoder can select BVP 1808 from the candidate BVP list. Candidate BVPs can come from previously decoded BVs of adjacent blocks of the current block 1804 or other sources. Both the encoder and decoder can generate or determine the candidate BVP list.

[0185] The encoder can signal indications of BVP (e.g., BVP 1808) and BV difference (e.g., BVD 1810) in the bit stream. The encoder can, for example, select BVP 1808 from a list of candidate BVPs, and signal indications of BVP 1808 and BVD 1810 in the bit stream. The encoder can indicate BVP 1808 in the bit stream by an index pointing to the list of candidate BVPs and / or one or more flags. BVD 1810 can be calculated based on the difference between BV 1802 and BVP 1808. BVD 1810 may include a level component (BVD) that can be determined according to equations (17) and (18) above, respectively. x )1812 and vertical component (BVD) y 1814. Two-component BVD x 1812 and BVD y Each of 1814 includes both amplitude and sign. For example... Figure 18A As shown, BVD x 1812 has a fixed-length binary value of 10011 (or decimal 19) and a negative sign. Figure 18A In the example shown, the positive horizontal direction points to the right. For example... Figure 18A As further shown in the figure, BVD y 1814 has a fixed-length binary value of 01011 (or decimal 11) and a positive sign. Figure 18A In the example shown, the vertical direction points downwards. The encoder can be transmitted via its two components, BVD. x 1812 and BVD y 1814 indicates BVD 1810 in the bit stream.

[0186] The decoder can decode a BV (e.g., BV 1802) by adding BVD 1810 to BVP 1808. The decoder can decode the current block (e.g., current block 1804) by using BV 1802 and combining the prediction with the prediction error to determine a reference block (e.g., reference block 1806) (forming the prediction for the current block 1804). The decoder can determine the reference block 1806 by adding BV 1802 to the position of the current block 1804, which gives the position of the reference block 1806.

[0187] As described herein, the amplitude of a BVD (e.g., BVD 1810) can be encoded in a bypass arithmetic coding mode. While bypass arithmetic coding can be used to speed up the arithmetic coding process, the compression of amplitude symbols of BVD 1810 encoded in bypass arithmetic coding mode may be limited because the probability distribution of these amplitude symbols can be uniform or nearly uniform. According to information theory, symbols cannot be compressed at a rate less than their entropy without losing information, and symbols with a uniform probability distribution have maximum entropy. Therefore, symbols encoded using bypass arithmetic coding mode typically require more bits to encode compared to symbols encoded using a conventional arithmetic coding mode.

[0188] As described herein, the compression efficiency of one or more amplitude symbols of a BVD (e.g., BVD 1810) can be improved. The encoder can entropy-encode an indication of whether the value of an amplitude symbol of BVD 1810 matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD 1810. For example, instead of directly entropy-encoding the amplitude symbols of BVD 1810, the encoder can entropy-encode this indication. The indication of whether the value of an amplitude symbol of BVD 1810 matches the value of the amplitude symbol of a BVD predictor may have a non-uniform probability distribution, thus enabling improved compression efficiency. The encoder can select a BVD predictor from multiple BVD candidates. The encoder can select the BVD predictor from multiple BVD candidates, for example, based on the cost of the multiple BVD candidates. BVD candidates can include BVD candidates for each possible value of the amplitude symbol of BVD 1810. The amplitude symbol of BVD 1810, which can be represented in binary form, has only two possible values. Therefore, a BVD candidate can include two BVD candidates for the representation, with one BVD candidate for each possible value of the amplitude symbol in the encoded BVD 1810: a first BVD candidate equal to BVD 1810 itself, and a second BVD candidate equal to BVD 1810 but with an opposite (or another) value for the amplitude symbol of BVD 1810. The cost of each of the multiple BVD candidates can be calculated, for example, based on the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block can be shifted relative to the current block by the sum of the BVD candidates and BVP 1808.

[0189] Figure 18A An example amplitude symbol 1816 of the BVD 1810 is shown for entropy coding. The amplitude symbol 1816 of the BVD 1810 can be the horizontal component of the BVD 1810. x The second most significant bit in the fixed-length binary representation of BVD 1812, and may have a binary value of "0". As described herein, for example, instead of directly entropy encoding the amplitude symbol 1816 of BVD 1810, the encoder may entropy entropy encode an indication of whether the value of the amplitude symbol 1816 of BVD 1810 matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD 1810. The encoder may select a BVD predictor from multiple BVD candidates, for example, based on the cost of multiple BVD candidates. BVD candidates may include BVD candidates for each of the two possible values ​​{0, 1} of the amplitude symbol 1816 of BVD 1810: a first BVD candidate 1818 equal to BVD 1810 itself, and a second BVD candidate 1820 equal to BVD 1810 but with the opposite (or another) value of the amplitude symbol 1816 of BVD 1810.

[0190] Figure 18B An example BVD candidate for entropy coding of amplitude symbol 1816 for BVD 1810 is shown. Specifically, Figure 18B An example BVD candidate 1818 is shown that is equal to BVD 1810 itself, and a BVD candidate 1820 is equal to BVD 1810 but has the opposite (or another) value for the amplitude sign 1816 of BVD 1810. In the case of the opposite (or another) value for the amplitude sign 1816 of BVD candidate 1818, BVD candidate 1820 has a horizontal component BVD. x 1822, which has a fixed-length binary 11011 (or decimal 27) amplitude and a negative sign. The vertical component of the BVD candidate 1820. y The vertical component BVD of 1824 and BVD candidate 1818 (or BVD 1810) y 1814 has the same fixed-length binary 01011 (or decimal 11) amplitude and positive sign.

[0191] The cost of each of a plurality of BVD candidates can be calculated, for example, based on the difference between the template of the current block 1826 and the template of a candidate reference block shifted relative to the sum of BVD candidates and BVP 1808 from the current block 1804. The encoder can determine the cost of BVD candidate 1818, for example, based on the difference between the template 1826 of the current block 1804 and the template 1828 of the candidate reference block 1830 shifted relative to the sum of BVD candidates 1818 and BVP 1808 from the current block 1804. The encoder can determine the difference between template 1826 and template 1828, for example, based on the difference between a sample of template 1826 and a sample of template 1828. This difference can include, for example, sum of squared differences (SSD), sum of absolute differences (SAD), sum of absolute transform differences (SATD), mean-removed SAD, and / or mean-removed SSD. The encoder can determine the cost of BVD candidate 1820, for example, based on the difference between template 1826 of current block 1804 and template 1832 of candidate reference block 1834, which is shifted relative to current block 1804 up to the sum of BVD candidate 1820 and BVP 1808. The encoder can determine the difference between template 1826 and template 1832 based on the difference between samples of template 1826 and samples of template 1828 (e.g., SSD, SAD, SATD, mean-removed SAD, or mean-removed SSD). Templates 1826, 1828, and 1832 may include one or more samples to the left and / or above their respective blocks. Templates 1826, 1828, and 1832 may include samples from one or more columns to the left of their respective blocks and / or from one or more rows above their respective blocks. Figure 18BAn example position and shape of templates 1826, 1828 and 1832 is shown (e.g., an L-shape rotated 90 degrees clockwise).

[0192] The encoder can select one of a plurality of BVD candidates as the BVD predictor. The encoder can, for example, select one of the plurality of BVD candidates as the BVD predictor based on the cost of determining each of the plurality of BVD candidates. The encoder can select the BVD candidate with the lowest cost among the plurality of BVD candidates as the BVD predictor. Figure 18C A sample table showing components and costs with BVD candidates is provided. It can be assumed that BVD candidates 1818 and 1820 are the only BVD candidates. More BVD candidates can be used. The rows in the table can be sorted by the cost of BVD candidates 1818 and 1820, with the top BVD candidate having the lowest cost. Among BVD candidates 1818 and 1820, BVD candidate 1818 may have the lowest cost. For example, because BVD candidate 1818 has the lowest cost among BVD candidates 1818 and 1820, the encoder may choose BVD candidate 1818 as BVD predictor 1836 for BVD 1810.

[0193] The encoder can entropy-encode an indication (e.g., indication 1838) of whether the value of amplitude sign 1816 of BVD 1810 matches the value of amplitude sign 1816 in BVD predictor 1836. For example, based on selecting BVD candidate 1818 as BVD predictor 1836, the encoder can entropy-encode the indication 1838 of whether the value of amplitude sign 1816 of BVD 1810 matches the value of amplitude sign 1816 in BVD predictor 1836. The amplitude sign 1816 of the BVD predictor (e.g., BVD predictor 1836) can have a value of "0" that matches the value of amplitude sign 1816 of BVD 1810. Indication 1838 can indicate that the value of amplitude sign 1816 of BVD 1810 matches the value of amplitude sign 1816 of BVD predictor 1836. An indication (e.g., indication 1838) can be a single bit with a value of "0" if the value of amplitude symbol 1816 of BVD 1810 matches the value of amplitude symbol 1816 of BVD predictor 1836. An indication (e.g., indication 1838) can also be a single bit with a value of "1" if the value of amplitude symbol 1816 of BVD 1810 does not match the value of amplitude symbol 1816 of BVD predictor 1836. Indication 1838 can be determined using logic (e.g., logic 1840). Logic 1840 can implement a logical XOR function. For example, if amplitude symbol 1816 is non-binary, indication 1838 can indicate a first candidate among multiple candidates (e.g., sorted based on their respective costs) that may have a value of amplitude symbol 1816 that matches the value of amplitude symbol 1816 in BVD 1810.

[0194] exist Figure 18CIn this context, the encoder can entropy encode the indication 1838 using an arithmetic encoder (e.g., arithmetic encoder 1842). For example, based on the method for determining the indication (e.g., indication 1838) described herein, the indication 1838 can have a non-uniform probability distribution. Therefore, the arithmetic encoder 1842 can process the indication 1838 in a conventional arithmetic coding mode, as described herein. The arithmetic encoder 1842 can subdivide the current coding interval into m non-adjacent sub-intervals. Each of the m non-adjacent sub-intervals can have a width proportional to the probability that the encoded symbol has a distinct value from the m-ary source alphabet. For the binary indication 1838, the value m can be equal to two, and the current coding interval can be subdivided into two non-adjacent intervals, each interval having a width proportional to the probability that the indication 1838 is encoded with two distinct values ​​{0, 1}. The probabilities of the two possible values ​​of the indication 1838 can be indicated by a probability model 1844 for the indication 1838. Arithmetic encoder 1842 can encode indicator 1838 by selecting a sub-interval corresponding to the actual value of indicator 1838 as a new encoding interval for the next binary symbol to be encoded.

[0195] An arithmetic encoder (e.g., arithmetic encoder 1842) can receive a probability model (e.g., probability model 1844) from a context modeler (e.g., context modeler 1846). The context modeler 1846 can determine the probability model 1844 of an indication (e.g., indication 1838) by either a fixed selection or an adaptive selection from two or more probability models. The context modeler 1846 can be, for example, based on BVD 1810. x The position of amplitude sign 1816 in 1812 or BVD 1810. x The position index of the amplitude symbol 1816 in 1812 (e.g., the value indicating said position) is determined by a fixed selection or an adaptive selection from two or more probability models to determine the probability model 1844. BVD 1810 x The position of the amplitude sign 1816 in 1812 (e.g., position index) can provide the distance 1853 between two candidate BVDs (as discussed in this paper). Figure 18B The probability that the amplitude sign 1816 of BVD predictor 1836 matches the amplitude sign 1816 of BVD 1810 can be related to the distance 1853. More specifically, the larger the distance 1853 between candidate BVDs, the greater the degree of difference between the corresponding templates of the candidate BVDs is likely to be. The greater the difference between the corresponding templates of the BVD candidates, the more likely the cost of the BVD candidate is to accurately reflect the BVD candidate with an amplitude sign 1816 value that matches the amplitude sign 1816 value of BVD 1810.x The position of the amplitude symbol 1816 in 1812 (e.g., position index) can help in selecting the probability model 1844 for the indication 1838.

[0196] For adaptive selection from two or more probability models, the context modeler 1846 can convert the BVD of BVD1810. x The position and / or position index of the amplitude sign 1816 in 1812 (also referred to herein as the salience of the amplitude sign 1816) are compared with one or more thresholds. The context modeler 1846 can perform BVD of BVD 1810. x The position and / or position index of the amplitude symbol 1816 in 1812 are compared with a first threshold. The context modeler 1846 can, for example, be based on BVD 1810. x If the position and / or position index of the amplitude sign 1816 in 1812 is less than a threshold, an indication 1838 is given to select the first probability model. The context modeler 1846 can, for example, be based on BVD 1810. x The position and / or position index of the amplitude sign 1816 in 1812 is greater than a threshold, thus indicating the selection of a second probability model in 1838. The context modeler 1846 can, for example, be based on BVD 1810. x The position and / or position index of amplitude symbol 1816 in 1812 is greater than the threshold, thus reducing the BVD of 1810. x The position and / or position index of the amplitude symbol 1816 in 1812 are compared with a second threshold. The context modeler 1846 can, for example, be based on BVD 1810. x If the position and / or position index of the amplitude sign 1816 in 1812 is less than the second threshold, then the second probability model is selected as indicated in 1838. The context modeler 1846 can, for example, be based on BVD 1810. x The position and / or position index of the amplitude symbol 1816 in 1812 is greater than the second threshold, thus indicating the selection of the third probability model in 1838.

[0197] The context modeler 1846 can determine the probability model 1844, for example, based on the incremental change in the value of the amplitude sign 1816 of BVD 1810 (also referred to herein as the significance of the amplitude sign 1816), the change in the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810, through a fixed selection and / or an adaptive selection from two or more probability models. The change in the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810, the incremental change in the value of the amplitude sign 1816 of BVD 1810, can be determined as 2. (n-1)Where n is the BVD of BVD 1810. x The bit position of amplitude symbol 1816 in 1812. For example, if n=4, the value change of BVD 1810 and / or BVDx 1812 of BVD1810 can be determined as 2 for the incremental change of the value of amplitude symbol 1816 of BVD 1810. (4-1) Or 8. The incremental change of the value of BVD 1810 and / or the change of the value of BVDx 1812 of BVD 1810 for the magnitude sign 1816 of BVD 1810 can provide the distance 1854 between two candidate BVDs (e.g., as described in this paper regarding...). Figure 18B As described herein, the probability that the value of the amplitude sign 1816 of BVD predictor 1836 matches the value of the amplitude sign 1816 of BVD 1810 may be related to the distance 1854. More specifically, the larger the distance 1854 between candidate BVDs, the greater the degree of difference between the corresponding templates of the candidate BVDs may be. The greater the difference between the corresponding templates of the BVD candidates, the more likely the cost of the BVD candidates is to accurately reflect the BVD candidates with amplitude sign 1816 values ​​that match the value of amplitude sign 1816 of BVD 1810. Therefore, the change in the value of BVD 1810 and / or the value of BVDx 1812 of BVD 1810 in response to the incremental change in the value of amplitude sign 1816 of BVD 1810 can help select a probabilistic model 1844 for indication 1838.

[0198] For adaptive selection from two or more probability models, the context modeler 1846 can compare the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810, representing the incremental change in the value of the amplitude sign 1816 of BVD 1810, with one or more thresholds. The context modeler 1846 can compare the values ​​of BVD 1810 and / or BVDx 1812 of BVD 1810, representing the incremental change in the value of the amplitude sign 1816 of BVD 1810, with a first threshold. The context modeler 1846 can, for example, select the first probability model based on the fact that the value of BVD 1810 and / or BVDx 1812 of BVD 1810, representing the incremental change in the value of the amplitude sign 1816 of BVD 1810, is less than a threshold. The context modeler 1846 may, for example, select a second probability model for indication 1838 based on the value of BVD 1810 and / or BVDx1812 of BVD 1810 being greater than a threshold, for example, based on the incremental change of the value of BVD 1810 and / or BVDx1812 of BVD 1810 being greater than a threshold. The context modeler 1846 may, for example, compare the value of BVD 1810 and / or BVDx1812 of BVD 1810 being greater than a threshold with a second threshold. The context modeler 1846 may, for example, select a second probability model for indication 1838 based on the incremental change in the value of BVD 1810 and / or the value of BVDx 1812 of BVD 1810 for the magnitude sign 1816 of BVD 1810 being less than a second threshold. The context modeler 1846 may, for example, select a third probability model for indication 1838 based on the incremental change in the value of BVD 1810 and / or the value of BVDx 1812 of BVD 1810 for the magnitude sign 1816 of BVD 1810 being greater than a second threshold.

[0199] like Figure 18C As shown, a probability model (e.g., probability model 1844) may include two parameters: the probability P indicating the lowest probability sign (LPS) of 1838. LPS And the value V of the highest probability symbol (MPS) indicating 1838 MPS The probability P of LPS indicating 1838. LPS As a supplement or alternative, probability model 1844 may include the probability P indicating the MPS of 1838. MPS Similarly, the value V of MPS, indicating 1838. MPSAs a supplement or alternative, the probability model (e.g., probability model 1844) may include a value V indicating the LPS of 1838. LPS The arithmetic encoder 1842 can provide one or more probabilistic model update parameters 1850 to the context modeler 1846. The arithmetic encoder 1842 can provide one or more probabilistic model update parameters 1850 to the context modeler 1846, for example, based on encoding indication 1838 using the arithmetic encoder 1842. The context modeler 1846 can adapt the probabilistic model 1844 based on one or more probabilistic model update parameters 1850. One or more probabilistic model update parameters 1850 can include the actual encoded value of indication 1838. If the actual encoded value of indication 1838 is not equal to V... MPS Then the context modeler 1846 can increase the P of the indicator 1838. LPS To update the probability model (e.g., probability model 1844), or otherwise by decreasing the P of indicator 1838. LPS To update the probability model.

[0200] An arithmetic encoder (e.g., arithmetic encoder 1842) can determine arithmetic codewords (e.g., arithmetic codeword 1852) as binary symbols for values ​​within a final encoding interval. The arithmetic encoder 1842 can determine the arithmetic codeword 1852 as binary symbols for values ​​within the final encoding interval, for example, based on processing (e.g., corresponding to one or more syntax elements) several binary symbols. 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.

[0201] Figure 18D An example of a decoder for determining the amplitude signal of BVD is shown. Figure 18D The decoder is shown (e.g., as about...) Figure 3 An example of the decoder 300 is that the decoder may receive an arithmetic codeword (e.g., arithmetic codeword 1852), an arithmetic decoding instruction from the arithmetic codeword 1852 (e.g., arithmetic decoding instruction 1838), and use the instruction 1838 to determine the amplitude symbol of the BVD 1810 (e.g., amplitude symbol 1816).

[0202] The decoder can receive an arithmetic codeword (e.g., arithmetic codeword 1852) in a bitstream. The decoder can provide an arithmetic codeword (e.g., arithmetic codeword 1852) to an arithmetic decoder 1854. Based on the method for determining indication 1838 as described herein, indication 1838 can have a non-uniform probability distribution. Therefore, arithmetic decoder 1854 can process indication 1838 in a conventional arithmetic decoding mode. The arithmetic decoder (e.g., arithmetic decoder 1854) can perform recursive interval subdivision as explained herein to decode the symbol encoded by arithmetic codeword 1852. The arithmetic decoder (e.g., arithmetic decoder 1854) can perform arithmetic decoding on symbols that can take values ​​from an m-ary source alphabet by dividing an initial encoding interval into m non-adjacent sub-intervals. Each of the m non-adjacent sub-intervals can have a width proportional to the probability that the symbol has a distinct value from the m-ary source alphabet. The value m can be equal to two, and the initial encoding interval can be subdivided into two non-adjacent intervals, each interval having a width proportional to the probability that a binary symbol such as 1838 has two distinct values ​​in the possible values ​​{0, 1}. The probability that a symbol has distinct values ​​in the m-ary source alphabet can be called the probabilistic model of the symbol, as described herein. By determining the symbol value corresponding to the sub-interval in which the arithmetic codeword 1852 falls, the symbol can be arithmetically decoded according to the arithmetic codeword. The decoder can sequentially decode the sequence s = {s1, s2, ..., s...} encoded by the arithmetic codeword 1852 by recursively using this interval subdivision scheme N times and determining which sub-interval the arithmetic codeword 1852 falls in at each iteration. N Each symbol s i .

[0203] An arithmetic decoder (e.g., arithmetic decoder 1854) can receive a probability model (e.g., probability model 1844) of indication 1838 from a context modeler 1846. For example, if the symbol corresponding to indication 1838 is decoded, the arithmetic decoder (e.g., arithmetic decoder 1854) can receive a probability model (e.g., probability model 1844) of indication 1838 from a context modeler 1846. (See the document regarding...) Figure 18C As shown in the context modeler 1846, the context modeler (e.g., context modeler 1856) can determine the probability model 1844 of the indication 1838 by either a fixed selection or by an adaptive selection from two or more probability models.

[0204] like Figure 18DAs shown, an arithmetic decoder (e.g., arithmetic decoder 1854) can provide one or more probabilistic model update parameters 1850 to a context modeler (e.g., context modeler 1856). The arithmetic decoder 1854 can provide one or more probabilistic model update parameters 1850 to the context modeler 1856, for example, based on (e.g., after) decoding indication 1838. The context modeler 1856 can adapt the probabilistic model 1844. The context modeler 1856 can adapt the probabilistic model 1844, for example, based on one or more probabilistic model update parameters 1850. One or more probabilistic model update parameters 1850 can include the actual decoded value of indication 1838. If the actual decoded value of indication 1838 is not equal to V... MPS Then the context modeler 1856 can increase the P of the indicator 1838. LPS Update probability model 1844 by reducing the P-value of indicator 1838. LPS To update the probability model.

[0205] The decoder can, for example, determine the value of the amplitude sign 1816 of BVD 1810 based on the value of the amplitude sign 1816 of the BVD predictor factor 1836 and the value of the indicator 1838. The decoder can, for example, determine the value of the amplitude sign 1816 of BVD 1810 based on the value of the amplitude sign 1816 of the BVD predictor factor 1836 and the value of the indicator 1838 after entropy decoding of the indicator 1838. The decoder can, for example, determine the value of the amplitude sign 1816 of BVD 1810 as equal to the amplitude sign of the BVD predictor factor 1836 by matching the value of the amplitude sign 1816 of the BVD predictor factor 1836 with the value of the amplitude sign 1816 of the BVD predictor factor 1836. The decoder can, for example, determine that the value of the amplitude symbol 1816 of BVD 1810 is not equal to the amplitude symbol 1816 of BVD 1836, or is equal to a relative value of the amplitude symbol, based on, for example, an indication 1838 indicating that the value of the amplitude symbol 1816 of BVD 1810 does not match the value of the amplitude symbol 1816 of BVD predictor 1836. The amplitude symbol 1816 of BVD predictor 1836 may have a value of "0" that matches the value of the amplitude symbol 1816 of BVD 1810. Indicator 1838 may indicate that the value of the amplitude symbol 1816 of BVD 1810 matches the value of the amplitude symbol 1816 of BVD predictor 1836. Indicator 1838 may, for example, have a single bit with a value of "0" in the case that the value of the amplitude symbol 1816 of BVD 1810 matches the value of the amplitude symbol 1816 of BVD predictor 1836. Indicator 1838 can be a single bit with a value of "1", for example, if the value of amplitude sign 1816 in BVD 1810 does not match the value of amplitude sign 1816 in BVD predictor 1836. Logic 1858 can be used to determine the amplitude sign 1816 of BVD 1810. Logic 1858 can implement a logical XOR function. For example, if amplitude sign 1816 is not binary, indicator 1838 can indicate the first candidate among multiple candidates (e.g., sorted based on their respective costs) that has a value of amplitude sign 1816 that matches the value of amplitude sign 1816 in BVD 1810.

[0206] The decoder can determine the value of the amplitude symbol 1816 of the BVD predictor 1836, as described herein. More specifically, the decoder can select a BVD predictor (e.g., BVD predictor 1836) from multiple BVD candidates based on the cost of multiple BVD candidates. BVD candidates can include BVD candidates for each possible value of the amplitude symbol of BVD 1810. The amplitude symbol of BVD 1810, represented in binary form, may have only two possible values. Therefore, BVD candidates can include at least two BVD candidates for that representation, with one BVD candidate for each possible value of the amplitude symbol in the encoded BVD 1810: a first BVD candidate that may be equal to BVD 1810 itself, and a second BVD candidate that may be equal to BVD 1810 but whose amplitude symbol has the opposite (or another) value. As described herein with respect to the encoder, the cost of each of the multiple BVD candidates can be calculated. As described in this paper regarding the encoder, the cost of each of the multiple BVD candidates can be calculated, for example, based on the difference between the template of the current block 1804 and the template of the candidate reference block. The candidate reference block can be shifted relative to the current block by the sum of the BVD candidate and BVP 1808. The decoder can select the BVD candidate with the lowest cost as the BVD predictor factor 1836.

[0207] An example method for entropy coding indicating whether the value of the magnitude sign of BVD matches or does not match the value of the magnitude sign of the BVD candidate used as a predictor of BVD (as discussed in this paper). Figure 18A The -D approach (discussed here) can be used for multiple amplitude symbols in BVD. This example method can be further applied to BVD. x One or more amplitude symbols other than amplitude symbol 1816. For BVD x Each additional amplitude symbol of 1816 can be used with respect to that amplitude symbol using the provisions of this document. Figure 18A The example method described with -D can determine additional candidate BVPs. This method can be used, for example, for BVD. x The N amplitude symbols of 1816 (where N is an integer value) can determine 2^N distinct BVP candidates, BVD x Each possible value of the N amplitude symbols of 1816 is combined into a BVP candidate. For each of the BVP candidates, a cost value can be further determined and sorted to determine the value used for BVD. x The BVP predictor is encoded for each of the N amplitude symbols of 1816.

[0208] As a response to BVD x Supplements or substitutions to one or more amplitude symbols of 1816, as discussed in this paper. Figure 18AThe example method described in -D for entropy coding indicating whether the value of the magnitude sign of BVD matches or does not match the value of the magnitude sign of the BVD candidate used as a predictor of BVD can be applied to BVD. y One or more amplitude symbols of 1814.

[0209] Furthermore, as a supplement to or alternative to one or more amplitude symbols of BVD used in IBC, this paper discusses... Figure 18A The method described in -D can be used for one or more magnitude symbols of MVD used in inter-frame prediction. For inter-frame prediction, based on this disclosure, Figure 18A The terms BV, BVP, BVD, and BVD candidates used in -D can be replaced by the terms MV, MVP, MVD, and MVD.

[0210] This article is about Figure 18A The examples discussed in -D can be used for IBC and inter-frame prediction, for example, based on block-based translational motion models. (See also the section on...) Figure 18A The example described in -D can be used for, for example, IBC and inter-frame prediction based on affine motion models of prediction blocks.

[0211] This article is about Figure 18A The entropy encoding method discussed in -D, which indicates whether the value of the magnitude symbol of BVD matches the value of the magnitude symbol of BVD candidates used as predictors of BVD, can be applied to multiple magnitude symbols of BVD. For example, the method described herein can be used for BVD. x One or more amplitude symbols other than amplitude symbol 1816 and / or BVD of 1812 y One or more amplitude symbols of 1814. The methods discussed in this paper can be used for BVD. x 1812 and / or BVD y Each additional amplitude sign of 1814 determines an additional candidate BVP. This can be achieved, for example, by using this article about Figure 18A The method described by -D is relative to BVD x 1812 and / or BVD y The N amplitude symbols of 1814 (where N is an integer value) determine the distinct BVP candidates, BVD. x 1812 and / or BVD y Each possible value of the N amplitude symbols of 1814 is combined into a BVP candidate. A cost value can be determined for each of the BVP candidates to determine the cost for BVD. x 1812 and / or BVD y The BVD predictor is encoded for each of the N amplitude symbols of 1814.

[0212] In addition to using a fixed-length binary representation, the components of BVD 1810 are BVD y 1814 and BVD x Other binarizations of 1816 and BVD candidate components are also possible. Components of BVD 1810 are also possible. y 1814 and BVD x 1816 can be represented, for example, by one of a wide range of codes, which may include two parts: a prefix and a suffix. Such codes include, for example, Rice code and Columbus code (e.g., Columbus-Rice code or exponential Columbus code). See, for example, [link to relevant documentation]. Figure 18A -D allows the use of Columbus-Leys code to convert the horizontal component of BVD 1810. x Amplitude binarization of 1812. Columbus-Reiss codes have the structure described in this paper: a prefix indicating a range of values, and a suffix indicating the exact value within that range. Columbus-Reiss codes of order k... grk (v) consists of a unary encoded prefix and k suffix bits. The k suffix bits are integers 0 ≤ i < 2. k The binary representation of x. Table 1 below shows an example of Columbus-Leys code for k = 4. In the table and the following description, x0, x1, ..., x... n It can represent having x n The bits of the codeword {0, 1}.

[0213]

[0214] The number of prefix bits can be represented as n p The number of suffix positions can be represented as n. s For Columbus-Leys code, the number of suffix bits can be n. s = k. The number of prefix bits can be determined by the following formula:

[0215]

[0216] If the value v is encoded, then... It is the integer part of x. The suffix can be n in the following expression. s Bit representation:

[0217]

[0218] The Columbus-Less code discussed above can use a fixed-length suffix. The length of the suffix can also be determined by the length of the prefix. Exponential Columbus codes (e.g., Exp-Golomb) can use this method and can be further used for the level component BVD of BVD 1810. xThe amplitude of 1812 is binarized. k-order exponential Golomb code C eg k (v) may include unary prefix codes and / or variable-length suffixes. Suffix n s The number of bits in the value n can be determined by the value n. p The following is determined:

[0219]

[0220] C eg k (v) prefix n p The quantity can be determined from the value v by the following formula:

[0221]

[0222] Then, the suffix can be n in the following formula. s Bit representation:

[0223]

[0224] Table 2 below shows an example of exponential Golomb codes with k = 1.

[0225]

[0226] See Figure 18A -D, the horizontal component of BVD 1810 x The amplitude of 1812 can have a decimal value of 19, which can be represented by Columbus-Leys code and / or exponential Columbus code. For example, BVD x The amplitude of 1812 can be represented by k=4 exponential Golomb codes with a prefix "0001" and a suffix "0101". The prefix "0001" indicates BVD. x The amplitude of 1812 falls within the range of 14 to 29, and the suffix "0101" indicates BVD. x The amplitude of 1812 can have a precise value of 19, ranging from 14 to 29. See also Figure 18A -D, the vertical component of BVD 1810 y The amplitude of 1814 can have a decimal value of 11, which can be represented by Columbus-Leys code or exponential Columbus code. For example, BVD y The amplitude of 1814 can be represented by k=4 exponential Golomb code with a prefix "001" and a suffix "101". The prefix "001" indicates BVD. y The amplitude of 1814 falls within the range of 6 to 13, and the suffix "101" indicates BVD. y The amplitude of 1814 can have a precise value of 11 in the range of 6 to 13.

[0227] Figure 19 This illustrates a method by which the context modeler determines the probabilistic model of an indication. More specifically, Figure 19 The method by which the context modeler 1846 determines the probability model 1844 of the instruction 1838 is shown. Figure 19 The steps described in this paper are performed by the context modeler 1846. These steps can be performed by the encoder. Figure 19 One or more steps (e.g., all steps).

[0228] As this article is about Figure 19 As described, at step 1902, the context modeler 1846 can determine that the amplitude sign 1816 of BVD 1810 is in the level component of BVD 1810 (i.e., in BVD 1810). x In 1812) or in the vertical component of BVD 1810 (i.e., in BVD) y (1814).

[0229] For example, if the amplitude sign 1816 of BVD 1810 is the horizontal component of BVD 1810 (i.e., in BVD...) x If (in step 1812), then the context modeler 1846 will proceed to step 1904. At step 1904, the context modeler 1846 can determine whether the significance of the amplitude sign 1816 of BVD 1810 is less than a threshold T. For example, the significance of the amplitude sign 1816 may refer to the position (and / or position index) of the amplitude sign 1816 and / or the change in the value of BVD 1810 (and / or the change in the value of BVD x 1812 of BVD 1810) relative to the value of the amplitude sign 1816 of BVD 1810. The change in the value of BVD 1810 and / or the change in the value of BVD x 1812 of BVD 1810 relative to the value of the amplitude sign 1816 of BVD 1810 can be determined as 2. (n-1) Where n is the BVD of BVD1810 x The bit position of the amplitude symbol 1816 in 1812. For example, if n=4, the value change of BVD 1810 and / or BVDx 1812 of BVD 1810 can be determined as 2 for the incremental change of the value of the amplitude symbol 1816 of BVD 1810. (4-1) Or 8. The change in the value of BVD 1810 and / or the change in the value of BVD x1812 of BVD 1810 for the incremental change of the value of the amplitude sign 1816 of BVD 1810 can, for example, be multiplied by a scaling factor before being compared with a threshold T. For example, for a scaling factor F, the significance of the amplitude sign 1816 can be determined as For example, if the amplitude symbol 1816 is part of the Columbus-Less code suffix, the value of the scaling factor F can be defined using the Integer Motion Vector (IMV) flag. For instance, if the IMV flag is equal to 1, the scaling factor F can be set to 4; otherwise, it can be set to 0. The threshold T can be set to a value of 4.

[0230] For example, if the context modeler 1846 determines at step 1904 that the significance of the magnitude sign 1816 is less than the threshold T, then the context modeler 1846 can proceed to step 1906. At step 1906, the context modeler 1846 can select a first probability model as probability model 1844 from among multiple probability models.

[0231] Alternatively, for example, if the context modeler 1846 determines at step 1904 that the significance of the magnitude sign 1816 is greater than or equal to the threshold T, then the context modeler 1846 can proceed to step 1908. As described herein, the above refers to... Figure 18A The entropy coding method described in -D, used to indicate 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, can be applied to multiple magnitude symbols of BVD. For example, entropy coding can be used for BVD. x One or more amplitude symbols other than amplitude symbol 1816 and / or BVD of 1812 yOne or more amplitude symbols of BVD 1814. Context modeler 1846 may select probabilistic model 1844 from multiple probabilistic models using an indication of whether the value of another amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. This indication may correspond to an indication entropy-encoded prior to the indication determined for amplitude symbol 1816. Context modeler 1846 may select a second probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 1910. Context modeler 1846 may select the second probabilistic model as probabilistic model 1844, for example, based on a previous indication that the value of the amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. Context modeler 1846 may select a third probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 1912. Context modeler 1846 may select the third probabilistic model as probabilistic model 1844, for example, based on a previous indication that the magnitude sign of BVD 1810 (e.g., may be different from the magnitude sign of magnitude sign 1816) does not match the value of the same magnitude sign of a BVD candidate used as a predictor of BVD. The selection may be based on the information provided herein regarding... Figure 18A The method discussed in -D performs entropy encoding for the indication defined by BVD 1810. It can be based on the information presented in this paper, encoded in order from the least significant bit position to the most significant bit position. Figure 18A The method described in -D entropy encoding is performed on the indications defined in BVD 1810.

[0232] For example, if at step 1902 it is determined that the amplitude sign 1816 of BVD 1810 is in the vertical component of BVD 1810 (i.e., in BVD 1810) y If (in step 1814), then the context modeler 1846 may proceed to step 1914. At step 1914, the context modeler 1846 may determine whether the significance of the amplitude sign 1816 of BVD 1810 is less than a threshold T. For example, the significance of the amplitude sign 1816 may refer to the position and / or position index of the amplitude sign 1816 or the change in the value of BVD 1810 relative to the incremental change in the value of the amplitude sign 1816 of BVD 1810. The change in the value of BVD 1810 and / or the change in the value of BVDx 1812 of BVD 1810 relative to the incremental change in the value of the amplitude sign 1816 of BVD 1810 may, for example, be multiplied by a scaling factor before being compared with the threshold T. For example, for a scaling factor F, the significance of the amplitude sign 1816 may be determined as... For example, if the amplitude symbol 1816 is part of the Columbus-Less code suffix, the value of the scaling factor F can be defined using an integer motion vector (“IMV”) flag. If the flag is equal to 1, the scaling factor F can be set to 4; otherwise, it can be set to 0. The threshold T can be set to a value of 4.

[0233] For example, if the context modeler 1846 determines at step 1914 that the significance of the magnitude sign 1816 is less than a threshold T, then the context modeler 1846 can proceed to step 1916. At step 1916, the context modeler 1846 can select a fourth probability model as probability model 1844 from among multiple probability models.

[0234] Alternatively, for example, if the context modeler 1846 determines at step 1914 that the significance of the magnitude sign 1816 is greater than or equal to the threshold T, then the context modeler 1846 can proceed to step 1918. As mentioned herein, the above regarding Figure 18A The entropy coding method described in -D, used to indicate 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, can be applied to multiple magnitude symbols of BVD. For example, entropy coding can be further used for BVD. x One or more amplitude symbols other than amplitude symbol 1816 and / or BVD of 1812 yOne or more amplitude symbols of BVD 1814. Context modeler 1846 may select probabilistic model 1844 from multiple probabilistic models using an indication of whether the value of another amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. This indication may correspond to an indication entropy-encoded prior to the indication determined for amplitude symbol 1816. Context modeler 1846 may select a fifth probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 1920. Context modeler 1846 may select the fifth probabilistic model as probabilistic model 1844, for example, based on a previous indication that the value of the amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. Context modeler 1846 may select a sixth probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 1922. Context modeler 1846 may select the sixth probabilistic model as probabilistic model 1844, for example, based on a previous indication that the magnitude sign of BVD 1810 (e.g., may be different from the magnitude sign of magnitude sign 1816) does not match the value of the same magnitude sign of a BVD candidate used as a predictor of BVD. The selection may be based on the information presented herein, in order from the most significant bit position to the least significant bit position. Figure 18A The method discussed in -D performs entropy encoding for the indication defined by BVD 1810. It can be based on the information presented in this paper, encoded in order from the least significant bit position to the most significant bit position. Figure 18A The method described in -D entropy encoding is performed on the indications defined in BVD 1810.

[0235] As this article is about Figure 19 As described herein, the context modeler 1846 can select a probabilistic model 1844 regardless of whether the magnitude sign 1816 is in the horizontal or vertical component of the BVD 1810 (e.g., by omitting step 1902). As per this document regarding... Figure 19 The context modeler 1846 may further or alternatively select a probability model 1844 without considering whether the significance of the magnitude sign 1816 is less than a threshold T (e.g., by omitting steps 1904, 1906, 1914 and / or 1916).

[0236] The context modeler 1856 and / or decoder can be used in conjunction with this paper regarding... Figure 19 The probability model 1844 for indicative 1838 is determined in the same manner as described for context modeler 1846 by a fixed selection and / or by an adaptive selection from two or more probability models.

[0237] Figure 20 An example method is shown where the context modeler determines the probabilistic model indicative of 1838. More specifically, Figure 20 An example method is shown for the context modeler 1846 to determine the probability model 1844 of the instruction 1838. Figure 20 One or more steps are described in this paper as being performed by a context modeler (e.g., context modeler 1846). However, they can be performed by the encoder. Figure 20 One or more steps (e.g., all steps).

[0238] As this article is about Figure 20 As discussed, the context modeler 1846 can determine at step 2002 whether the significance of the amplitude sign 1816 of BVD 1810 is less than a threshold T. For example, the significance of the amplitude sign 1816 may refer to the position and / or position index of the amplitude sign 1816 or the value change of BVD 1810 and / or BVDx 1812 of BVD 1810 for the incremental change of the value of the amplitude sign 1816 of BVD 1810. The value change of BVD 1810 and / or BVDx 1812 of BVD 1810 for the incremental change of the value of the amplitude sign 1816 of BVD 1810 can be determined as 2. (n-1) Where n is the BVD of BVD 1810. x The bit position of the amplitude symbol 1816 in 1812. For example, if n=4, the value change of BVD 1810 and / or BVDx 1812 of BVD 1810 can be determined as 2 for the incremental change of the value of the amplitude symbol 1816 of BVD 1810. (4-1) Or 8. The change in the value of BVD 1810 and / or the change in the value of BVDx 1812 of BVD 1810 for the incremental change of the value of the amplitude sign 1816 of BVD 1810 can, for example, be multiplied by a scaling factor before being compared with a threshold T. For example, for a scaling factor F, the significance of the amplitude sign 1816 can be determined as For example, if the amplitude symbol 1816 is part of the Columbus-Less code suffix, the IMV flag can be used to define the value of the scaling factor F. For example, if the IMV flag is equal to 1, the scaling factor F can be set to 4; otherwise, it can be set to 0. The threshold T can be set to a value of 4.

[0239] For example, if the context modeler 1846 determines at step 2002 that the significance of the magnitude sign 1816 is less than the threshold T, then the context modeler 1846 can proceed to step 2004. (See the document regarding...) Figure 18AAs described in -D, entropy coding can be used for multiple amplitude symbols of BVD, similar to an indication of whether the value of the amplitude symbol of BVD matches the value of the amplitude symbol of a BVD candidate used as a predictor of BVD. For example, entropy coding can be used for BVD. x One or more amplitude symbols other than amplitude symbol 1816 and / or BVD of 1812 y One or more amplitude symbols of BVD 1814. A context modeler (e.g., context modeler 1846) can select a probabilistic model 1844 from multiple probabilistic models using an indication of whether the value of another amplitude symbol of BVD 1810 (e.g., an amplitude symbol that may be different from amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. This indication may correspond to an indication entropy-encoded prior to the indication determined for amplitude symbol 1816. At step 2006, context modeler 1846 may select a first probabilistic model as probabilistic model 1844 from multiple probabilistic models, for example, based on a previous indication that the value of the amplitude symbol of BVD 1810 (e.g., an amplitude symbol that may be different from amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. Context modeler 1846 can, at step 2008, select a second probabilistic model as probabilistic model 1844 from multiple probabilistic models, for example, based on a previous indication that the magnitude sign of BVD 1810 (e.g., different from the magnitude sign of magnitude sign 1816) does not match the value of the same magnitude sign of a BVD candidate used as a predictor of BVD. The selection can be based on the information presented herein, in order from the most significant bit position to the least significant bit position. Figure 18A The method discussed in -D performs entropy encoding for the indication defined by BVD 1810. It can be performed according to the order from the least significant bit position to the most significant bit position, based on the information presented in this paper. Figure 18A The method described in -D entropy encoding is performed on the indications defined in BVD 1810.

[0240] Alternatively, for example, if the context modeler determines at step 2002 that the significance of the amplitude sign 1816 is greater than or equal to a threshold T, then the context modeler (e.g., context modeler 1846) can proceed to step 2010. At step 2010, the context modeler 1846 (e.g., context modeler 1846) can determine that the amplitude sign 1816 of BVD 1810 is in the level component of BVD 1810 (e.g., in BVD 1810). x In 1812) or in the vertical component of BVD 1810 (e.g., in BVD 1812) y (1814).

[0241] For example, if the amplitude sign 1816 of BVD 1810 is the horizontal component of BVD 1810 (e.g., in BVD...) x If in step 1812), then context modeler 1846 can proceed to step 2012. This article is about... Figure 18A The entropy-encoded disclosure of the -D statement regarding whether the value of the magnitude symbol of BVD matches the value of the magnitude symbol of BVD candidates used as predictors of BVD can be applied to multiple magnitude symbols of BVD. This document discusses... Figure 18A The entropy-encoded disclosure of the indication discussed in -D regarding whether the value of the magnitude sign of BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of BVD can be used, for example, for BVD. x One or more amplitude symbols of 1812, excluding amplitude symbol 1816. Alternatively or additionally, this document refers to... Figure 18A The entropy-encoded disclosure of the indication discussed in -D regarding whether the value of the magnitude sign of BVD matches the value of the magnitude sign of the BVD candidate used as a predictor of BVD can be used, for example, for BVD. y One or more amplitude symbols of BVD 1814. For example, context modeler 1846 may select probabilistic model 1844 from multiple probabilistic models using an indication of whether the value of another amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. This indication may correspond to an indication entropy-encoded prior to the indication determined for amplitude symbol 1816. Context modeler 1846 may select a third probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 2014, for example, based on a previous indication that the value of the amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. Context modeler 1846 may, at step 2016, select a fourth probabilistic model as probabilistic model 1844 from multiple probabilistic models, for example, based on a previous indication that the magnitude sign of BVD 1810 (e.g., may be different from the magnitude sign of magnitude sign 1816) does not match the value of the same magnitude sign of a BVD candidate used as a predictor of BVD. The selection may be based on the information presented herein, in order from the most significant bit position to the least significant bit position. Figure 18A The disclosures and methods discussed in -D describe entropy encoding of the indications defined in BVD 1810. Entropy encoding can be performed based on the information presented in this paper, in order from the least significant bit position to the most significant bit position. Figure 18A The disclosures and methods discussed in -D entropy encoding are performed on the instructions defined in BVD 1810.

[0242] For example, if at step 2010 it is determined that the amplitude sign 1816 of BVD 1810 is in the vertical component of BVD 1810 (e.g., in BVD 1810...). y In step 1814), the context modeler 1846 can proceed to step 2020. Entropy encoding of an indication of whether the value of the magnitude sign of BVD matches the value of the magnitude sign of a BVD candidate used as a predictor of BVD can be used for multiple magnitude signs of BVD. Entropy encoding can be used for BVD. x One or more amplitude symbols other than amplitude symbol 1816 and / or BVD of 1812 y One or more amplitude symbols of BVD 1814. Context modeler 1846 can select probabilistic model 1844 from multiple probabilistic models using an indication of whether the value of another amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. This indication may correspond to an indication that may have been entropy-encoded prior to the indication determined for amplitude symbol 1816. Context modeler 1846 can select a fifth probabilistic model as probabilistic model 1844 from multiple probabilistic models at step 2022, for example, based on a previous indication that the value of the amplitude symbol of BVD 1810 (e.g., different from the amplitude symbol of amplitude symbol 1816) matches the value of the same amplitude symbol of a BVD candidate used as a predictor of BVD. Context modeler 1846 may, at step 2024, select a sixth probabilistic model as probabilistic model 1844 from multiple probabilistic models, for example, based on a previous indication that the magnitude sign of BVD 1810 (e.g., may be different from the magnitude sign of magnitude sign 1816) does not match the value of the same magnitude sign of a BVD candidate used as a predictor of BVD. The selection may be based on the information presented herein, in order from the most significant bit position to the least significant bit position. Figure 18A The disclosures and methods discussed in -D describe entropy encoding of the indications defined in BVD 1810. Entropy encoding can be performed based on the information presented in this paper, in order from the least significant bit position to the most significant bit position. Figure 18A The disclosures and methods discussed in -D entropy encoding are performed on the instructions defined in BVD 1810.

[0243] Context modeler 1846 can be as described in this article about Figure 20 The probabilistic model 1844 is selected as described herein, regardless of whether the amplitude sign 1816 is the horizontal or vertical component of BVD 1810 (e.g., by omitting steps 2010 and 2012, or by omitting steps 2010 and 2020). The context modeler 1846 may further or alternatively be as described herein. Figure 20The probability model 1844 is selected as described above, without considering whether the significance of the magnitude sign 1816 is less than the threshold T (e.g., by omitting steps 2002 and 2004, or by omitting steps 2002 and 2010).

[0244] Context modelers (e.g., context modeler 1856) or decoders can be related to this paper regarding Figure 20 The probability model 1844 for indicative 1838 is determined in the same manner as described for context modeler 1846 by a fixed selection and / or by an adaptive selection from two or more probability models.

[0245] The context of an encoded suffix interval can be determined using more than one previously encoded interval of the suffix. One or more encoded intervals of the suffix can indicate the correctness of the prediction of the true interval (e.g., the interval of the suffix chosen by the encoder for this syntax element). More likely, for example, if the prediction of a previous interval is correct, the prediction of the current interval is also likely to be correct. A Markov chain can be used to model a set of predicted intervals encoded in the encoding order and with probabilistic dependencies between them. A Markov chain, also known as a discrete-time Markov chain, can be interpreted as follows. The sequence is considered to follow a k-th order Markov model, conditionally...

[0246]

[0247] Knowing the past k symbols can be equivalent to knowing the entire historical record of the process. Therefore, given some probabilities of previously encoded intervals, a Markov chain model can be used to predict the probability of the next encoded interval.

[0248] Figures 21A-21D An example of deriving a context model using a first-order Markov model is shown. (About...) Figure 21A A contextual model of the less significant suffix interval can be derived from the values ​​of the previously more significant interval, including the sign. For example... Figure 21B As shown, some of the least significant suffix intervals can be bypassed; that is, a context model may not be selected for the least significant intervals. Figure 21C A different approach is shown where a context model including the sign of a more significant suffix interval can be derived by using the value of a previously significant interval. Similar to... Figure 21B , Figure 21D It shows that some intervals can be bypassed and encoded so that such intervals can be ignored, for example, when a context model is selected for other intervals.

[0249] Figure 22A and 22BAn example of deriving a context model using a 2nd-order Markov chain is shown. For instance, if a context model for a suffix interval is selected using a 2nd-order Markov chain, the context model for a given interval can be derived using two (2) previous sign or suffix intervals. Figure 22A As shown, the context model for less significant intervals can be selected based on the values ​​of up to two (2) more significant intervals. Figure 22B Different cases of deriving more significant intervals from contextual models based on up to two (2) less significant intervals are shown.

[0250] Figure 23 An example of switching between context-export techniques is shown. More specifically, Figure 23 An example of the mechanism for switching between the two (2) context derivation techniques discussed in this paper is shown. These two (2) context derivation techniques can be described as follows: Figures 21A-21D The above refers to first-order Markov chains (first context derivation technique), and in... Figure 22A and 22B This is a technique described for second-order Markov chains (second context derivation). Data from neighboring CUs can be used as input information to determine the switching. For example, if the number of correctly guessed hypotheses in the BVD suffixes of neighboring CUs is large for less significant intervals, then... Figure 21C and 21D or Figure 22B The context export technique is shown below. Otherwise, the order of context export can be defined as: Figure 21A and 21B as well as Figure 22A First-order Markov chains and second-order Markov chains are shown respectively.

[0251] If hypothesis testing is performed, the encoding order of the sign and / or suffix intervals can differ from the prediction order of the intervals. Interval predictions can be performed in order of highest to lowest significance, where a sign interval can be considered to have higher significance than the most significant predicted suffix interval. At the encoder, the binary string of the predicted intervals can be signaled in a different order (e.g., from less significant intervals to more significant intervals). Accordingly, at the decoder, the binary string can be recovered during the parsing process in the same order as the binary string was encoded at the encoder. Context selection for encoding and / or decoding of intervals can utilize previously encoded intervals. Therefore, the encoding order of the signaling for the predicted intervals determines whether the context originates from an interval with lower significance or an interval with higher significance.

[0252] The value of the previously encoded interval of the suffix of the vector difference component can be set to be equal to the interval that can be encoded for the correctness of the prediction of the sign of this component, for example, if the most significant interval of the suffix is ​​encoded. Figure 24 An example method for selecting the most salient intervals (MSBs) of the horizontal and vertical components of a vector difference is shown. The BVSD (Block Vector Sign Derivation) index can be a binary string comprising a set of intervals. The number of intervals in the BVSD binary string can depend on the number of non-zero components in the indicated BVD. These intervals can be used as part of a previously encoded sequence of intervals. Figure 24 An example is shown of the most significant interval (MSB) of the suffix that can be context-encoded, and the context of the MSB that can be determined using a previously indicated sign prediction interval, which may be part of a BVSD index. Context derivation of the MSB of the suffix for both horizontal and vertical components can be performed at levels 2405 and 2410 of the "Obtain Context to Encode MSB" section. Here, the context can be selected based on the corresponding BVSD partition value and / or depending on the indicable component (e.g., horizontal or vertical component). Figure 20 The dashed lines in the diagram illustrate the relationships between values ​​that can be signaled using BVSD index encoding, along with conditions for checking the BVD suffix interval. For example, if the horizontal component is non-zero, context derivation of the MSB of the suffix for the horizontal component can be performed at "Obtain context to encode MSB" 2405. Similarly, if the vertical component is non-zero, context derivation of the MSB of the suffix for the horizontal component can be performed at "Obtain context to encode MSB" 2410. In the case of MV encoding, the same method can be used to select the context of the MVD suffix interval based on the MVSD index.

[0253] The HOR and VER sign predictions can be encoded as, for example, part of an index. The prediction can be a BVSD (Block Vector Sign Derivative) index of the block vector difference. However, the prediction can be an MVSD (Motion Vector Sign Derivative) index of the motion vector difference.

[0254] Figure 25 An example method is shown for encoding an indication of whether the value of an amplitude symbol matches a predicted value of the amplitude symbol. More specifically, Figure 25 A flowchart 2500 illustrates an example method for encoding (e.g., arithmetic coding) an indication of whether the value of an amplitude symbol matches a predicted value of the amplitude symbol based on a probabilistic model. This can be achieved by an encoder (e.g., as described herein regarding...). Figure 2The encoder implements one or more steps of the example method shown in flowchart 2500. At step 2502, the encoder may determine the block vector difference (BVD) based, for example, on the difference between the block vector (BV) and the block vector predictor (BVP). At step 2504, the encoder may select a probabilistic model. The encoder may select the probabilistic model based, for example, on a first indication of whether the value of the first magnitude sign of the BVD matches the value of the first magnitude sign of the first BVD predictor.

[0255] The encoder can select a probabilistic model, for example, based on the significance of the second magnitude symbol. The significance of the second magnitude symbol can be determined, for example, based on its position in the BVD. The significance of the second magnitude symbol can be determined, for example, based on the change in the value of the BVD in relation to the incremental change in the value of the second magnitude symbol. The encoder can select a probabilistic model, for example, based on the size of the block that can be predicted based on the BVD. The encoder can further select a probabilistic model based on the directional components of the BVD, including the first and / or second magnitude symbols. The directional components of the BVD can be one of a horizontal component and / or a vertical component. The encoder can select a probabilistic 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 a third BVD predictor.

[0256] At step 2506, the encoder may encode a second indication (e.g., arithmetic coding) based on a probability model to determine whether the value of the second magnitude sign of the BVD matches the value of the second magnitude sign of the second BVD predictor. The first indication may be encoded, for example, prior to the second indication (e.g., arithmetic coding).

[0257] Figure 26 An example method for determining the value of the amplitude sign is shown. More specifically, Figure 26 A flowchart 2600 illustrates an example method for determining the value of the amplitude sign based on the value of the amplitude prediction factor and an arithmetic decoding instruction. This can be achieved by a decoder (e.g., as described herein regarding...). Figure 3 The decoder implements one or more steps of the method shown in flowchart 2600. At step 2602, the decoder can select a probability model. The decoder can select the probability model, for example, based on a first indication of whether the value of the first magnitude sign of the block vector difference (BVD) matches the value of the first magnitude sign of the first BVD predictor.

[0258] The decoder can select a probabilistic model based on the significance of the second magnitude symbol. For example, the significance of the second magnitude symbol can be determined based on its position in the BVD. Alternatively, the significance of the second magnitude symbol can be determined based on the change in the value of the BVD relative to the increment of the value of the second magnitude symbol in the BVD.

[0259] The decoder can select a probabilistic model, for example, based on the size of the block that can be predicted based on BVD. The decoder can also select a probabilistic model, for example, based on the directional components of BVD, including the first and second magnitude signs. The directional components of BVD can be one of a horizontal component and / or a vertical component. The decoder can also select a probabilistic model, for example, based on a third indication of whether the value of the third magnitude sign of BVD matches the value of the third magnitude sign of a third BVD predictor.

[0260] At step 2604, the decoder may decode a second indication (e.g., arithmetic decoding) based on a probability model to determine whether the value of the second amplitude sign of the BVD matches the value of the second amplitude sign of the second BVD predictor. At step 2606, the decoder may determine the value of the second amplitude sign of the BVD, for example, based on the value of the second amplitude sign of the BVD predictor and the indication. The first indication may be decoded, for example, prior to the second indication (e.g., arithmetic decoding).

[0261] As a supplement to or replacement for one or more amplitude symbols of BVD used in IBC, this paper discusses... Figure 25-26 The disclosed content and methods can be used for one or more magnitude symbols of MVD used in inter-frame prediction. For inter-frame prediction, the terms BV, BVP, BVD, and BVD candidate can be replaced by the terms MV, MVP, MVD, and MVD.

[0262] Figure 27 An example computer system in which the present disclosure can be implemented is shown. For example, Figure 27 The example computer system 2700 shown can implement one or more of the methods described herein. For example, various devices and / or systems described herein (e.g., in...) Figure 1 , 2 (3) can be implemented using one or more computer systems 2700. Furthermore, each of the steps in the flowcharts depicted in this disclosure can be implemented on one or more computer systems 2700.

[0263] Computer system 2700 may include one or more processors, such as processor 2704. Processor 2704 may be a dedicated processor, a general-purpose processor, a microprocessor, and / or a digital signal processor. Processor 2704 may be connected to communication 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.

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

[0265] Secondary memory 2708 may include other similar components for allowing computer programs or other instructions to be loaded into computer system 2700. Such components may include removable storage unit 2718 and / or interface 2714. Examples of such components may include program boxes and / or box interfaces (e.g., in video game devices) that allow software and / or data to be transferred from removable storage unit 2718 to computer system 2700, removable memory chips (e.g., erasable programmable read-only memory (EPROM) or programmable read-only memory (PROM)) and associated sockets, flash drives and USB ports, and / or other removable storage units 2718 and interfaces 2714.

[0266] Computer system 2700 may also include communication interface 2720. Communication interface 2720 allows software and data to be transferred between computer system 2700 and external devices. Examples of communication interface 2720 may include a modem, network interface (e.g., Ethernet card), communication port, etc. Software and / or data transmitted via communication interface 2720 may be in the form of signals, which may be electronic, electromagnetic, optical, and / or other signals that can be received by communication interface 2720. Signals may be provided to communication interface 2720 via communication path 2722. Communication path 2722 may carry signals and may be implemented using wires or cables, optical fibers, telephone lines, cellular telephone links, RF links, and / or any other communication channels.

[0267] Computer program media and / or computer-readable media may refer to tangible storage media, such as removable storage units 2716 and 2718 or a hard disk mounted in hard disk 2710. A computer program product may be a component for providing software to computer system 2700. A computer program (which may also be referred to as computer control logic) may be stored in main memory 2706 and / or secondary memory 2708. The computer program may be received via communication interface 2720. When executed, such a computer program may enable computer system 2700 to implement the present disclosure as discussed herein. Specifically, when executed, the computer program may enable processor 2704 to implement the processes of the present disclosure, such as any of the methods described herein. Therefore, such a computer program may represent a controller of computer system 2700.

[0268] Figure 28Example elements of a computing device are shown that can 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 can execute instructions stored in random access memory (RAM) 2833, removable media 2834 (e.g., a Universal Serial Bus (USB) drive, a compact disk (CD) or digital universal optical disc (DVD), or a floppy disk drive), or any other desired storage medium. Instructions may also be stored in an attached (or internal) hard disk 2835. The computing device 2830 may also include a security processor (not shown) that can execute instructions of one or more computer programs to monitor processes executing on the processor 2831 and to request access to any hardware and / or software components of the computing device 2830 (e.g., ROM 2832, RAM 2833, removable media 2834, hard disk 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., screen, display device, monitor, television, etc.), and may include one or more output device controllers 2837, such as a video processor. One or more user input devices 2838 may also be present, such as a remote control, keyboard, mouse, touchscreen, microphone, etc. The computing device 2830 may also include one or more network interfaces (e.g., network interface 2839), which may be wired, wireless, or a combination of both. Network interface 2839 can provide the computing device 2830 with an interface to communicate with network 2840 (e.g., RAN or any other network). Network interface 2839 may include a modem (e.g., a cable modem), and external network 2840 may include a communication link, an external network, a home network, a provider's wireless, coaxial cable, fiber optic, or hybrid fiber / coaxial cable distribution system (e.g., a DOCSIS network), or any other desired network. Additionally, computing device 2830 may include a location detection device, such as a Global Positioning System (GPS) microprocessor 2841, which can be configured to receive and process GPS signals and determine the geographic location of computing device 2830 with possible assistance from external servers and antennas.

[0269] Figure 28The examples shown can be hardware configurations, but the components illustrated can also be implemented as software. Modifications can be made to add, remove, combine, divide, etc., components of the computing device 2830 as needed. Furthermore, basic computing devices and components can be used to implement components, and the same components (e.g., processor 2831, ROM storage device 2832, display 2836, etc.) can be used to implement any other computing devices and components described herein. For example, the various components described herein can be implemented using a computing device having components such as a processor that executes computer-executable instructions stored on a computer-readable medium, such as... Figure 28 As shown. Some or all of the entities described herein may be software-based and may coexist on a common physical platform (e.g., the requesting entity may be a separate software process and program from the relevant entity, both of which may be executed as software on a common computing device).

[0270] In the following text, various features will be highlighted in a set of numbered clauses or paragraphs. These features should not be construed as limiting the invention or inventive concept, but are merely highlights of certain features described herein, without implying a particular order of importance or relevance of such features.

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

[0272] Clause 2. The method according to Clause 1 further includes selecting a probability model based on a first indication of whether the value of the first sign of the BVD matches the value of the first sign of the first BVD predictor.

[0273] Clause 3. The method according to any one of Clauses 1 to 2 further includes encoding a second indication based on the probability model as to whether the value of the second symbol of the BVD matches the value of the second symbol of the second BVD predictor.

[0274] Clause 4. The method according to any one of Clauses 1 to 3, wherein the first instruction is encoded prior to the second instruction.

[0275] Clause 5. The method according to any one of Clauses 1 to 4, wherein the selection of the probability model is further based on the significance of the second sign of the second BVD predictor or the second sign of the BVD.

[0276] Clause 6. The method according to any one of Clauses 1 to 5 further includes determining the salience of the second symbol in the BVD based on the position of the second symbol in the BVD.

[0277] Clause 7. The method according to any one of Clauses 1 to 6 further comprises determining the significance of the second symbol and the BVD based on the change in the value of the BVD with respect to the incremental change in the value of the second symbol of the BVD.

[0278] Clause 8. The method according to any one of Clauses 1 to 7, wherein the selection of the probability model further comprises selecting the probability model based on the size of the block predicted using the BVD.

[0279] Clause 9. The method according to any one of Clauses 1 to 8, wherein the selection of the probability model further comprises selecting the probability model based on the directional components of the BVD, including the first symbol and the second symbol of the BVD.

[0280] Clause 10. The method according to any one of Clauses 1 to 9, wherein the directional component of the BVD is either a horizontal component or a vertical component.

[0281] Clause 11. The method according to any one of Clauses 1 to 10, wherein the selection of the probability model further comprises selecting the probability model based on a third indication of whether the value of the third sign of the BVD matches the value of the third sign of the third BVD predictor.

[0282] Clause 12. The method according to any one of Clauses 1 to 11, wherein the first instruction is decoded prior to the second instruction.

[0283] Clause 13. The method according to any one of Clauses 1 to 12, wherein the selection of the probability model is further based on the significance of the second symbol of the BVD.

[0284] Clause 14. The method according to any one of Clauses 1 to 13 further includes determining the salience of the second symbol based on the position of the second symbol in the BVD.

[0285] Clause 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 a method according to any one of Clauses 1 to 14.

[0286] Clause 16. A system comprising: a first computing device configured to perform the method according to any one of Clauses 1 to 14; and a second computing device configured to decode an instruction.

[0287] Clause 17. A computer-readable medium storing instructions that, when executed, cause to perform the method according to any one of Clauses 1 to 14.

[0288] Clause 18. A method comprising selecting a probabilistic model based on a first indication of whether the value of a first sign of a block vector difference (BVD) matches the value of a first sign of a first BVD predictor.

[0289] Clause 19. The method according to Clause 18 further includes decoding a second indication based on the probability model as to whether the value of the second symbol of the BVD matches the value of the second symbol of the second BVD predictor.

[0290] Clause 20. The method according to any one of Clauses 18 to 19 further comprises determining the value of the second sign of the BVD based on the second indication and the value of the second sign of the second BVD predictor.

[0291] Clause 21. The method according to any one of Clauses 18 to 20, further comprising determining the value change of the BVD based on the incremental change of the value of the second symbol of the BVD, wherein the significance of the second symbol is determined.

[0292] Clause 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 a method according to any one of Clauses 18 to 21.

[0293] Clause 23. A system comprising: a first computing device configured to perform the method according to any one of Clauses 18 to 21; and a second computing device configured to encode instructions.

[0294] Clause 24. A computer-readable medium storing instructions that, when executed, cause to perform the method according to any one of Clauses 18 to 21.

[0295] Clause 25. A method comprising decoding a first indication of whether the value of a first sign of a block vector difference (BVD) matches the value of a first sign of a first BVD predictor.

[0296] Clause 26. The method according to Clause 25 further includes determining the salience of the second symbol based on the position of the second symbol in the BVD.

[0297] Clause 27. The method according to any one of Clauses 25 to 26 further includes selecting a probability model based on the first indication and the significance of the second symbol in the BVD.

[0298] Clause 28. The method according to any one of Clauses 25 to 27 further includes decoding 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 probability model.

[0299] Clause 29. The method according to any one of Clauses 25 to 28 further comprises determining the value of the second sign of the BVD based on the second indication and the value of the second sign of the BVD predictor.

[0300] Clause 30. The method according to any one of Clauses 25 to 29, wherein the selection of the probability is further based on one or more of the following: the salience of the second symbol of the BVD, the size of the block predicted based on the BVD, a third indication of whether the value of the BVD including the first and second symbols of the BVD and the value of the third symbol of the BVD matches the value of the third symbol of the third BVD predictor, and wherein the salience of the second symbol is determined based on the position of the second symbol in the BVD.

[0301] Clause 31. The method according to any one of Clauses 25 to 30, wherein the first instruction is decoded prior to the second instruction.

[0302] Clause 32. The method according to any one of Clauses 25 to 31, wherein the selection of the probability model is further based on the significance of the second symbol of the BVD.

[0303] Clause 33. The method according to any one of Clauses 25 to 32 further includes determining the salience of the second symbol based on the position of the second symbol of the BVD.

[0304] Clause 34. The method according to any one of Clauses 25 to 33, wherein the selection of the probability model further comprises selecting the probability model based on the size of the block predicted using the BVD.

[0305] Clause 35. The method according to any one of Clauses 25 to 34, wherein the selection of the probability model further comprises selecting the probability model based on the directional components of the BVD, including the first sign of the BVD predictor and the second sign of the BVD predictor.

[0306] Clause 36. The method according to any one of Clauses 25 to 35, wherein the directional component of the BVD is one of a horizontal component or a vertical component.

[0307] Clause 37. The method according to any one of Clauses 25 to 36, wherein the selection of the probability model further comprises selecting the probability model based on a third indication of whether the value of the third sign of the BVD matches the value of the third sign of the third BVD predictor.

[0308] Clause 38. 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 a method according to any one of Clauses 25 to 37.

[0309] Clause 39. A system comprising: a first computing device configured to perform the method according to any one of Clauses 25 to 37; and a second computing device configured to encode instructions.

[0310] Clause 40. A computer-readable medium storing instructions that, when executed, cause to perform the method according to any one of Clauses 25 to 37.

[0311] The computing device can perform a method including multiple operations. The computing device can determine the Block Vector Difference (BVD) based on the difference between the Block Vector (BV) and the Block Vector Predictor (BVP). The computing device can select a probabilistic model based on a first indication that the value of the first sign of the BVD matches the value of the first sign of the first BVD predictor. The computing device can encode a second indication based on the probabilistic model that the value of the second sign of the BVD matches the value of the second sign of the second BVD predictor. The first indication may be encoded prior to the second indication. The probabilistic model can be further selected based on the significance of the second sign of the BVD or the second sign of the BVD predictor. The significance of the second sign can be determined based on the position of the second sign in the BVD. The significance of the second sign can be determined based on the change in the value of the BVD in response to an incremental change in the value of the second sign of the BVD. The probabilistic model can be further selected based on the size of the block predicted based on the BVD. The probabilistic model can be further selected based on the directional components of the BVD, including the first and second signs of the BVD. The directional components of the BVD can be either a horizontal component or a vertical component. The selection of a probabilistic model may further include a third indication of whether the value of the third sign of BVD matches the value of the third sign 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 method, additional operations, and / or include additional elements. The system may include: a first computing device configured to perform the method, 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, cause the performance of the described method, additional operations, and / or include additional elements.

[0312] The computing device can perform a method including multiple operations. The computing device can select a probabilistic model based on a first indication of whether the value of the first sign of the block vector difference (BVD) matches the value of the first sign of a first BVD predictor. The computing device can decode a second indication of whether the value of the second sign of the BVD matches the value of the second sign of a second BVD predictor based on the probabilistic model. The computing device can determine the value of the second sign of the BVD based on the indication and the value of the second sign of the BVD predictor. The first indication can be decoded before the second indication. The selection of the probabilistic model can be further based on the significance of the second sign of the BVD. The significance of the second sign can be determined based on the position of the second sign in the BVD. The significance of the second sign can be determined based on the change in the value of the BVD relative to the incremental change in the value of the second sign of the BVD. The selection of the probabilistic model can be further based on the size of the block that can be predicted based on the BVD. The selection of the probabilistic model can be further based on the directional components of the BVD, including the first and second signs. The directional components of the BVD can be either horizontal or vertical. The selection of the probabilistic model can be further based on a third indication of whether the value of the third sign of the BVD matches the value of the third sign of a third BVD predictor. A computing device may include one or more processors and memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described methods, additional operations, and / or include additional elements. A system may include: a first computing device configured to perform the methods, additional operations, and / or include additional elements; and a second computing device configured to encode instructions. A computer-readable medium may store instructions that, when executed, cause the described methods, additional operations, and / or include additional elements.

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

[0314] One or more examples described herein can be depicted as processes that can be described as flowcharts, flow diagrams, data flow diagrams, structure diagrams, and / or block diagrams. Although a flowchart can describe operations as a continuous process, one or more of the operations can be executed in parallel or simultaneously. The order of the operations shown can be rearranged. A process can be terminated when its operations are completed, but may have additional steps not shown in the diagram. A process can correspond to a method, function, program, subroutine, subroutines, etc. When a process corresponds to a function, its termination can correspond to the function returning to the calling function or the main function.

[0315] The operations described herein can be implemented using 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 for performing the necessary tasks (e.g., a computer program product) can be stored on a computer-readable or machine-readable medium. A processor can perform the necessary tasks. The features of this disclosure can be implemented in hardware using, for example, hardware components such as application-specific integrated circuits (ASICs) and gate arrays. Implementing a hardware state machine to perform the functions described herein will also be apparent to those skilled in the art.

[0316] One or more features described herein may be implemented in computer-usable data and / or computer-executable instructions, as in one or more program modules, which are executed by one or more computers or other devices. Generally, a program module includes routines, programs, objects, components, data structures, etc., that perform a specific task or implement a specific abstract data type when executed by a processor or other data processing device in a computer. Computer-executable instructions may be stored on one or more computer-readable media, such as hard disks, optical disks, removable storage media, solid-state drives, RAM, etc. The functionality of a program module may be combined or distributed as needed. Functionality may be implemented wholly or partially as firmware or hardware equivalents, such as integrated circuits, field-programmable gate arrays (FPGAs), etc. Specific data structures may be used to more efficiently implement one or more features described herein, and such data structures are contemplated 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 include non-transient media in which data can be stored but do not include carrier waves and / or transient electronic signals propagated wirelessly or via wired connections. Examples of non-transitory media include, but are not limited to, magnetic disks or magnetic tapes, optical storage media such as optical discs (CDs) or digital multifunction discs (DVDs), flash memory, memory, or memory devices. Computer-readable media may store code and / or machine-executable instructions that can represent any combination of programs, functions, subroutines, routines, subroutines, modules, software packages, classes or instructions, data structures, or program statements. Code segments can be coupled to another code segment or hardware circuitry by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., can be passed, forwarded, or transmitted via any suitable means, including memory sharing, messaging, token passing, network transmission, etc.

[0317] Non-transitory tangible computer-readable media may include instructions executable by one or more processors configured to cause the operations described herein. Articles of manufacture may include non-transitory tangible computer-readable machine-accessible media having instructions encoded thereon, said instructions for causing programmable hardware to enable devices (e.g., encoders, decoders, transmitters, receivers, etc.) to allow the operations described herein. Devices, or one or more devices such as in a system, may include one or more processors, memories, interfaces, and / or the like.

[0318] The communication described herein can be determined, generated, sent, and / or received using any number of messages, information elements, fields, parameters, values, indications, information, bits, and / or the like. While this document may use any of the terms / phrases message, information element, field, parameter, value, indication, information, bit, and / or the like to describe one or more examples, those skilled in the art will understand that any one or more of these terms, including other such terms, can be used to perform such communication. For example, one or more parameters, fields, and / or information elements (IEs) may include one or more information objects, values, and / or any other information. An information object may include one or more other objects. At least some (or all) parameters, fields, IEs, etc., are available and can be used interchangeably depending on the context. Where a meaning or definition is given, such meaning or definition shall prevail.

[0319] One or more elements in the examples described herein can be implemented as modules. A module can be an element that performs a defined function and / or has a defined interface that interfaces with other elements. Modules can be implemented in hardware, software combined with hardware, firmware, wet hardware (e.g., hardware with biological elements), or combinations thereof, all of which may be behaviorally equivalent. For example, a module can be implemented as a software routine written in a computer language configured to be executed by a physical computer (such as C, C++, Fortran, Java, Basic, Matlab, etc.) or a modeling / simulation program (such as Simulink, Stateflow, GNU Octave, or LabVIEW MathScript). Alternatively or alternatively, modules can be implemented using physical hardware that incorporates discrete or programmable analog, digital, and / or quantum hardware. Examples of programmable hardware can 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 can be programmed using languages ​​such as assembly, C, C++, etc. FPGAs, ASICs, and CPLDs are typically programmed using hardware description languages ​​(HDLs), such as VHSIC Hardware Description Language (VHDL) or Verilog, which configure connections between internal hardware modules with limited functionality on a programmable device. The techniques mentioned above can be combined to achieve the desired functional modules.

[0320] 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 in a computing device, communication device, encoder, decoder, network, combinations thereof, and / or the like. Example criteria may be based on one or more conditions, such as device configuration, traffic load, initial system settings, packet size, service characteristics, combinations thereof, and / or the like. Various examples may be used if the one or more criteria are met. Any part of the examples described herein may be implemented in any order and based on any conditions.

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

Claims

1. A method comprising: Based on the first indication of whether the value of the first sign of the block vector difference (BVD) matches the value of the first sign of the first BVD predictor, a probability model is selected; Based on the probability model, a second indication is decoded to determine whether the value of the second symbol of the BVD matches the value of the second symbol of the second BVD predictor. as well as The value of the second sign of the BVD is determined based on the second indication and the value of the second sign of the second BVD predictor.

2. The method of claim 1, wherein the first indication is decoded prior to the second indication.

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

4. The method according to any one of claims 1 to 3, further comprising: The salience of the second symbol is determined based on the position of the second symbol in the BVD.

5. The method according to any one of claims 1 to 4, further comprising: The determination is based on the change in the value of BVD based on the incremental change in the value of the second symbol of the BVD, wherein the significance of the second symbol is determined.

6. The method according to any one of claims 1 to 5, wherein selecting the probability model further comprises: The probability model is selected based on the size of the block predicted using the BVD.

7. The method according to any one of claims 1 to 5, wherein selecting the probability model further comprises: The probability model is selected based on the directional components of the BVD, including the first sign and the second sign of the BVD predictor.

8. The method according to any one of claims 1 to 5, wherein selecting the probability model further comprises: The probability model is selected based on a third indication of whether the value of the third sign of the BVD matches the value of the third sign of the third BVD predictor.

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

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

11. The method according to any one of claims 1 to 10, further comprising: The significance of the second symbol and the BVD is determined based on the change in the value of the BVD with respect to the incremental change in the value of the second symbol of the BVD.

12. The method according to any one of claims 1 to 11, further comprising: The salience of the second symbol is determined based on the position of the second symbol in the BVD.

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

14. A system comprising: A first wireless device is configured to perform the method according to any one of claims 1 to 12; as well as A second wireless device is configured to encode one or more instructions.

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