Separable motion vector predictor components in video coding

By using separable motion vector prediction technology in video encoding, the best predictor for each motion vector component is independently selected, which solves the problem of low compression efficiency in the prior art when processing complex motion modes, and achieves more efficient video data compression.

CN119865623APending Publication Date: 2025-04-22INTEL CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411285631.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-02-29
Filing Date
2024-09-13
Publication Date
2025-04-22

AI Technical Summary

Technical Problem

When existing video encoding technologies process videos with complex or uneven motion patterns, it is difficult to effectively compress video data, resulting in low compression efficiency and high bit rate.

Method used

Using separable motion vector prediction technology, the best predictors for each motion vector component are independently selected or selected, such as predictors for horizontal and vertical vector components, to form a composite predictor to optimize compression efficiency.

Benefits of technology

By fine-grained motion vector prediction, the number of coded bits of the residual vector can be significantly reduced while maintaining visual quality, and the video compression efficiency can be improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119865623A_ABST
    Figure CN119865623A_ABST
Patent Text Reader

Abstract

During block prediction in block-based video compression, a vector used to translate a reference block to produce a prediction block is not encoded directly in an encoded bitstream. Instead, a residual vector, which is the difference between the vector and the selected vector predictor candidate, is encoded to achieve higher compression efficiency. The selected vector predictor candidate may have a minimum Euclidean distance to the vector to ensure that the residual vector is small. For compressing video with complex spatial and / or temporal characteristics, the selected vector predictor candidate may not produce a minimum residual vector. To solve this problem, vector predictor candidates are selected separately for the horizontal and vertical components of the vector to obtain a smaller residual vector. An efficient and efficient signaling scheme may be implemented to indicate whether a predictor is based on components from two different predictor candidates.
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This non-provisional application claims priority to and / or receives the benefit of a provisional application entitled “SEPARABLE MOTION VECTORPREDICTOR IN DIGITAL VIDEO CODING,” serial number 63 / 591701, filed on October 19, 2023. The provisional application is incorporated by reference in its entirety. Background Art

[0002] Video compression is a technique used to make video files smaller and easier to transmit over the Internet. There are different methods and algorithms for video compression with different performance and tradeoffs. Video compression involves encoding and decoding. Encoding is the process of converting (uncompressed) video data into a compressed format. Decoding is the process of recovering video data from a compressed format. An encoder-decoder system is called a codec. BRIEF DESCRIPTION OF THE DRAWINGS

[0003] The embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, the same reference numerals denote the same structural elements. In the figures of the accompanying drawings, the embodiments are illustrated by way of example and not by way of limitation.

[0004] Figure 1 An encoding system and multiple decoding systems according to some embodiments of the present disclosure are shown.

[0005] Figure 2 An exemplary encoder for encoding a video frame and outputting an encoded bitstream according to some embodiments of the present disclosure is shown.

[0006] Figure 3 An exemplary decoder for decoding an encoded bitstream and outputting a decoded video according to some embodiments of the present disclosure is shown.

[0007] Figure 4A Exemplary vector predictor candidates for a block are shown in accordance with some embodiments of the present disclosure.

[0008] Figure 4B An exemplary index predictor table according to some embodiments of the present disclosure is shown, which has corresponding Figure 4A Indices of exemplary vector predictor candidates shown in .

[0009] Figure 5 Depicted is a flowchart of an exemplary method for encoding a block according to some embodiments of the present disclosure.

[0010] Figure 6Depicted is a flow chart of an exemplary method for decoding a block according to some embodiments of the present disclosure.

[0011] Figure 7 Examples of motion vectors according to some embodiments of the present disclosure are shown.

[0012] Fig. 8A -E shows an exemplary index predictor table according to some embodiments of the present disclosure.

[0013] Fig. 9 An exemplary encoder according to some embodiments of the present disclosure is shown.

[0014] Fig.10 An exemplary decoder according to some embodiments of the present disclosure is shown.

[0015] Fig.11 Depicted is a flow chart of an exemplary method for decoding an encoded bitstream according to some embodiments of the present disclosure.

[0016] Fig.12 Depicted is a flow chart of an exemplary method for encoding video according to some embodiments of the present disclosure.

[0017] Fig.13 A block diagram of an exemplary computing device is depicted in accordance with some embodiments of the present disclosure. DETAILED DESCRIPTION Overview

[0018] Video encoding or video compression is the process of compressing video data for storage, transmission, and playback. Video compression may involve taking large amounts of raw video data and applying one or more compression techniques to reduce the amount of data required to represent the video while maintaining an acceptable level of visual quality. In some cases, video compression can provide efficient storage and transmission of video content over networks with limited bandwidth.

[0019] A video includes one or more (time) video frame sequences. A frame has a frame index indicating the position of the frame within the video or within one or more sequences. A frame may include an image or a single still image. A frame may have millions of pixels. For example, a frame of an uncompressed 4K video may have a resolution of 3840×2160 pixels. A pixel may have a brightness value (luma / luminance) and a chrominance value (chroma / chrominance). In video compression, a frame may be divided into blocks for block-based processing or block-based compression. Blocks may have much smaller sizes, such as 512×512 pixels, 256×256 pixels, 128×128 pixels, 64×64 pixels, 32×32 pixels, 16×16 pixels, 8×8 pixels, 4×4 pixels, etc. A block may include a square or rectangular area of ​​a frame.

[0020] Motion compensation and block prediction are techniques used in block-based video coding standards to reduce redundancy between consecutive video frames or within a video frame. Motion compensation can be an effective tool for reducing temporal redundancy between video frames. Motion compensation can involve using motion vectors to predict blocks in the current frame from reference blocks in previously encoded frames. The motion vector determined from the motion estimation process can be subtracted from the already encoded motion vector (e.g., a motion vector predictor candidate or a motion vector predictor), and (only) the residual motion vector is encoded and signaled to the decoder. Block prediction can be used to reduce spatial redundancy within a video frame. Block prediction can involve using vectors to predict blocks in the same frame from reference blocks in the current frame. The determined vector can be subtracted from the already encoded vector (e.g., a vector predictor candidate or a vector predictor), and (only) the residual vector is encoded and signaled to the decoder. Motion compensation between frames and block prediction within a frame are both referred to as block prediction in this article.

[0021] In the block prediction process, the vector used to translate the reference block to produce the predicted block is not directly encoded in the encoded bitstream. Instead, a residual vector is encoded to achieve higher compression efficiency, which is the difference between the vector and the selected vector predictor candidate (or the selected vector predictor). The selected vector predictor candidate can have a minimum Euclidean distance to the vector to ensure that the residual vector is small.

[0022] In some codecs, a single (motion) vector predictor corresponding to the vector of the processing block is employed in motion compensation, e.g. for the horizontal and vertical (motion) vector components. However, this approach may not be optimal in scenes with complex or non-uniform (motion) patterns. In some codecs, a single vector predictor corresponding to the vector of the processing block is employed in block prediction, e.g. for the horizontal and vertical vector components. However, this approach may not be optimal in scenes with complex or non-uniform (spatial) patterns. For compressing video with complex spatial and / or temporal characteristics, the selected inseparable vector predictor candidate may not produce the smallest residual vector.

[0023] To address this problem, the encoder can independently and / or separately select or pick vector predictor candidates for the horizontal component and the vertical component of the vector to obtain a smaller residual vector. A finer-grained method involving separable prediction of motion vector components can be applied to motion vector prediction in video coding. The same fine-grained method involving separable prediction of vector components can be applied to block prediction in video coding. The method allows the encoder to select the best predictor for each component independently and / or individually, rather than relying on a single inseparable vector predictor for, for example, horizontal and vertical vector components. Specifically, the method may include selecting or picking the best predictors for the horizontal and vertical vector components, respectively, which can further optimize compression efficiency, especially in scenes with complex temporal and / or spatial patterns. In other words, the method can select the best predictor for the horizontal vector component and the best predictor for the vertical vector component. This fine-grained method can improve the accuracy of vector prediction, thereby producing smaller residual vectors and reduced bit rates at the same level of visual quality, especially in scenes with complex and challenging temporal and / or spatial patterns.

[0024] In some embodiments, the encoder may select the most appropriate predictor for each component (e.g., horizontal vector component and vertical vector component) independently or separately based on specific temporal and / or spatial characteristics in a given block, rather than relying on a single (global or inseparable) predictor candidate for both components of the vector. These predictor components are not derived from the same or a single motion vector predictor (either spatially from the same frame as the current block, or temporally from another reference frame), but rather from two different motion vector predictors to form a composite predictor or composite predictor candidate. It is possible to signal the use of the composite predictor candidate (e.g., the selection of different motion vector predictors in the coded bitstream) to indicate the selected horizontal and vertical predictor components to the decoder.

[0025] In some embodiments, an effective and efficient signaling scheme can be implemented to indicate the use of a composite predictor candidate based on components from two different predictor candidates. In order to signal the decoder to the selection of a particular predictor for a vector of a coding block, the encoder can have a plurality of bits that can be used to signal an index to an index predictor table corresponding to a selected / selected vector predictor candidate. In some cases, the index predictor table can have one or more available points or indices that can be used to signal one or more specific composite predictor candidates. The mapping of available points / indices to specific composite predictor candidates can be determined algorithmically or systematically in the encoder and decoder.

[0026] Techniques for separately selecting horizontal and vertical (motion) vector predictors in video coding can address one or more technical challenges. Separable prediction of (motion) vector components can radically improve compression efficiency by providing a more accurate and detailed (motion) vector prediction method. Complex motion patterns (such as diagonal or non-uniform motion) often challenge non-separable predictors, resulting in suboptimal compression. Complex spatial patterns (such as screen content or game content) can challenge non-separable predictors, resulting in suboptimal compression. By selecting the best predictors for different components (e.g., horizontal and vertical components) separately, the technology can adapt to these complex patterns more efficiently, resulting in smaller (motion) residual vectors. In turn, smaller residual vectors may require fewer bits to encode and transmit, thereby reducing bitrate and improving compression efficiency. This flexible adaptation to challenging temporal and / or spatial characteristics can provide a valuable trade-off between video quality and bandwidth usage, making it an effective and useful innovation for video coding standards and applications with bandwidth constraints or high-quality video transmission requirements.

[0027] A compressed bitstream encoded using this method may have signaling and / or metadata that signals the use of separate horizontal and vertical (motion) vector predictors. The compressed bitstream may include one or more indexes associated with the composite vector predictor. The compressed bitstream may include one or more syntax elements and / or one or more parameters (which may be specified or documented in a video codec standard or specification) to signal the use of the composite vector predictor for a particular block, a particular frame, and / or a particular sequence of frames. At the decoder, the signaling and / or metadata (e.g., indexes, syntax elements, parameters, etc.) may be read or interpreted to determine whether to use the composite vector predictor and to determine the horizontal and vertical (motion) vector components corresponding to the composite vector predictor.

[0028] Some methods for reducing motion residual vectors can include median prediction (e.g., in the H.264 standard), and enhanced predictive coding techniques like Advanced Motion Vector Prediction (AMVP) (e.g., in the H.265 standard). AMVP or similar techniques can refine motion vector predictions based on a list of candidate motion vectors. These techniques can help improve the prediction accuracy of motion vectors and residuals. Although some methods help increase video compression efficiency, they rely on global, block-level, or inseparable predictors and lack more detailed and flexible motion vector prediction capabilities.

[0029] The composite vector predictor can be used in any video codec that employs motion compensation in inter prediction or block prediction in intra prediction. Video codec standards can be used in a wide range of applications, including, for example, video streaming, video conferencing, broadcasting, and the like. Some examples of video codec standards that can employ the use of the composite vector predictor include AVC (Advanced Video Coding), HEVC (High Efficiency Video Coding), AV1 (AOMedia Video 1), and VVC (Versatile Video Coding). AVC, also known as "ITU-T H.264 (08 / 21)", was approved on 2021-08-22. HEVC, also known as "h.265ITU-T h.265 (v 9) (September 2023)", was approved on September 13, 2023. AV1 is a video coding codec designed for video transmission over the Internet. The "AV1 Bitstream and Decoding Process Specification" Version 1.1.1 (with errata) was last modified on January 18, 2019. VVC, also known as "ITU-Th.266(V3)(September 2023)", was approved on September 29, 2023.

[0030] The method can be incorporated into hardware and / or software implementing a video coding standard with block prediction and encoding of residual vectors. The method can be incorporated into hardware and / or software that supports the use of vector predictor candidates to encode vectors, for example in motion compensation processes or block prediction, such as SVT-AV1 (Scalable Video Technology AV1 Encoder), SVT-VP9 (Scalable Video Technology VP9 Encoder) and SVT-HEVC (Scalable Video Technology for HEVC Encoder). The method can achieve more efficient motion compensation by selecting better vector predictor candidates and reducing the amplitude of the residual vector to be encoded in the bitstream. The method can handle video compression with complex characteristics, achieve high compression efficiency, and obtain higher video quality.

[0031] Although some examples herein relate to motion compensation in inter prediction, the present disclosure contemplates that the teachings of using compound vector predictor candidates or compound vector predictors may also be applied to block prediction in intra prediction. Video Compression

[0032] Figure 1 The encoding system 130 and one or more decoding systems 150 according to some embodiments of the present disclosure are shown. 1…D .

[0033] The encoding system 130 may be Fig.13 The encoding system 130 may be implemented on a computing device 1300 of a computer system. The encoding system 130 may be implemented in the cloud or in a data center. The encoding system 130 may be implemented on a device for capturing video. The encoding system 130 may be implemented on an independent computing system. The encoding system 130 may perform an encoding process in video compression. The encoding system 130 may receive a video (e.g., uncompressed video, raw video, unretouched video, etc.) including a sequence of video frames 104. The video frames 104 may include image frames or images that constitute the video. The video may have a frame rate or frames per second (FPS), which defines the number of frames per second of the video. The higher the FPS, the more realistic and smoother the video looks. Typically, for a natural, realistic viewing experience for human viewers, the FPS is greater than 24 frames per second. Examples of videos may include television episodes, movies, short films, short videos (e.g., less than 15 seconds long), video capture game experiences, computer screen content, video conferencing content, live event broadcast content, sports content, surveillance video, videos shot using a mobile computing device (e.g., a smart phone), etc. In some cases, the video may include a mix or combination of different types of videos.

[0034] The encoding system 130 may include an encoder 102 that receives video frames 104 and encodes the video frames 104 into an encoded bitstream 180 . Figure 2 An exemplary implementation of encoder 102 is illustrated in FIG.

[0035] The coded bitstream 180 may be compressed, which means that the coded bitstream 180 may be smaller in size than the video frame 104. The coded bitstream 180 may include a series of bits, for example, with 0s and 1s. The coded bitstream 180 may have header information, payload information, and footer information that may be encoded as bits in the bitstream. The header information may provide information about one or more of the following: the format of the coded bitstream 180, the encoding process implemented in the encoder 102, the parameters of the encoder 102, and the metadata of the coded bitstream 180. For example, the header information may include one or more of the following: resolution information, frame rate, aspect ratio, color space, etc. The payload information may include data representing the content of the video frame 104, such as sample frames, symbols, syntax elements, etc. For example, the payload information may include bits encoding one or more of the motion predictor, transform coefficients, prediction mode, and quantization level of the video frame 104. The footer information may indicate the end of the coded bitstream 180. The footer information may include other information, including one or more of the following: checksums, error correction codes, and signatures. The format of the encoded bitstream 180 may vary depending on the specifications of the encoding and decoding processes (ie, codecs).

[0036] The coded bitstream 180 may include packets in which the coded video data and signaling information may be packaged. An exemplary format is an open bitstream unit (OBU), which is used in the AV1 coded bitstream. The OBU may include a header and a payload. The header may include information about the OBU, such as information indicating the OBU type. Examples of OBU types may include a sequence header OBU, a frame header OBU, a metadata OBU, a time delimiter OBU, and a tile group OBU. The payload in the OBU may carry quantized transform coefficients and syntax elements, which may be used in a decoder to correctly decode the coded video data, thereby regenerating a video frame.

[0037] The encoded bitstream 180 may be transmitted via the network 140 to one or more decoding systems 150 1…D The network 140 may be the Internet. The network 140 may include one or more of the following: a cellular data network, a wireless data network, a wired data network, a cable Internet network, a fiber optic network, a satellite Internet network, and the like.

[0038] The number D of decoding systems 150 1…D Decoding system 150 1…D At least one of the Fig.13 The system 150 is implemented on the computing device 1300. 1…DExamples of may include personal computers, mobile computing devices, gaming devices, augmented reality devices, mixed reality devices, virtual reality devices, televisions, etc. Decoding system 150 1…D Each of the decoding systems 150 can perform the decoding process in video compression. 1…D Each of the decoders may include decoders (eg, decoders 1 ... D162 1…D ) and one or more display devices (eg, display devices 1 ... D164 1…D ). A decoder (eg, decoder 1 162 1 ) is implemented in Figure 3 is described in.

[0039] For example, decoding system 1 150 1 Decoder 1 162 may be included 1 and a display device 1 164 1 . Decoder 1 162 1 The decoding process of video compression can be realized. Decoder 1162 1 The encoded bitstream 180 may be received and the decoded video 168 may be generated 1 . Decode video 168 1 A series of video frames may be included, which may be versions or reconstructed versions of video frames 104 encoded by encoding system 130. Display device 1 164 1 Can output decoded video 168 1 For display to the decoding system 1150 1 One or more human viewers or users.

[0040] For example, decoding system 2 150 2 Decoder 2 162 may be included 2 and display device 2 164 2 . Decoder 2 162 2 The decoding process of video compression can be realized. Decoder 2162 2 The encoded bitstream 180 may be received and the decoded video 168 may be generated 2 . Decode video 168 2 A series of video frames may be included, which may be versions or reconstructed versions of video frames 104 encoded by encoding system 130. Display device 2 164 2 Can output decoded video 168 2 For display to the decoding system 2 150 2 One or more human viewers or users.

[0041] For example, decoding system D150 D A decoder D 162 may be included Dand display device D 164 D . Decoder D 162 D It can realize the decoding process of video compression. Decoder D162 D The encoded bitstream 180 may be received and the decoded video 168 may be generated D . Decode video 168 D A series of video frames may be included, which may be versions or reconstructed versions of video frames 104 encoded by encoding system 130. Display device D 164 D Can output decoded video 168 D For display to the decoding system D 150 D One or more human viewers or users.

[0042] As discussed herein, encoder 102 may be modified to implement the operation as illustrated in the accompanying drawings. 1…D The decoder may be modified to implement the operations as described in the figures. The encoder 102 and decoder may implement the operations described in Figures 4-12 in relation to the use of a composite vector predictor. Video Encoder

[0043] Figure 2 An encoder 102 for encoding a video frame and outputting an encoded bitstream according to some embodiments of the present disclosure is shown. The encoder 102 may include one or more of the following: signal processing operations and data processing operations, including inter-frame and intra-frame prediction, transforms, quantization, in-loop filtering, and entropy coding. The encoder 102 may include a reconstruction loop involving inverse quantization and inverse transforms to ensure that the decoder will see the same reference blocks and frames. The encoder 102 may receive a video frame 104 and encode the video frame 104 into an encoded bitstream 180. The encoder 102 may include one or more of partitioning 206, transform and quantization 214, inverse transform and inverse quantization 218, in-loop filter 228, motion estimation 234, inter-frame prediction 236, intra-frame prediction 238, and entropy coding 216.

[0044] The partitioning 206 can divide the frames in the video frame 104 into blocks of pixels. Different codecs can allow different variable ranges of block sizes. In one codec, the frame can be partitioned by partitioning 206 into blocks of 128×128 or 64×64 pixels. In some cases, the frame can be partitioned by partitioning 206 into blocks of 256×256 or 512×512 pixels. Large blocks can be called super blocks. The partitioning 206 can further use a multi-way partitioning tree structure to divide each super block. In some cases, the partitioning of the super block can be further recursively partitioned by partitioning 206 using a multi-way partitioning tree structure (e.g., as low as a block of 4×4). In another codec, the frame can be partitioned by partitioning 206 into coding tree units of 128×128 pixels. The partitioning 206 can use a quadtree partitioning structure to divide the coding tree unit into four coding units. The partitioning 206 can further use a quadtree partitioning structure to recursively divide the coding unit. The partitioning 206 may (further) subdivide the coding units using multiple types of tree structures (e.g., quadtree, binary, or ternary tree structures). The minimum coding unit may have a size of 4×4. In some codecs, coding units for luma / luminance pixels may be subdivided into smaller coding units (e.g., performing more tree structure subdivisions) than coding units for chroma pixels (e.g., stopping the tree structure subdivision earlier). The partitioning 206 may output raw samples 208, e.g., as pixel blocks. The operations performed in the partitioning 206 create blocks of different sizes from a super block and are not to be confused with partitioning operations used to create sub-blocks (e.g., regions, areas, or portions) of a single block.

[0045] Intra-frame prediction 238 can predict samples of a block based on reconstructed prediction samples of previously encoded spatial neighboring / reference blocks of the same frame. Intra-frame prediction 238 can receive reconstructed prediction samples 226 (of previously encoded spatial neighboring / reference blocks of the same frame). Reconstructed prediction samples 226 can be generated by adder 222 based on reconstructed prediction residual 224 and prediction samples 212. Intra-frame prediction 238 can determine a suitable predictor for predicting samples based on reconstructed prediction samples of previously encoded spatial neighboring / reference blocks of the same frame. Intra-frame prediction 238 can generate prediction samples 212 generated using a suitable predictor. Intra-frame prediction 238 can output or identify neighboring / reference blocks and predictors used in generating prediction samples 212. The identified neighboring / reference blocks and predictors can be encoded in the encoded bitstream 180 so that the decoder can reconstruct the block using the same neighboring / reference blocks and predictors. In a codec, intra-frame prediction 238 can support multiple diverse predictors, such as 56 different predictors. Some predictors (e.g., directional predictors) can capture different spatial redundancies in directional textures. Directional predictors can be used in intra prediction 238 to predict pixel values ​​of blocks by inferring pixel values ​​of adjacent / reference blocks along a certain direction. Intra prediction 238 of different codecs can support different predictor sets to utilize different spatial modes within the same frame. Examples of predictors can include direct current (DC), plane, Paeth, smooth, smooth vertical, smooth horizontal, recursive-based filtering mode, chroma-from-luma according to brightness, intra-block copy, palette, multiple reference lines, intra-subdivision, matrix-based intra prediction (matrix coefficients can be defined by offline training using neural networks), wide-angle prediction, cross-component linear model, template matching, etc. In some cases, intra prediction 238 can perform block prediction, where a predicted block can be generated using a vector from a reconstructed adjacent / reference block of the same frame. Optionally, a certain type of interpolation filter can be applied to the predicted block to mix the pixels of the predicted block. The pixel values ​​of the block may be predicted using a vector compensation process in intra prediction 238 by translating an adjacent / reference block (within the same frame) according to a vector (and optionally applying an interpolation filter to the adjacent / reference block) to produce prediction samples 212. Intra prediction 238 may output or identify the vector that was applied in generating the prediction samples 212. In some codecs, intra prediction 238 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information identifying the vector predictor candidate, rather than encoding the applied vector itself. Intra prediction 238 may output or identify the type of interpolation filter that was applied in generating the prediction samples 212.

[0046] Motion estimation 234 and inter prediction 236 can predict samples of a block based on samples of a previously encoded frame (e.g., a reference frame in a decoded picture buffer 232). Motion estimation 234 and inter prediction 236 can perform motion compensation, which can involve identifying a suitable reference block and a suitable motion predictor (or vector) for the block and optionally an interpolation filter applied to the reference block. Motion estimation 234 can receive original samples 208 from partition 206. Motion estimation 234 can receive samples (e.g., samples of a previously encoded frame or reference frame) from a decoded picture buffer 232. Motion estimation 234 can use multiple reference frames to determine one or more suitable motion predictors. Motion predictors can include reference blocks and motion vectors, which can be applied to generate motion compensated blocks or prediction blocks. Motion predictors can include motion vectors that capture the movement of blocks between frames in a video. Motion estimation 234 can output or identify one or more reference frames and one or more suitable motion predictors. Inter prediction 236 can apply one or more suitable motion predictors determined in motion estimation 234 and one or more reference frames to generate prediction samples 212. The identified reference frame(s) and motion predictor(s) may be encoded in the coded bitstream 180 so that a decoder can reconstruct the block using the same reference frame(s) and motion predictor(s). In one codec, motion estimation 234 may implement a single reference frame prediction mode, where a single reference frame with a corresponding motion predictor is used for inter prediction 236. Motion estimation 234 may implement a composite reference frame prediction mode, where two reference frames with two corresponding motion predictors are used for inter prediction 236. In one codec, motion estimation 234 may implement techniques for searching and identifying good reference frame(s) that may produce the most efficient motion predictor. Techniques in motion estimation 234 may include searching for good reference frame(s) candidates spatially (within the same frame) and temporally (in previously coded frames). Techniques in motion estimation 234 may include searching a deep spatial neighborhood to find a spatial candidate pool. Techniques in motion estimation 234 may include utilizing a temporal motion field estimation mechanism to generate a temporal candidate pool. Techniques in motion estimation 234 may use a motion field estimation process. Afterwards, the temporal and spatial candidates may be ranked and a suitable motion predictor may be determined.In one codec, inter prediction 236 may support multiple diverse motion predictors.Examples of predictors may include geometric motion vectors (complex non-linear motion), warp motion compensation (affine transformations that capture non-translational object movement), overlapped block motion compensation, advanced composite prediction (composite wedge prediction, differential modulation mask prediction, composite prediction based on frame distance, and composite inter-intra prediction), dynamic spatial and temporal motion vector references, affine motion compensation (capturing high-order motion such as rotation, scaling, and shearing), adaptive motion vector resolution mode, geometric partitioning mode, bidirectional optical flow, prediction refinement using optical flow, bidirectional prediction using weights, extended merge prediction, etc. Optionally, some type of interpolation filter may be applied to the prediction block to blend the pixels of the prediction block. The pixel values ​​of the block may be predicted using the motion predictor / vector determined in the motion compensation process in motion estimation 234 and inter prediction 236, and optionally applying an interpolation filter. In some cases, inter prediction 236 may perform motion compensation, where the prediction block may be generated from a reconstructed reference block of a reference frame using the motion predictor / vector. Inter prediction 236 may output or identify the motion predictor / vector applied in generating prediction samples 212. In some codecs, inter prediction 236 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information identifying the vector predictor candidate, rather than encoding the applied vector itself. Inter prediction 236 may output or identify the type of interpolation filter applied in generating prediction samples 212.

[0047] Mode selection 230 may be informed by a component such as motion estimation 234 to determine whether inter prediction 236 or intra prediction 238 may be more efficient for encoding a block. Inter prediction 236 may output prediction samples 212 of a prediction block. Inter prediction 236 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate a prediction block. Intra prediction 238 may output prediction samples 212 of a prediction block. Intra prediction 238 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate a prediction block. Regardless of the mode, prediction residual 210 may be generated by subtractor 220 by subtracting original sample 208 from prediction sample 212. In some cases, prediction residual 210 may include a residual vector from inter prediction 236 and / or intra prediction 238.

[0048] The transform and quantization 214 may receive the prediction residual 210. The prediction residual 210 may be generated by a subtractor 220 that takes the original sample 208 and subtracts the prediction sample 212 to output the prediction residual 210. The prediction residual 210 may be referred to as a prediction error (e.g., an error between the original sample and the prediction sample 212) for intra prediction 238 and inter prediction 236. The prediction error has a smaller range of values ​​than the original sample and may be encoded with fewer bits in the coded bitstream 180. The transform and quantization 214 may include one or more of a transform and a quantization. The transform may include converting the prediction residual 210 from a spatial domain to a frequency domain. The transform may include applying one or more transform kernels. Examples of transform kernels may include discrete cosine transforms (DCTs) in horizontal and vertical forms, asymmetric discrete sine transforms (ADSTs), flipped ADSTs and identity transforms (IDTXs), multiple transform selections, low-frequency inseparable transforms, sub-block transforms, non-square transforms, DCT-VIII, discrete sine transforms VII (DST-VII), discrete wavelet transforms (DWTs), and the like. The transform may convert the prediction residual 210 into transform coefficients. Quantization may quantize the transform coefficients, for example, by reducing the precision of the transform coefficients. Quantization may include using a quantization matrix (e.g., a linear and nonlinear quantization matrix). The elements in the quantization matrix may be larger for higher frequency bands and smaller for lower frequency bands, meaning that higher frequency coefficients are more coarsely quantized and lower frequency coefficients are more finely quantized. Quantization may include dividing each transform coefficient by the corresponding element in the quantization matrix and rounding to the nearest integer. Effectively, the quantization matrix may implement different quantization parameters (QPs) for different frequency bands and chroma planes, and spatial prediction may be used. A suitable quantization matrix may be selected and signaled for each frame, and the suitable quantization matrix may be encoded in the encoded bitstream 180. The transform and quantization 214 may output quantized transform coefficients and syntax elements 278 , which indicate the encoding mode and parameters used in the encoding process implemented in the encoder 102 .

[0049] The inverse transform and inverse quantization 218 may apply the inverse operations performed in the transform and quantization 214 to produce a reconstructed prediction residual 224 as part of a reconstruction path to produce a decoded picture buffer 232 for the encoder 102. The inverse transform and inverse quantization 218 may receive quantized transform coefficients and syntax elements 278. The inverse transform and inverse quantization 218 may perform one or more inverse quantization operations, such as applying an inverse quantization matrix, to obtain unquantized / original transform coefficients. The inverse transform and inverse quantization 218 may perform one or more inverse transform operations, such as an inverse transform (e.g., inverse DCT, inverse DWT, etc.) to obtain the reconstructed prediction residual 224. A reconstruction path is provided in the encoder 102 to generate reference blocks and frames, which are stored in the decoded picture buffer 232. The reference blocks and frames may match the blocks and frames to be generated in the decoder. The reference blocks and frames are used as reference blocks and frames by motion estimation 234, inter-frame prediction 236, and intra-frame prediction 238.

[0050] The in-loop filter 228 may implement a filter to smooth artifacts introduced by the encoding process in the encoder 102 (e.g., the processing performed by the partitioning 206 and the transform and quantization 214). The in-loop filter 228 may receive the reconstructed prediction samples 226 from the adder 222 and output the frame to the decoded picture buffer 232. Examples of filters may include a constrained low-pass filter, a directional de-ringing filter, an edge-directional conditional replacement filter, a loop restoration filter, a Wiener filter, a self-guided restoration filter, a constrained directional enhancement filter, a luma map with chroma scaling, a sample adaptive offset filter, an adaptive loop filter, a cross-component adaptive loop filter, and the like.

[0051] Entropy coding 216 may receive quantized transform coefficients and syntax elements 278 (e.g., referred to herein as symbols) and perform entropy coding. Entropy coding 216 may generate and output a coded bitstream 180. Entropy coding 216 may utilize statistical redundancy and apply a lossless algorithm to encode symbols and generate a compressed bitstream (e.g., coded bitstream 180). Entropy coding 216 may implement a certain version of arithmetic coding. Different versions may have different advantages and disadvantages. In one codec, entropy coding 216 may implement (symbol to symbol) adaptive multi-symbol arithmetic coding. In another codec, entropy coding 216 may implement context-based adaptive binary arithmetic coder (CABAC). Binary arithmetic coding is different from multi-symbol arithmetic coding. Binary arithmetic coding encodes only one bit at a time, for example, with a binary value or 0 or 1. Binary arithmetic coding may first convert each symbol into a binary representation (e.g., each symbol uses a fixed number of bits). Handling only binary values ​​0 or 1 may simplify calculations and reduce complexity. Binary arithmetic coding may assign a probability to each binary value (e.g., the likelihood of a bit having a binary value of 0 and the likelihood of a bit having a binary value of 1). Multi-symbol arithmetic coding performs encoding on an alphabet having at least two or three symbol values ​​and assigns a probability to each symbol value in the alphabet. Multi-symbol arithmetic coding may encode more bits at a time, which may result in a smaller number of operations for encoding the same amount of data. Multi-symbol arithmetic coding may require more computation and storage (because the probability estimates may be updated for each element in the alphabet). Maintaining and updating the probability (e.g., cumulative probability estimates) for each possible symbol value in multi-symbol arithmetic coding may be more complex (e.g., the complexity grows with the size of the alphabet). Multi-symbol arithmetic coding is not to be confused with binary arithmetic coding, because these two different entropy coding processes are implemented differently and may result in different encoded bit streams for the same set of quantized transform coefficients and syntax elements 278.

[0052] As discussed herein, encoder 102 may be modified to implement operations as illustrated in FIGS. 4-12 . Video Decoder

[0053] Figure 3 A decoder 1162 for decoding a coded bit stream and outputting a decoded video according to some embodiments of the present disclosure is shown. 1 . Decoder 1 162 1 It may include one or more of the following: signal processing operations and data processing operations, including entropy decoding, inverse transform, inverse quantization, inter-frame and intra-frame prediction, in-loop filtering, etc. Decoder 1 162 1 There may be signal and data processing operations that reflect those performed in the encoder. Decoder 1162 1Signal and data processing operations signaled in the coded bitstream 180 may be applied to reconstruct the video. Decoder 1 162 1 The coded bitstream 180 may be received and a decoded video 168 having a plurality of video frames may be generated and outputted. 1 . Decode video 168 1 May be provided to one or more display devices for display to one or more human viewers. Decoder 1 162 1 One or more of entropy decoding 302, inverse transform and inverse quantization 218, in-loop filter 228, inter-frame prediction 236, and intra-frame prediction 238 may be included. Figure 2 Some of the functionalities are used in the encoder 102).

[0054] The entropy decoding 302 may decode the encoded bitstream 180 and output symbols encoded in the encoded bitstream 180. The symbols may include quantized transform coefficients and syntax elements 278. The entropy decoding 302 may reconstruct the symbols from the encoded bitstream 180.

[0055] The inverse transform and inverse quantization 218 may receive the quantized transform coefficients and the syntax elements 278 and perform the operations performed in the encoder. The inverse transform and inverse quantization 218 may output a reconstructed prediction residual 224. The adder 222 may receive the reconstructed prediction residual 224 and the prediction sample 212 and generate a reconstructed prediction sample 226. The inverse transform and inverse quantization 218 may output a syntax element 278 with signaling information for notifying / instructing / controlling operations in the decoder 11621, such as mode selection 230, intra-frame prediction 238, inter-frame prediction 236, and in-loop filter 228.

[0056] Depending on the prediction mode signaled in the encoded bitstream 180 (eg, as quantized transform coefficients and syntax elements in syntax elements 278 ), intra prediction 238 or inter prediction 236 may be applied to generate the prediction samples 212 .

[0057] The adder 222 may sum the prediction samples 212 of the decoded reference block and the reconstructed prediction residual 224 to produce the reconstructed prediction samples 226 of the reconstructed block. For intra prediction 238, the decoded reference block may be in the same frame as the block being decoded or reconstructed. For inter prediction 236, the decoded reference block may be in a different (reference) frame in the decoded picture buffer 232.

[0058] The intra prediction 238 may determine a reconstructed vector based on the residual vector and the selected vector predictor candidate. The intra prediction 238 may apply a reconstructed predictor or vector (e.g., according to the signaled predictor information) to a reconstructed block, which may be generated using a decoded reference block of the same frame. The intra prediction 238 may apply a suitable interpolation filter type (e.g., according to the signaled interpolation filter information) to the reconstructed block to generate prediction samples 212.

[0059] The inter prediction 236 may determine a reconstructed vector based on the residual vector and the selected vector predictor candidate. The inter prediction 236 may apply a reconstructed predictor or vector (e.g., according to the signaled predictor information) to a reconstructed block, which may be generated using a decoded reference block from a different frame of the decoded picture buffer 232. The inter prediction 236 may apply a suitable interpolation filter type (e.g., according to the signaled interpolation filter information) to the reconstructed block to generate the prediction sample 212.

[0060] The in-loop filter 228 may receive the reconstructed prediction samples and output the decoded video 168 1 .

[0061] As discussed herein, decoder 1 162 1 (and other decoders) can be modified to implement the operation as illustrated in Figures 4-12. Encoding residual vectors and selected vector predictor candidates in inter and intra prediction

[0062] like Figure 2-3 As described, intra prediction 238 can use spatial redundancy to encode blocks and utilize adjacent / reference blocks in the same frame. Inter prediction 236 can use temporal redundancy to encode blocks and utilize reference blocks in different frames. Intra prediction 238 and / or inter prediction 236 in the encoder can implement some form of block prediction, wherein blocks are predicted based on a predictor including a vector and a reference block. The encoder can perform a search to determine the most suitable predictor with a vector and a reference block. Intra prediction 238 and / or inter prediction 236 can encode a residual vector instead of the vector itself by selecting a vector predictor candidate from one or more available vector predictor candidates that can minimize the residual vector.

[0063] Figure 4AExemplary vector predictor candidates for a block shown as current block 402 according to some embodiments of the present disclosure are shown. An encoder may determine a predictor that may be used to generate a prediction block for current block 402. The predictor may include a reference block and a vector that may be applied to the reference block to reconstruct current block 402. The vector may be referred to as a current vector of block 402. Instead of encoding the current vector of current block 402, a residual vector is encoded that represents the difference between the current vector of block 402 and a selected / selected vector predictor candidate. The selected / selected vector predictor candidate may be selected or selected from one or more vector predictor candidates. The vector predictor candidate corresponds to a vector determined for a previously processed neighboring / reference block of current block 402. One or more vector predictor candidates may be represented using an indexed predictor table. The selected particular vector predictor candidate may be signaled in the encoded bitstream using an index to the indexed predictor table corresponding to the particular vector predictor candidate.

[0064] The current block 402 may have one or more vector predictor candidates, e.g., one or more vectors determined for an adjacent / reference, processing block, to select from. An exemplary vector predictor candidate includes a vector Mv0xy 410 having a corresponding horizontal component Mv0x and a corresponding vertical component Mv0y. An exemplary vector predictor candidate includes a vector Mv1xy 412 having a corresponding horizontal component Mv1x and a corresponding vertical component Mv1y. An exemplary vector predictor candidate includes a vector Mv2xy 414 having a corresponding horizontal component Mv2x and a corresponding vertical component Mv2y. An exemplary vector predictor candidate includes a vector Mv3xy 416 having a corresponding horizontal component Mv3x and a corresponding vertical component Mv3y. An exemplary vector predictor candidate includes a vector Mv4xy 418 having a corresponding horizontal component Mv4x and a corresponding vertical component Mv4y.

[0065] Figure 4B An exemplary index predictor table according to some embodiments of the present disclosure is shown, which has corresponding Figure 4A Indexes of exemplary vector predictor candidates shown in . The vector predictor candidates in the index predictor table may correspond to vectors of previously processed blocks, such as neighboring / reference blocks in the same frame as the block to be encoded, or reference blocks in a reference frame.

[0066] In some implementations, the vector predictor candidates may be organized in an index predictor table in ascending order of the distance of the vector predictor candidate to the current vector of the current block 402. An index "0" in the index predictor table may correspond to a vector predictor candidate having vector Mv0xy 410. An index "1" in the index predictor table may correspond to a vector predictor candidate having vector Mv1xy 412. An index "2" in the index predictor table may correspond to a vector predictor candidate having vector Mv2xy 414. An index "3" in the index predictor table may correspond to a vector predictor candidate having vector Mv3xy 416. An index "4" in the index predictor table may correspond to a vector predictor candidate having vector Mv4xy 418.

[0067] In some codecs, the index predictor table may have, for example, up to 8 different vector predictor candidates corresponding to 8 different indices. Figure 4B The exemplary index predictor table shown in has 8 indices or points, 5 of which are used or occupied by vector predictor candidates. The index predictor table may store or reference up to a maximum number of vector predictor candidates.

[0068] In some cases, the index predictor table may have fewer than the maximum number of vector predictor candidates because not all vectors of previously processed blocks are suitable or available as vector predictor candidates. Vectors of blocks that are larger than the block to be encoded may not be available as vector predictor candidates. Some neighboring blocks may not have vectors because they are intra-coded. Some neighboring blocks may not have been processed yet and vectors for the neighboring blocks are not available. Some vectors of processed neighboring blocks may not be unique and only one index is used to store vectors of the same value. The number of unique vectors that are vector predictor candidates may be less than the maximum number of vector predictor candidates for the index predictor table.

[0069] If the index predictor table is not full or populated with vector predictor candidates, one or more available indexes may be used to signal one or more composite vector predictor candidates based on a horizontal component of a first existing vector predictor candidate in the index predictor table and a vertical component of a second existing vector predictor candidate in the index predictor table. Figure 4B The example shown in may have 3 available indexes.

[0070] If there are one or more available indices (or points in the predictor table of indices) to use, the encoder can algorithmically or systematically follow the process of adding a composite predictor candidate. If the composite predictor candidate is determined to be the best predictor candidate, the encoder can signal the decoder to use the composite predictor candidate by encoding the index corresponding to the composite predictor candidate into the bitstream. For example, index "5" can be used by the encoder to signal a composite predictor candidate having a vector based on the horizontal component Mv0x of the vector of the (inseparable) vector predictor candidate at index "0" and the vertical component Mv1y of the vector of the (inseparable) vector predictor candidate at index "1".

[0071] The decoder may also algorithmically or systematically follow the same process to determine the composite predictor candidate signaled based on the index in the coded bitstream. For example, the decoder may read index "5" from the coded bitstream and determine the corresponding composite predictor candidate at index "5". The decoder may determine that the composite predictor candidate has a vector including the horizontal component Mv0x of the vector of the (inseparable) vector predictor candidate at index "0" and the vertical component Mv1y of the vector of the (inseparable) vector predictor candidate at index "1". The decoder may then use the composite predictor candidate and the residual vector to determine the reconstructed vector for the block.

[0072] Figure 5 A flow chart of an exemplary method 500 for encoding a block according to some embodiments of the present disclosure is depicted. A current block is to be encoded in an encoded bitstream by an encoder.

[0073] At 502, a reference block and vector may be determined for a current block. The encoder may perform a search algorithm to determine the vector and reference block that best predict the current block.

[0074] At 504, an index predictor table is determined for the current block.

[0075] In 506, a best vector predictor candidate is selected or determined based on the vector determined in 502. As discussed herein, in some cases, the best vector predictor candidate may be a composite vector predictor based on components from different vector predictor candidates.

[0076] In 508 , a residual vector is determined based on the vector determined in 502 and the best vector predictor candidate selected in 506 .

[0077] In 510, the index into the index predictor table is signaled in the encoded bitstream and the residual vector determined in 508 is encoded in the encoded bitstream.

[0078] At 512, information identifying the reference block and a block residual representing the difference between the current block and the reference block (or a filtered version thereof) may be encoded in the encoded bitstream.

[0079] The information used to identify the reference block, the block residual, the index into the index predictor table corresponding to the best vector predictor candidate, and the residual vector constitutes information that can be used by a decoder to reconstruct the current block being encoded by method 500 .

[0080] Figure 6 A flowchart of an exemplary method 600 for decoding a block according to some embodiments of the present disclosure is depicted. The decoder will decode a current block from an encoded bitstream. The current block may have been previously encoded by method 500.

[0081] In 602, the decoder may perform decoding of other blocks. The decoding process of other blocks may include decoding or reconstructing vectors used to predict other blocks. The decoded vectors may be organized or stored in an index predictor table of the current block to be decoded.

[0082] At 604, a residual vector of a current block to be decoded, an index to an indexed predictor table, a block residual, and information identifying a reference block may be decoded or extracted from the encoded bitstream.

[0083] In 606, a vector predictor candidate identified by the index decoded in 604 may be determined. As discussed herein, the vector predictor candidate may be a composite prediction vector based on components from different vector predictor candidates.

[0084] In 608, a reconstructed vector may be determined based on the identified vector predictor candidate determined in 606 and the residual vector from 604. The residual vector may be added to the identified vector predictor candidate.

[0085] At 610, the reconstruction vector determined at 608 may be applied to the identified reference block to generate a predicted block.

[0086] At 612, the block residual may be added to the predicted block to generate a reconstructed block or a portion of a reconstructed frame. Inseparable Vector Predictor Candidates and Composite Vector Predictor Candidates

[0087] Figure 7 Examples of motion vectors according to some embodiments of the present disclosure are shown. It is contemplated by the present disclosure that the techniques described may be applicable to selecting vector predictor candidates for encoding vectors used in block prediction, and not necessarily to encoding motion vectors used only in motion compensation. Figure 7The motion vectors of the individual blocks are shown in . In particular, the exemplary motion vectors are used to demonstrate why a composite vector predictor can lead to better compression efficiency and more accurate motion vector estimates. To illustrate the approach involving separable predictor components, the following paragraphs compare different implementations: (1) using a single (global or inseparable) predictor for the horizontal and vertical motion vector components, and (2) using separately selected predictors, such as a composite vector predictor or composite vector predictor candidates, for the horizontal and vertical motion vector components. The selection can be performed using a minimum absolute difference criterion.

[0088] For block 702, the current motion vector (currMvxy) generated by motion estimation may be (-402, -108). -402 may correspond to the horizontal component currMvx of currMvxy. -108 may correspond to the vertical component currMvy of currMvxy.

[0089] The one or more available predefined vector predictor candidates may include Mv0xy, Mv1xy, Mv2xy, and Mv3xy. The one or more predefined vector predictor candidates may correspond to the (determined and / or decoded) motion vectors of neighboring / reference blocks (e.g., blocks 704, 706, 708, and 710). Mv0xy may correspond to the motion vector of block 704, eg, (412, 84). o-412 may correspond to the horizontal component Mv0x of Mv0xy. o-84 can correspond to the vertical component Mv0y of Mv0xy. Mv1xy may correspond to the motion vector of block 706, eg, (-368, -98). o-368 may correspond to the horizontal component Mv1x of Mv1xy. o-98 may correspond to the vertical component Mv1y of Mv1xy. Mv2xy may correspond to the motion vector of block 708, eg, (-370, -104). o-370 may correspond to the horizontal component Mv2x of Mv2xy. o-104 may correspond to the vertical component Mv2y of Mv2xy. Mv3xy may correspond to the motion vector of block 710, eg, (-344, -106). o-344 may correspond to the horizontal component Mv3x of Mv3xy. o-106 may correspond to the vertical component Mv3y of Mv3xy.

[0090] When a single (global, inseparable) vector predictor candidate is used for both horizontal and vertical motion vector components, a single or one predefined vector predictor candidate may be selected that minimizes the total motion vector difference. The total motion vector difference may include the Euclidean distance between currMvxy and each vector predictor candidate. In this example, the selection may result in the selection of a single or one predefined vector predictor candidate, such as Mv0xy, e.g., (-412, -84) of block 702.

[0091] The sum of the differences between currMvxy and Mv0xy (sum_diff1) may be equal to 10+24=34. The residual vector resulting from selecting Mv0xy as the vector predictor candidate is (-402, -108)-(412, 84)=(10, -24). The magnitude of the residual vector is 26. The sum of the absolute value of the horizontal component of the residual vector and the absolute value of the vertical component of the residual vector is 34.

[0092] When separable vector predictor candidates are used for horizontal and vertical motion vector components, two vector predictor candidates are selected separately. The selection criteria for selecting the horizontal and vertical predictors may be the same. The selection criteria for selecting the horizontal and vertical predictors may be different.

[0093] Assume that the selection criteria for selecting the horizontal predictor includes the minimum absolute difference between the horizontal component of a given vector predictor candidate and the horizontal component currMvx of currMvxy. For horizontal component selection, the encoder can calculate the absolute difference between the horizontal component currMvx of currMvxy (-402) and the horizontal component of each vector predictor candidate of the neighboring / reference block, for example: For block 704 with vector Mv0xy: |curr mvx - Mv0x| = |(-402) - (-412)| = 10, For block 706 with vector Mv1xy: |curr mvx - Mv1x| = |(-402) - (-368)| = 34, For block 708 with vector Mv2xy: |curr mvx - Mv2x| = |(-402) - (-370)| = 32, and • For block 710 with vector Mv3xy: |curr mvx - Mv3x| = |(-402) - (-344)| = 58.

[0094] The minimum absolute difference of the horizontal component is 10, which corresponds to the vector Mv0xy. An appropriate signal / index indicating the horizontal component Mv0x of Mv0xy may be encoded for the horizontal component.

[0095] Assume that the selection criteria for selecting the vertical predictor includes the minimum absolute difference between the vertical component of a given vector predictor candidate and the vertical component currMvy of currMvxy. For vertical component selection, the encoder can calculate the absolute difference between the vertical component currMvy of currMvxy (-108) and the vertical component of each vector predictor candidate of the neighboring / reference block, for example: For block 704 with vector Mv0xy: |curr mvy - Mv0y| = |(-108) - (-84)| = 24, For block 706 with vector Mv1xy: |curr mvy - Mv1y| = |(-108) - (-98)| = 10, For block 708 with vector Mv2xy: |curr mvy - Mv2y| = |(-108) - (-104)| = 4, and • For block 710 with vector Mv3xy: |curr mvy - Mv3y| = |(-108) - (-106)| = 2.

[0096] The minimum absolute difference of the vertical component is 2, which corresponds to the vector Mv3xy. An appropriate signal / index of the vertical component Mv3y of Mv3xy may be encoded for the vertical component.

[0097] Based on the above, the best vector predictor candidate for the horizontal component is Mv0xy(-412, -84), and the best vector predictor candidate for the vertical component is Mv3xy(-344, -106).

[0098] The sum (sum_diff2) of the differences between the horizontal components currMvx and Mv0x, currMvxy and Mv0xy respectively, and the vertical components currMvy and Mv3y, currMvxy and Mv3xy respectively, can be equal to 10+2=12. sum_diff2 is less than sum_diff1, which may mean that the encoding of sum_diff2 (residual motion vector) may require fewer bits than the encoding of sum_diff1. The residual vector obtained by selecting the horizontal component Mv0x and the vertical component Mv3y (-402, -108)-(412, 106)=(10, -2). The magnitude of the residual vector is ~10.2. This magnitude is smaller than the magnitude of the residual vector generated by selecting an inseparable vector predictor candidate. The sum of the absolute value of the horizontal component of the residual vector and the absolute value of the vertical component of the residual vector is 12. The sum is smaller than the sum of the absolute value of the horizontal component of the residual vector and the absolute value of the vertical component of the residual vector resulting from selecting the inseparable vector predictor candidate.

[0099] In a single (global or inseparable) vector predictor approach, a single global (global or inseparable) vector prediction candidate (e.g., Mv0xy) may be selected for both horizontal and vertical components, aiming to minimize the overall or average motion vector difference in both horizontal and vertical directions. This approach may not take into account the variation in motion patterns along the horizontal and vertical axes.

[0100] In the separable composite vector predictor approach, separate vector predictor candidates are selected independently for the horizontal and vertical components, for example based on a minimum absolute difference criterion. This fine-grained selection allows for more accurate predictions tailored to the specific motion characteristics along each axis, potentially leading to improved compression efficiency and video quality, especially for scenes with complex or non-uniform motion patterns. Overall, the separable vector predictor approach involving a composite vector predictor can provide greater adaptability and accuracy in motion vector prediction, especially when dealing with challenging motion patterns such as Figure 7 Diagonal motion in the example shown. The exemplary index predictor table has one or more available indexes to signal one or more complex Use of the vector predictor

[0101] Fig. 8A -E shows an exemplary index predictor table according to some embodiments of the present disclosure. In some cases, the index predictor table is not full, and one or more (available / free) indexes can be used to signal the use of a composite predictor candidate. A composite vector predictor candidate can have components from different predefined (inseparable) vector predictor candidates in the index predictor table.

[0102] According to a predetermined scheme, available slots / indexes in the index predictor table may be used to signal a specific composite vector predictor candidate. Fig. 8A -E shows an exemplary scheme in which composite vector predictor candidates may be iteratively or progressively added to an index predictor table (or assigned / assigned to available indexes) until the index predictor table is full (or until no more available indexes remain). The scheme may determine an ordered sequence of composite vector predictor candidates that may be added, e.g., Mv1xMv0y, Mv0xMv1y, Mv0xMv2y, Mv2xMv0y, Mv1xMv2y, Mv2xMv1y, etc. The ordered sequence of composite vector predictor candidates may vary depending on the implementation. The scheme may be predefined and used by the encoder and decoder. Since the predefined (inseparable) vector predictor candidates are arranged in ascending order of distance to the vector of the current block to be encoded, in some cases, the scheme shown may work well when using available slots or indices by referencing the vector predictor candidates at index "0" and index "1" earlier in the ordered sequence of vector predictor candidates.

[0103] exist Fig. 8A In , there are two inseparable vector predictor candidates, such as Mv0xy and Mv1xy, located at index "0" and index "1", respectively. Index "2" can be used to signal a composite vector predictor candidate Mv0xMv1y having a horizontal component Mv0x of Mv0xy and a vertical component Mv1y of Mv1xy. Index "3" can be used to signal a composite vector predictor candidate Mv1xMv0y having a horizontal component Mv1x of Mv1xy and a vertical component Mv0y of Mv0xy.

[0104] exist Figure 8B In , there are three inseparable vector predictor candidates, such as Mv0xy, Mv1xy and Mv2xy, at index "0", index "1" and index "2", respectively. Index "3" can be used to signal a composite vector predictor candidate Mv0xMv1y having a horizontal component Mv0x of Mv0xy and a vertical component Mv1y of Mv1xy. Index "4" can be used to signal a composite vector predictor candidate Mv1xMv0y having a horizontal component Mv1x of Mv1xy and a vertical component Mv0y of Mv0xy. Index "5" can be used to signal a composite vector predictor candidate Mv0xMv2y having a horizontal component Mv0x of Mv0xy and a vertical component Mv2y of Mv2xy. Index "6" can be used to signal a composite vector predictor candidate Mv2xMv0y having a horizontal component Mv2x of Mv2xy and a vertical component Mv0y of Mv0xy. Index '7' may be used to signal a composite vector predictor candidate Mv1xMv2y having a horizontal component Mv1x of Mv1xy and a vertical component Mv2y of Mv2xy.

[0105] exist Figure 8C In, there are four inseparable vector predictor candidates, such as Mv0xy, Mv1xy, Mv2xy and Mv3xy, at index "0", index "1", index "2" and index "3", respectively. Index "4" can be used to signal a composite vector predictor candidate Mv0xMv1y having a horizontal component Mv0x of Mv0xy and a vertical component Mv1y of Mv1xy. Index "5" can be used to signal a composite vector predictor candidate Mv1xMv0y having a horizontal component Mv1x of Mv1xy and a vertical component Mv0y of Mv0xy. Index "6" can be used to signal a composite vector predictor candidate Mv0xMv2y having a horizontal component Mv0x of Mv0xy and a vertical component Mv2y of Mv2xy. Index '7' may be used to signal a composite vector predictor candidate Mv2xMv0y having a horizontal component Mv2x of Mv2xy and a vertical component Mv0y of Mv0xy.

[0106] exist Fig.8D In, there are five inseparable vector predictor candidates, such as Mv0xy, Mv1xy, Mv2xy, Mv3xy and Mv4xy, at index "0", index "1", index "2", index "3" and index "4", respectively. Index "5" can be used to signal a composite vector predictor candidate Mv0xMv1y having a horizontal component Mv0x of Mv0xy and a vertical component Mv1y of Mv1xy. Index "6" can be used to signal a composite vector predictor candidate Mv1xMv0y having a horizontal component Mv1x of Mv1xy and a vertical component Mv0y of Mv0xy. Index "7" can be used to signal a composite vector predictor candidate Mv0xMv2y having a horizontal component Mv0x of Mv0xy and a vertical component Mv2y of Mv2xy.

[0107] exist Fig. 8E , there are five inseparable vector predictor candidates, e.g., Mv0xy, Mv1xy, Mv2xy, Mv3xy, Mv4xy, and Mv5xy, at index "0", index "1", index "2", index "3", index "4", and index "5", respectively. Index "6" may be used to signal a composite vector predictor candidate Mv0xMv1y having a horizontal component Mv0x of Mv0xy and a vertical component Mv1y of Mv1xy. Index "7" may be used to signal a composite vector predictor candidate Mv1xMv0y having a horizontal component Mv1x of Mv1xy and a vertical component Mv0y of Mv0xy. Example Encoder Implementation

[0108] Fig. 9 An exemplary encoder 102 according to some embodiments of the present disclosure is shown. The encoder 102 may implement and / or include one or more of the following: a (motion) vector predictor table 902 , a selection criterion 904 , an index signaling 906 , and a residual vector 908 .

[0109] The encoder 102 may include or maintain a vector predictor table 902 (sometimes referred to herein as an indexed vector predictor table). The vector predictor table 902 may include a table of predefined vector predictor candidates, each vector predictor candidate having a horizontal and a vertical vector component. The vector predictor table 902 may include vector predictor candidates based on one or more of a reference block, a spatial pattern, a temporal pattern, or other suitable factors.

[0110] The encoder 102 may include a selection criterion 904. For a block (or each block) of a video frame, the selection criterion 904 may evaluate the available vector predictor candidates (e.g., in the vector predictor table 902) and select the best or optimal horizontal and vertical predictors or predictor components separately. The selection criterion 904 may optimize the prediction accuracy in the predictor selection. The selection criterion 904 may change based on the characteristics of the video being encoded (e.g., at the frame sequence level, at the frame level, or at the block level). The selection criterion 904 may switch between using a composite vector predictor and not using a composite vector predictor (e.g., using only a non-separable composite vector predictor).

[0111] The encoder 102 may include index signaling 906. The index signaling 906 may encode or write separate indices for the selected horizontal and vertical predictors in the compressed video bitstream. In some embodiments, the index signaling 906 may encode separate indices if the selected predictors selected by the selection criteria 904 are not derived from the same predefined motion vector. The indices written or encoded by the index signaling 906 may indicate which horizontal and vertical predictors have been selected for the block (or each block).

[0112] In some cases, the index signaling 906 may encode an index corresponding to a composite vector predictor candidate. The index may be predetermined to relate to / correspond to a specific combination of a horizontal component of a first vector predictor candidate and a vertical component of a second vector predictor candidate, without the need to use two indices to relate to the first vector predictor candidate and the second vector predictor candidate.

[0113] In some cases, index signaling 906 may encode one or more syntax elements in the coded bitstream to indicate whether to use the composite vector predictor candidate. The syntax element may be included at the frame sequence level, for example, in a sequence header. The syntax element may be included at the frame level, for example, in a frame header. The syntax element may be included at the block level, for example, in block metadata.

[0114] In some embodiments, the encoder 102 may have a Figure 2Components such as intra prediction 238, inter prediction 236, and motion estimation 234 shown in . One or more such components of the encoder 102 can determine a reference block and a vector for a block to be encoded. One or more such components of the encoder 102 can determine one or more vector predictor candidates for the block to be encoded. The one or more vector predictor candidates can be in a vector predictor table 902 (or an indexed vector predictor table). The selection criteria 904 can determine a first vector predictor candidate among the one or more vector predictor candidates, which has a horizontal component that is closest to the horizontal component of the vector. The selection criteria 904 can determine a second vector predictor candidate among the one or more vector predictor candidates, which has a vertical component that is closest to the vertical component of the vector. The second vector predictor candidate can be different from the first vector predictor candidate. Index signaling 906 can determine an index in the index predictor table corresponding to a third vector predictor candidate. The third vector predictor candidate corresponds to the horizontal component of the first vector predictor candidate and the vertical component of the second vector predictor candidate. The third vector predictor candidate can be a composite vector predictor candidate. The index signaling 906 can encode the index of the block to be encoded in the encoded bitstream.

[0115] In some embodiments, the selection criteria 904 may determine the first vector predictor candidate by determining a horizontal absolute difference between a horizontal component of the vector and a horizontal component of each of the one or more vector predictor candidates. In some embodiments, the first vector predictor candidate has the smallest of the horizontal absolute differences.

[0116] In some embodiments, the selection criteria 904 may determine the second vector predictor candidate by determining a vertical absolute difference between the vertical component of the vector and the vertical component of each of the one or more vector predictor candidates. In some embodiments, the second vector predictor candidate has the smallest of the vertical absolute differences.

[0117] Using the selected vector predictor candidate selected in the selection criteria 904, the encoder 102 may determine a residual vector 908. In some embodiments, the encoder 102 may determine a horizontal component of the residual vector 908 based on the horizontal component of the vector and the first vector predictor candidate. The horizontal component of the residual vector 908 may include a difference between the horizontal component of the vector and the horizontal component of the first vector predictor candidate. The encoder 102 may determine a vertical component of the residual vector 908 based on the vertical component of the vector and the second vector predictor candidate. The vertical component of the residual vector 908 may include a difference between the vertical component of the vector and the vertical component of the second vector predictor candidate. The encoder 102 may encode the residual vector 908 in the encoded bitstream.

[0118] In some cases, the magnitude of residual vector 908 is less than the magnitude of another residual vector based on the vector and the first vector predictor candidate. The other residual vector may have a horizontal component based on the vector and the horizontal component of the first vector predictor candidate, and a vertical component based on the vector and the vertical component of the first vector predictor candidate. The other residual vector may have been the result of not using a composite vector predictor candidate. In some cases, the sum of the horizontal component of residual vector 908 and the vertical component of residual vector 908 is less than the sum of the horizontal component of the other residual vector and the vertical component of the other residual vector.

[0119] In some cases, the magnitude of residual vector 908 is less than the magnitude of another residual vector based on the vector and the second vector predictor candidate. The other residual vector may have a horizontal component based on the horizontal component of the vector and the second vector predictor candidate, and a vertical component based on the vertical component of the vector and the second vector predictor candidate. The other residual vector may have been the result of not using a composite vector predictor candidate. In some cases, the sum of the horizontal component of residual vector 908 and the vertical component of residual vector 908 is less than the sum of the horizontal component of the other residual vector and the vertical component of the other residual vector.

[0120] In some embodiments, the index predictor table (e.g., in vector predictor table 902) includes a first vector predictor candidate, a second vector predictor candidate, and a third vector predictor candidate. In some embodiments, the index predictor table includes indices corresponding to the first vector predictor candidate, the second vector predictor candidate, and the third vector predictor candidate. The first vector predictor candidate may correspond to a vector of a first coded block in the coded bitstream. The second vector predictor candidate may correspond to a vector of a second coded block in the coded bitstream. Example Decoder Implementation

[0121] Fig.10 An exemplary decoder 1621 according to some embodiments of the present disclosure is shown. The decoder 1621 may implement and / or include one or more of the following: index interpretation 1002, prediction process 1004, and residual vectors 1006 (eg, residual motion vectors, residual vectors, etc.).

[0122] Decoder 1621 may include index interpretation 1002. Decoder 1621 may receive a compressed / encoded bitstream that may include one or more indices signaled by an encoder (e.g., encoder 102 in the figure). Index interpretation 1002 may use one or more indices in the compressed / encoded bitstream to select or determine corresponding horizontal and vertical predictors from the decoder's own table. Index interpretation 1002 may determine corresponding composite vector predictor candidates based on the indices, where the composite vector predictor candidates may include a horizontal component of a first vector predictor candidate and a vertical component of a second vector predictor candidate.

[0123] Decoder 162 1 A prediction process 1004 may be included. The prediction process 1004 may reconstruct a motion vector for the block based on the determined predictor candidates (e.g., inseparable vector predictor candidates or compound vector predictor candidates) retrieved by the index interpretation 1002. The prediction process 1004 may determine separate horizontal and vertical motion vector components corresponding to the vector predictor candidates signaled by one or more indexes.

[0124] Decoder 1621 may include residual vector 1006. The remaining motion information not considered by the determined predictor candidate may be presented as a residual motion vector. Residual vector 1006 may be encoded by an encoder (e.g., encoder 102 in the figure) and transmitted as part of a compressed / encoded bitstream. The residual vector 1006 and the determined predictor candidate retrieved by index interpretation 1002 may be used by prediction process 1004 to reconstruct the motion vector of the block, and the residual motion vector may be considered when reconstructing at least a portion of the video frame.

[0125] The prediction process 1004 may decode a residual vector 1006 from the compressed / encoded bitstream, which may have a first (horizontal) component of the residual vector and a second (vertical) component of the residual vector.

[0126] In some embodiments, decoder 162 1 Can have such as Figure 3 Components such as intra prediction 238 and inter prediction 236 shown in FIG. Decoder 162 1One or more such components of may determine a reference block and a residual vector (e.g., residual vector 1006) from a coded bitstream. Index interpretation 1002 may determine an index predictor table from the coded bitstream. The index predictor table may include a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and a second decoded vector. Index interpretation 1002 may determine a corresponding vector predictor in the index predictor table based on an index of the index predictor table signaled in the coded bitstream. Prediction process 1004 may determine a reconstruction vector based on the corresponding vector predictor and the residual vector. Prediction process 1004 may apply the reconstruction vector to the reference block to generate a prediction block.

[0127] In some embodiments, the prediction process 1004 may determine or extract a block residual from the encoded bitstream. The prediction process 1004 may apply the block residual to the prediction block to produce a portion of a reconstructed frame.

[0128] In some embodiments, the first component of the first decoded vector is a horizontal component of the first decoded vector. In some embodiments, the second component of the second decoded vector is a vertical component of the second decoded vector.

[0129] In some embodiments, the residual vector 1006 has a first component of the residual vector and a second component of the residual vector, and the reconstructed vector includes the first component of the reconstructed vector and the second component of the reconstructed vector. The prediction process 1004 can determine the reconstructed vector by adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstructed vector, and adding the second component of the residual vector and the second component of the second decoded vector to obtain the second component of the reconstructed vector. Method using composite vector predictor

[0130] Fig.11 A flowchart of an exemplary method 1100 for decoding a coded bitstream according to some embodiments of the present disclosure is depicted. The method 1100 may be implemented in a decoder as described and illustrated herein. The method 1100 may be illustrated Figure 6 The method 1100 may be performed by Fig.13 The computing device 1300 is used to execute.

[0131] At 1102, a reference block and a residual vector are determined from a coded bitstream.

[0132] At 1104, an index predictor table may be determined from the encoded bitstream. The index predictor table may include a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and the second decoded vector.

[0133] In 1106, a corresponding vector predictor in the indexed predictor table may be determined based on an index of the indexed predictor table signaled in the encoded bitstream.

[0134] At 1108, a reconstructed vector may be determined based on the corresponding vector predictor and the residual vector.

[0135] At 1110, the reconstructed vector may be applied to the reference block to generate a predicted block.

[0136] Fig.12 A flowchart of an exemplary method 1200 for encoding a video according to some embodiments of the present disclosure is depicted. The method 1200 may be implemented in an encoder as described and illustrated herein. The method 1200 may be illustrated Figure 5 The method 1200 may be performed by Fig.13 The computing device 1300 is used to execute.

[0137] At 1202, a reference block and a vector for a block to be encoded are determined.

[0138] At 1204, one or more vector predictor candidates for the block to be encoded are determined.

[0139] At 1206, a first vector predictor candidate of the one or more vector predictor candidates having a horizontal component that is closest to a horizontal component of the vector is determined.

[0140] At 1208, a second vector predictor candidate of the one or more vector predictor candidates having a vertical component that is closest to the vertical component of the vector is determined. The second vector predictor candidate may be different from the first vector predictor candidate.

[0141] At 1210, an index in the index predictor table may be determined. The index may correspond to a third vector predictor candidate. The third vector predictor candidate may correspond to a horizontal component of the first vector predictor candidate and a vertical component of the second vector predictor candidate.

[0142] At 1212, the index of the block to be encoded is encoded in the encoded bitstream. Exemplary Computing Devices

[0143] Fig.13is a block diagram of an apparatus or system (e.g., an exemplary computing device 1300) according to some embodiments of the present disclosure. One or more computing devices 1300 may be used to implement the functionality described in the figures and herein. Multiple components illustrated in the figures may be included in computing device 1300, but any one or more of these components may be omitted or duplicated as appropriate for the application. In some embodiments, some or all of the components included in computing device 1300 may be attached to one or more motherboards. In some embodiments, one or more of these components are manufactured onto a single system-on-chip (SoC) die. Additionally, in various embodiments, computing device 1300 may not include Fig.13 , and the computing device 1300 may include an interface circuit module for coupling to the one or more components. For example, the computing device 1300 may not include the display device 1306, and may include a display device interface circuit module (e.g., a connector and a driver circuit module), and the display device 1306 may be coupled to the display device interface circuit module. In another set of examples, the computing device 1300 may not include the audio input device 1318 or the audio output device 1308, and may include an audio input or output device interface circuit module (e.g., a connector and a supporting circuit module), and the audio input device 1318 or the audio output device 1308 may be coupled to the audio input or output device interface circuit module.

[0144] The computing device 1300 may include a processing device 1302 (e.g., one or more processing devices, one or more of the same type of processing devices, one or more of different types of processing devices). The processing device 1302 may include an electronic circuit module that processes electronic data from a data storage element (e.g., a register, a memory, a resistor, a capacitor, a qubit cell) to transform the electronic data into other electronic data that can be stored in the register and / or the memory. Examples of the processing device 1302 may include a central processing unit (CPU), a graphics processing unit (GPU), a quantum processor, a machine learning processor, an artificial intelligence processor, a neural network processor, an artificial intelligence accelerator, an application specific integrated circuit (ASIC), an analog signal processor, an analog computer, a microprocessor, a digital signal processor, a field programmable gate array (FPGA), a tensor processing unit (TPU), a data processing unit (DPU), etc.

[0145] The computing device 1300 may include a memory 1304, which may itself include one or more memory devices, such as volatile memory (e.g., DRAM), non-volatile memory (e.g., read-only memory (ROM)), high bandwidth memory (HBM), flash memory, solid-state memory, and / or a hard drive. The memory 1304 includes one or more non-transitory computer-readable storage media. In some embodiments, the memory 1304 may include a memory that shares a die with the processing device 1302. In some embodiments, the memory 1304 includes one or more non-transitory computer-readable media storing instructions that are executable to perform the operations described herein, such as Figure 1-12 , method 500, method 600, method 1100, and method 1200. Memory 1304 may include one or more non-transitory computer-readable media storing instructions that are executable to perform operations associated with determining and encoding best / optimal predictors separately for horizontal motion vector components and vertical motion vector components. Memory 1304 may include one or more non-transitory computer-readable media storing instructions that are executable to perform operations associated with decoding and applying predictors separately for horizontal motion vector components and vertical motion vector components. Memory 1304 may include one or more non-transitory computer-readable media storing instructions that are executable to perform operations associated with decoding and applying predictors separately for horizontal motion vector components and vertical motion vector components. Memory 1304 may include one or more non-transitory computer-readable media storing one or more of the following: input frames to the encoder, intermediate data structures calculated by the encoder, bitstreams generated by the encoder, bitstreams received by the decoder, intermediate data structures calculated by the decoder, and reconstructed frames generated by the decoder. Memory 1304 may include one or more non-transitory computer-readable media storing instructions that are executable to perform operations associated with decoding and applying predictors separately for horizontal motion vector components and vertical motion vector components. Figure 5 One or more of the data received and / or the data generated by the method 500. The memory 1304 may include one or more non-transitory computer-readable media that stores the Figure 6 One or more of the data received and / or the data generated by the method 600. The instructions stored in one or more non-transitory computer-readable media can be executed by the processing device 1302. In some embodiments, the memory 1304 can store data, such as data structures, binary data, bits, metadata, files, spots, etc. As described in the figures and herein. Exemplary data that can be stored in the memory 1304 is depicted. As depicted, the memory 1304 can store one or more data.

[0146] In some embodiments, the computing device 1300 may include a communication device 1312 (e.g., one or more communication devices). For example, the communication device 1312 may be configured to manage wired and / or wireless communications for transmitting data to and from the computing device 1300. The term "wireless" and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communication channels, etc. that can transfer data through the use of modulated electromagnetic radiation passing through a non-solid medium. The term does not imply that the associated device does not contain any wires, although in some embodiments they may not. The communication device 1312 may implement any of a plurality of wireless standards or protocols, including but not limited to Institute of Electrical and Electronics Engineers (IEEE) standards, including: Wi-Fi (IEEE 802.10 series), IEEE 802.16 standards (e.g., IEEE802.16-2005 amendments), Long Term Evolution (LTE) projects together with any amendments, updates and / or revisions (e.g., Advanced LTE projects, Ultra Mobile Broadband (UMB) projects (also known as "3GPP2"), etc.). Broadband wireless access (BWA) networks compatible with IEEE 802.16 are often referred to as WiMAX networks (an acronym for Worldwide Interoperability for Microwave Access), which is a certification mark for products that have passed the conformance and interoperability tests of the IEEE 802.16 standard. The communication device 1312 may operate according to a Global System for Mobile Communications (GSM), General Packet Radio Service (GPRS), Universal Mobile Telecommunications System (UMTS), High Speed ​​Packet Access (HSPA), Evolved HSPA (E-HSPA), or LTE network. The communication device 1312 may operate according to Enhanced Data for GSM Evolution (EDGE), GSM EDGE Radio Access Network (GERAN), Universal Terrestrial Radio Access Network (UTRAN), or Evolved UTRAN (E-UTRAN). The communication device 1312 may operate according to Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Digital Enhanced Cordless Telecommunications (DECT), Evolution Data Optimized (EV-DO), and derivatives thereof, as well as any other wireless protocols designated as 3G, 4G, 5G, and higher. In other embodiments, the communication device 1312 may operate according to other wireless protocols. The computing device 1300 may include an antenna 1322 to facilitate wireless communications and / or receive other wireless communications (such as radio frequency transmissions). The computing device 1300 may include receiver circuitry and / or transmitter circuitry. In some embodiments, the communication device 1312 may manage wired communications, such as electrical, optical, or any other suitable communication protocol (e.g., Ethernet). As described above, the communication device 1312 may include multiple communication chips.For example, the first communication device 1312 may be dedicated to short-range wireless communications such as Wi-Fi or Bluetooth, while the second communication device 1312 may be dedicated to longer-range wireless communications such as Global Positioning System (GPS), EDGE, GPRS, CDMA, WiMAX, LTE, EV-DO, etc. In some embodiments, the first communication device 1312 may be dedicated to wireless communications, while the second communication device 1312 may be dedicated to wired communications.

[0147] Computing device 1300 may include power supply / power circuit module 1314. Power supply / power circuit module 1314 may include one or more energy storage devices (e.g., batteries or capacitors) and / or circuit modules for coupling components of computing device 1300 to an energy source (e.g., DC power, AC power, etc.) separate from computing device 1000.

[0148] Computing device 1300 may include a display device 1306 (or a corresponding interface circuit module, as discussed above). Display device 1306 may include any visual indicator, such as, for example, a heads-up display, a computer monitor, a projector, a touch screen display, a liquid crystal display (LCD), a light emitting diode display, or a flat panel display.

[0149] Computing device 1300 may include audio output device 1308 (or corresponding interface circuit modules, as discussed above). Audio output device 1308 may include any device that generates audible indicators, such as, for example, speakers, headphones, or earphones.

[0150] The computing device 1300 may include an audio input device 1318 (or a corresponding interface circuit module, as discussed above). The audio input device 1318 may include any device that generates a signal representing sound, such as a microphone, a microphone array, or a digital instrument (e.g., an instrument with a Musical Instrument Digital Interface (MIDI) output).

[0151] Computing device 1300 may include GPS device 1316 (or a corresponding interface circuit module, as discussed above). GPS device 1316 may communicate with a satellite-based system and may receive the location of computing device 1300, as is known in the art.

[0152] Computing device 1300 may include sensor 1330 (or one or more sensors). Computing device 1300 may include corresponding interface circuit modules, as discussed above). Sensor 1330 may sense physical phenomena and convert the physical phenomena into electrical signals that can be processed by, for example, processing device 1302. Examples of sensor 1330 may include: capacitive sensors, inductive sensors, resistive sensors, electromagnetic field sensors, light sensors, cameras, imagers, microphones, pressure sensors, temperature sensors, vibration sensors, accelerometers, gyroscopes, strain sensors, moisture sensors, humidity sensors, distance sensors, range sensors, time of flight sensors, pH sensors, particle sensors, air quality sensors, chemical sensors, gas sensors, biosensors, ultrasonic sensors, scanners, etc.

[0153] The computing device 1300 may include another output device 1310 (or a corresponding interface circuit module, as discussed above). Examples of other output devices 1310 may include an audio codec, a video codec, a printer, a wired or wireless transmitter for providing information to other devices, a tactile output device, a gas output device, a vibration output device, a lighting output device, a home automation controller, or an additional storage device.

[0154] The computing device 1300 may include another input device 1320 (or a corresponding interface circuit module, as discussed above). Examples of other input devices 1320 may include an accelerometer, a gyroscope, a compass, an image capture device, a keyboard, a cursor control device such as a mouse, a stylus, a touchpad, a barcode reader, a quick response (QR) code reader, any sensor, or a radio frequency identification (RFID) reader.

[0155] The computing device 1300 may have any desired form factor, such as a handheld or mobile computer system (e.g., a cellular phone, a smart phone, a mobile Internet device, a music player, a tablet computer, a laptop computer, a netbook computer, a personal digital assistant (PDA), an ultra-mobile personal computer, a remote control, a wearable device, a headband, glasses, footwear, electronic clothing, etc.), a desktop computer system, a server or other networked computing component, a printer, a scanner, a monitor, a set-top box, an entertainment control unit, a vehicle control unit, a digital camera, a digital video recorder, an Internet of Things device, or a wearable computer system. In some embodiments, the computing device 1300 may be any other electronic device that processes data. Select Example

[0156] Example 1 provides a method, including determining a reference block and a residual vector from a coded bitstream; determining an index predictor table from the coded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and a second decoded vector; determining a corresponding vector predictor in the index predictor table based on an index of the index predictor table signaled in the coded bitstream; determining a reconstruction vector based on the corresponding vector predictor and the residual vector; and applying the reconstruction vector to the reference block to generate a prediction block.

[0157] Example 2 provides the method of Example 1, further comprising determining a block residual from the encoded bitstream; and applying the block residual to the prediction block to produce a portion of the reconstructed frame.

[0158] Example 3 provides the method of Example 1 or 2, wherein the first component of the first decoded vector is a horizontal component of the first decoded vector.

[0159] Example 4 provides the method of any one of Examples 1-3, wherein the second component of the second decoded vector is a vertical component of the second decoded vector.

[0160] Example 5 provides the method of any of Examples 1-4, wherein the index predictor table further includes a fourth index corresponding to a fourth vector predictor having the first component of the second decoded vector and the second component of the first decoded vector.

[0161] Example 6 provides the method of any of Examples 1-5, wherein the index predictor table further comprises a fifth index corresponding to a fifth vector predictor having a third decoded vector for a third decoded block.

[0162] Example 7 provides the method of Example 6, wherein the index predictor table further includes a sixth index corresponding to a sixth vector predictor having the first component of the first decoded vector and the second component of the third decoded vector.

[0163] Example 8 provides the method of Example 6 or 7, wherein the index predictor table further includes a seventh index corresponding to a seventh vector predictor having the first component of the third decoded vector and the second component of the first decoded vector.

[0164] Example 9 provides the method of any of Examples 6-8, wherein the index predictor table further includes an eighth index corresponding to an eighth vector predictor having the first component of the second decoded vector and the second component of the third decoded vector.

[0165] Example 10 provides the method of any of Examples 6-9, wherein the index predictor table further includes a ninth index corresponding to a ninth vector predictor having the first component of the third decoded vector and the second component of the second decoded vector.

[0166] Example 11 provides a method of any one of Examples 1-10, wherein: the residual vector includes a first component of the residual vector and a second component of the residual vector; the reconstructed vector includes a first component of the reconstructed vector and a second component of the reconstructed vector; and determining the reconstructed vector includes adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstructed vector; and adding the second component of the residual vector and the second component of the second decoded vector to obtain the second component of the reconstructed vector.

[0167] Example 12 provides a method comprising: determining a reference block and a vector for a block to be encoded; determining one or more vector predictor candidates for the block to be encoded; determining a first vector predictor candidate among the one or more vector predictor candidates having a horizontal component that is closest to the horizontal component of the vector; determining a second vector predictor candidate among the one or more vector predictor candidates having a vertical component that is closest to the vertical component of the vector, wherein the second vector predictor candidate is different from the first vector predictor candidate; determining an index in an index predictor table corresponding to a third vector predictor candidate, wherein the third vector predictor candidate corresponds to the horizontal component of the first vector predictor candidate and the vertical component of the second vector predictor candidate; and encoding the index of the block to be encoded in the encoded bitstream.

[0168] Example 13 provides the method of Example 12, wherein determining the first vector predictor candidate comprises determining a horizontal absolute difference between a horizontal component of the vector and a horizontal component of each of the one or more vector predictor candidates.

[0169] Example 14 provides the method of Example 13, wherein the first vector predictor candidate has a smallest of the horizontal absolute differences.

[0170] Example 15 provides the method of any one of Examples 12-14, wherein determining the second vector predictor candidate comprises determining a vertical absolute difference between a vertical component of the vector and a vertical component of each of the one or more vector predictor candidates.

[0171] Example 16 provides the method of Example 15, wherein the second vector predictor candidate has a smallest vertical absolute difference among the vertical absolute differences.

[0172] Example 17 provides the method of any one of Examples 12-16, further comprising determining a horizontal component of the residual vector based on the vector and horizontal components of the first vector predictor candidate; and determining a vertical component of the residual vector based on the vector and vertical components of the second vector predictor candidate.

[0173] Example 18 provides the method of Example 17, further comprising encoding the residual vector in the encoded bitstream.

[0174] Example 19 provides the method of Example 17 or 18, wherein a magnitude of the residual vector is smaller than a magnitude of a further residual vector based on the vector and the first vector predictor candidate.

[0175] Example 20 provides the method of any of Examples 17-19, wherein a magnitude of the residual vector is smaller than a magnitude of a further residual vector based on the vector and the second vector predictor candidate.

[0176] Example 21 provides the method of any of Examples 12-20, wherein the index predictor table includes a first vector predictor candidate, a second vector predictor candidate, and a third vector predictor candidate.

[0177] Example 22 provides the method of any one of Examples 12-21, wherein the first vector predictor candidate corresponds to a vector of a first coding block in the encoded bitstream.

[0178] Example 23 provides the method of any one of Examples 12-22, wherein the second vector predictor candidate corresponds to a vector of a second coding block in the encoded bitstream.

[0179] Example 24 provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determine a reference block and a residual vector from a coded bitstream; determine an index predictor table from the coded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and a second decoded vector; determine a corresponding vector predictor in the index predictor table based on an index of the index predictor table signaled in the coded bitstream; determine a reconstructed vector based on the corresponding vector predictor and the residual vector; and apply the reconstructed vector to the reference block to produce a predicted block.

[0180] Example 25 provides one or more non-transitory computer-readable media of Example 24, wherein the instructions further cause the one or more processors to: determine a block residual from the encoded bitstream; and apply the block residual to the prediction block to produce a portion of the reconstructed frame.

[0181] Example 26 provides the one or more non-transitory computer-readable media of Example 24 or 25, wherein the first component of the first decoded vector is a horizontal component of the first decoded vector.

[0182] Example 27 provides the one or more non-transitory computer-readable media of any of Examples 24-26, wherein the second component of the second decoded vector is a vertical component of the second decoded vector.

[0183] Example 28 provides one or more non-transitory computer-readable media of any of Examples 24-27, wherein the index predictor table further includes a fourth index corresponding to a fourth vector predictor having the first component of the second decoded vector and the second component of the first decoded vector.

[0184] Example 29 provides the one or more non-transitory computer-readable media of any of Examples 24-28, wherein the index predictor table further comprises a fifth index corresponding to a fifth vector predictor having a third decoded vector for a third decoded block.

[0185] Example 30 provides the one or more non-transitory computer-readable media of Example 29, wherein the index predictor table further comprises a sixth index corresponding to a sixth vector predictor having a first component of the first decoded vector and a second component of the third decoded vector.

[0186] Example 31 provides one or more non-transitory computer-readable media of Example 29 or 30, wherein the index predictor table further includes a seventh index corresponding to a seventh vector predictor having a first component of the third decoded vector and a second component of the first decoded vector.

[0187] Example 32 provides the one or more non-transitory computer-readable media of any of Examples 29-31, wherein the index predictor table further comprises an eighth index corresponding to an eighth vector predictor having the first component of the second decoded vector and the second component of the third decoded vector.

[0188] Example 33 provides one or more non-transitory computer-readable media of any of Examples 29-32, wherein the indexed predictor table further includes a ninth index corresponding to a ninth vector predictor having a first component of the third decoded vector and a second component of the second decoded vector.

[0189] Example 34 provides one or more non-transitory computer-readable media of any of Examples 24-33, wherein: the residual vector includes a first component of the residual vector and a second component of the residual vector; the reconstruction vector includes a first component of the reconstruction vector and a second component of the reconstruction vector; and determining the reconstruction vector includes adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstruction vector; and adding the second component of the residual vector and the second component of the second decoded vector to obtain the second component of the reconstruction vector.

[0190] Example 35 provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determine a reference block and a vector for a block to be encoded; determine one or more vector predictor candidates for the block to be encoded; determine a first vector predictor candidate among the one or more vector predictor candidates having a horizontal component that is closest to the horizontal component of the vector; determine a second vector predictor candidate among the one or more vector predictor candidates having a vertical component that is closest to the vertical component of the vector, wherein the second vector predictor candidate is different from the first vector predictor candidate; determine an index in an index predictor table corresponding to a third vector predictor candidate, wherein the third vector predictor candidate corresponds to the horizontal component of the first vector predictor candidate and the vertical component of the second vector predictor candidate; and encode the index of the block to be encoded in the encoded bitstream.

[0191] Example 36 provides the one or more non-transitory computer-readable media of Example 35, wherein determining the first vector predictor candidate comprises determining a horizontal absolute difference between a horizontal component of the vector and a horizontal component of each of the one or more prediction vector candidates.

[0192] Example 37 provides the one or more non-transitory computer-readable media of Example 36, wherein the first vector predictor candidate has a smallest of the horizontal absolute differences.

[0193] Example 38 provides the one or more non-transitory computer-readable media of any one of Examples 35-37, wherein determining the second vector predictor candidate comprises determining a vertical absolute difference between a vertical component of the vector and a vertical component of each of the one or more vector predictor candidates.

[0194] Example 39 provides the one or more non-transitory computer-readable media of Example 38, wherein the second vector predictor candidate has a smallest vertical absolute difference among the vertical absolute differences.

[0195] Example 40 provides one or more non-transitory computer-readable media of any of Examples 35-39, wherein the instructions further cause one or more processors to: determine a horizontal component of a residual vector based on the vector and horizontal components of a first vector predictor candidate; and determine a vertical component of the residual vector based on the vector and vertical components of a second vector predictor candidate.

[0196] Example 41 provides the one or more non-transitory computer-readable media of Example 40, further comprising encoding the residual vector in the encoded bitstream.

[0197] Example 42 provides the one or more non-transitory computer-readable media of Example 40 or 41, wherein a magnitude of the residual vector is less than a magnitude of another residual vector based on the vector and the first vector predictor candidate.

[0198] Example 43 provides the one or more non-transitory computer-readable media of any of Examples 40-42, wherein a magnitude of the residual vector is less than a magnitude of another residual vector based on the vector and the second vector predictor candidate.

[0199] Example 44 provides the one or more non-transitory computer-readable media of any one of Examples 35-43, wherein the index predictor table includes a first vector predictor candidate, a second vector predictor candidate, and a third vector predictor candidate.

[0200] Example 45 provides the one or more non-transitory computer-readable media of any one of Examples 35-44, wherein the first vector predictor candidate corresponds to a vector of a first coding block in the encoded bitstream.

[0201] Example 46 provides the one or more non-transitory computer-readable media of any one of Examples 35 to 45, wherein the second vector predictor candidate corresponds to a vector of a second coding block in the encoded bitstream.

[0202] Example 47 provides a device comprising one or more processors for executing instructions; and one or more non-transitory computer-readable media storing the instructions, wherein the instructions cause the one or more processors to: determine a reference block and a residual vector from a coded bitstream; determine an index predictor table from the coded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and the second decoded vector; determine a corresponding vector predictor in the index predictor table based on an index of the index predictor table signaled in the coded bitstream; determine a reconstructed vector based on the corresponding vector predictor and the residual vector; and apply the reconstructed vector to the reference block to produce a prediction block.

[0203] Example 48 provides the apparatus of Example 47, wherein the instructions further cause the one or more processors to: determine a block residual from the encoded bitstream; and apply the block residual to the prediction block to produce a portion of the reconstructed frame.

[0204] Example 49 provides the apparatus of Example 47 or 48, wherein the first component of the first decoded vector is a horizontal component of the first decoded vector.

[0205] Example 50 provides the apparatus of any one of Examples 47 to 49, wherein the second component of the second decoded vector is a vertical component of the second decoded vector.

[0206] Example 51 provides the apparatus of any of Examples 47-50, wherein the index predictor table further comprises a fourth index corresponding to a fourth vector predictor having the first component of the second decoded vector and the second component of the first decoded vector.

[0207] Example 52 provides the apparatus of any one of Examples 47 to 51, wherein the index predictor table further comprises a fifth index corresponding to a fifth vector predictor having a third decoded vector of a third decoded block.

[0208] Example 53 provides the apparatus of Example 52, wherein the index predictor table further comprises a sixth index corresponding to a sixth vector predictor having the first component of the first decoded vector and the second component of the third decoded vector.

[0209] Example 54 provides the apparatus of Example 52 or 53, wherein the index predictor table further comprises a seventh index corresponding to a seventh vector predictor having the first component of the third decoded vector and the second component of the first decoded vector.

[0210] Example 55 provides the apparatus of any of Examples 52-54, wherein the index predictor table further comprises an eighth index corresponding to an eighth vector predictor having the first component of the second decoded vector and the second component of the third decoded vector.

[0211] Example 56 provides the apparatus of any of Examples 52-55, wherein the index predictor table further comprises a ninth index corresponding to a ninth vector predictor having the first component of the third decoded vector and the second component of the second decoded vector.

[0212] Example 57 provides an apparatus of any one of Examples 47-56, wherein: the residual vector includes a first component of the residual vector and a second component of the residual vector; the reconstruction vector includes a first component of the reconstruction vector and a second component of the reconstruction vector; and determining the reconstruction vector includes adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstruction vector; and adding the second component of the residual vector and the second component of the second decoded vector to obtain the second component of the reconstruction vector.

[0213] Example 58 provides a device comprising one or more processors for executing instructions; and one or more non-transitory computer-readable media storing instructions, wherein the instructions cause the one or more processors to: determine a reference block and a vector for a block to be encoded; determine one or more vector predictor candidates for the block to be encoded; determine a first vector predictor candidate among the one or more vector predictor candidates having a horizontal component that is closest to the horizontal component of the vector; determine a second vector predictor candidate among the one or more vector predictor candidates having a vertical component that is closest to the vertical component of the vector, wherein the second vector predictor candidate is different from the first vector predictor candidate; determine an index in an index predictor table corresponding to a third vector predictor candidate, wherein the third vector predictor candidate corresponds to the horizontal component of the first vector predictor candidate and the vertical component of the second vector predictor candidate; and encode the index of the block to be encoded in the encoded bitstream.

[0214] Example 59 provides the apparatus of Example 58, wherein determining the first vector predictor candidate comprises determining a horizontal absolute difference between a horizontal component of the vector and a horizontal component of each of the one or more vector predictor candidates.

[0215] Example 60 provides the apparatus of Example 59, wherein the first vector predictor candidate has a smallest of the horizontal absolute differences.

[0216] Example 61 provides the apparatus of any of Examples 58-60, wherein determining the second vector predictor candidate comprises determining a vertical absolute difference between a vertical component of the vector and a vertical component of each of the one or more vector predictor candidates.

[0217] Example 62 provides the apparatus of Example 61, wherein the second vector predictor candidate has a smallest vertical absolute difference among the vertical absolute differences.

[0218] Example 63 provides a device of any of Examples 58-62, wherein the instructions further cause one or more processors to: determine a horizontal component of the residual vector based on the vector and horizontal components of the first vector predictor candidate; and determine a vertical component of the residual vector based on the vector and vertical components of the second vector predictor candidate.

[0219] Example 64 provides the apparatus of Example 63, further comprising encoding a residual vector in an encoded bitstream.

[0220] Example 65 provides the apparatus of Example 63 or 64, wherein the magnitude of the residual vector is less than the magnitude of another residual vector based on the vector and the first vector predictor candidate.

[0221] Example 66 provides the apparatus of any of Examples 63-65, wherein a magnitude of the residual vector is less than a magnitude of another residual vector based on the vector and a second vector predictor candidate.

[0222] Example 67 provides the apparatus of any of Examples 58-66, wherein the index predictor table includes a first vector predictor candidate, a second vector predictor candidate, and a third vector predictor candidate.

[0223] Example 68 provides the apparatus of any of Examples 58-67, wherein the first vector predictor candidate corresponds to a vector of a first coding block in the encoded bitstream.

[0224] Example 69 provides the apparatus of any one of Examples 58 to 68, wherein the second vector predictor candidate corresponds to a vector of a second coding block in the encoded bitstream.

[0225] Example A provides a device that includes components for implementing any of the methods provided in Examples 1-23 or components for implementing any of the methods provided in Examples 1-23.

[0226] Example B provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to perform any of the methods provided in Examples 1-23 and the methods described herein.

[0227] Example C provides a device comprising: one or more processors that execute instructions, and one or more non-transitory computer-readable media that store instructions, which, when executed by the one or more processors, cause the one or more processors to perform any of the methods provided in Examples 1-23 and the methods described herein.

[0228] Example D provides an encoder for generating an encoded bitstream using the operations described herein.

[0229] Example E provides an encoder for performing any of the methods provided in Examples 12-23.

[0230] Example F provides a decoder for decoding an encoded bitstream using the operations described herein.

[0231] Example H provides a decoder for performing any of the methods provided in Examples 1-11. Variants and other notes

[0232] although Figure 5-6 and 10-12 as well as reference Figure 5-6 The operations of the example methods described in 10-12 are illustrated as occurring once each and in a particular order, but it will be appreciated that the operations may be performed in any suitable order and repeated as desired. In addition, one or more operations may be performed in parallel. In addition, Figure 5-6 The operations described in 10-12 may be combined or may include more or less details than described.

[0233] The above description of the illustrated implementation of the present disclosure, including the content described in the abstract, is not intended to be exhaustive or to limit the present disclosure to the precise form disclosed. Although specific implementations and examples of the present disclosure are described herein for illustrative purposes, as will be appreciated by those skilled in the relevant art, various equivalent modifications are possible within the scope of the present disclosure. These modifications may be made to the present disclosure based on the above detailed description.

[0234] For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of the illustrative implementations. However, it will be apparent to those skilled in the art that the present disclosure may be practiced without the specific details and / or may be practiced with only some of the described aspects. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative implementations.

[0235] In addition, reference is made to the accompanying drawings forming a part of this article, and embodiments that can be put into practice are shown therein by way of illustration. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be considered as a restrictive meaning.

[0236] The various operations may be described in sequence as multiple discrete actions or operations in a manner that is most helpful for understanding the disclosed subject matter. However, the order of description should not be interpreted as implying that these operations must rely on the order. In particular, these operations may not be performed in the order presented. The described operations may be performed in an order different from the described embodiments. In additional embodiments, various additional operations may be performed or the described operations may be omitted.

[0237] For purposes of this disclosure, the phrase "A or B" or the phrase "A and / or B" means (A), (B), or (A and B). For purposes of this disclosure, the phrase "A, B or C" or the phrase "A, B and / or C" means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C). When used with reference to a measurement range, the term "between" includes the endpoints of the measurement range.

[0238] The description uses the phrase "in one (an) embodiment" or "in an embodiment", which can each refer to one or more embodiments in the same or different embodiments. The terms "including", "comprising", "having", etc. used with respect to the embodiments of the present disclosure are synonymous. The present disclosure may use perspective-based descriptions such as "above", "below", "top", "bottom", and "side" to explain the various features of the drawings, but these terms are merely for ease of discussion and do not imply a desired or required orientation. The drawings are not necessarily drawn to scale. Unless otherwise specified, the use of ordinal adjectives "first", "second", and "third", etc. to describe common objects only indicates that different instances of the same object are being referenced, and is not intended to imply that the objects described so far must be in a given sequence either in time, space, order, or in any other way.

[0239] In the following detailed description, various aspects of the illustrative implementations will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art.

[0240] The terms "substantially," "close," "approximately," "close to," and "about" generally refer to within + / - 20% of a target value as described herein or as known in the art. Similarly, terms indicating the orientation of various elements, such as "coplanar," "perpendicular," "orthogonal," "parallel," or any other angle between elements, generally refer to within + / - 5-20% of a target value as described herein or as known in the art.

[0241] Furthermore, the terms "comprise," "comprising," "include," "including," "have," "having," or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a method, process, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such method, process, or apparatus. Furthermore, the term "or" refers to an inclusive "or" rather than an exclusive "or."

[0242] The systems, methods, and devices of the present disclosure each have several innovative aspects, no single one of which is solely responsible for all of the desirable attributes disclosed herein.The details of one or more implementations of the subject matter described in this specification are set forth in the specification and the drawings.

Claims

1. A method comprising: determining a reference block and a residual vector from a coded bitstream; determining an index predictor table from the encoded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and the second decoded vector; determining a corresponding vector predictor in the indexed predictor table based on an index of the indexed predictor table signaled in the coded bitstream; determining a reconstruction vector based on the corresponding vector predictor and the residual vector; as well as The reconstruction vector is applied to the reference block to produce a prediction block.

2. The method according to claim 1, further comprising: determining a block residual from the encoded bitstream; as well as The block residual is applied to the prediction block to produce a portion of a reconstructed frame.

3. The method according to claim 1 or 2, wherein: The first component of the first decoded vector is a horizontal component of the first decoded vector.

4. The method according to claim 1 or 2, wherein: The second component of the second decoded vector is a vertical component of the second decoded vector.

5. The method according to claim 1 or 2, wherein: The index predictor table also includes: Corresponding to a fourth index of a fourth vector predictor, the fourth vector predictor has the first component of the second decoded vector and the second component of the first decoded vector.

6. The method according to claim 1 or 2, wherein: The index predictor table also includes: Corresponding to the fifth index of the fifth vector predictor, the fifth vector predictor has a third decoded vector of the third decoded block.

7. The method according to claim 6, wherein: The index predictor table also includes: Corresponding to a sixth index of a sixth vector predictor, the sixth vector predictor has the first component of the first decoded vector and the second component of the third decoded vector.

8. The method according to claim 6, wherein: The index predictor table also includes: Corresponding to a seventh index of a seventh vector predictor, the seventh vector predictor has a first component of the third decoded vector and a second component of the first decoded vector.

9. The method according to claim 6, wherein: The index predictor table also includes: Corresponding to an eighth index of an eighth vector predictor, the eighth vector predictor has the first component of the second decoded vector and the second component of the third decoded vector.

10. The method according to claim 6, wherein: The index predictor table also includes: Corresponding to a ninth index of a ninth vector predictor, the ninth vector predictor has the first component of the third decoded vector and the second component of the second decoded vector.

11. The method according to claim 1 or 2, wherein: The residual vector includes a first component of the residual vector and a second component of the residual vector; The reconstruction vector includes a first component of the reconstruction vector and a second component of the reconstruction vector; as well as Determining the reconstruction vector includes: adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstructed vector; as well as The second component of the residual vector and the second component of the second decoded vector are added to obtain the second component of the reconstructed vector.

12. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determining a reference block and a residual vector from a coded bitstream; determining an index predictor table from the encoded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and the second decoded vector; determining a corresponding vector predictor in the indexed predictor table based on an index of the indexed predictor table signaled in the coded bitstream; determining a reconstruction vector based on the corresponding vector predictor and the residual vector; as well as The reconstruction vector is applied to the reference block to produce a prediction block.

13. The one or more non-transitory computer-readable media of claim 12, wherein: The instructions further cause the one or more processors to: determining a block residual from the encoded bitstream; and The block residual is applied to the prediction block to produce a portion of a reconstructed frame.

14. One or more non-transitory computer readable media according to claim 12 or 13, wherein: The first component of the first decoded vector is a horizontal component of the first decoded vector.

15. One or more non-transitory computer readable media according to claim 12 or 13, wherein: The second component of the second decoded vector is a vertical component of the second decoded vector.

16. One or more non-transitory computer-readable media according to claim 12 or 13, wherein: The index predictor table also includes: Corresponding to a fourth index of a fourth vector predictor, the fourth vector predictor has the first component of the second decoded vector and the second component of the first decoded vector.

17. One or more non-transitory computer-readable media according to claim 12 or 13, wherein: The index predictor table also includes: Corresponding to the fifth index of the fifth vector predictor, the fifth vector predictor has a third decoded vector of the third decoded block.

18. One or more non-transitory computer-readable media according to claim 17, wherein: The index predictor table also includes: Corresponding to a sixth index of a sixth vector predictor, the sixth vector predictor has a first component of the first decoded vector and a second component of the third decoded vector.

19. The one or more non-transitory computer-readable media of claim 17, wherein: The index predictor table also includes: Corresponding to a seventh index of a seventh vector predictor, the seventh vector predictor has a first component of the third decoded vector and a second component of the first decoded vector.

20. The one or more non-transitory computer-readable media of claim 17, wherein: The index predictor table also includes: Corresponding to an eighth index of an eighth vector predictor, the eighth vector predictor has the first component of the second decoded vector and the second component of the third decoded vector.

21. The one or more non-transitory computer-readable media of claim 17, wherein: The index predictor table also includes: Corresponding to a ninth index of a ninth vector predictor, the ninth vector predictor has the first component of the third decoded vector and the second component of the second decoded vector.

22. One or more non-transitory computer-readable media according to claim 12 or 13, wherein: The residual vector includes a first component of the residual vector and a second component of the residual vector; The reconstruction vector includes a first component of the reconstruction vector and a second component of the reconstruction vector; as well as Determining the reconstruction vector includes: adding the first component of the residual vector and the first component of the first decoded vector to obtain the first component of the reconstructed vector; as well as The second component of the residual vector and the second component of the second decoded vector are added to obtain the second component of the reconstructed vector.

23. A device comprising: one or more processors for executing instructions; as well as one or more non-transitory computer-readable media storing the instructions, the instructions causing the one or more processors to: determining a reference block and a residual vector from a coded bitstream; determining an index predictor table from the encoded bitstream, wherein the index predictor table includes a first index corresponding to a first vector predictor having a first decoded vector of a first decoded block, a second index corresponding to a second vector predictor having a second decoded vector of a second decoded block, and a third index corresponding to a third vector predictor having a first component of the first decoded vector and the second decoded vector; determining a corresponding vector predictor in the indexed predictor table based on an index of the indexed predictor table signaled in the coded bitstream; determining a reconstruction vector based on the corresponding vector predictor and the residual vector; as well as The reconstruction vector is applied to the reference block to produce a prediction block.

24. The apparatus of claim 23, wherein: The instructions further cause the one or more processors to: determining a block residual from the encoded bitstream; and The block residual is applied to the prediction block to produce a portion of a reconstructed frame.

25. Apparatus according to claim 23 or 24, wherein The first component of the first decoded vector is a horizontal component of the first decoded vector, and the second component of the second decoded vector is a vertical component of the second decoded vector.