MMVD merge mode with asymmetric motion vector difference

The introduction of MMVD in video coding techniques addresses the lack of flexibility in motion vector difference indication, enhancing encoding and decoding efficiency through improved motion vector prediction and compression.

CN119137937APending Publication Date: 2024-12-13QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380037685.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-04-24
Filing Date
2023-04-25
Publication Date
2024-12-13

AI Technical Summary

Technical Problem

Existing video coding techniques lack flexibility in indicating motion vector differences, which affects the efficiency of video encoding and decoding processes.

Method used

Implementing merge mode with motion vector differences (MMVD) to provide more flexible syntax options for predicting motion information using multiple predictor motion vectors, allowing for the formation of combined motion vectors and improved prediction blocks.

Benefits of technology

Enhances the efficiency of video encoding and decoding by providing more accurate and flexible motion vector predictions, leading to improved compression and quality of decoded video data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119137937A_ABST
    Figure CN119137937A_ABST
Patent Text Reader

Abstract

An example apparatus for decoding video data includes one or more processors configured to: determine merge mode information for a current block, the merge mode information indicating that motion information for the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector equal to a combination of the first motion vector predictor and the first MVD; forming a second motion vector equal to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and decoding the current block using the prediction block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Patent Application No. 18 / 305,807, filed April 24, 2023; U.S. Provisional Patent Application No. 63 / 365,081, filed May 20, 2022; and U.S. Provisional Patent Application No. 63 / 364,672, filed May 13, 2022. U.S. Patent Application No. 18 / 305,807, filed April 24, 2023, claims the benefit of U.S. Provisional Patent Application No. 63 / 365,081, filed May 20, 2022; and U.S. Provisional Patent Application No. 63 / 364,672, filed May 13, 2022, the entire contents of each of which are incorporated herein by reference. Technical Field

[0002] The present disclosure relates to video encoding and video decoding. Background Art

[0003] Digital video capabilities may be incorporated into a wide variety of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite wireless phones (so-called "smart phones"), video teleconferencing devices, video streaming devices, etc. Digital video devices implement video coding techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 (Part 10, Advanced Video Coding (AVC)), ITU-T H.265 / High Efficiency Video Coding (HEVC), and extensions of such standards and proprietary video codecs / formats (such as AOMedia Video 1 (AV1) developed by the Alliance for Open Media). By implementing such video coding techniques, video devices may more efficiently send, receive, encode, decode, and / or store digital video information.

[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice or video tile (e.g., a video picture or a portion of a video picture) may be divided into video blocks, which may also be referred to as coding blocks, super blocks, coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in a slice of intra-coded (I) pictures are encoded using spatial prediction relative to reference samples (also referred to as prediction samples) in neighboring blocks in the same picture. Video blocks in a slice of inter-coded (P or B) pictures may use spatial prediction relative to reference samples in neighboring blocks in the same picture or temporal prediction relative to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames. Summary of the invention

[0005] In general, the present disclosure describes various techniques related to merge mode with motion vector differences (MMVD), which can provide more flexible syntax options for MMVD to indicate motion vector differences in a bitstream. The various techniques of the present disclosure can be applied to any of the existing video codecs (such as HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), Basic Video Coding (EVC)), or can be efficient coding tools in future video coding standards (e.g., ECM (Enhanced Compression Model)).

[0006] In one example, a method for decoding video data includes: determining (e.g., encoding or decoding) merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and decoding the current block using the prediction block.

[0007] In another example, a device for decoding video data includes: a memory configured to store video data; and one or more processors implemented in a circuit and configured to: determine (e.g., encode or decode) merge mode information of a current block of the video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and decode the current block using the prediction block.

[0008] In another example, a computer-readable storage medium has instructions stored thereon that, when executed, cause a processor to: determine (e.g., encode or decode) merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and decode the current block using the prediction block.

[0009] In another example, an apparatus for decoding video data includes: means for determining (e.g., encoding or decoding) merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; means for determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; means for forming a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; means for forming a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; means for generating a prediction block using the first motion vector and the second motion vector; and means for decoding the current block using the prediction block.

[0010] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] Figure 1 is a block diagram illustrating an example video encoding and decoding system that may perform the techniques of this disclosure.

[0012] Figure 2A and Figure 2B is a conceptual diagram illustrating example spatial neighboring motion vector candidates for merge mode and advanced motion vector prediction (AMVP) mode.

[0013] Figure 3A is a conceptual diagram illustrating example temporal motion vector prediction candidates.

[0014] Figure 3B is a conceptual diagram illustrating an example of motion vector (MV) scaling.

[0015] Figure 4 is a conceptual diagram illustrating an example of a merge mode with motion vector difference (MMVD) search point.

[0016] Figure 5 is a conceptual diagram illustrating the additional direction along the k×π / 8 diagonal angle.

[0017] Figure 6 is a conceptual diagram illustrating an example geometric partitioning.

[0018] Figure 7 is a table of example merge indices and motion vector candidate lists illustrating geometric partitioning patterns.

[0019] Figure 8 is a block diagram illustrating an example video encoder that may perform the techniques of this disclosure.

[0020] Fig. 9 is a block diagram illustrating an example video decoder that may perform the techniques of this disclosure.

[0021] Fig.10 is a flowchart illustrating an example method of encoding and decoding video data in accordance with various techniques of this disclosure.

[0022] Fig.11 is a flowchart illustrating an example method of encoding video data in accordance with various techniques of this disclosure.

[0023] Fig.12 is a flowchart illustrating another example method of decoding video data according to various techniques of this disclosure. DETAILED DESCRIPTION

[0024] Figure 1 1 is a block diagram illustrating an example video encoding and decoding system 100 that can perform the techniques of the present disclosure. The techniques of the present disclosure generally relate to decoding (encoding and / or decoding) video data. Generally, video data includes any data used to process video. Therefore, video data can include unencoded raw video, encoded video, decoded (e.g., reconstructed) video, and video metadata, such as signaling data.

[0025] like Figure 1 As shown in , in this example, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a target device 116. Specifically, source device 102 provides video data to target device 116 via computer-readable medium 110. Source device 102 and target device 116 may include any of a wide variety of devices, including desktop computers, notebook (i.e., laptop) computers, mobile devices, tablet computers, set-top boxes, handheld phones such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, broadcast receiver devices, etc. In some cases, source device 102 and target device 116 may be equipped for wireless communication and may therefore be referred to as wireless communication devices.

[0026] exist Figure 1 In the example of, source device 102 includes video source 104, memory 106, video encoder 200 and output interface 108. Target device 116 includes input interface 122, video decoder 300, memory 120 and display device 118. According to the present disclosure, the video encoder 200 of source device 102 and the video decoder 300 of target device 116 can be configured to apply a technology for merging mode (MMVD) merging mode with motion vector difference with asymmetric motion vector difference. Therefore, source device 102 represents an example of a video encoding device, and target device 116 represents an example of a video decoding device. In other examples, source device and target device may include other components or arrangements. For example, source device 102 can receive video data from an external video source such as an external camera. Similarly, target device 116 can be docked with an external display device instead of including an integrated display device.

[0027] like Figure 1The system 100 shown in is only an example. In general, any digital video encoding and / or decoding device can perform the technology for the MMVD merge mode with asymmetric motion vector difference. The source device 102 and the target device 116 are only examples of such decoding devices, wherein the source device 102 generates decoded video data for sending to the target device 116. The present disclosure refers to a "decoding" device as a device that performs decoding (encoding and / or decoding) of data. Therefore, the video encoder 200 and the video decoder 300 represent examples of decoding devices, specifically, respectively represent video encoders and video decoders. In some examples, the source device 102 and the target device 116 can operate in a substantially symmetrical manner, so that each of the source device 102 and the target device 116 includes a video encoding and decoding component. Therefore, the system 100 can support one-way or two-way video transmission between the source device 102 and the target device 116, for example, for video streaming, video playback, video broadcasting or video telephony.

[0028] Generally speaking, video source 104 represents the source of video data (i.e., uncoded raw video data), and provides a series of pictures (also referred to as "frames") of the order of video data to video encoder 200, which encodes the data for the pictures. Video source 104 of source device 102 may include a video capture device, such as a camera, a video archive containing previously captured raw video, and / or a video feed interface for receiving video from a video content provider. As another alternative, video source 104 may generate computer graphics-based data as source video, or generate a combination of real-time video, archived video, and computer-generated video. In each case, video encoder 200 encodes captured, pre-captured, or computer-generated video data. Video encoder 200 may rearrange pictures from the received order (sometimes referred to as "display order") to a decoding order for decoding. Video encoder 200 may generate a bitstream including encoded video data. Source device 102 may then output the encoded video data onto computer-readable medium 110 via output interface 108 to be received and / or retrieved by, for example, input interface 122 of target device 116 .

[0029] The memory 106 of the source device 102 and the memory 120 of the target device 116 represent general purpose memory. In some examples, the memories 106, 120 can store original video data, for example, original video from the video source 104 and original decoded video data from the video decoder 300. Additionally or alternatively, the memories 106, 120 can store software instructions that can be executed by, for example, the video encoder 200 and the video decoder 300, respectively. Although the memory 106 and the memory 120 are shown separately from the video encoder 200 and the video decoder 300 in this example, it should be understood that the video encoder 200 and the video decoder 300 may also include internal memory for functionally similar or equivalent purposes. In addition, the memories 106, 120 can store encoded video data, for example, output from the video encoder 200 and input to the video decoder 300. In some examples, portions of the memories 106, 120 can be allocated as one or more video buffers, for example, to store original decoded and / or encoded video data.

[0030] The computer-readable medium 110 may represent any type of medium or device capable of transmitting coded video data from the source device 102 to the target device 116. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to directly transmit coded video data to the target device 116 in real time, for example, via a radio frequency network or a computer-based network. According to a communication standard such as a wireless communication protocol, the output interface 108 may modulate a transmission signal including coded video data, and the input interface 122 may demodulate the received transmission signal. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form a portion of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other equipment that may be useful for facilitating communication from the source device 102 to the target device 116.

[0031] In some examples, source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, target device 116 may access the encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.

[0032] In some examples, source device 102 may output the encoded video data to file server 114 or another intermediate storage device that may store the encoded video data generated by source device 102. Target device 116 may access the stored video data from file server 114 via streaming or downloading.

[0033] The file server 114 may be any type of server device capable of storing encoded video data and sending the encoded video data to the target device 116. The file server 114 may represent a web server (e.g., for a website), a server configured to provide a file delivery protocol service (such as a file delivery protocol (FTP) or a file delivery over unidirectional transport (FLUTE) protocol), a content delivery network (CDN) device, a hypertext transfer protocol (HTTP) server, a multimedia broadcast multicast service (MBMS) or an enhanced MBMS (eMBMS) server, and / or a network attached storage (NAS) device. The file server 114 may additionally or alternatively implement one or more HTTP streaming protocols, such as dynamic adaptive streaming over HTTP (DASH), HTTP live streaming (HLS), real-time streaming protocol (RTSP), HTTP dynamic streaming, etc.

[0034] Target device 116 may access the encoded video data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both, suitable for accessing the encoded video data stored on file server 114. Input interface 122 may be configured to operate according to any one or more of the various protocols discussed above for retrieving or receiving media data from file server 114 or other such protocols for retrieving media data.

[0035] Output interface 108 and input interface 122 may represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components that operate according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 may be configured to communicate data (such as encoded video data) according to a cellular communication standard (such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 may be configured to communicate data (such as encoded video data) according to other wireless standards (such as IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBeeTM ),Bluetooth TM Standards, etc.) to transfer data (such as encoded video data). In some examples, source device 102 and / or target device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include a SoC device for performing functionality belonging to video encoder 200 and / or output interface 108, and target device 116 may include a SoC device for performing functionality belonging to video decoder 300 and / or input interface 122.

[0036] The techniques disclosed herein may be applied to video decoding to support any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, Internet streaming video transmission (such as Dynamic Adaptive Streaming over HTTP (DASH)), digital video encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications.

[0037] The input interface 122 of the target device 116 receives an encoded video bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200 and also used by the video decoder 300, such as syntax elements with values ​​describing characteristics and / or processing of video blocks or other decoding units (e.g., slices, pictures, groups of pictures, sequences, etc.). The display device 118 displays decoded pictures of the decoded video data to a user. The display device 118 may represent any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.

[0038] Despite Figure 1 200 and 300 may be integrated with an audio encoder and / or an audio decoder and may include appropriate MUX-DEMUX units or other hardware and / or software to process a multiplexed stream including both audio and video in a common data stream. If applicable, the MUX-DEMUX units may follow the ITU H.223 multiplexer protocol or other protocols, such as the User Datagram Protocol (UDP).

[0039] The video encoder 200 and the video decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device can store instructions for the software in an appropriate non-transitory computer-readable medium, and use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Each of the video encoder 200 and the video decoder 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (codec) in a corresponding device. A device including the video encoder 200 and / or the video decoder 300 may include an integrated circuit, a microprocessor, and / or a wireless communication device (such as a cellular phone).

[0040] In some examples of the present disclosure, the video encoder 200 and the video decoder 300 may operate according to a video coding format (such as AOMedia Video 1 (AV1) or an extension thereof) and a subsequent coding format (e.g., AV2) that may be currently developed or will soon be implemented. In other examples, the video encoder 200 and the video decoder 300 may operate according to other proprietary or industry standards. However, the techniques of the present disclosure are not limited to any particular coding standard and / or video coding format. In general, the video encoder 200 and the video decoder 300 may be configured to perform the techniques of the present disclosure in conjunction with any video coding technique that uses an MMVD merge mode with an asymmetric motion vector difference.

[0041] In some examples, the video encoder 200 and the video decoder 300 may operate according to a video coding format such as ITU-T H.265 (also known as High Efficiency Video Coding (HEVC)) or an extension thereof such as multi-view and / or scalable video coding extensions. The HEVC draft specification (hereinafter referred to as HEVC WD) is available from http: / / phenix.int-evry.fr / jct / doc_end_user / documents / 14_Vienna / wg11 / JCTVC-N1003-v1.zip. Alternatively, the video encoder 200 and the video decoder 300 may operate according to other proprietary or industry standards such as ITU-T H.266, also known as Versatile Video Coding (VVC). The draft of VVC is described in the following documents: Bross et al., "Versatile Video Coding (Draft 10)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC1 / SC 29 / WG 11, 18th Meeting: by Teleconference, June 22-July 1, 2020, JVET-T2001 (hereinafter referred to as "VVC Draft 10"). The algorithm description of the Versatile Video Coding and Test Model 10 (VTM 10.0) can refer to JVET-T2002. However, the various techniques of the present disclosure are not limited to any particular decoding format.

[0042] Typically, the video encoder 200 and the video decoder 300 may perform block-based decoding of a picture. The term "block" generally refers to a structure that includes data to be processed (e.g., to be encoded, decoded, or otherwise used in an encoding and / or decoding process). For example, a block may include a two-dimensional matrix of samples of luminance and / or chrominance data. Typically, the video encoder 200 and the video decoder 300 may decode video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, instead of decoding red, green, and blue (RGB) data for samples of a picture, the video encoder 200 and the video decoder 300 may decode luminance components and chrominance components, wherein the chrominance components may include both red hue chrominance components and blue hue chrominance components. In some examples, the video encoder 200 converts the received RGB format data to a YUV representation before encoding, and the video decoder 300 converts the YUV representation to an RGB format. Alternatively, a pre-processing and post-processing unit (not shown) may perform these conversions.

[0043] The present disclosure may generally relate to the decoding (e.g., encoding and decoding) of a picture to include the process of encoding or decoding data of the picture. Similarly, the present disclosure may relate to the decoding of a block of a picture to include the process of encoding or decoding data for the block (e.g., prediction and / or residual decoding). The encoded video bitstream generally includes a series of values ​​of syntax elements for representing decoding decisions (e.g., decoding modes) and partitioning of pictures into blocks. Therefore, references to the decoding of a picture or a block should generally be understood as the decoded values ​​of the syntax elements forming the picture or block.

[0044] The present disclosure may use "N×N" and "N by N" interchangeably to refer to the sample size of a block (such as a decoding block, a super block, or other block of video data) in terms of the vertical dimension and the horizontal dimension, for example, 16×16 samples or 16 by 16 samples. Generally, a 16×16 decoding block will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an N×N decoding block typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. The samples in the decoding block may be arranged in rows and columns. In addition, the decoding block does not necessarily have the same number of samples in the horizontal direction as in the vertical direction (i.e., the decoding block may be non-square). For example, a decoding block may include N×M samples, where M is not necessarily equal to N.

[0045] When operating according to the AV1 codec, the video encoder 200 and the video decoder 300 may be configured to decode the video data in blocks. In AV1, the largest decoding block that can be processed is called a super block. In AV1, a super block can be 128x128 luma samples or 64x64 luma samples. However, in subsequent video coding formats (e.g., AV2), super blocks may be defined by different (e.g., larger) luma sample sizes. In some examples, the super block is the top layer of the block quadtree. The video encoder 200 may further divide the super block into smaller decoding blocks. The video encoder 200 may divide the super block and other decoding blocks into smaller blocks using square or non-square partitions. Non-square blocks may include N / 2×N blocks, N×N / 2 blocks, N / 4×N blocks, and N×N / 4 blocks. The video encoder 200 and the video decoder 300 may perform separate prediction and transform processing on each decoding block.

[0046] AV1 also defines tiles of video data. A tile is a rectangular array of super blocks that can be decoded independently of other tiles. That is, the video encoder 200 and the video decoder 300 can encode and decode coded blocks within a tile, respectively, without using video data from other tiles. However, the video encoder 200 and the video decoder 300 can perform filtering across tile boundaries. The size of the tiles can be uniform or non-uniform. Tile-based decoding enables parallel processing and multi-threading specifically implemented by the encoder and decoder.

[0047] In some examples, the coding blocks include one coding block for luma samples and two coding blocks for corresponding chroma samples for a picture having three sample arrays. In other examples, the coding blocks include a single coding block of luma samples (e.g., for monochrome pictures). AV1 supports 4:0:0 chroma subsampling (e.g., monochrome), 4:2:0 chroma subsampling, 4:2:2 chroma subsampling, and 4:4:4 chroma subsampling (i.e., no chroma subsampling). AV1 can code video data in a YUV color space, where Y is a luma component, U is a first chroma component (e.g., a blue projection), and V is a second chroma component (e.g., a red projection).

[0048] AV1 includes two general techniques for encoding and decoding coded blocks of video data. The two general techniques are intra prediction (e.g., intra prediction or spatial prediction) and inter prediction (e.g., inter prediction or temporal prediction). In the context of AV1, when an intra prediction mode is used to predict a block of a current frame of video data, the video encoder 200 and the video decoder 300 do not use video data from other frames of the video data. For most intra prediction modes, the video encoder 200 encodes a block of the current frame based on the difference between the sample values ​​in the current block and the prediction values ​​generated from the reference samples in the same frame. The video encoder 200 determines the prediction values ​​generated from the reference samples based on the intra prediction mode.

[0049] The difference between the current coded sample and the prediction value generated from the reference sample is called the residual. The video encoder 200 may encode the residual value (e.g., by transforming, quantizing, and entropy coding) in the coded video bitstream. The video decoder 300 may decode the residual value, determine the prediction value generated from the reference sample in the same manner as the video encoder 200, and add the prediction value generated from the reference sample to the residual to reconstruct the coded block. The intra prediction modes of AV1 include directional intra prediction, non-directional smoothing intra prediction, recursive filter intra prediction, luminance to chrominance (CFL) prediction, intra block copy, and palette mode. The video encoder 200 may encode a syntax element indicating an intra prediction mode for the video decoder 300.

[0050] The video encoder 200 may typically use one of the aforementioned inter-prediction modes or intra-prediction modes (e.g., excluding color palette modes) to form a prediction block for a coding block. In general, the video encoder 200 subtracts the values ​​of the samples of the coding block from the prediction samples determined according to one of the intra-prediction mode or the inter-prediction mode to determine a residual block. The video decoder 300 performs the inverse of this operation. The video decoder 300 determines the prediction samples in the same manner as the video encoder 200, but adds the decoded residual to the prediction samples to reconstruct the coding block.

[0051] In order to encode a block using directional intra prediction, the video encoder 200 may determine a specific directional intra prediction mode to determine the prediction sample. AV1 provides fifty-six directional intra prediction modes. When encoding a coded block using directional intra prediction, the video encoder 200 uses a directional predictor that projects each sample of the coded block to a prediction sample position. The prediction sample position may be a sub-pixel position (e.g., between samples). In this case, the video encoder may use interpolation (e.g., a 2-tap bilinear filter) to determine the value of the prediction sample.

[0052] In non-directional smooth intra prediction, the video encoder 200 may determine the prediction sample according to the DC prediction mode, the Paeth prediction mode, or by using one of the three smooth predictors. In the DC prediction mode, the video encoder 200 predicts the sample of the block from the average of the available neighboring reference samples. In the Paeth prediction mode, the video encoder 200 uses one of the top reference sample, the left reference sample, or the upper left edge reference sample with the value closest to (top + left - upper left). The video encoder 200 may determine the three smooth predictors using quadratic interpolation in the horizontal direction, the vertical direction, or the average of interpolation in the horizontal and vertical directions.

[0053] The video encoder 200 may determine to use recursive filter intra prediction in the case where there is reduced spatial correlation between samples of a coding block and predicted samples at the edge of the coding block. To perform recursive intra prediction, the video encoder 200 may determine one of five filter intra modes. Each of the five intra modes is defined by a set of 7-tap filters that specify the correlation between samples in a 4×2 sub-block and seven adjacent neighboring samples. The video encoder 200 may determine one of the five types of intra filter modes at a block level and predict samples in a 4×2 sub-block.

[0054] The video encoder 200 may determine to use luma to chroma (CFL) to predict chroma samples from corresponding reconstructed luma samples. Specifically, the video encoder 200 may use the sum of the reconstructed luma samples in the 2×2 sub-block of the luma block minus the average luma sample value of the block, and the DC prediction sample of the chroma block to determine the final prediction sample for predicting the chroma sample. The sum of the reconstructed luma samples in the 2×2 sub-block of the luma block minus the average luma sample value of the block represents the "AC" contribution from the luma block.

[0055] In intra block copy mode, the video encoder 200 and the video decoder 300 may predict a coding block using a previously reconstructed coding block as a reference block, where the reference block is in the same frame as the currently decoded coding block. The video encoder 200 may use a displacement vector (e.g., an x ​​and y displacement from the currently decoded coding block) to indicate the location of the previously reconstructed coding block. The intra block copy mode is similar to the translational inter prediction mode, but the intra block copy mode uses a reference block from the same frame instead of using a reference block in another frame. The intra block copy mode may be particularly useful for so-called "screen content" video frames (e.g., such as a video showing the contents of a computer screen) that may include text, characters, and / or repeating textures.

[0056] In each of the aforementioned intra prediction modes, the video encoder 200 may generate a residual block by subtracting sample values ​​of a current decoding block from prediction pixels generated according to one of the intra prediction modes. Color palette mode (also referred to as palette mode coding or simply palette mode) is considered another type of intra prediction mode because the color palette mode does not use prediction samples generated from reference sample values. Color palette mode may be useful for frames of video data with a limited number of unique colors (e.g., screen content).

[0057] In color palette mode, the video encoder 200 and the video decoder 300 may generate a palette predictor block (e.g., a prediction block) based on a color palette and sample / pixel values ​​for each sample or pixel in a coding block. For example, the color palette may be a list of palette colors. For each position in the palette predictor block, the video encoder 200 may assign a palette color from a list of palette colors (e.g., assign a palette color that is closest to a corresponding sample value in the coding block). For example, each prediction sample in the palette predictor block corresponds to a sample in the coding block. The video encoder 200 may determine the palette color that is closest to the sample in the coding block from the list of palette colors, and assign the determined palette color to the prediction sample in the palette predictor block.

[0058] Video encoder 200 may determine a residual value between the palette predictor block and the coding block, and encode and signal information indicating the residual value.Video encoder 200 may also encode and signal a palette color list.

[0059] In some examples, in addition to the residual value and the palette color list, the video encoder 200 may also construct a palette token block. The palette token block includes multiple palette token values, and each of the palette token values ​​may be an index into the palette color list that identifies the palette color of the predicted sample in the palette predictor block. For example, if the palette predictor block is 16×16, the palette token block may be 16×16. If the palette color of the first predicted sample in the predictor block is identified by index 2 in the palette color list, the video encoder 200 may assign a value of 2 to the first palette token value in the palette token block to indicate that the value of the first predicted sample in the predictor block is at index 2 in the palette color list. The video encoder 200 may encode the palette token block and signal it.

[0060] The video decoder 300 may receive information about a palette token block, a palette color list, and a residual value. The video decoder 300 may reconstruct the palette token block based on the information notified by the signal. The video decoder 300 may reconstruct the palette predictor block based on the palette token block and the palette color list. For example, the video decoder 300 may determine that the value of the predicted sample at the first position of the palette predictor block is at index 2 in the palette color list. The video decoder 300 may access index 2 in the palette color list and assign the color value at index 2 in the palette color list as the value of the first predicted sample in the palette predictor block. The video decoder 300 may repeat such operations to reconstruct the palette predictor block. The video decoder 300 may add the residual value to the palette predictor block to reconstruct the current block.

[0061] When using an inter-frame prediction mode to predict a block of a current frame of video data, the video encoder 200 and the video decoder 300 may use video data from one or more reference frames of the video data. The video encoder 200 may encode sample values ​​based on the difference (e.g., residual) between sample values ​​of the current block to be decoded and a prediction sample within a different frame (e.g., a reference frame). The reference frame may be before or after the current decoding frame in presentation order. The video encoder 200 may determine the prediction sample and the reference frame based on the inter-frame prediction mode.

[0062] As for intra prediction modes, the video encoder 200 may encode residual values ​​(e.g., by transforming, quantizing, and entropy coding) in an encoded video bitstream. The video decoder 300 may decode the residual values, determine a prediction block in the same manner as the video encoder 200, and add the prediction block to the residual to reconstruct the coded block. The video encoder 200 may determine a specific inter prediction mode that provides the best rate-distortion cost from a plurality of inter prediction modes. The video encoder 200 may encode mode information, residual values ​​(e.g., the difference between the current sample and the predicted sample), and other block characteristics in an encoded video bitstream. The inter prediction modes of AV1 include translational motion compensation, affine motion compensation (e.g., warp motion compensation), overlapped block motion compensation (OBMC), and a composite inter-intra predictor mode.

[0063] For translational motion compensation, the video encoder 200 may use one or more motion vectors to generate a prediction block (e.g., a block including prediction samples). The video encoder 200 may typically perform a motion search to identify a reference block that closely matches a coding block, for example, in terms of the difference between the samples of the coding block and the prediction samples of the reference block. The video encoder 200 may calculate a difference metric using the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared difference (MSD), or other such difference calculations to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 may use unidirectional prediction or bidirectional prediction to predict the current coding block.

[0064] The video encoder 200 may also encode the motion vector using a prediction method. For example, the video encoder 200 may encode the motion vector with reference to other candidate motion vectors, including spatial motion vectors (e.g., motion vectors of neighboring blocks encoded using inter-frame prediction) or temporal motion vectors (e.g., motion vectors of co-located blocks in other pictures coded using inter-frame prediction). The candidate motion vector may be added to a dynamic motion vector reference list.

[0065] AV1 also provides an affine motion compensation mode. In the affine motion compensation mode, the video encoder 200 may determine a warp parameter to warp a reference block to obtain a prediction using a motion vector of a neighboring candidate. The warp parameter represents a non-translational or affine motion, such as enlargement or reduction, rotation, perspective motion, or other irregular motion types.

[0066] The video encoder 200 can use the OBMC mode to reduce prediction errors near block edges. In the OBMC mode, the video encoder 200 and the video decoder 300 determine prediction samples using prediction samples generated based on motion vectors from top neighboring blocks and / or left neighboring blocks. The video encoder 200 and the video decoder 300 can generate final prediction samples by combining such prediction samples using a smoothing filter.

[0067] In the composite inter-intra predictor mode, the video encoder 200 and the video decoder 300 may use both inter prediction and intra prediction techniques to form prediction samples. The two prediction samples may be combined using weighting coefficients.

[0068] After performing a prediction process (such as intra-frame prediction or inter-frame prediction of a block), the video encoder 200 may calculate residual data for the block. The residual data (such as a residual block) represents the sample-by-sample difference between the prediction samples formed using the corresponding prediction mode of the block and the block. The video encoder 200 may apply one or more transforms to the residual block to generate transformed data in the transform domain rather than in the sample domain. For example, the video encoder 200 may apply a horizontal / vertical transform combination, which may include a discrete cosine transform (DCT), an asymmetric discrete sine transform (ADST), a flipped ADST (e.g., ADST in reverse order), and an identity transform (IDTX). When an identity transform is used, the transform is skipped in one of the vertical direction or the horizontal direction. In some examples, the transform process may be skipped. The video encoder 200 generates transform coefficients after applying one or more transforms.

[0069] As noted above, after any transforms that produce transform coefficients, the video encoder 200 may perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, thereby providing further compression. By performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all transform coefficients. For example, the video encoder 200 may round down an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 may perform a bit-by-bit right shift of the value to be quantized.

[0070] After quantization, the video encoder 200 may entropy encode syntax elements (including syntax elements indicating the values ​​of the quantized transform coefficients). As another example, the video encoder 200 may entropy encode prediction syntax elements (e.g., motion information for inter-frame prediction or intra-frame mode information for intra-frame prediction). According to AV1, the video encoder 200 may be configured to perform entropy encoding using a symbol-to-symbol adaptive multi-symbol arithmetic decoder. The syntax elements in AV1 include an alphabet of N elements, and the context (e.g., a probability model) includes a set of N probabilities. The video encoder 200 may store the probabilities as a 15-bit cumulative distribution function (CDF). The video encoder 200 may perform recursive scaling with an update factor based on the size of the alphabet to update the context.

[0071] In this way, the video encoder 200 can generate a bitstream including encoded video data, for example, a syntax element describing the partition of a picture into blocks (e.g., super blocks and coding blocks) and prediction modes and / or residual information of the blocks. Finally, the video decoder 300 can receive the bitstream and decode the encoded video data.

[0072] In general, the video decoder 300 performs a process that is the reverse of the process performed by the video encoder 200 to decode the encoded video data of the bitstream. For example, the video decoder 300 may use entropy decoding to decode the values ​​of the syntax elements of the bitstream in a manner substantially similar to, but reverse to, the entropy encoding process of the video encoder 200. The syntax elements may define partitioning information for partitioning a picture into super blocks and coding blocks. The syntax elements may also define prediction and residual information for a block of video data (e.g., a coding block).

[0073] The residual information may be represented by, for example, quantized transform coefficients. The video decoder 300 may inverse quantize and inverse transform the quantized transform coefficients of the block to reproduce a residual block for the block. The video decoder 300 uses the signaled prediction mode (intra-frame or inter-frame prediction mode) and related prediction information (e.g., motion information for inter-frame prediction) to form prediction samples for the block. The video decoder 300 may then combine the prediction samples and the corresponding sample values ​​of the residual block (on a sample-by-sample basis) to reproduce the original block. The video decoder 300 may perform additional processing, such as performing a loop filtering process to reduce visual artifacts along the boundaries of the blocks.

[0074] The present disclosure may generally involve "signaling" certain information (such as syntax elements). The term "signaling" may generally refer to the communication of values ​​of syntax elements and / or other data used to decode encoded video data. That is, the video encoder 200 may signal the values ​​of syntax elements in a bitstream. Generally, signaling refers to generating a value in a bitstream. As noted above, the source device 102 may transmit the bitstream to the target device 116 in substantially real time or in non-real time (such as may occur when storing syntax elements to the storage device 112 for subsequent retrieval by the target device 116).

[0075] In HEVC, the largest coding unit in a slice is called a coding tree block (CTB) or coding tree unit (CTU). The CTB contains a quadtree whose nodes are coding units. In the HEVC main profile, the size of the CTB can range from 16×16 to 64×64 (but 8×8 CTB size is technically supported). The coding unit (CU) can have the same size as the CTB, as small as 8×8. Each coding unit is coded with one mode (i.e., inter or intra). When a CU is inter-coded, it can be further divided into 2 or 4 prediction units (PUs) or become only one PU when no further division is applied. When two PUs exist in one CU, they can be a rectangle of half size or two rectangles of 1 / 4 or 3 / 4 the size of the CU. When the CU is inter-coded, each PU has a motion information set derived with a unique inter prediction mode.

[0076] In HEVC, there are two inter prediction modes, named merge (skipping the special case considered as merge) and advanced motion vector prediction (AMVP) mode for prediction units (PUs). In AMVP mode or merge mode, a motion vector (MV) candidate list is maintained for multiple motion vector predictors. The motion vector of the current PU and the reference index in merge mode are generated by taking a candidate from the MV candidate list.

[0077] The MV candidate list contains up to 5 candidates for merge mode and only two candidates for AMVP mode. The merge candidate may contain a set of motion information, such as motion vectors corresponding to both the reference picture lists (list 0 and list 1) and the reference index. If the merge candidate is identified by the merge index, the reference picture used for the prediction of the current block and the associated motion vector are determined. On the other hand, in AMVP mode, for each potential prediction direction from list 0 or list 1, the reference index needs to be explicitly signaled to the MV candidate list together with the MV predictor (MVP) index, because the AMVP candidate only contains motion vectors. In AMVP mode, the predicted motion vectors can be further refined. Candidates for both modes are derived similarly from the same spatial and temporal neighboring blocks.

[0078] Figure 2A and Figure 2B 1 is a conceptual diagram illustrating example spatial neighboring motion vector candidates for merge mode and advanced motion vector prediction (AMVP) mode. Although spatial MV candidates are derived from neighboring blocks for PU0 130, as shown in FIG. Figure 2A As shown, the method of generating candidates from blocks is different for merge and AMVP modes. In merge mode, the available Figure 2A The numbered order shown derives up to four spatial MV candidates, and the order is as follows: left (0, A1), top (1, B1), top right (2, B0), bottom left (3, A0), top left (4, B2), as shown in FIG. Figure 2A Shown.

[0079] In the AMVP mode, if Figure 2B As shown with respect to PU0 132, the neighboring blocks are divided into two groups: a left group including blocks 0 and 1 and an upper group including blocks 2, 3, and 4. For each group, potential candidates in neighboring blocks that refer to the same reference picture as indicated by the signaled reference index have the highest priority to be selected to form the final candidate for the group. It is possible that none of the neighboring blocks contain a motion vector pointing to the same reference picture. Therefore, if such a candidate cannot be found, the video encoder 200 or the video decoder 300 can scale the first available candidate to form the final candidate, so that the temporal distance difference can be compensated.

[0080] If enabled and available, the video encoder 200 or the video decoder 300 may add a temporal motion vector predictor (TMVP) candidate after the spatial motion vector candidate in the MV candidate list. The motion vector derivation process for the TMVP candidate is the same for both merge and AMVP modes. However, the target reference index of the TMVP candidate is always set to 0 in merge mode.

[0081] Figure 3A 134, the primary block position derived from the TMVP candidate is the lower right block outside the collocated PU, as shown in Figure 3A 136) to compensate for the deviation of the upper and left blocks used to generate spatial neighboring candidates. However, if the block is located outside the current CTB row or motion information is not available, the block T 136 is replaced by the center block T 138 of PU0 134.

[0082] The motion vector of the TMVP candidate is derived from the co-located PU of the co-located picture indicated in the slice level. The motion vector of the co-located PU is called a collocated MV. Similar to the temporal direct mode in AVC, to derive the TMVP candidate motion vector, the video encoder 200 or the video decoder 300 may scale the co-located MV to compensate for the temporal distance difference, such as Figure 3A and Figure 3B Shown.

[0083] Several aspects of consolidation and the AMVP model are discussed below.

[0084] Motion vector scaling: It is assumed that the value of a motion vector is proportional to the distance between pictures in presentation time. A motion vector associates two pictures, a reference picture and a picture containing a motion vector (i.e., a containing picture). When predicting a motion vector from another motion vector, the distance between the containing picture and the reference picture is calculated based on the picture order count (POC) value.

[0085] For a motion vector to be predicted, its associated containing picture and reference picture may both be different. Therefore, a new distance is calculated (based on POC). The motion vector is scaled based on these two POC distances. For spatial neighboring candidates, the containing pictures of the two motion vectors are the same, while the reference pictures are different. In HEVC, motion vector scaling is applied to both TMVP and AMVP for spatial and temporal neighboring candidates.

[0086] Artificial motion vector candidate generation: If the candidate list is incomplete, the video encoder 200 or the video decoder 300 generates artificial motion vector candidates and inserts them at the end of the list until the candidate list will have all candidates. In merge mode, there are two types of artificial MV candidates: combined candidates derived only for B slices, and zero candidates used only for AMVP if the first type does not provide enough artificial candidates.

[0087] For each pair of candidates that are already in the candidate list and have the necessary motion information, the video encoder 200 or the video decoder 300 can derive a bidirectional combined motion vector candidate by combining the motion vector of the first candidate pointing to the picture in list 0 and the motion vector of the second candidate pointing to the picture in list 1.

[0088] Pruning process for candidate insertion: Candidates from different blocks may happen to be the same, which reduces the efficiency of the merge / AMVP candidate list. A pruning process is applied to solve this problem. When performing the pruning process, the video encoder 200 or the video decoder 300 compares one candidate in the current candidate list with other candidates to avoid inserting the same candidate to a certain extent. In order to reduce complexity, only a limited number of comparisons are applied in the pruning process instead of comparing each candidate with all other existing candidates.

[0089] Merge mode with motion vector differences

[0090] Merge mode with motion vector difference (MMVD) is a merge mode that allows additional motion vector differences to be explicitly signaled to refine the motion field of the merge mode. The MMVD flag is signaled immediately after the skip flag, merge flag, and regular merge flag are transmitted to indicate whether the MMVD mode is used for the CU. In MMVD, after the merge candidate is selected, the merge candidate is further refined by the MVD information signaled. In addition, the information includes a merge candidate flag, an index for specifying the motion magnitude, and an index for indicating the direction of motion. In MMVD mode, one of the first 2 candidates in the merge list is selected to be used as the MV basis. The merge candidate flag is signaled to specify which merge candidate to use.

[0091] Figure 4 is a conceptual diagram illustrating an example of a merge mode (MMVD) search point with a motion vector difference. The distance index specifies motion magnitude information and indicates a predefined offset (also referred to as a distance offset) from a starting point. That is, the video encoder 200 and the video decoder 300 may be configured with a predefined offset set, and the video encoder 200 may encode an index into the set, where the index corresponds to one of the distance offset entries in the set. In this way, the video decoder 300 may decode the offset to determine which distance offset to apply. Figure 4 As shown, the range offset is added to the horizontal component or the vertical component of the starting MV. Figure 4 is a conceptual diagram illustrating an example of a merge mode search point with MMVD. The relationship between the distance index and the predefined distance offset is defined as 2 idx-2 , where idx is an integer ranging from 0 to 7. When the picture header syntax element (e.g., pic_fpel_mmvd_enabled_flag) is set to enabled, the index to offset mapping changes to 2 idx .

[0092] The direction index indicates the direction of the motion vector difference (MVD) relative to the starting point. The direction index can represent four directions, as shown in the following table, where 00, 01, 10, and 11 represent right, left, top, and bottom, respectively. The meaning of the MVD sign may vary depending on the information of the starting MV. When the starting MV is a unidirectional prediction MV or a bidirectional prediction MV and both lists point to the same side of the current picture (i.e., the POCs of both references are greater than the POC of the current picture, or are less than the POC of the current picture), the sign in the following table specifies the sign of the MV offset added to the starting MV. When the starting MV is a bidirectional prediction MV and the two MVs point to different sides of the current picture (i.e., the POC of one reference is greater than the POC of the current picture, and the POC of the other reference is less than the POC of the current picture), the sign in the following table specifies the sign of the MV offset added to the list 0 MV component of the starting MV, and the sign of the list 1 MV has the opposite value.

[0093] Directions to IDX 00 01 10 11 x-axis + - N / A N / A y-axis N / A N / A + -

[0094] Figure 5 is a conceptual diagram illustrating the additional direction along the k×π / 8 diagonal angle.

[0095] TM-based reordering of MMVD and affine MMVD

[0096] For MMVD and Affine MMVD modes, the distance offset can be extended. Figure 5 As shown, additional refinement positions along the k×π / 8 diagonal corners are added, thus increasing the number of directions from 4 to 16. Figure 5 is a conceptual diagram illustrating the additional direction along the k×π / 8 diagonal angle. Figure 5 , the gray positions are used in the anchor. Secondly, all possible MMVD refinement positions (16×6) for each basis candidate are reordered based on the SAD cost between the template (one row above the current block and one column to the left) and its reference to each refinement position. Finally, the top 1 / 8 refinement positions with the smallest template SAD cost are kept as available positions and are therefore used for MMVD index decoding. The MMVD index is binarized by rice decoding with parameter equal to 2. Extended affine MMVD reordering, where additional refinement positions along the k×π / 4 diagonal corners are added. After reordering, the top 1 / 2 refinement positions with the smallest template SAD cost are kept.

[0097] Figure 6 is a conceptual diagram illustrating an example geometric partitioning.

[0098] Introduction to Geometric Partitioning Model (GPM)

[0099] In VVC, geometric partitioning mode (GPM) is supported for inter prediction. A CU-level flag is used as a merge mode to signal the geometric partitioning mode, where other merge modes include normal merge mode, MMVD mode, combined inter prediction merge and intra picture prediction (CIIP) mode, and sub-block merge mode. For each possible CU size, the geometric partitioning mode supports a total of 64 partitions, w×h=2 m ×2 n Where m,n∈{3…6} does not include 8×64 and 64×8. When using GPM mode, Figure 6 The geometrically positioned straight line shown splits the CU into two parts.

[0100] The position of the partition line is mathematically derived from the angle and offset parameters of the specific partition. Each part of the geometric partition in the CU uses its own motion for inter-frame prediction; only unidirectional prediction is allowed for each partition, that is, each part has one motion vector and one reference index. The unidirectional prediction motion for each partition is derived as follows.

[0101] The uni-directional prediction candidate list is derived directly from the merge candidate list as constructed in merge mode. Denote n as the index of the uni-directional prediction motion in the geometric uni-directional prediction candidate list. The LX motion vector of the nth merge candidate (where X equals the parity of n (even or odd)) is used as the nth uni-directional prediction motion vector for geometric partitioning mode. These motion vectors are in Figure 7 In the case where the corresponding LX motion vector of the n-th extended merge candidate does not exist, the L(1-X) motion vector of the same candidate is used as the unidirectional prediction motion vector of the geometric partitioning mode.

[0102] If a geometric partitioning mode is used for the current CU, a geometric partitioning index (angle and offset) and two merge indices (one merge index for each partition) indicating the partitioning mode of the geometric partitioning are further signaled. The number of maximum GPM candidate sizes is explicitly signaled in the SPS and the syntax binarization of the GPM merge indices is specified. After predicting each part of the geometric partition, a blending process with adaptive weights is used to adjust the sample values ​​along the edges of the geometric partition.

[0103] Geometric Partitioning Mode (GPM) with merged motion vector differences

[0104] The geometric partition mode (GPM) in VVC is extended by applying motion vector refinement to the existing GPM unidirectional MV. A flag is first signaled for the GPM CU to specify whether to use the GPM. If GPM is used, the video encoder 200 can determine whether to signal MVD for each geometric partition of the GPM CU. If MVD is signaled for the geometric partition, after selecting the GPM merge candidate, the video encoder 200 and the video decoder 300 can further subdivide the motion of the geometric partition by the signaled MVD information. All other procedures can remain the same as in GPM.

[0105] The video encoder 200 may signal the MVD as a pair of distance and direction elements, similar to in MMVD. There are nine candidate distance offsets (1 / 4 pixel, 1 / 2 pixel, 1 pixel, 2 pixels, 3 pixels, 4 pixels, 6 pixels, 8 pixels, 16 pixels), and GPM with MMVD (GPM-MMVD) involves 8 candidate directions (four horizontal / vertical directions and four diagonal directions). In addition, when pic_fpel_mmvd_enabled_flag is equal to 1, the MVD is left shifted by 2 as in MMVD.

[0106] The MMVD design as in VVC and ECM is more limited to update-based motion candidates by adding one of the MV offsets in a predefined list (which only contains values ​​that are powers of 2). This syntax shortcut, while useful for some cases, generally loses flexibility in representing object movement with complex motion. Therefore, the present disclosure aims to make the MMVD design more flexible and allow the MVD representation to more dynamically cover various motion vector categories in a picture.

[0107] If not otherwise specified, the "base candidate motion" mentioned below refers to motion information derived from the motion information of the merge candidate, unidirectional prediction motion information referenced from the GPM candidate list, or bidirectional prediction motion information that is a paired combination of two candidates from the GPM merge candidate list.

[0108] Asymmetric MVD

[0109] In some examples, the video encoder 200 may encode two distance offsets and two direction indices in the bitstream. Similarly, the video decoder 300 may decode the two distance offsets and two direction indices from the bitstream. When the "base candidate motion" is bidirectionally predicted, the distance offset and the direction index may indicate an incremental vector for updating the selected "base candidate motion". The distance offset, together with the direction index, represents a certain MVD that can be used to update one of the bidirectionally predicted motion vectors. Since two pairs of distance offsets and direction indices are signaled, two MVDs can be derived and used to update the corresponding motion vectors of the bidirectionally predicted "base candidate motion" (e.g., pointing to the reference picture in the reference picture list 0 or 1). Since the two MVDs do not need to be the same or symmetric, this first example implementation actually allows the two MVDs of the bidirectionally predicted "base candidate motion" to be asymmetric to each other. Therefore, this can be beneficial to the decoder design because the MVD can be mapped from one reference picture to another without projection or mirroring. High-level syntax (e.g., in a sequence parameter set, a tile / slice header, a picture header, or a sub-picture header) can be applied to control whether this mode is enabled.

[0110] In some examples, in addition to or in lieu of the above examples, the number of directional indexes to be signaled may be reduced to 1. That is, the video encoder 200 may encode two distance offsets but only a single directional index and the video decoder 300 may decode two distance offsets but only a single directional index. The sign value of the corresponding MVD component of the single directional index may be projected from one reference picture on reference picture list 0 to another reference picture on reference picture list 1. Specifically, when both reference pictures of the bidirectionally predicted base candidate motion are from the past or from the future, the sign value of the MVD component may be the same sign value indicated by the single directional index. Otherwise, that is, if one reference picture is from reference picture list 0 and the other reference picture is from reference picture list 1, the sign values ​​of the MVD components of the L1 MVD are symmetric with the sign values ​​of the L0 MVD, which means that they have opposite MVD sign values ​​on each MVD component (that is, when the sign is negative at the L0 MVDx component, then the sign must be non-negative at the L1 MVDx component).

[0111] In some examples, in addition to or in lieu of the above examples, the MVD offset and direction index corresponding to reference picture list 1 (when present in the first example implementation) is not signaled, and therefore, the MVD corresponding to reference picture list 1 is always set equal to the zero vector. That is, although the video encoder 200 and the video decoder 300 may only code a single MVD data set, the MVD data is only applicable to one motion vector of a bi-directionally predicted block and not to the other motion vector of the bi-directionally predicted block.

[0112] In some examples, a syntax element such as ph_mvd_l1_zero_flag may have a value indicating whether the MVD offset and direction index are to be signaled in the bitstream. For example, the video encoder 200 may determine whether two MVD offset value sets are to be signaled, and if so, signal the value of the syntax element indicating that two MVD offset value sets are to be signaled for the current block. Thus, the video decoder 300 may determine whether only a single MVD value set or two MVD value sets are to be signaled from the value of the syntax element. In one example, when ph_mvd_l1_zero_flag has a "true" value (e.g., 1), two MVD value sets are signaled. Syntax elements such as ph_mvd_L1_zero_flag may be high-level syntax used in an applicable video coding standard, such as VVC, to indicate whether the L1 MVD is present in the bitstream, and may be named differently across different video coding standards, but may provide the same functionality.

[0113] For example, in VVC, ph_mvd_l1_zero_flag is a syntax element that specifies that the mvd_coding(x0,y0,1,cpIdx) syntax structure is not parsed, and for compIdx=0.1 and cpIdx=0.2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set equal to 0. ph_mvd_l1_zero_flag equal to 0 specifies that the mvd_coding(x0,y0,1,cpIdx) syntax structure is parsed. When not present, the value of ph_mvd_l1_zero_flag is inferred to be 1. The mvd_coding syntax structure contains syntax elements related to motion vector differences.

[0114] In some examples, in addition to or in lieu of the various examples above, the MVD of the "base candidate motion" may be signaled in the same manner as the AMVP mode. That is, the video encoder 200 may encode an MVD value indicating the magnitude of each MVD component (e.g., x and y components) of two motion vectors and the video decoder 300 may decode the MVD value. The syntax structure for signaling the MVD of the AMVP mode may be fully reused in such techniques. In this example, the sign value of each MVD component of the L1 motion does not need to be signaled, but may be derived in the same manner as the second example implementation.

[0115] In some examples, the MMVD related methods may be removed entirely, as the disclosed techniques may provide a more flexible way to signal and represent the MVD in the bitstream for the "base candidate motion".

[0116] Modified merge list building process

[0117] In some examples, the video encoder 200 and the video decoder 300 may code a CU-level flag to indicate the use of the techniques discussed above. Since it is unknown whether the "base candidate motion" is bi-directionally predicted (e.g., when inferred from the motion information of the merge candidate), this CU-level flag may be coded to force the merge candidate list construction process to discard all uni-directional prediction candidates and keep only bi-directional prediction candidates.

[0118] In another example, instead of transmitting the CU-level flag across the encoder and decoder, only some entries in the merge candidate list may be reserved for bidirectional prediction motion candidates. Therefore, when the merge index points to one of these reserved entries, the video encoder 200 or the video decoder 300 may use the techniques discussed above. For example, when the merge candidate list size is N (where N is a non-negative integer) and only the first M entries of the merge candidate list (where M is a non-negative integer and may be less than or equal to N) are reserved for bidirectional prediction motion candidates, the video encoder 200 or the video decoder 300 may fill the empty entries of the merge candidate list with bidirectional prediction candidates starting from the zeroth entry, and fill the empty entries of the merge candidate list with unidirectional prediction candidates starting from the Mth entry. In another example, when the merge candidate list size is the same N but this time only the last M entries in the merge candidate list are reserved for bidirectional prediction motion candidates, the video encoder 200 or the video decoder 300 can fill the first NM candidate entries in the merge candidate list in the same manner as the original merge candidate list construction process (e.g., HEVC, VVC, ECM), while the last M entries only accept bidirectional prediction motion candidates and discard unidirectional prediction motion candidates.

[0119] In another example, when ph_mvd_l1_zero_flag=true, the aforementioned changes to the merge candidate list construction may be skipped.

[0120] Base Candidate Movement

[0121] The video encoder 200 or the video decoder 300 may infer the “base candidate motion” from the GPM candidate list through 2 merge candidate indices pointing to two entries in the GPM candidate list.

[0122] Alternatively, the video encoder 200 or the video decoder 300 may infer the “base candidate motion” from the motion information of the merge candidate list.

[0123] One-way MMVD

[0124] In some examples, the video encoder 200 may signal a syntax element to indicate whether a unidirectional MMVD mode is used, where the "base candidate motion" is a unidirectional prediction, and one MVD is also signaled (in terms of magnitude plus sign or direction index plus distance offset index). A high-level syntax (e.g., in a sequence parameter set, tile / slice header, picture header, or sub-picture header) may be applied to control whether this mode is enabled.

[0125] In another approach, this syntax element may also indicate the use of a GPM merge candidate list (which contains only uni-directional prediction motion candidates). Alternatively, in yet another example, this syntax element may also indicate that the merge candidate list construction process only accepts populated uni-directional prediction motion candidates, while bi-prediction motion candidates are all discarded.

[0126] Unidirectional MMVD and asymmetric MMVD can be adaptively selected at the block level, and some syntax is used to distinguish between the two modes. For example, the inter-frame prediction direction is signaled to indicate whether the inter-frame prediction direction is unidirectional or bidirectional. If the syntax element indicates unidirectional, unidirectional MMVD is applied; otherwise (i.e., the syntax element indicates bidirectional), asymmetric MMVD is applied.

[0127] Figure 8 is a block diagram illustrating an example video encoder 200 that may perform the techniques of this disclosure. Figure 8 The foregoing description is provided for purposes of explanation and should not be construed as limiting the techniques broadly exemplified and described in this disclosure. For purposes of explanation, this disclosure describes a video encoder 200 according to techniques in the AV1 coding format. However, the techniques of this disclosure may be performed by a video encoding device configured to encode video data according to other video coding formats and / or various other video coding standards.

[0128] exist Figure 8In the example of , the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any or all of the video data memory 230, the mode selection unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter unit 216, the DPB 218, and the entropy coding unit 220 may be implemented in one or more processors or in a processing circuit. For example, the units of the video encoder 200 may be implemented as one or more circuits or logic elements as part of a hardware circuit, or as part of a processor, ASIC, or FPGA. In addition, the video encoder 200 may include additional or alternative processors or processing circuits to perform these and other functions.

[0129] Video data memory 230 may store video data to be encoded by components of video encoder 200. Video encoder 200 may receive video data from, for example, video source 104 ( Figure 1 ) receives video data stored in video data memory 230. DPB218 can act as a reference picture memory, which stores reference video data for use when subsequent video data is predicted by video encoder 200. Video data memory 230 and DPB 218 can be formed by any memory device in a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM) or other types of memory devices. Video data memory 230 and DPB 218 can be provided by the same memory device or a separate memory device. In various examples, video data memory 230 can be on-chip with other components of video encoder 200 (as shown), or off-chip relative to those components.

[0130] In the present disclosure, references to the video data memory 230 should not be interpreted as limited to a memory inside the video encoder 200 (unless otherwise specified) or a memory outside the video encoder 200 (unless otherwise specified). Rather, references to the video data memory 230 should be understood as a reference memory that stores video data received by the video encoder 200 for encoding (e.g., video data for a current block to be encoded). Figure 1The memory 106 may also provide temporary storage for outputs from various units of the video encoder 200. For example, as will be explained below, the video data memory 230 may include a first buffer and a second buffer for storing the sum and average of the CFL-predicted reconstructed luma sample values.

[0131] Illustrated Figure 8 Various units are provided to assist in understanding the operations performed by the video encoder 200. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functionality and pre-set the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by fixed-function circuits are generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.

[0132] The video encoder 200 may include an arithmetic logic unit (ALU), an elementary function unit (EFU), a digital circuit, an analog circuit, and / or a programmable core formed by a programmable circuit. In an example in which the operation of the video encoder 200 is performed using software executed by a programmable circuit, the memory 106 ( Figure 1 ) may store instructions (eg, object code) for software received and executed by the video encoder 200, or another memory (not shown) within the video encoder 200 may store such instructions.

[0133] The video data memory 230 is configured to store the received video data. The video encoder 200 may retrieve the picture / frame of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 may be the original video data to be encoded.

[0134] The mode selection unit 202 includes an inter prediction unit 222 and an intra prediction unit 226. The inter prediction unit 222 may be configured to encode a coding block of video data (e.g., both luma coding blocks and chroma coding blocks) using translational motion compensation, affine motion compensation, OBMC, and / or composite inter-intra prediction, as described above. The intra prediction unit 226 may be configured to encode a coding block of video data (e.g., both luma coding blocks and chroma coding blocks) using directional intra prediction, non-directional intra prediction, recursive filter intra prediction, CFL, intra block copy (IBC), and / or color palette mode, as described above. The mode selection unit 202 may include additional functional units that perform video prediction according to other prediction modes.

[0135] The mode selection unit 202 typically coordinates multiple encoding passes to test combinations of encoding parameters and resulting rate-distortion values ​​for such combinations. The encoding parameters may include the partitioning of super blocks into coding blocks, the prediction mode for the coding blocks, the transform type for the residual data of the coding blocks, the quantization parameter for the residual data of the coding blocks, etc. The mode selection unit 202 may ultimately select a coding parameter combination that has a better rate-distortion value than other tested combinations.

[0136] The video encoder 200 may divide the picture retrieved from the video data memory 230 into a series of coding blocks and pack one or more super blocks into a tile. The mode selection unit 202 may divide the super blocks of the picture according to a tree structure.

[0137] In general, the mode selection unit 202 also controls its components (e.g., the inter prediction unit 222 and the intra prediction unit 226) to generate prediction samples for the current decoding block. For example, for translational inter prediction of the current block, the inter prediction unit 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB 218).

[0138] In particular, the inter-prediction unit 222 may calculate values ​​representing how similar a potential reference block will be to the current block, such as based on a sum of absolute differences (SAD), a sum of squared differences (SSD), a mean absolute difference (MAD), a mean squared difference (MSD), etc. The inter-prediction unit 222 may generally perform these calculations using sample-by-sample differences between the current block and the reference block under consideration. The inter-prediction unit 222 may identify the reference block having the lowest value resulting from these calculations, thereby indicating the reference block that most closely matches the current block.

[0139] To translate the inter-frame prediction, the inter-frame prediction unit 222 may form one or more motion vectors (MVs) that define the position of the reference block in the reference picture relative to the position of the current block in the current picture. For example, for unidirectional inter-frame prediction, the inter-frame prediction unit 222 may determine a single motion vector, while for bidirectional inter-frame prediction, the inter-frame prediction unit 222 may determine two motion vectors.

[0140] When a current block (e.g., a CU) is predicted using bidirectional inter prediction, the inter prediction unit 222 may also encode motion information representing two motion vectors used to predict the current block. For example, the inter prediction unit 222 may construct a merge candidate list including motion information of neighboring blocks of the current block. In some examples, the inter prediction unit 222 may limit the merge candidate list to include only candidates for bidirectional prediction. The inter prediction unit 222 may encode a merge candidate index indicating a candidate including a motion vector to be used as a motion vector predictor (also referred to herein as a "predictor motion vector").

[0141] In addition, the inter-frame prediction unit 222 may calculate a motion vector difference (MVD) value for each of the motion vectors used to predict the current block. In some examples, the MVD value may include a corresponding offset value (e.g., an offset index) representing the magnitude of the offset. In some examples, the MVD value may include a corresponding direction index representing the direction of the MVD. In some examples, the MVD value may include only a single direction index representing the direction of the MVD. In the case of including a single direction index, in some examples, if the two motion vectors point to reference pictures in the same reference picture list, the direction may be the same for the two MVDs, and if the two motion vectors point to reference pictures in different reference picture lists, the direction may be opposite between the two motion vectors (e.g., upward for the first motion vector and downward for the second motion vector). Alternatively, the MVD may include corresponding x components and y components.

[0142] The entropy coding unit 220 may encode the merge information of the current block, wherein the merge information may include a merge index and an MVD value. Therefore, when the merge with motion vector difference (MMVD) mode is used to encode the motion information of the bidirectional inter-frame prediction block, the entropy coding unit 220 may encode the merge index and the corresponding MVD value, but there is no need to encode the reference picture list and the reference picture index value of the motion information.

[0143] The inter-frame prediction unit 222 may then use the motion vector to generate a prediction block of the prediction samples. For example, the inter-frame prediction unit 222 may use the motion vector to retrieve data of the reference block. As another example, if the motion vector has fractional sample precision, the inter-frame prediction unit 222 may interpolate the value of the prediction block according to one or more interpolation filters. In addition, for bidirectional inter-frame prediction, the inter-frame prediction unit 222 may retrieve data of two reference blocks identified by corresponding motion vectors and combine the retrieved data, for example, by averaging or weighted averaging sample by sample. In some examples, the inter-frame prediction unit 222 may perform techniques for MMVD merge mode with asymmetric motion vector difference and other techniques described in the present disclosure.

[0144] As another example, for intra prediction, the intra prediction unit 226 may generate prediction samples from samples in the same picture as the current block. In some examples, the intra prediction unit 226 may generate prediction samples from reference samples adjacent to the current block. For example, for directional intra prediction modes, the intra prediction unit 226 may generally mathematically combine the values ​​of adjacent samples and use these calculated values ​​as the prediction block in a defined direction across the current block. As another example, for non-directional DC mode, the intra prediction unit 226 may calculate the average of the adjacent samples of the current block to generate the prediction sample.

[0145] For other video coding techniques, such as intra block copy mode, affine motion compensation, recursive filter intra prediction, and other prediction modes, as some examples, the inter prediction unit 222 or the intra prediction unit 226 generates prediction samples according to the technique of the particular coding mode being used. In some examples, such as color palette mode coding, the intra prediction unit 226 may generate prediction samples for a prediction block (e.g., a palette predictor block), but the prediction samples may not be based on reference samples. Instead, the prediction samples may be based on a palette color list, where each prediction sample of the palette predictor block is one of the color values ​​in the palette color list. The intra prediction unit 226 may generate a palette predictor block based on the palette color list and determine a residual value between the palette predictor block and the coding block.

[0146] Mode selection unit 202 provides the prediction samples to residual generation unit 204. Residual generation unit 204 receives the original uncoded version of the current block from video data memory 230 and receives the prediction samples from mode selection unit 202. Residual generation unit 204 calculates the sample-by-sample difference between the current block and the prediction samples. The resulting sample-by-sample difference defines a residual block for the current block. In some examples, residual generation unit 204 can be formed using one or more subtractor circuits that perform binary subtraction.

[0147] The transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a "transform coefficient block"). The transform processing unit 206 may apply various transforms to the residual block to form a transform coefficient block. For example, the transform processing unit 206 may apply a horizontal / vertical transform combination, which may include a discrete cosine transform (DCT), an asymmetric discrete sine transform (ADST), a flipped ADST (e.g., ADST in reverse order), and an identity transform (IDTX). When the identity transform is used, the transform is skipped in one of the vertical direction or the horizontal direction. In some examples, the transform process may be skipped.

[0148] Quantization unit 208 may quantize transform coefficients in a transform coefficient block to produce a quantized transform coefficient block. Quantization unit 208 may quantize the transform coefficients of the transform coefficient block according to a quantization parameter (QP) value associated with the current decoding block. Video encoder 200 (e.g., via mode selection unit 202) may adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the decoding block. Quantization may cause a loss of information, and therefore, the quantized transform coefficients may have a lower precision than the original transform coefficients generated by transform processing unit 206.

[0149] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct a residual block from the transform coefficient block. The reconstruction unit 214 may generate a reconstructed block corresponding to the current decoding block (although potentially with some degree of distortion) based on the reconstructed residual block and the prediction samples generated by the mode selection unit 202. For example, the reconstruction unit 214 may add samples of the reconstructed residual block to corresponding prediction samples generated by the mode selection unit 202 to generate a reconstructed block.

[0150] The loop filter unit 216 may perform one or more filtering operations on the reconstructed block. For example, the loop filter unit 216 may perform a deblocking operation to reduce block artifacts along the edge of the CU. In other examples, the loop filter unit 216 may apply a constrained direction enhancement filter (CDEF) that may be applied after deblocking, and may include the application of an inseparable, nonlinear low-pass directional filter based on the estimated edge direction. The loop filter unit 216 may also include a loop recovery filter applied after CDEF, and may include a separable, symmetric normalized Wiener filter or a dual self-steering filter. In some examples, the operation of the loop filter unit 216 may be skipped.

[0151] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in an example where the operation of the loop filter unit 216 is not performed, the reconstruction unit 214 may store the reconstructed blocks to the DPB 218. In an example where the operation of the loop filter unit 216 is performed, the loop filter unit 216 may store the filtered reconstructed blocks to the DPB 218. The inter-prediction unit 222 may retrieve a reference picture formed by the reconstructed (and potentially filtered) blocks from the DPB 218 to perform inter-prediction on blocks of subsequent coded pictures. In addition, the intra-prediction unit 226 may use the reconstructed blocks of the current picture in the DPB 218 to perform intra-prediction on other blocks in the current picture.

[0152] In general, the entropy coding unit 220 may entropy encode syntax elements received from other functional components of the video encoder 200. For example, the entropy coding unit 220 may entropy encode the quantized transform coefficient blocks from the quantization unit 208. As another example, the entropy coding unit 220 may entropy encode prediction syntax elements (e.g., motion information for inter prediction or intra mode information for intra prediction) from the mode selection unit 202.

[0153] According to AV1, the entropy coding unit 220 may be configured as a symbol-to-symbol adaptive multi-symbol arithmetic decoder. The syntax elements in AV1 include an alphabet of N elements, and the context (e.g., a probability model) includes a set of N probabilities. The entropy coding unit 220 may store the probabilities as a 15-bit cumulative distribution function (CDF). The entropy coding unit 220 may perform recursive scaling using an update factor based on the size of the alphabet to update the context.

[0154] The video encoder 200 may output an encoded video bitstream that includes entropy encoding syntax elements required to reconstruct blocks of a slice or picture. For example, the entropy encoding unit 220 may output a bitstream.

[0155] The video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store the video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of the video data; determine a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; determine a second distance offset and a second direction index based on a second motion vector and the base motion vector predictor, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generate a prediction block using the first motion vector and the second motion vector; generate residual data based on the prediction block and the current block; and encode the residual data.

[0156] In another example, the video encoder 200 represents an example of a device configured to encode video data, the device including: a memory configured to store the video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determine a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determine whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same reference picture list (or The invention relates to a method for generating a prediction block using the first motion vector and the second motion vector predictor, wherein both the first reference picture and the second reference picture of the base motion vector predictor are after the current picture in the playback order (in the future) or both are before the current picture in the playback order (in the past) to determine whether the sign value of the second MVD is opposite to the sign value of the first MVD, the second MVD indicating a difference with the second motion vector; determining a second distance offset based on the second MVD; signaling the first distance offset, the second distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0157] In another example, the video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store the video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determine a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determine whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same reference picture list (or the base motion vector predictor); The method comprises the steps of: determining a first reference picture and a second reference picture of the present invention based on whether both the first reference picture and the second reference picture are after the current picture in the playback order (in the future) or both are before the current picture in the playback order (in the past) to determine whether the sign value of the second MVD is opposite to the sign value of the first MVD, the second MVD indicating a difference with the second motion vector; determining a second distance offset based on the second MVD, wherein the second distance offset corresponds to reference picture list 1; signaling the first distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the second distance offset is not signaled; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0158] In another example, the video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determine a first distance offset and a direction index of a first motion vector difference (MVD) indicating a difference between a first motion vector and the base motion vector predictor, wherein the first MVD is a reference picture list MVD; determine a second distance offset of a second MVD indicating a difference between a second motion vector and the base motion vector predictor, wherein the second MVD is a reference picture list 1 MVD; signal whether a syntax element indicating the reference picture list 1 MVD is present in a bitstream; based on L1 The MVD is present in a bitstream to signal a first distance offset, a second distance offset, a first direction index, and a second direction index, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generate a prediction block using a first motion vector and a second motion vector; generate residual data based on the prediction block and the current block; and encode the residual data.

[0159] In another example, video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of video data; determine a first motion vector predictor (MVD) based on a first motion vector and the base motion vector predictor; determine a second motion vector predictor (MVD) based on a second motion vector and the base motion vector predictor, wherein the first MVD and the second MVD are asymmetric; signal a magnitude of a first component and a second component of the first MVD and a magnitude of the first component and the second component of the second MVD; generate a prediction block using the first motion vector and the second motion vector; generate residual data based on the prediction block and the current block; and encode the residual data.

[0160] In another example, the present disclosure describes an example of a video encoder 200 representing a device configured to encode video data, comprising: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: signal a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used in a bitstream including an encoded representation of the video data; determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-directional prediction motion vector predictor; determine a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; signal the distance offset and the direction index; generate a prediction block using the first motion vector; generate residual data based on the prediction block and the current block; and encode the residual data.

[0161] In this manner, the video encoder 200 represents an example of an apparatus for decoding video data, which includes: a memory (e.g., a video data memory 230 and a DPB 218) configured to store video data; and one or more processors (e.g., a mode selection unit 202, an inter-frame prediction unit 222, a reconstruction unit 214, an inverse quantization unit 210, and an inverse transform processing unit 212), the one or more processors being implemented in a circuit and configured to: determine merge mode information of a current block of video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and decode the current block using the prediction block.

[0162] Fig. 9 is a block diagram illustrating an example video decoder 300 that may perform the techniques of this disclosure. Fig. 9 The foregoing description is provided for purposes of explanation and is not intended to limit the techniques broadly exemplified and described in this disclosure. For purposes of explanation, this disclosure describes a video decoder 300 according to techniques in the AV1 video coding format. However, the techniques of this disclosure may be performed by a video decoding device configured to decode video data according to other video coding formats and / or various other video coding standards.

[0163] exist Fig. 9 In the example of , the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a loop filter unit 312, and a decoded picture buffer (DPB) 314. Any or all of the CPB memory 320, the entropy decoding unit 302, the prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, the loop filter unit 312, and the DPB 314 may be implemented in one or more processors or in a processing circuit. For example, the units of the video decoder 300 may be implemented as one or more circuits or logic elements as part of a hardware circuit, or as part of a processor, ASIC, or FPGA. In addition, the video decoder 300 may include additional or alternative processors or processing circuits to perform these and other functions.

[0164] The prediction processing unit 304 includes an inter prediction unit 316 and an intra prediction unit 318. The inter prediction unit 316 may be configured to decode coding blocks of video data (e.g., both luma coding blocks and chroma coding blocks) using translational motion compensation, affine motion compensation, OBMC, and / or composite inter-intra prediction, as described above. As described above, the intra prediction unit 318 may be configured to decode coding blocks of video data (e.g., both luma coding blocks and chroma coding blocks) using directional intra prediction, non-directional intra prediction, recursive filter intra prediction, CFL, intra-block copy (IBC), and / or palette mode. The prediction processing unit 304 may include additional functional units for performing video prediction according to other prediction modes.

[0165] CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by components of video decoder 300. For example, the video bitstream may be obtained from computer readable medium 110 ( Figure 1 ) to obtain video data stored in the CPB memory 320. The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from an encoded video bitstream. In addition, the CPB memory 320 may store video data other than syntax elements of decoded pictures, such as temporary data representing outputs from various units of the video decoder 300. For example, as will be explained below, the CPB memory 320 may include a first buffer and a second buffer for storing a sum and an average of reconstructed luma sample values ​​predicted by the CFL.

[0166] DPB 314 typically stores decoded pictures, and video decoder 300 can output the decoded pictures, and / or use the decoded pictures as reference video data when decoding subsequent data or pictures of the encoded video bitstream. CPB memory 320 and DPB 314 can be formed by any memory device in various memory devices, such as DRAM (including SDRAM), MRAM, RRAM or other types of memory devices. CPB memory 320 and DPB 314 can be provided by the same memory device or a separate memory device. In various examples, CPB memory 320 can be on-chip with other components of video decoder 300, or off-chip relative to those components.

[0167] Additionally or alternatively, in some examples, video decoder 300 may retrieve the video from memory 120 ( Figure 1) to retrieve the decoded video data. That is, memory 120 may utilize CPB memory 320 to store data as discussed above. Likewise, when some or all of the functionality of video decoder 300 is implemented in software to be executed by processing circuitry of video decoder 300, memory 120 may store instructions to be executed by video decoder 300.

[0168] Illustrated Fig. 9 Various units are shown to aid in understanding the operations performed by the video decoder 300. The units may be implemented as fixed function circuits, programmable circuits, or a combination thereof. Figure 8 Similarly, a fixed-function circuit refers to a circuit that provides specific functionality and is preset for the operations that can be performed. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provides flexible functionality in the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. A fixed-function circuit can execute software instructions (e.g., to receive parameters or output parameters), but the type of operation performed by the fixed-function circuit is generally immutable. In some examples, one or more of the cells may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the cells may be integrated circuits.

[0169] The video decoder 300 may include an ALU, an EFU, a digital circuit, an analog circuit, and / or a programmable core formed by a programmable circuit. In an example where the operation of the video decoder 300 is performed by software executed on the programmable circuit, an on-chip or off-chip memory may store instructions (e.g., object code) of the software received and executed by the video decoder 300.

[0170] Entropy decoding unit 302 may receive encoded video data from CPB memory 320 and entropy decode the video data to reproduce syntax elements. Prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, and loop filter unit 312 may generate decoded video data based on the syntax elements extracted from the bitstream.

[0171] Generally, the video decoder 300 reconstructs a picture block by block. The video decoder 300 may perform a reconstruction operation on each block individually (wherein a block currently being reconstructed (ie, decoded) may be referred to as a "current block").

[0172] The entropy decoding unit 302 may entropy decode syntax elements defining the quantized transform coefficients of the quantized transform coefficient block and transform information, such as a quantization parameter (QP) and / or a transform mode indication. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine a degree of quantization and, likewise, a degree of inverse quantization to be applied by the inverse quantization unit 306. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. The inverse quantization unit 306 may thereby form a transform coefficient block including the transform coefficients.

[0173] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current decoding block. For example, the inverse transform processing unit 308 may apply an inverse DCT, an inverse ADST, an inverse flip ADST, or a horizontal / vertical combination of an inverse identity transform.

[0174] In addition, prediction processing unit 304 generates prediction samples based on the prediction information syntax elements entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is inter-predicted, inter-prediction unit 316 may generate prediction samples. In this case, the prediction information syntax elements may indicate a reference picture in DPB 314 from which to retrieve the reference block, and a motion vector identifying the position of the reference block in the reference picture relative to the position of the current block in the current picture. Inter-prediction unit 316 may generally communicate with inter-prediction unit 222 ( Figure 8 ) in a manner substantially similar to that described in . In some examples, the inter prediction unit 316 may perform techniques for MMVD merge mode with asymmetric motion vector differences and other techniques described in this disclosure.

[0175] When a current block (e.g., a CU) is predicted using bidirectional inter prediction, the entropy decoding unit 302 may decode merge information for the current block, wherein the merge information may include a merge index and an MVD value. In some examples, the entropy decoding unit 302 may decode a syntax element indicating whether MVD values ​​for two motion vectors of a bidirectional inter prediction block will be provided. In some examples, if the merge index is less than a threshold, the entropy decoding unit 302 may determine that MVD values ​​for two motion vectors will be provided, otherwise only a single MVD value will be provided. Therefore, when the motion information of a bidirectional inter prediction block is decoded using a merge with motion vector difference (MMVD) mode, the entropy decoding unit 302 may decode the merge index and the corresponding MVD value, but may be configured to determine that a reference picture list and a reference picture index value will not be included in the motion information of the current block.

[0176] The entropy decoding unit 302 may provide the merge index and the MVD value to the inter-prediction unit 316. The inter-prediction unit 316 uses the merge index and the MVD value to reproduce motion information representing two motion vectors used to predict the current block. For example, the inter-prediction unit 316 may construct a merge candidate list including motion information of neighboring blocks of the current block. In some examples, the inter-prediction unit 316 may limit the merge candidate list to only include candidates for bidirectional prediction. The inter-prediction unit 316 may use the merge candidate index to determine a candidate including a motion vector to be used as a motion vector predictor (also referred to herein as a "predictor motion vector").

[0177] In addition, the inter-frame prediction unit 316 may receive an MVD value for each of the motion vectors used to predict the current block. In some examples, the MVD value may include a corresponding offset value (e.g., an offset index) representing the magnitude of the offset. In some examples, the MVD value may include a corresponding direction index representing the direction of the MVD. In some examples, the MVD value may include only a single direction index representing the direction of the MVD. In the case of including a single direction index, in some examples, if the two motion vectors point to reference pictures in the same reference picture list, the direction may be the same for the two MVDs, and if the two motion vectors point to reference pictures in different reference picture lists, the direction may be opposite between the two motion vectors (e.g., upward for the first motion vector and downward for the second motion vector). Alternatively, the MVD may include corresponding x components and y components.

[0178] The inter prediction unit 316 may use the MVD value and the motion vector predictor to form a motion vector for the current block. Specifically, the inter prediction unit 316 may add a first MVD to the first motion vector predictor and a second MVD to the second motion vector predictor.

[0179] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, the intra-prediction unit 318 may generate prediction samples according to the intra-prediction mode indicated by the prediction information syntax element. Similarly, the intra-prediction unit 318 may generally communicate with the intra-prediction unit 226 ( Figure 8 The intra prediction process is performed in a manner substantially similar to that described in the foregoing description. The intra prediction unit 318 may retrieve data of neighboring samples of the current block from the DPB 314.

[0180] The reconstruction unit 310 may reconstruct the current block using the prediction block and the residual block. For example, the reconstruction unit 310 may add samples of the residual block to corresponding prediction samples to reconstruct the current block.

[0181] The loop filter unit 312 may perform one or more filtering operations on the reconstructed block. For example, the loop filter unit 312 may perform a deblocking operation to reduce block artifacts along the edge of the CU of the reconstructed block. In other examples, the loop filter unit 312 may apply a constrained direction enhancement filter (CDEF) that may be applied after deblocking, and may include the application of an inseparable, nonlinear low-pass directional filter based on the estimated edge direction. The loop filter unit 312 may also include a loop recovery filter applied after CDEF, and may include a separable, symmetric normalized Wiener filter or a dual self-steering filter. The operation of the loop filter unit 312 is not necessarily performed in all examples.

[0182] The video decoder 300 may store the reconstructed block in the DPB 314. For example, in examples where the operation of the loop filter unit 312 is not performed, the reconstruction unit 310 may store the reconstructed block to the DPB 314. In examples where the operation of the loop filter unit 312 is performed, the loop filter unit 312 may store the filtered reconstructed block to the DPB 314. As discussed above, the DPB 314 may provide reference information (such as samples of the current picture for intra-frame prediction and previously decoded pictures for subsequent motion compensation) to the prediction processing unit 304. In addition, the video decoder 300 may output a decoded picture (e.g., a decoded video) from the DPB 314 for use in, for example, Figure 1 Subsequent presentation on a display device such as display device 118.

[0183] In this way, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units, which are implemented in a circuit and configured to: obtain a bitstream including an encoded representation of the video data; determine a base motion vector predictor in a candidate list for a current block of the video data; determine a first distance offset, a second distance offset, a first direction index, and a second direction index, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determine a first motion vector based on the base motion vector predictor, the first distance offset, and the first direction index; determine a second motion vector based on the base motion vector predictor, the second distance offset, and the second direction index; generate a prediction block using the first motion vector and the second motion vector; and reconstruct the current block based on the prediction block.

[0184] In another example, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; obtain a first distance offset, a second distance offset, and a direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset, the second distance offset, and the direction index are signaled in a bitstream comprising an encoded representation of the video data. ; determining a first motion vector difference (MVD) based on a first distance offset and a direction index; determining a second MVD based on a second distance offset and a direction index, wherein determining the second MVD comprises determining whether a sign value of the second MVD is opposite to a sign value of the first MVD based on whether both a first reference picture and a second reference picture of a base motion vector predictor are from the same reference picture list; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing a current block based on the prediction block.

[0185] In another example, the video decoder 300 represents an example of a decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: determine a base motion vector predictor in a candidate list of a current block of a current picture of the video data, wherein the base motion vector predictor is a bidirectional prediction motion vector predictor; obtain a first distance offset, a second distance offset, and a direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset, the second distance offset, and the direction index are signaled in a bitstream including an encoded representation of the video data; based on the first distance offset The method comprises the steps of: determining a first motion vector difference (MVD) based on a distance offset and a direction index; determining a second MVD based on a second distance offset and a direction index, wherein determining the second MVD comprises determining whether a sign value of the second MVD is opposite to a sign value of the first MVD based on whether a first reference picture and a second reference picture of the base motion vector predictor are both after a current picture in a playback order or both before the current picture in a playback order; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0186] In another example, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: obtain a bitstream including an encoded representation of the video data; determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determine whether the bitstream includes a first distance offset, a second distance offset, a first direction index, and a second direction index based on a syntax element indicating whether a reference picture list 1 (L1) motion vector difference (MVD) is present in the bitstream; and determine whether the bitstream includes a first distance offset, a second distance offset, a first direction index, and a second direction index based on a syntax element including an indication of L1. The method comprises the steps of: determining a first distance offset, a second distance offset, a first direction index, and a second direction index in a bitstream in which an MVD is present in a syntax element in the bitstream, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determining a first motion vector difference (MVD) based on the first distance offset and the direction index; determining a second MVD based on the second distance offset and the direction index; determining a first motion vector based on a base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing a current block based on the prediction block.

[0187] In another example, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: obtain a bitstream including an encoded representation of the video data; determine a base motion vector predictor in a candidate list for a current block of the video data; determine the magnitude of a first component and a second component of a first motion vector difference (MVD) and the magnitude of a first component and a second component of a second MVD, wherein the first MVD and the second MVD are asymmetric; determine a first motion vector based on the base motion vector predictor and the first MVD; determine a second motion vector based on the base motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and reconstruct the current block based on the prediction block.

[0188] In another example, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in a circuit and configured to: obtain a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used from a bitstream including an encoded representation of the video data; determine a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bidirectional prediction motion vector predictor; determine a distance offset and a direction index; determine a first motion vector based on the base motion vector predictor, a first distance offset, and a first direction index; generate a prediction block using the first motion vector; and reconstruct the current block based on the prediction block.

[0189] In this manner, the video decoder 300 represents an example of an apparatus for decoding video data, which includes: a memory (e.g., a CPB memory 320 and a DPB 314) configured to store video data; and one or more processors (e.g., a prediction processing unit 304, an inter-frame prediction unit 316, a reconstruction unit 310, an inverse quantization unit 306, and an inverse transform processing unit 308), the one or more processors being implemented in a circuit and configured to: determine merge mode information of a current block of video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and decode the current block using the prediction block.

[0190] Fig.10 1 is a flowchart illustrating an example method for encoding a current block according to various techniques of the present disclosure. The current block may include a current CU. Although the video encoder 200 ( Figure 1 and Figure 8 ), but it should be understood that other devices may be configured to perform the same Fig.10 A similar approach to the one used in this paper.

[0191] In this example, the video encoder 200 initially predicts a current block (350). For example, the video encoder 200 may form a prediction block for the current block. In particular, when forming the prediction block for the current block, the video encoder 200 may use bidirectional prediction to predict the current block in accordance with the techniques of the present disclosure. That is, the video encoder 200 may use a first motion vector and a second motion vector to predict the current block. In addition, in accordance with the techniques of the present disclosure, the video encoder 200 may use a merge mode to encode motion information representing the first motion vector and the second motion vector. In the merge mode, the video encoder 200 may encode a merge candidate index identifying a neighboring block of the current block, the merge candidate index including a motion vector used as a predictor motion vector (e.g., a first predictor motion vector and a second predictor motion vector).

[0192] In addition, in accordance with the various techniques of this disclosure, video encoder 200 can encode both a first motion vector difference (MVD) value of a first motion vector and a second MVD value of a second motion vector. In this manner, video encoder 200 can form the first motion vector to correspond to a combination of a first motion vector predictor and a first MVD. Similarly, video encoder 200 can form the second motion vector to correspond to a combination of a second predictor motion vector and a second MVD.

[0193] The video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, the video encoder 200 may calculate the difference between the original uncoded block and the predicted block for the current block. The video encoder 200 may then transform the residual block and quantize the transform coefficients of the residual block (354). Next, the video encoder 200 may scan the quantized transform coefficients of the residual block (356). During or after the scan, the video encoder 200 may entropy encode the transform coefficients (358). For example, the video encoder 200 may use CAVLC or CABAC to encode the transform coefficients. The video encoder 200 may then output entropy encoded data for the block (360).

[0194] Video encoder 200 may also decode the current block after encoding the current block to use the decoded version of the current block as reference data for subsequent coding data (e.g., in an inter-prediction mode or an intra-prediction mode). Thus, video encoder 200 may inverse quantize and inverse transform the coefficients to reproduce a residual block (362). Video encoder 200 may combine the residual block with the prediction block to form a decoded block (364). Video encoder 200 may then store the decoded block in DPB 218 (366).

[0195] Fig.111 is a flowchart illustrating an example method for decoding a current block of video data according to various techniques of the present disclosure. The current block may include a current CU. Although the video decoder 300 ( Figure 1 and Fig. 9 ), but it should be understood that other devices may be configured to perform the same Fig.11 A similar approach to the one used in this paper.

[0196] The video decoder 300 may receive entropy coded data for a current block, such as entropy coded prediction information and entropy coded data for transform coefficients of a residual block corresponding to the current block (370). The video decoder 300 may entropy decode the entropy coded data to determine prediction information for the current block and reproduce transform coefficients of the residual block (372). The video decoder 300 may predict the current block (374), for example, using inter-frame prediction as indicated by the prediction information of the current block, to calculate a prediction block for the current block.

[0197] In particular, when forming a prediction block for a current block, the video decoder 300 may use bidirectional prediction to predict the current block in accordance with the various techniques of the present disclosure. That is, the video decoder 300 may use a first motion vector and a second motion vector to predict the current block. In order to form the first motion vector and the second motion vector, the video decoder 300 may initially decode a merge index that identifies a merge candidate adjacent to the current block. The merge candidate may include a first predictor motion vector and a second predictor motion vector. The video decoder 300 may also decode a first motion vector difference (MVD) value and a second MVD value. The video decoder 300 may then form the first motion vector as a combination of the first predictor motion vector and the first MVD value. Similarly, the video decoder 300 may form the second motion vector as a combination of the second predictor motion vector and the second MVD value. The video decoder 300 may then use the first motion vector and the second motion vector to form a prediction block for the current block.

[0198] The video decoder 300 may then inverse scan the reproduced transform coefficients (376) to create a block of quantized transform coefficients. The video decoder 300 may then inverse quantize the transform coefficients and apply an inverse transform to the transform coefficients to produce a residual block (378). The video decoder 300 may finally decode the current block by combining the prediction block and the residual block (380).

[0199] Fig.12 is a flowchart illustrating another example method of decoding video data according to various techniques of this disclosure. Fig.12 The method is about Figure 1 and Fig. 9 However, the video encoder 200 or other video decoding devices may be configured to perform this or similar methods.

[0200] Initially, the video decoder 300 may determine (e.g., decode) merge mode information for a current block of video data (400). The merge mode information may indicate that the current block is to be predicted using a first predictor motion vector and a second predictor motion vector. For example, the merge mode information may point to a neighboring block of the current block, where the neighboring block is predicted using bidirectional prediction. That is, the first predictor motion vector may point to a prediction block of a reference picture in reference picture list 1, and the second predictor motion vector may point to a prediction block of a reference picture in reference picture list 2. Alternatively, the merge mode information may include a first merge candidate index and a second merge candidate index, where the first merge candidate index points to a first entry in a geometric partitioning mode (GPM) candidate list, and the second merge candidate index points to a second entry in the GPM candidate list.

[0201] In some examples, the video decoder 300 may determine whether the merge mode information includes a merge index having a value less than a threshold value. If the merge index is less than the threshold value, the video decoder 300 may determine to code both a first motion vector difference (MVD) value and a second MVD value for the current block, and if the merge index is greater than the threshold value, the video decoder 300 may determine to code only a single MVD value for the current block.

[0202] Video decoder 300 may then determine (e.g., decode) a first MVD value and a second MVD value for the current block (402). In some examples, video decoder 300 may decode a first offset index representing a first magnitude of the first MVD and a second offset index representing a second magnitude of the second MVD. In some examples, video decoder 300 may decode a first direction index for the first MVD and a second direction index for the second MVD, respectively.

[0203] In some examples, the video decoder 300 may decode a single direction index indicating a first direction of the first MVD and a second direction of the second MVD. In some examples, if the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a different second reference picture list, the first direction and the second direction may be opposite to each other. In some examples, if the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list, the first direction may be equivalent to the second direction. Thus, the single direction index may indicate the same or opposite directions for the first MVD and the second MVD.

[0204] In some examples, video decoder 300 may decode the first x component and the first y component of the first MVD and the second x component and the second y component of the second MVD, as in AMVP mode.

[0205] The video decoder 300 may then use the first predictor motion vector (MVP) and the first MVD to form a first motion vector (404) and use the second predictor motion vector (MVP) and the second MVD to form a second motion vector (406). For example, the video decoder 300 may combine the first MVP with the first MVD and the second MVP with the second MVD.

[0206] The video decoder 300 may then use the first motion vector and the second motion vector to generate a prediction block for the current block (408). For example, the video decoder 300 may use the first motion vector to retrieve a first reference block and use the second motion vector to retrieve a second reference block. The video decoder 300 may then combine the first reference block and the second reference block, for example, on a sample-by-sample basis, where the first reference block and the second reference block have equal weights. Finally, the video decoder 300 may use the prediction block to decode the current block (410). For example, the video decoder 300 may decode the residual block as discussed above and combine samples of the residual block with samples of the prediction block.

[0207] In this way, Fig.12 The method represents an example of a method for decoding video data, which includes: determining merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and decoding the current block using the prediction block.

[0208] The following clauses provide a non-limiting list of embodiments according to one or more techniques of this disclosure.

[0209] Clause 1: A method for decoding video data, comprising: obtaining a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data; determining a first distance offset, a second distance offset, a first direction index, and a second direction index, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determining a first motion vector based on the base motion vector predictor, the first distance offset, and the first direction index; determining a second motion vector based on the base motion vector predictor, the second distance offset, and the second direction index; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0210] Clause 2: A method for decoding video data, comprising: determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; obtaining a first distance offset, a second distance offset, and a direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset, the second distance offset, and the direction index are signaled in a bitstream comprising an encoded representation of the video data; determining a first motion vector difference (MVD) based on the first distance offset and the direction index; determining a second MVD based on the second distance offset and the direction index, wherein determining the second MVD comprises determining whether a sign value of the second MVD is opposite to a sign value of the first MVD based on whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same reference picture list; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0211] Clause 3: A method according to clause 1 or 2, wherein: if present, the second distance offset and the second direction index correspond to reference picture list 1, and determining the second distance offset and the second direction index includes determining that the second distance offset and the second direction index are not signaled.

[0212] Clause 4: A method of decoding video data, comprising: obtaining a bitstream comprising an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining whether the bitstream includes a first distance offset, a second distance offset, a first direction index, and a second direction index based on a syntax element indicating whether a reference picture list 1 (L1) motion vector difference (MVD) is present in the bitstream; determining whether the bitstream includes a first distance offset, a second distance offset, a first direction index, and a second direction index based on a syntax element indicating whether the L1 The bitstream of the syntax element in which the MVD is present in the bitstream determines a first distance offset, a second distance offset, a first direction index, and a second direction index, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determines a first motion vector difference (MVD) based on the first distance offset and the direction index; determines a second MVD based on the second distance offset and the direction index; determines a first motion vector based on the base motion vector predictor and the first MVD; determines a second motion vector based on the base motion vector predictor and the second MVD; generates a prediction block using the first motion vector and the second motion vector; and reconstructs the current block based on the prediction block.

[0213] Clause 5: A method for decoding video data, comprising: obtaining a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data; determining the magnitude of a first component and a second component of a first motion vector difference (MVD) and the magnitude of a first component and a second component of a second MVD, wherein the first MVD and the second MVD are asymmetric; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0214] Clause 6: According to the method described in any one of clauses 1 to 5, the method further includes: obtaining a syntax element from the bitstream; and performing a merge candidate list construction process, the merge candidate list construction process generates the candidate list so that unidirectional prediction candidates are discarded from the candidate list depending on the value of the syntax element.

[0215] Clause 7: The method according to any one of clauses 1 to 5, further comprising performing a merge candidate list construction process, the merge candidate list construction process generating the candidate list such that the candidate list includes entries reserved only for bi-predictive motion candidates.

[0216] Clause 8: A method according to Clause 7, wherein the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates includes: based on a syntax element indicating that an L1 motion vector difference exists in the bitstream, the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates is performed.

[0217] Clause 9: A method according to any one of clauses 1 to 6, wherein determining the base motion vector predictor comprises inferring the base motion vector predictor from a geometric partitioning mode (GPM) candidate list by two merge candidate indices pointing to two entries in the GPM candidate list.

[0218] Clause 10: A method for decoding video data, comprising: obtaining a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used from a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bidirectional prediction motion vector predictor; determining a distance offset and a direction index; determining a first motion vector based on the base motion vector predictor, the first distance offset and the first direction index; generating a prediction block using the first motion vector; and reconstructing the current block based on the prediction block.

[0219] Clause 11: A method according to clause 10, wherein the syntax element further indicates whether a geometric partitioning mode (GPM) is used to merge the candidate list.

[0220] Clause 12: A method according to any of clauses 10 to 11, wherein the syntax element further indicates whether the merge candidate list construction process only accepts populating uni-directional prediction motion candidates.

[0221] Clause 13: The method according to any one of clauses 10 to 12 further includes: determining whether the inter-frame prediction direction of the current block is unidirectional or bidirectional based on block-level information notified by a signal in the bitstream; and applying unidirectional prediction or asymmetric MMVD depending on whether the inter-frame prediction direction of the current block is unidirectional prediction or bidirectional prediction.

[0222] Clause 14: A method for encoding video data comprises: determining a base motion vector predictor in a candidate list of a current block of the video data; determining a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; determining a second distance offset and a second direction index based on a second motion vector and the base motion vector predictor, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0223] Clause 15: A method for encoding video data, comprising: determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determining whether a sign value of a second MVD is opposite to a sign value of the first MVD based on whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same reference picture list, the second MVD indicating a difference from a second motion vector; determining a second distance offset based on the second MVD; signaling the first distance offset, the second distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0224] Clause 16: A method for encoding video data, comprising: determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determining whether a sign value of a second MVD is opposite to a sign value of the first MVD based on whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same reference picture list, the second MVD indicating a difference from a second motion vector; determining a second distance offset based on the second MVD, wherein the second distance offset corresponds to reference picture list 1; signaling the first distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the second distance offset is not signaled; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0225] Clause 17: A method for encoding video data, comprising: determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index of a first motion vector difference (MVD) indicating a difference between a first motion vector and the base motion vector predictor, wherein the first MVD is a reference picture list MVD; determining a second distance offset of a second MVD indicating a difference between a second motion vector and the base motion vector predictor, wherein the second MVD is a reference picture list 1 MVD; signaling whether a syntax element indicating the reference picture list 1 MVD is present in a bitstream; signaling the first distance offset, the second distance offset, a first direction index, and a second direction index based on the presence of the L1 MVD in the bitstream, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0226] Clause 18: A method for encoding video data comprises: determining a base motion vector predictor in a candidate list of a current block of the video data; determining a first motion vector predictor (MVD) based on a first motion vector and the base motion vector predictor; determining a second motion vector predictor (MVD) based on a second motion vector and the base motion vector predictor, wherein the first MVD and the second MVD are asymmetric; signaling the magnitude of a first component and a second component of the first MVD and the magnitude of a first component and a second component of the second MVD; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0227] Clause 19: A method according to any one of clauses 14 to 18, the method further comprising: signaling a syntax element in a bitstream; and performing a merge candidate list construction process, the merge candidate list construction process generating the candidate list so that unidirectional prediction candidates are discarded from the candidate list depending on the value of the syntax element.

[0228] Clause 20: The method of any one of clauses 14 to 19, further comprising performing a merge candidate list construction process, the merge candidate list construction process generating the candidate list such that the candidate list includes entries reserved only for bi-predictive motion candidates.

[0229] Clause 21: A method according to clause 20, wherein the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates includes: based on a syntax element indicating that an L1 motion vector difference exists in the bitstream, the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates is performed.

[0230] Clause 22: A method according to any one of clauses 14 to 21, wherein determining the base motion vector predictor comprises: inferring the base motion vector predictor from a geometric partitioning mode (GPM) candidate list by two merge candidate indices pointing to two entries in the GPM candidate list.

[0231] Clause 23: A method for encoding video data, comprising: signaling in a bitstream including an encoded representation of the video data a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bidirectional prediction motion vector predictor; determining a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; signaling the distance offset and the direction index; generating a prediction block using the first motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0232] Clause 24: A method according to clause 23, wherein the syntax element further indicates whether the geometric partitioning mode (GPM) is used to merge the candidate list.

[0233] Clause 25: A method according to any of clauses 23 to 24, wherein the syntax element further indicates whether the merge candidate list construction process only accepts populating uni-directional prediction motion candidates.

[0234] Clause 26: The method according to any one of clauses 23 to 25 further includes: signaling in the bitstream block-level information indicating whether the inter-frame prediction direction of the current block is unidirectional or bidirectional; and applying unidirectional prediction or asymmetric MMVD depending on whether the inter-frame prediction direction of the current block is unidirectional prediction or bidirectional prediction.

[0235] Clause 27: An apparatus for encoding or decoding video data, the apparatus comprising one or more means for performing the method according to any of clauses 1 to 26.

[0236] Clause 28: The apparatus of clause 27, wherein the one or more components include one or more processors, the one or more processors being implemented in circuitry.

[0237] Clause 29: The apparatus of any one of clauses 27 and 28, further comprising a memory for storing the video data.

[0238] Clause 30: Apparatus according to any of clauses 27 to 29, further comprising a display configured to display the decoded video data.

[0239] Clause 31: The device of any of clauses 27 to 30, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0240] Clause 32: Apparatus as recited in any of clauses 27 to 31, wherein the apparatus comprises a video decoder.

[0241] Clause 33: Apparatus as recited in any of clauses 27 to 32, wherein the apparatus comprises a video encoder.

[0242] Clause 34: A computer readable storage medium having stored thereon instructions which, when executed, cause one or more processors to perform the method of any of clauses 1 to 26.

[0243] Item 1A: A method for decoding video data, comprising: obtaining a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data; determining a first distance offset, a second distance offset, a first direction index, and a second direction index, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determining a first motion vector based on the base motion vector predictor, the first distance offset, and the first direction index; determining a second motion vector based on the base motion vector predictor, the second distance offset, and the second direction index; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0244] Clause 2A: A method according to clause 1A, wherein: the second distance offset and the second direction index correspond to reference picture list 1, the second distance offset and the second direction index are not signaled in the bitstream, and determining the second motion vector includes: determining that the motion vector difference (MVD) corresponding to the reference picture list 1 is equal to a zero vector; and determining the second motion vector based on the base motion vector predictor and the MVD corresponding to the reference picture list 1.

[0245] Clause 3A: A method for decoding video data, comprising: determining a base motion vector predictor in a candidate list of a current block of a current picture of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; obtaining a first distance offset, a second distance offset, and a direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset, the second distance offset, and the direction index are signaled in a bitstream including an encoded representation of the video data; determining a first motion vector difference (MVD) based on the first distance offset and the direction index; determining a first motion vector difference (MVD) based on the second distance offset and the direction index; obtaining a first motion vector difference (MVD) based on the second distance offset and the direction index; obtaining a first motion vector difference (MVD) based on the second distance offset and the direction index; obtaining a first motion vector difference (MVD) based on the first ... first distance offset and the direction index; obtaining a first motion vector difference (MVD) based on the The method comprises: determining a second MVD based on an index, wherein determining the second MVD comprises determining whether a sign value of the second MVD is opposite to a sign value of the first MVD based on whether a first reference picture and a second reference picture of the base motion vector predictor are both after the current picture in the playback order or both before the current picture in the playback order; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0246] Clause 4A: A method according to clause 3A, wherein: the second distance offset, the second direction index and the second MVD correspond to reference picture list 1, the second distance offset and the second direction index are not signaled in the bitstream, and determining the second MVD includes determining that the second MVD is equal to a zero vector.

[0247] Clause 5A: A method of decoding video data, comprising: obtaining a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining whether the bitstream includes a first distance offset, a second distance offset, a first direction index, and a second direction index based on a syntax element indicating whether a reference picture list 1 (L1) motion vector difference (MVD) is present in the bitstream; determining the first distance offset, the second distance offset, the first direction index, and the second direction index based on the syntax element indicating that the L1 MVD is present in the bitstream, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; determining a first motion vector difference (MVD) based on the first distance offset and the direction index; determining a second MVD based on the second distance offset and the direction index; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0248] Item 6A: A method of decoding video data, comprising: obtaining a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data; determining a magnitude of a first component and a second component of a first motion vector difference (MVD) and a magnitude of a first component and a second component of a second MVD, wherein the first MVD and the second MVD are asymmetric; determining a first motion vector based on the base motion vector predictor and the first MVD; determining a second motion vector based on the base motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and reconstructing the current block based on the prediction block.

[0249] Clause 7A: A method according to any one of clauses 1A to 6A, the method further comprising: obtaining a syntax element from the bitstream; and performing a merge candidate list construction process, the merge candidate list construction process generating the candidate list so that unidirectional prediction candidates are discarded from the candidate list depending on the value of the syntax element.

[0250] Clause 8A: The method of any of clauses 1A to 6A, further comprising performing a merge candidate list construction process that generates the candidate list such that the candidate list includes entries reserved only for bi-predictive motion candidates.

[0251] Clause 9A: A method according to clause 8A, wherein the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates includes: based on a syntax element indicating that an L1 motion vector difference is present in the bitstream, the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates is performed.

[0252] Clause 10A: A method as described in any of clauses 1A to 7A, wherein determining the base motion vector predictor includes: inferring the base motion vector predictor from a geometric partitioning mode (GPM) candidate list via two merge candidate indices pointing to two entries in the GPM candidate list.

[0253] Item 11A: A method of decoding video data, comprising: obtaining a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used from a bitstream including an encoded representation of the video data; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-directional prediction motion vector predictor; determining a distance offset and a direction index; determining a first motion vector based on the base motion vector predictor, the first distance offset, and the first direction index; generating a prediction block using the first motion vector; and reconstructing the current block based on the prediction block.

[0254] Clause 12A: The method of clause 11A, wherein the syntax element further indicates whether a geometric partitioning mode (GPM) is used to merge the candidate list.

[0255] Clause 13A: A method as recited in any of clauses 11A to 12A, wherein the syntax element further indicates whether the merge candidate list construction process only accepts populating uni-directional prediction motion candidates.

[0256] Clause 14A: The method according to any one of clauses 11A to 13A further includes: determining whether the inter-frame prediction direction of the current block is unidirectional or bidirectional based on block-level information signaled in the bitstream; and applying unidirectional prediction or asymmetric MMVD depending on whether the inter-frame prediction direction of the current block is unidirectional prediction or bidirectional prediction.

[0257] Item 15A: A method for encoding video data comprises: determining a base motion vector predictor in a candidate list for a current block of the video data; determining a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; determining a second distance offset and a second direction index based on a second motion vector and the base motion vector predictor, wherein at least one of the following situations exists: the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0258] Clause 16A: The method of clause 15A, wherein the second distance offset and the second direction index correspond to reference picture list 1, and the second distance offset and the second direction index are not signaled in a bitstream.

[0259] Clause 17A: A method for encoding video data, comprising: determining a base motion vector predictor in a candidate list of a current block of a current picture of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determining whether a sign value of a second MVD is opposite to a sign value of the first MVD based on whether both a first reference picture and a second reference picture of the base motion vector predictor are from the same first reference picture list, the second MVD indicating a difference from a second motion vector; determining a second distance offset based on the second MVD; signaling the first distance offset, the second distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the first distance offset; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0260] Clause 18A: A method according to clause 17A, wherein: the second distance offset, second direction index and second MVD correspond to reference picture list 1, the second distance offset and the second direction index are not signaled in the bitstream, and the second MVD is equal to a zero vector.

[0261] Clause 19A: A method for encoding video data, comprising: determining a base motion vector predictor in a candidate list of a current block of a current picture of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index based on a first motion vector difference (MVD), the first MVD indicating a difference from a first motion vector; determining whether a sign value of a second MVD is opposite to a sign value of the first MVD based on whether a first reference picture and a second reference picture of the base motion vector predictor are both after the current picture in a playback order or both before the current picture in a playback order, the second MVD indicating a difference from a second motion vector; determining a second distance offset based on the second MVD, wherein the second distance offset corresponds to reference picture list 1; signaling the first distance offset and the direction index, wherein the first distance offset and the second distance offset are asymmetric, and wherein the second distance offset is not signaled; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0262] Clause 20A: A method of encoding video data, comprising: determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-predictive motion vector predictor; determining a first distance offset and a direction index of a first motion vector difference (MVD) indicating a difference between a first motion vector and the base motion vector predictor, wherein the first MVD is a reference picture list MVD; determining a second distance offset of a second MVD indicating a difference between a second motion vector and the base motion vector predictor, wherein the second MVD is a reference picture list 1 MVD; signaling whether a syntax element indicating the reference picture list 1 MVD is present in a bitstream; signaling the first distance offset, the second distance offset, a first direction index, and a second direction index based on the presence of the L1 MVD in the bitstream, wherein the first distance offset and the second distance offset are asymmetric or the first direction index and the second direction index are asymmetric; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0263] Item 21A: A method for encoding video data comprises: determining a base motion vector predictor in a candidate list for a current block of the video data; determining a first motion vector predictor (MVD) based on a first motion vector and the base motion vector predictor; determining a second motion vector predictor (MVD) based on a second motion vector and the base motion vector predictor, wherein the first MVD and the second MVD are asymmetric; signaling the magnitude of a first component and a second component of the first MVD and the magnitude of a first component and a second component of the second MVD; generating a prediction block using the first motion vector and the second motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0264] Clause 22A: A method according to any one of clauses 17A to 21A, the method further comprising: signaling a syntax element in a bitstream; and performing a merge candidate list construction process, the merge candidate list construction process generating the candidate list so that unidirectional prediction candidates are discarded from the candidate list depending on the value of the syntax element.

[0265] Clause 23A: The method of any of clauses 17A to 22A, further comprising performing a merge candidate list construction process that generates the candidate list such that the candidate list includes entries reserved only for bi-predictive motion candidates.

[0266] Clause 24A: A method according to clause 23A, wherein the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates includes: based on a syntax element indicating that an L1 motion vector difference is present in the bitstream, the merged candidate list construction process of generating the candidate list so that the candidate list includes entries reserved only for bidirectional prediction motion candidates is performed.

[0267] Clause 25A: The method of any of clauses 17A to 24A, wherein determining the base motion vector predictor comprises inferring the base motion vector predictor from a geometric partitioning mode (GPM) candidate list by two merge candidate indices pointing to two entries in the GPM candidate list.

[0268] Clause 26A: A method for encoding video data, comprising: signaling in a bitstream including an encoded representation of the video data a syntax element indicating whether a unidirectional merge mode with motion vector difference (MMVD) mode is used; determining a base motion vector predictor in a candidate list for a current block of the video data, wherein the base motion vector predictor is a bi-directional prediction motion vector predictor; determining a first distance offset and a first direction index based on a first motion vector and the base motion vector predictor; signaling the distance offset and the direction index; generating a prediction block using the first motion vector; generating residual data based on the prediction block and the current block; and encoding the residual data.

[0269] Clause 27A: The method of clause 26A, wherein the syntax element further indicates whether a geometric partitioning mode (GPM) is used to merge the candidate list.

[0270] Clause 28A: A method as recited in any of clauses 26A to 27A, wherein the syntax element further indicates whether the merge candidate list construction process only accepts populating uni-directional prediction motion candidates.

[0271] Clause 29A: The method according to any one of clauses 26A to 28A, further comprising: signaling in the bitstream block-level information indicating whether the inter-frame prediction direction of the current block is unidirectional or bidirectional; and applying unidirectional prediction or asymmetric MMVD depending on whether the inter-frame prediction direction of the current block is unidirectional prediction or bidirectional prediction.

[0272] Clause 30A: An apparatus for encoding or decoding video data, the apparatus comprising one or more means for performing the method of any of clauses 1A to 29A.

[0273] Clause 31A: The apparatus of clause 30A, wherein the one or more components include one or more processors implemented in circuitry.

[0274] Clause 32A: The apparatus of any of clauses 30A and 31A, further comprising a memory for storing the video data.

[0275] Clause 33A: The apparatus of any of clauses 30A to 32A, further comprising a display configured to display the decoded video data.

[0276] Clause 34A: The device of any of clauses 30A to 33A, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0277] Clause 35A: The apparatus of any of clauses 30A to 34A, wherein the apparatus comprises a video decoder.

[0278] Clause 36A: The apparatus of any of clauses 30A to 35A, wherein the apparatus comprises a video encoder.

[0279] Clause 37A: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 1A to 29A.

[0280] Item 1B. A method for decoding video data, the method comprising: determining merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and using the prediction block to decode the current block.

[0281] Clause 2B. The method of Clause 1B, wherein determining the second MVD comprises determining that the second MVD is zero-valued.

[0282] Clause 3B. The method of clause 1B, wherein determining the first MVD comprises decoding a first offset index representing a magnitude of the first MVD, and wherein determining the second MVD comprises decoding a second offset index representing a magnitude of the second MVD.

[0283] Clause 4B. The method of clause 3B, wherein determining the first MVD further comprises decoding a first direction index indicating a direction of the first MVD, and wherein determining the second MVD further comprises decoding a second direction index indicating a direction of the second MVD.

[0284] Clause 5B. The method of Clause 3B, further comprising decoding a direction index representing a first direction of the first MVD and a second direction of the second MVD.

[0285] Clause 6B. The method of clause 5B, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

[0286] Clause 7B. The method of clause 5B, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

[0287] Clause 8B. The method of clause 1B, further comprising coding a value of a syntax element indicating that the second MVD is to be decoded.

[0288] Clause 9B. The method of clause 8B, wherein the syntax element is a coding unit (CU) level syntax element for the current block.

[0289] Clause 10B. The method of clause 1B, wherein determining the first MVD comprises decoding a first x-component and a first y-component of the first MVD, and wherein determining the second MVD comprises decoding a second x-component and a second y-component of the second MVD.

[0290] Clause 11B. The method of Clause 1B, wherein the merge mode information comprises a merge index having a value less than a threshold.

[0291] Clause 12B. The method of clause 1B, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometry partitioning mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

[0292] Clause 13B. The method of clause 1B, further comprising coding a value for a syntax element indicating that uni-directional merge with MVD (MMVD) is not to be used for the current block.

[0293] Clause 14B. The method of clause 1B, further comprising encoding the current block prior to decoding the current block.

[0294] Item 15B. A device for decoding video data, the device comprising: a memory configured to store video data; and one or more processors implemented in a circuit and configured to: determine merge mode information for a current block of the video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and use the prediction block to decode the current block.

[0295] Clause 16B. The apparatus of Clause 15B, wherein the one or more processors are configured to determine that the second MVD is zero-valued.

[0296] Clause 17B. An apparatus according to clause 15B, wherein to determine the first MVD, the one or more processors are configured to decode a first offset index representing the value of the first MVD, and wherein to determine the second MVD, the one or more processors are configured to decode a second offset index representing the value of the second MVD.

[0297] Clause 18B. A device according to Clause 17B, wherein to determine the first MVD, the one or more processors are further configured to decode a first direction index indicating the direction of the first MVD, and wherein to determine the second MVD, the one or more processors are further configured to decode a second direction index indicating the direction of the second MVD.

[0298] Clause 19B. The apparatus of Clause 17B, wherein the one or more processors are further configured to decode a direction index representing a first direction of the first MVD and a second direction of the second MVD.

[0299] Clause 20B. The apparatus of clause 19B, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

[0300] Clause 21B. The apparatus of clause 19B, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

[0301] Clause 22B. The apparatus of clause 15B, wherein the one or more processors are further configured to decode a value of a coding unit (CU) level syntax element for the current block indicating that the second MVD is to be decoded.

[0302] Clause 23B. An apparatus as described in clause 15B, wherein to determine the first MVD, the one or more processors are configured to decode a first x-component and a first y-component of the first MVD, and wherein to determine the second MVD, the one or more processors are configured to decode a second x-component and a second y-component of the second MVD.

[0303] Clause 24B. The apparatus of clause 15B, wherein the merge mode information comprises a merge index having a value less than a threshold.

[0304] Clause 25B. The apparatus of clause 15B, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometry partitioning mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

[0305] Clause 26B. The apparatus of clause 15B, wherein the one or more processors are further configured to decode a value of a syntax element indicating that unidirectional merge with MVD (MMVD) is not to be used for the current block.

[0306] Clause 27B. The device of Clause 15B, further comprising a display configured to display the decoded video data.

[0307] Clause 28B. The device of clause 15B, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0308] Item 29B. A computer-readable storage medium having instructions stored thereon that, when executed, cause a processor to: determine merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and use the prediction block to decode the current block.

[0309] Item 30B. A device for decoding video data, the device comprising: a component for determining merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; a component for determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; a component for forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; a component for forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; a component for generating a prediction block using the first motion vector and the second motion vector; and a component for decoding the current block using the prediction block.

[0310] Item 31B. A method for decoding video data, the method comprising: determining merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and using the prediction block to decode the current block.

[0311] Clause 32B. The method of Clause 31B, wherein determining the second MVD comprises determining that the second MVD is zero-valued.

[0312] Clause 33B. The method of clause 31B, wherein determining the first MVD comprises decoding a first offset index representing a magnitude of the first MVD, and wherein determining the second MVD comprises decoding a second offset index representing a magnitude of the second MVD.

[0313] Clause 34B. The method of clause 33B, wherein determining the first MVD further comprises decoding a first direction index indicating a direction of the first MVD, and wherein determining the second MVD further comprises decoding a second direction index indicating a direction of the second MVD.

[0314] Clause 35B. The method of Clause 33B, further comprising decoding a direction index representing a first direction of the first MVD and a second direction of the second MVD.

[0315] Clause 36B. The method of clause 35B, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

[0316] Clause 37B. The method of clause 35B, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

[0317] Clause 38B. The method of clause 31B, wherein determining the first MVD comprises decoding a first x-component and a first y-component of the first MVD, and wherein determining the second MVD comprises decoding a second x-component and a second y-component of the second MVD.

[0318] Clause 39B. The method of any of clauses 31 to 38B, further comprising coding a value of a syntax element indicating that the second MVD is to be decoded.

[0319] Clause 40B. The method of clause 39B, wherein the syntax element is a coding unit (CU) level syntax element for the current block.

[0320] Clause 41B. The method of any of clauses 31 to 40B, wherein the merge mode information comprises a merge index having a value less than a threshold.

[0321] Clause 42B. The method of clause 31B, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometry partitioning mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

[0322] Clause 43B. The method of any of clauses 31 to 42B, further comprising coding a value for a syntax element indicating that uni-directional merge with MVD (MMVD) is not to be used for the current block.

[0323] Clause 44B. The method of any of clauses 31 to 43B, further comprising encoding the current block prior to decoding the current block.

[0324] Item 45B. A device for decoding video data, the device comprising: a memory configured to store video data; and one or more processors implemented in a circuit and configured to: determine merge mode information for a current block of the video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and use the prediction block to decode the current block.

[0325] Clause 46B. The apparatus of clause 45B, wherein the one or more processors are configured to determine that the second MVD is zero-valued.

[0326] Clause 47B. An apparatus according to clause 45B, wherein to determine the first MVD, the one or more processors are configured to decode a first offset index representing the value of the first MVD, and wherein to determine the second MVD, the one or more processors are configured to decode a second offset index representing the value of the second MVD.

[0327] Clause 48B. An apparatus according to Clause 47B, wherein to determine the first MVD, the one or more processors are further configured to decode a first direction index indicating a direction of the first MVD, and wherein to determine the second MVD, the one or more processors are further configured to decode a second direction index indicating a direction of the second MVD.

[0328] Clause 49B. The apparatus of Clause 47B, wherein the one or more processors are further configured to decode a direction index representing a first direction of the first MVD and a second direction of the second MVD.

[0329] Clause 50B. The apparatus of clause 49B, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

[0330] Clause 51B. The apparatus of clause 49B, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

[0331] Clause 52B. An apparatus as described in clause 45B, wherein to determine the first MVD, the one or more processors are configured to decode a first x-component and a first y-component of the first MVD, and wherein to determine the second MVD, the one or more processors are configured to decode a second x-component and a second y-component of the second MVD.

[0332] Clause 53B. An apparatus as described in any of clauses 45 to 52B, wherein the one or more processors are further configured to decode a value of a coding unit (CU) level syntax element of the current block indicating that the second MVD is to be decoded.

[0333] Clause 54B. The apparatus of any of clauses 45 to 53B, wherein the merge mode information comprises a merge index having a value less than a threshold.

[0334] Clause 55B. The apparatus of clause 45B, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometry partitioning mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

[0335] Clause 56B. The apparatus of any of clauses 45 to 55B, wherein the one or more processors are further configured to decode a value of a syntax element indicating that unidirectional merge with MVD (MMVD) is not to be used for the current block.

[0336] Clause 57B. The apparatus of any of Clauses 45 to 56B, further comprising a display configured to display the decoded video data.

[0337] Clause 58B. The device of any of clauses 45 to 57B, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0338] Item 59B. A computer-readable storage medium having instructions stored thereon that, when executed, cause a processor to: determine merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determine a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; form a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; form a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generate a prediction block using the first motion vector and the second motion vector; and use the prediction block to decode the current block.

[0339] Item 60B. A device for decoding video data, the device comprising: a component for determining merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; a component for determining a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; a component for forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; a component for forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; a component for generating a prediction block using the first motion vector and the second motion vector; and a component for decoding the current block using the prediction block.

[0340] It should be appreciated that, according to examples, certain actions or events of any technique described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary to implement the technique). In addition, in some examples, actions or events may be performed concurrently (e.g., by multithreading, interrupt handling, or multiple processors) rather than sequentially.

[0341] In one or more examples, the described functions can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the function can be stored as one or more instructions or codes on a computer-readable medium or sent via a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium (which corresponds to a tangible medium such as a data storage medium) or a communication medium, which includes, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium can generally correspond to (1) a non-transient tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium can be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in the present disclosure. A computer program product may include a computer-readable medium.

[0342] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if the instruction is sent from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technology (such as infrared, radio and microwave), the coaxial cable, fiber optic cable, twisted pair, DSL or wireless technology (such as infrared, radio and microwave) is included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient media, but instead relate to non-transient tangible storage media. As used herein, disks and optical disks include compact disks (CDs), laser optical disks, optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, wherein disks usually reproduce data magnetically, while optical disks reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0343] Instructions may be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuitry" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. In addition, these techniques may be fully implemented in one or more circuits or logic elements.

[0344] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but implementation by different hardware units is not necessarily required. Instead, as described above, the various units may be combined in a codec hardware unit, or the various units may be provided by a collection of interoperable hardware units (including one or more processors as described above) in combination with appropriate software and / or firmware.

Claims

1. A method for decoding video data, the method comprising: determining merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; as well as The current block is decoded using the prediction block. 2 . The method of claim 1 , wherein determining the second MVD comprises determining that the second MVD is zero-valued.

3. The method according to claim 1, wherein determining the first MVD comprises decoding a first offset index representing a magnitude of the first MVD, and Wherein determining the second MVD comprises decoding a second offset index representing a magnitude of the second MVD.

4. The method according to claim 3, wherein determining the first MVD further comprises decoding a first direction index indicating a direction of the first MVD, and Wherein determining the second MVD further comprises decoding a second direction index indicating a direction of the second MVD. 5 . The method of claim 3 , further comprising decoding a direction index representing a first direction of the first MVD and a second direction of the second MVD.

6. The method of claim 5, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

7. The method of claim 5, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

8. The method of claim 1, further comprising coding a value of a syntax element indicating that the second MVD is to be decoded.

9. The method of claim 8, wherein the syntax element is a coding unit (CU) level syntax element for the current block.

10. The method according to claim 1, wherein determining the first MVD comprises decoding a first x-component and a first y-component of the first MVD, and Wherein determining the second MVD comprises decoding a second x-component and a second y-component of the second MVD. The method of claim 1 , wherein the merge mode information comprises a merge index having a value less than a threshold value.

12. The method of claim 1, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometric partition mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

13. The method of claim 1, further comprising coding a value for a syntax element indicating that uni-directional merge with MVD (MMVD) is not to be used for the current block.

14. The method of claim 1, further comprising encoding the current block before decoding the current block.

15. A device for decoding video data, the device comprising: a memory configured to store video data; and One or more processors implemented in circuitry and configured to: determining merge mode information for a current block of the video data, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; Determine a first motion vector difference (MVD) of the first predictor motion vector and a second MVD of the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; as well as The current block is decoded using the prediction block.

16. The apparatus of claim 15, wherein the one or more processors are configured to determine that the second MVD is zero-valued.

17. The device according to claim 15, wherein to determine the first MVD, the one or more processors are configured to decode a first offset index representing a magnitude of the first MVD, and To determine the second MVD, the one or more processors are configured to decode a second offset index representing a magnitude of the second MVD.

18. The device according to claim 17, Wherein to determine the first MVD, the one or more processors are further configured to decode a first direction index indicating a direction of the first MVD, and wherein to determine the second MVD, the one or more processors are further configured to decode a second direction index indicating a direction of the second MVD.

19. The apparatus of claim 17, wherein the one or more processors are further configured to decode a direction index representing a first direction of the first MVD and a second direction of the second MVD.

20. The apparatus of claim 19, wherein the first direction is opposite to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in a second reference picture list.

21. The apparatus of claim 19, wherein the first direction is identical to the second direction when the first predictor motion vector points to a first reference picture in a first reference picture list and the second predictor motion vector points to a second reference picture in the first reference picture list.

22. The apparatus of claim 15, wherein the one or more processors are further configured to code a value of a coding unit (CU) level syntax element for the current block indicating that the second MVD is to be decoded.

23. The apparatus according to claim 15, wherein to determine the first MVD, the one or more processors are configured to decode a first x-component and a first y-component of the first MVD, and To determine the second MVD, the one or more processors are configured to decode a second x-component and a second y-component of the second MVD. The apparatus of claim 15 , wherein the merge mode information comprises a merge index having a value less than a threshold value.

25. The apparatus of claim 15, wherein the merge mode information comprises a first merge candidate index pointing to a first entry in a geometric partition mode (GPM) candidate list and a second merge candidate index pointing to a second entry in the GPM candidate list.

26. The apparatus of claim 15, wherein the one or more processors are further configured to code a value for a syntax element indicating that uni-directional merge with MVD (MMVD) is not to be used for the current block.

27. The device of claim 15, further comprising a display configured to display the decoded video data.

28. The device of claim 15, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

29. A computer-readable storage medium having stored thereon instructions which, when executed, cause a processor to: determining merge mode information of a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; determining a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; forming a first motion vector, the first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; forming a second motion vector, the second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; generating a prediction block using the first motion vector and the second motion vector; and The current block is decoded using the prediction block.

30. A device for decoding video data, the device comprising: means for determining merge mode information for a current block, the merge mode information indicating that motion information of the current block is to be predicted using a first predictor motion vector and a second predictor motion vector; means for determining a first motion vector difference (MVD) for the first predictor motion vector and a second MVD for the second predictor motion vector, the second MVD being different from the first MVD; means for forming a first motion vector corresponding to a combination of the first motion vector predictor and the first MVD; means for forming a second motion vector corresponding to a combination of the second motion vector predictor and the second MVD; means for generating a prediction block using the first motion vector and the second motion vector; and Means for decoding the current block using the prediction block.