Method and apparatus for motion field storage in video coding
By using larger sub-blocks for motion vector storage in video coding, the complexity and inefficiency of the existing motion field storage process are addressed, resulting in a 75% reduction in comparison steps and enhanced efficiency.
Patent Information
- Application Number
- JP2025159150
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-06-24
- Filing Date
- 2025-09-25
- Publication Date
- 2026-01-21
AI Technical Summary
The existing motion field storage process in video coding is complex and inefficient, particularly in the VVC standard, requiring numerous comparison steps and complicating the storage of unidirectional and bidirectional motion vectors for sub-blocks.
Simplify the motion field storage by using larger sub-blocks, such as 8x8 or 16x16 blocks, as the basic unit for storing motion vectors, reducing the number of comparison steps and simplifying the process by determining whether the sub-block is within a unidirectional or bidirectional prediction area based on its location.
This approach significantly reduces the number of comparison steps required, from 2016 to 496 for a 128x128 block, improving efficiency and simplifying the motion field storage process in video coding.
Smart Images

Figure 2026009943000001_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This disclosure claims priority to U.S. Provisional Patent Application No. 62 / 865,920, filed June 24, 2019, which is incorporated by reference in its entirety.
[0002] Technical Field FIELD OF THE DISCLOSURE
[0002] This disclosure relates generally to video data processing, and more particularly to methods and apparatus for motion field storage in video coding. [Background technology]
[0003] background
[0003] The ITU-T Video Coding Expert Group (ITU-T VCEG) and the ISO / IEC Moving Picture Expert Group (ISO / IEC MPEG) Joint Video Experts Team (JVET) are currently developing the Versatile Video Coding (VVC / H.266) standard. The VVC standard aims to double the compression efficiency of its predecessor, the High Efficiency Video Coding (HEVC / H.265) standard. In other words, the goal of VVC is to achieve the same subjective quality as HEVC / H.265 using half the bandwidth. Summary of the Invention [Means for solving the problem]
[0004] Disclosure Overview
[0004] Embodiments of the present disclosure provide methods and apparatuses for motion field storage. In some embodiments, an example method includes: determining whether a first unidirectionally predicted motion vector of a first division of a block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, storing one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block.
[0005] In some embodiments, an exemplary apparatus includes: a memory configured to store instructions; and a processor coupled to the memory. The processor may be configured to execute instructions to cause the apparatus to: determine whether a first unidirectionally predicted motion vector of a first partition of the block and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list; and, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, store one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block.
[0006] In some embodiments, an exemplary non-transitory computer-readable storage medium stores a set of instructions, executable by one or more processors of the device, to cause the device to: determine whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, store one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block.
[0007] BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Embodiments and various aspects of the present disclosure are set forth in the following detailed description and accompanying drawings, in which various features are not drawn to scale. [Brief explanation of the drawings]
[0008] [Figure 1]
[0008] FIG. 1 is a schematic diagram illustrating the structure of an exemplary video sequence according to some embodiments of the present disclosure. [Figure 2]
[0009] FIG. 1 is a schematic diagram illustrating an example encoder in a hybrid video coding system according to some embodiments of the present disclosure. [Figure 3]
[0010] FIG. 2 is a schematic diagram illustrating an example decoder in a hybrid video coding system according to some embodiments of the present disclosure. [Figure 4]
[0011] 1 shows a block diagram of an exemplary apparatus for encoding or decoding video according to some embodiments of the present disclosure. [Figure 5]
[0012] FIG. 1 is a schematic diagram illustrating an example of triangulation-based inter-prediction according to some embodiments of the present disclosure. [Figure 6]
[0013] 10 shows a schematic diagram of an exemplary unidirectional predictive motion vector selection for a split mode according to some embodiments of the present disclosure. [Figure 7]
[0014] FIG. 10 is a schematic diagram illustrating an example weighting of a blending process according to some embodiments of the present disclosure. [Figure 8]
[0015] 1 is a schematic diagram illustrating an example of 4x4 sub-blocks located in uni-prediction and bi-prediction areas according to some embodiments of the present disclosure. [Figure 9]
[0016] FIG. 1 is a schematic diagram illustrating an example of angular distribution of a geometric partition mode (GPM) according to some embodiments of the present disclosure. [Figure 10]
[0017] FIG. 1 is a schematic diagram illustrating an example of a distance distribution for a GPM, according to some embodiments of the present disclosure. [Figure 11]
[0018] 1 is a schematic diagram illustrating an example of 8x8 sub-blocks located in uni-prediction and bi-prediction areas according to some embodiments of the present disclosure. [Figure 12]
[0019] 1 illustrates a flow diagram of an exemplary method for motion field storage according to some embodiments of the present disclosure. [Figure 13]
[0020] FIG. 1 is a schematic diagram illustrating an example of triangulation according to some embodiments of the present disclosure. [Figure 14]
[0021] 1 illustrates a flow diagram of an exemplary method for motion vector generation according to some embodiments of the present disclosure. [Figure 15]
[0022] 10 illustrates a flow diagram of another example method for motion vector generation according to some embodiments of the present disclosure. [Figure 16]
[0023] 10 shows a flow diagram of another example method for motion field storage according to some embodiments of the present disclosure. [Figure 17]
[0024] FIG. 1 is a schematic diagram illustrating an example of geometric division according to some embodiments of the present disclosure. [Figure 18]
[0025] 10A-10C are schematic diagrams illustrating examples of sub-block locations according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0009] Detailed Description
[0026] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description will refer to the accompanying drawings in which like numerals in different drawings, unless otherwise indicated, represent the same or similar elements. The implementations described in the following description of exemplary embodiments do not represent all implementations consistent with the present invention. Rather, they are merely examples of apparatus and methods consistent with aspects related to the present invention as recited in the appended claims. Particular aspects of the present disclosure are described in further detail below. In the event of a conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein shall control.
[0010]
[0027] To achieve the same subjective quality as HEVC / H.265 while using half the bandwidth, JVET developed a technology that surpasses HEVC by using the joint exploration model (JEM) reference software. As the coding technology was incorporated into JEM, JEM achieved significantly higher coding performance than HEVC. VCEG and MPEG have officially begun development of a next-generation video compression standard beyond HEVC.
[0011]
[0028] The VVC standard continues to include more coding techniques that offer better compression performance. VVC is based on the same hybrid video coding system that has been used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, and H.263.
[0012]
[0029] A video is a set of still pictures (or "frames") arranged in chronological order to store visual information. A video capture device (e.g., a camera) can be used to capture and store the pictures in chronological order, and a video playback device (e.g., a television, computer, smartphone, tablet computer, video player, or any end-user terminal with display capabilities) can be used to display the pictures in chronological order. Furthermore, in some applications, a video capture device can transmit the captured video in real time to a video playback device (e.g., a computer with a monitor) for purposes such as surveillance, conferencing, or live broadcasting.
[0013]
[0030] To reduce the storage space and transmission bandwidth required for such applications, video can be compressed before storage and transmission and decompressed before display. This compression and decompression can be implemented by software executed by a processor (e.g., a general-purpose computer processor) or dedicated hardware. The compression module is generally referred to as an "encoder," and the decompression module is generally referred to as a "decoder." The encoder and decoder can be collectively referred to as a "codec." The encoder and decoder can be implemented as various suitable hardware, software, or combinations thereof. For example, hardware implementations of the encoder and decoder may include circuitry such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, or any combination thereof. Software implementations of the encoder and decoder may include program code, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process fixed in a computer-readable medium. Video compression and decompression can be implemented by various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, and the H.26x series. In some applications, a codec may decompress video from a first coding standard and recompress the decompressed video using a second coding standard, in which case the codec may be called a "transcoder."
[0014]
[0031] A video coding process can identify and retain useful information that can be used to reconstruct a picture and ignore information that is not important for reconstruction. If the ignored, unimportant information cannot be perfectly reconstructed, the coding process can be called "lossy." Otherwise, the coding process can be called "lossless." Most coding processes are lossy; this is a tradeoff to reduce the required storage space and transmission bandwidth.
[0015]
[0032] Useful information about the picture being coded (called the "current picture") includes changes relative to a reference picture (e.g., a previously coded and reconstructed picture). Such changes can include pixel position changes, luminance changes, or color changes, of which position changes are the most relevant. Position changes of pixels representing an object can reflect the object's movement between the reference picture and the current picture.
[0016]
[0033] A picture that is coded without reference to another picture (i.e., such a picture is its own reference picture) is called an "I-picture." A picture that is coded using a past picture as a reference picture is called a "P-picture." A picture that is coded using both past and future pictures as reference pictures (i.e., the referencing is "bidirectional") is called a "B-picture."
[0017]
[0034] 1 illustrates an example structure of a video sequence 100 according to some embodiments of the present disclosure. The video sequence 100 can be live video or captured and archived video. The video 100 can be real video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real video with augmented reality effects). The video sequence 100 can be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., video files stored in a storage device), or a video feed interface (e.g., a video broadcast transceiver) for receiving video from a video content provider.
[0018]
[0035] As shown in FIG. 1, video sequence 100 may include a series of pictures arranged temporally along a timeline, including pictures 102, 104, 106, and 108. Pictures 102-106 are consecutive, with more pictures between pictures 106 and 108. In FIG. 1, picture 102 is an I-picture, and its reference picture is picture 102 itself. Picture 104 is a P-picture, and its reference picture is picture 102, as indicated by the arrow. Picture 106 is a B-picture, and its reference pictures are pictures 104 and 108, as indicated by the arrows. In some embodiments, the reference picture for a picture (e.g., picture 104) need not be immediately before or immediately after that picture. For example, the reference picture for picture 104 may be a picture that precedes picture 102. It should be noted that the reference pictures of pictures 102-106 are merely examples, and this disclosure does not limit the reference picture embodiments to the example shown in FIG.
[0019]
[0036] Typically, video codecs do not encode or decode an entire picture at once because such a task is computationally complex. Rather, video codecs may divide a picture into elementary segments and encode or decode the picture segment by segment. This disclosure refers to such elementary segments as basic processing units ("BPUs"). For example, structure 110 in FIG. 1 illustrates an example structure for a picture (e.g., any of pictures 102-108) in video sequence 100. In structure 110, the picture is divided into 4x4 basic processing units, the boundaries of which are indicated by dashed lines. In some embodiments, the basic processing units may be referred to as "macroblocks" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC) and as "coding tree units" ("CTUs") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). A basic processing unit can have variable sizes within a picture, such as 128x128, 64x64, 32x32, 16x16, 4x8, 16x32, or any arbitrary shape and size of pixels. The size and shape of a basic processing unit can be selected for a picture based on a balance between coding efficiency and the level of detail one wishes to preserve within the basic processing unit.
[0020]
[0037] A basic processing unit may be a logical unit that may include various types of video data stored in computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color picture may include a luma component (Y) representing achromatic luminance information, one or more chroma components (e.g., Cb and Cr) representing color information, and associated syntax elements of the basic processing unit, where the luma and chroma components may have the same size. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luma and chroma components may be referred to as "coding tree blocks" ("CTBs"). Any operation performed on a basic processing unit can be repeated for each of its luma and chroma components.
[0021]
[0038] Video coding has multiple operational stages, examples of which are shown in Figures 2 and 3. For each stage, the size of the basic processing unit may still be too large to process and therefore may be further divided into segments referred to in this disclosure as "basic processing sub-units." In some embodiments, the basic processing sub-units may be referred to as "blocks" in some video coding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC) or as "coding units" ("CUs") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing sub-units may have the same or smaller size as the basic processing units. Like the basic processing units, the basic processing sub-units are also logical units that may contain various types of video data (e.g., Y, Cb, Cr, and related syntax elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on a basic processing sub-unit can be repeated for each of its luma and chroma components. It should be noted that such division may be made to further levels depending on the processing needs. It should also be noted that different stages may use different schemes to divide the basic processing unit.
[0022]
[0039] For example, in a mode decision stage (one example of which is shown in FIG. 2), an encoder may decide which prediction mode (e.g., intra-picture prediction or inter-picture prediction) to use for a basic processing unit, which may be too large for such a decision to be made. The encoder may divide the basic processing unit into multiple basic processing sub-units (e.g., CUs in H.265 / HEVC or H.266 / VVC) and decide the type of prediction for each individual basic processing sub-unit.
[0023]
[0040] In another example, in the prediction stage (one example of which is shown in FIG. 2), the encoder can perform prediction operations at the level of elementary processing sub-units (e.g., CUs). However, in some cases, elementary processing sub-units may still be too large to process. The encoder can further divide the elementary processing sub-units into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) and perform prediction operations at that level.
[0024]
[0041] In another example, in the transform stage (one example of which is shown in FIG. 2), the encoder can perform a transform operation on a residual elementary processing sub-unit (e.g., a CU). However, in some cases, the elementary processing sub-unit may still be too large to process. The encoder can further divide the elementary processing sub-unit into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC) and perform the transform operation at that level. It should be noted that the division scheme of the same elementary processing sub-unit may be different between the prediction stage and the transform stage. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU may have different sizes and numbers.
[0025]
[0042] In structure 110 of Figure 1, basic processing units 112 are further divided into 3x3 basic processing sub-units, the boundaries of which are shown by dotted lines. Different basic processing units of the same picture can be divided into basic processing sub-units in different ways.
[0026]
[0043] In some implementations, to provide parallel processing and error resilience for video encoding and decoding, a picture can be divided into regions for processing, such that the encoding or decoding process for a region of a picture does not depend on information from any other region of the picture. In other words, each region of a picture can be processed independently. This allows a codec to process different regions of a picture in parallel, thus increasing coding efficiency. Furthermore, if data for a region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same picture without relying on the corrupted or lost data, thus providing error resilience. Some video coding standards allow a picture to be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles." It should also be noted that different pictures in video sequence 100 may have different partitioning schemes for dividing the picture into regions.
[0027]
[0044] For example, in Figure 1, structure 110 is divided into three regions 114, 116, and 118, the boundaries of which are shown as solid lines within structure 110. Region 114 includes four basic processing units. Regions 116 and 118 each include six basic processing units. It should be noted that the basic processing units, basic processing sub-units, and regions of structure 110 in Figure 1 are merely examples, and the present disclosure does not limit the embodiments thereof.
[0028]
[0045] 2 shows a schematic diagram of an example encoder 200 in a hybrid video coding system according to some embodiments of this disclosure. The video encoder 200 may intra-code or inter-code blocks within video frames, including video blocks or divisions or subdivisions of video blocks. Intra-coding may rely on spatial prediction to reduce or remove spatial redundancy in video within a given video frame. Inter-coding may rely on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames of a video sequence. Intra-mode may refer to a number of spatial-based compression modes. Inter-mode (e.g., unidirectional prediction or bidirectional prediction) may refer to a number of temporal-based compression modes.
[0029]
[0046] Referring to FIG. 2, an input video signal 202 may be processed block by block. For example, a video block unit may be a 16x16 pixel block (e.g., a macroblock (MB)). The size of the video block unit may vary depending on the coding technique used and the required accuracy and efficiency. In HEVC, extended block sizes (e.g., coding tree units (CTUs)) may be used to compress video signals with resolutions of, for example, 1080p or higher. In HEVC, a CTU may include up to 64x64 luma samples and associated syntax elements corresponding to chroma samples. In VVC, the size of a CTU may be further increased to include 128x128 luma samples, corresponding chroma samples, and associated syntax elements. A CTU may be further divided into coding units (CUs), for example, using a quadtree, binary tree, or ternary tree. A CU may be further divided into prediction units (PUs), to which separate prediction methods may be applied. Each input video block may be processed using spatial prediction unit 260 or temporal prediction unit 262 .
[0030]
[0047] Spatial prediction unit 260 performs spatial prediction (e.g., intra-prediction) on the current block / CU using information about the same picture / slice that contains the current block. Spatial prediction may use pixels from already coded neighboring blocks in the same video picture frame / slice to predict the current video block. Spatial prediction may reduce spatial redundancy inherent in video signals.
[0031]
[0048] Temporal prediction unit 262 performs temporal prediction (e.g., inter-prediction) on the current block using information from a picture / slice different from the picture / slice that contains the current block. Temporal prediction of a video block may be signaled by one or more motion vectors. In unidirectional temporal prediction, only one motion vector pointing to one reference picture is used to generate a prediction signal for the current block. On the other hand, in bidirectional temporal prediction, two motion vectors, each pointing to a respective reference picture, may be used to generate a prediction signal for the current block. A motion vector may indicate the amount and direction of motion between the current block and one or more related blocks in a reference coordinate system. If multiple reference pictures are supported, one or more reference picture indexes may be transmitted for the video block. The one or more reference indexes may be used to identify which reference picture in a reference picture store or decoded picture buffer (DPB) 264 the temporal prediction signal may come from.
[0032]
[0049] A mode decision and encoder control unit 280 within the encoder may select a prediction mode (e.g., based on rate-distortion optimization). Based on the determined prediction mode, a prediction block may be obtained. The prediction block may be subtracted from the current video block at adder 216. The prediction residual may be transformed by transform unit 204 and quantized by quantization unit 206. The quantized residual coefficients may be inverse quantized in inverse quantization unit 210 and inverse transformed in inverse transform unit 212 to form a reconstructed residual. The reconstructed residual may be added to the prediction block at adder 226 to form a reconstructed video block. The reconstructed video block before loop filtering may be used to provide reference samples for intra prediction.
[0033]
[0050] The reconstructed video block may pass through loop filtering in loop filter 266. For example, loop filtering such as a deblocking filter, sample adaptive offset (SAO), and adaptive loop filter (ALF) may be applied. The reconstructed block after loop filtering may be stored in reference picture store 264 and may be used to provide inter-prediction reference samples for coding other video blocks. To form output video bitstream 220, the coding mode (e.g., inter or intra), prediction mode information, motion information, and quantized residual coefficients may be sent to entropy coding unit 208 to further reduce the bit rate before the data is compressed and packed to form bitstream 220.
[0034]
[0051] 3 shows a schematic diagram of an example decoder 300 in a hybrid video coding system according to some embodiments of this disclosure. Referring to FIG. 3, a video bitstream 302 may be unpacked or entropy decoded in an entropy decoding unit 308. Coding mode information may be used to determine whether a spatial prediction unit 360 or a temporal prediction unit 362 is selected. The prediction mode information may be sent to a corresponding prediction unit to generate a prediction block. For example, motion-compensated prediction may be applied by the temporal prediction unit 362 to form a temporal prediction block.
[0035]
[0052] The residual coefficients may be sent to inverse quantization unit 310 and inverse transform unit 312 to obtain a reconstructed residual. The predictive block and the reconstructed residual may be added at 326 to form a reconstructed block before loop filtering. The reconstructed block may then go through loop filtering at loop filter 366. Loop filtering such as a deblocking filter, SAO, and ALF may be applied. The reconstructed block after loop filtering may then be stored in reference picture store 364. The reconstructed data in reference picture store 364 may be used to obtain decoded video 320 or to predict future video blocks. The decoded video 320 may be displayed on a display device such as a TV, PC, smartphone, or tablet for viewing by an end user.
[0036]
[0053] FIG. 4 is a block diagram of an example device 400 for encoding or decoding video, in accordance with some embodiments of the present disclosure. As shown in FIG. 4, the device 400 may include a processor 402. When the processor 402 executes the instructions described herein, the device 400 may be a dedicated machine for encoding or decoding video. The processor 402 may be any type of circuit capable of manipulating or processing information. For example, the processor 402 may include any combination of any number of central processing units (“CPUs”), graphics processing units (“GPUs”), neural processing units (“NPUs”), microcontroller units (“MCUs”), optical processors, programmable logic controllers, microcontrollers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), general-purpose array logic (GALs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), systems-on-chips (SoCs), application-specific integrated circuits (ASICs), etc. In some embodiments, processor 402 may be a set of processors grouped together as a single logical entity. For example, as shown in Figure 4, processor 402 may include multiple processors, including processor 402a, processor 402b, and processor 402n.
[0037]
[0054] The device 400 may also include a memory 404 configured to store data (e.g., a set of instructions, computer code, intermediate data, etc.). For example, as shown in FIG. 4, the stored data may include program instructions (e.g., program instructions for implementing the steps of FIG. 2 or FIG. 3) and data for processing. The processor 402 may access the program instructions and data for processing (e.g., via a bus 410) and execute the program instructions to operate on or process the data for processing. The memory 404 may include a high-speed random access storage device or a non-volatile storage device. In some embodiments, the memory 404 may include any combination of any number of random access memories (RAMs), read-only memories (ROMs), optical disks, magnetic disks, hard drives, solid-state drives, flash drives, security digital (SD) cards, memory sticks, compact flash (CF) cards, etc. The memory 404 may also be a collection of memories (not shown in FIG. 4) grouped together as a single logical entity.
[0038]
[0055] Bus 410 , such as an internal bus (eg, a CPU memory bus), an external bus (eg, a Universal Serial Bus port, a Peripheral Component Interconnect Express port), or the like, may be a communication device that transfers data between components within device 400 .
[0039]
[0056] For ease of explanation and without ambiguity, this disclosure will collectively refer to the processor 402 and other data processing circuitry as "data processing circuitry." The data processing circuitry may be implemented entirely as hardware or as a combination of software, hardware, or firmware. Additionally, the data processing circuitry may be a single, independent module, or may be fully or partially combined within any other component of the device 400.
[0040]
[0057] The device 400 may further include a network interface 406 for providing wired or wireless communication with a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.) In some embodiments, the network interface 406 may include any combination of any number of network interface controllers (NICs), radio frequency (RF) modules, transponders, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication ("NFC") adapters, cellular network chips, etc.
[0041]
[0058] In some embodiments, device 400 may optionally further include a peripheral interface 408 for providing connection to one or more peripheral devices. As shown in Figure 4, peripheral devices may include, but are not limited to, a cursor control device (e.g., a mouse, touchpad, or touchscreen), a keyboard, a display (e.g., a cathode ray tube display, a liquid crystal display, or a light emitting diode display), a video input device (e.g., a camera or input interface coupled to a video archive), etc.
[0042]
[0059] It should be noted that the video codec may be implemented as any combination of software or hardware modules within the device 400. For example, some or all of the stages of the encoder 200 of Figure 2 or the decoder 300 of Figure 3 may be implemented as one or more software modules of the device 400, such as program instructions loadable into the memory 404. In another example, some or all of the stages of the encoder 200 of Figure 2 or the decoder 300 of Figure 3 may be implemented as one or more hardware modules of the device 400, such as dedicated data processing circuits (e.g., FPGAs, ASICs, NPUs, etc.).
[0043]
[0060] In VTM5, triangular partitioning mode is supported for inter prediction. Triangular partitioning mode is usually applied to CUs that are 8x8 or larger and are coded in triangular skip or merge mode. Triangular skip / merge mode is signaled in parallel with merge mode, merge with motion vector difference (MMVD) mode, combined inter and intra prediction (CIIP) mode, or sub-block merge mode.
[0044]
[0061] When the triangular partitioning mode is used, a CU is uniformly partitioned into two triangular partitions by using either diagonal or anti-diagonal partitioning. Figure 5 shows some examples of triangular partitioning-based inter-prediction according to some embodiments of the present disclosure. Each triangular partition within a CU is inter-predicted by using its own motion. Unidirectional prediction is allowed per partition. Therefore, each partition has one motion vector and one reference index. A unidirectional prediction motion constraint is applied to ensure that two motion-compensated predictions are required per CU, just like in conventional bidirectional prediction. The unidirectional prediction motion for each partition is derived directly from the merge candidate list constructed for enhanced merge prediction, and the selection of the unidirectional prediction motion from a given merge candidate in the list may follow the procedure described below.
[0045]
[0062] If the triangular partitioning mode is used for the current CU, a flag indicating the direction of the triangular partition (diagonal or anti-diagonal) and two merge indices (one for each partition) are further signaled. After predicting each of the triangular partitions, the sample values along the diagonal or anti-diagonal edges are adjusted using a blending process with adaptive weighting. This is the prediction signal for the entire CU, and the transformation and quantization processes can be applied to the entire CU as in other prediction modes. Next, the motion field of the CU predicted using the triangular partitioning mode is stored in 4x4 sub-blocks.
[0046]
[0063] Given a merge candidate index, a unidirectional predictive motion vector is derived from the merge candidate list constructed for extended merge prediction. Figure 6 shows an exemplary unidirectional predictive motion vector selection 600 for a partition mode according to some embodiments of the present disclosure. In some embodiments, the unidirectional predictive motion vector selection 600 may be applied to a triangular partition mode. For a candidate in the list, the LX motion vector with X equal to the parity of the merge candidate index value is used as the unidirectional predictive motion vector for the triangular partition mode. These motion vectors are marked with an "X" in Figure 6. If there is no corresponding LX motion vector, the L(1-X) motion vector of the same candidate in the extended merge prediction candidate list is used as the unidirectional predictive motion vector for the triangular partition mode.
[0047]
[0064] After predicting each triangulation using its own motion, blending is applied to the two prediction signals to derive samples around the diagonal or anti-corner edge. The following weightings are used in the blending process: {7 / 8, 6 / 8, 5 / 8, 4 / 8, 3 / 8, 2 / 8, 1 / 8} for luma and {6 / 8, 4 / 8, 2 / 8} for chroma.
[0048]
[0065] FIG. 7 illustrates such an example weighting of a blending process 700 according to some embodiments of the present disclosure.
[0049]
[0066] The motion vectors of CUs coded in triangular partitioning mode are stored in 4x4 sub-blocks. Depending on the location of each 4x4 sub-block, either unidirectionally predicted or bidirectionally predicted motion vectors are stored. For example, the unidirectionally predicted motion vectors of division 1 and division 2 are denoted by Mv1 and Mv2, respectively, as shown in Figure 5. If a 4x4 sub-block is located within a unidirectional prediction area, either Mv1 or Mv2 of the 4x4 sub-block is stored. Otherwise, if the 4x4 sub-block is located within a bidirectional prediction area, a bidirectionally predicted motion vector is stored. The bidirectionally predicted motion vector is derived from Mv1 and Mv2 according to the following process: 1. If Mv1 and Mv2 are from different reference picture lists (e.g., one from L0 and the other from L1), Mv1 and Mv2 are simply combined to form a bidirectional predicted motion vector; 2. Otherwise, if Mv1 and Mv2 are from the same list, then without loss of generality we consider them both to be from L0. In this case, 2.1 If any of Mv2 (or Mv1) has a reference picture in L1, Mv2 (or Mv1) is converted into an L1 motion vector by using that reference picture in L1. Then, the two motion vectors are combined to form a bidirectionally predicted motion vector; 2.2 Otherwise, the unidirectional predictive motion Mv1 is stored instead of the bidirectional predictive motion.
[0050]
[0067] It is understood that when all samples within a 4x4 sub-block are weighted, the 4x4 sub-block is considered to be within a bi-prediction area. Otherwise, the 4x4 sub-block is considered to be within a uni-prediction area. Figure 8 shows an example of a 4x4 sub-block (highlighted in gray) located within a uni-prediction area or a bi-prediction area according to some embodiments of the present disclosure. The following process may be used to determine whether a 4x4 sub-block is located within a bi-prediction area:
number
[0051]
[0068] In VVC Draft 9, the triangular division mode can be extended to the geometric division mode (GPM). In GPM, the number of division methods can be extended from 2 to 64. For example, 20 angles can be supported in GPM, and four different distances to the center of the block can be supported for each angle. FIG. 9 is a schematic diagram illustrating an example angle distribution 900 of GPM according to some embodiments of the present disclosure. FIG. 10 is a schematic diagram illustrating an example distance distribution of GPM according to some embodiments of the present disclosure. Distances with distance index 2 for horizontal angle {0,12} and vertical angle {6,18} can be removed in GPM because they are overlapped by the ternary tree division boundary.
[0052]
[0069] A problem with the current design exists regarding the motion field storage process. In the current design, a unidirectionally predicted motion vector is stored for a 4x4 sub-block located within the unidirectionally predicted area, and a bidirectionally predicted motion vector derived from two unidirectionally predicted motion vectors is stored for a 4x4 sub-block located within the bidirectionally predicted area. This design is complicated.
[0053]
[0070] For example, each 4x4 sub-block may require two comparison steps when storing motion vectors. One comparison step is to determine whether the sub-block is located in a bidirectional prediction area. The other comparison step is to determine whether the sub-block is located in an upper right (diagonal division) or upper left (anti-diagonal division) unidirectional prediction area. In the worst case, a total of 2016 comparison steps are required for a 128x128 block predicted by using the triangular division mode.
[0054]
[0071] When bidirectional predictive motion needs to be derived (for a subblock considered in a "bidirectional predictive area"), if two unidirectional predictive motion vectors are both from the same reference picture list, one of them is converted to another reference picture list. In this process, the reference picture of the unidirectional predictive motion vector is checked to determine whether the reference picture appears in another reference picture list. This means that in the worst case, the reference picture of the unidirectional predictive motion vector needs to be compared with all reference pictures in the list. This process can be very complicated.
[0055]
[0072] Existing problems with current designs need to be addressed. In some embodiments of the present disclosure, the number of comparison steps in storing motion vectors for blocks may be reduced. The motion field storage process may be simplified.
[0056]
[0073] In some embodiments of the present disclosure, sub-blocks with width or height greater than 4 are used as the basic unit for motion field storage, for example, 8x8 or larger sub-blocks are used as the basic unit for motion field storage in triangulation mode.
[0057]
[0074] In an exemplary embodiment, an 8x8 sub-block is used as the basic unit for motion vector storage. Using the triangular partitioning mode, a predicted block may be divided into 8x8 sub-blocks. Depending on the location of each 8x8 sub-block, either a unidirectionally predicted or bidirectionally predicted motion vector is stored. If the 8x8 sub-block is located within a bidirectionally predicted area, a bidirectionally predicted motion vector is stored. Otherwise, a unidirectionally predicted motion vector is stored for the unidirectionally predicted area. It is understood that an 8x8 sub-block located within a bidirectionally predicted area may include both weighted and non-weighted samples. Figure 11 is a schematic diagram illustrating an example of an 8x8 sub-block located within a unidirectionally predicted area or a bidirectionally predicted area according to some embodiments of the present disclosure. For example, in the triangular partitioning mode, the following process is used to determine whether an 8x8 sub-block is considered to be within a bidirectionally predicted area:
number
[0058]
[0075] In one embodiment, blocks whose width and height are both 8 or greater are divided into 8x8 sub-blocks. In another embodiment, blocks whose width is less than 8 are divided into 4x8 sub-blocks. In another embodiment, blocks whose height is less than 8 are divided into 8x4 sub-blocks.
[0059]
[0076] In an embodiment where 8x8 sub-blocks are used as the basic unit, a total of 496 comparison steps are required for the 128x128 blocks predicted by using the triangulation mode, resulting in a 75% reduction in comparison steps compared to the current VVC Draft 5 design.
[0060]
[0077] In another exemplary embodiment, 16x16 sub-blocks are used as the basic unit for motion vector storage. A block to be predicted can be divided into 16x16 sub-blocks by using a triangular division mode. For example, a block whose width and height are both 16 or greater is divided into 16x16 sub-blocks. In another example, a block is divided into sub-blocks whose width is equal to min(block width, 16) and whose height is equal to min(block height, 16).
[0061]
[0078] In an exemplary embodiment, an M×N sub-block is used as the basic unit for motion vector storage, where M may or may not be equal to N. By using a triangular partitioning mode, a predicted block can be divided into M×N sub-blocks. Depending on the location of each M×N sub-block, either a unidirectionally predicted or bidirectionally predicted motion vector is stored. If the M×N sub-block is located within a bidirectionally predicted area, a bidirectionally predicted motion vector is stored. Otherwise, a unidirectionally predicted motion vector is stored for the unidirectionally predicted area. It is understood that an M×N sub-block located within a bidirectionally predicted area may contain both weighted and non-weighted samples. The following process is used to determine whether an M×N sub-block is considered to be within a bidirectionally predicted area:
number
number
[0062]
[0079] In another exemplary embodiment, the size of the sub-block for motion vector storage depends on the block size. If the block width or height is less than or equal to M, the size of the sub-block is (M / 2)×(M / 2). Otherwise, the size of the sub-block is M×M. In some embodiments, M may be equal to 8, 16, 32, etc. For example, if the block width or height is less than or equal to 8, the size of the sub-block is 4×4. Otherwise, the size of the sub-block is 8×8. In this way, the motion field of small blocks can be stored with finer granularity.
[0063]
[0080] In yet another exemplary embodiment, the size of the sub-block for storing the motion vector is the same as the block size. In this case, the same motion vector is stored in both the bidirectional prediction area and the unidirectional prediction area. Such same motion vector may be one of two unidirectionally predicted motion vectors for the partition or a bidirectionally predicted motion vector derived from the two unidirectionally predicted motion vectors.
[0064]
[0081] 12 shows a flow diagram of an example method 1200 of motion field storage according to some embodiments of the present disclosure. In some embodiments, method 1200 may be performed by an encoder (e.g., encoder 200 of FIG. 2) or may be performed by one or more software or hardware components of an apparatus (e.g., apparatus 400 of FIG. 4). For example, a processor (e.g., processor 402 of FIG. 4) may perform method 1200. In some embodiments, method 1200 may be implemented by a computer program product embodied in a computer-readable medium that includes computer-executable instructions, such as program code, for execution by a computer (e.g., apparatus 400 of FIG. 4).
[0065]
[0082] In step 1202, method 1200 may include determining whether a sub-block of a block (or CU) is within a bi-prediction area. The sub-block has a width, or height, or both, greater than 4. In some embodiments, at least one of the width and height of the sub-block is greater than or equal to 8. For example, the sub-block may be an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, or a min(block width, 16) x min(block height, 16) sub-block. In some embodiments, the size of the sub-block may depend on the size of the block. Method 1200 may be applied to triangulation mode or GPM.
[0066]
[0083] In some embodiments, in triangular decomposition mode, the sub-blocks are M×N sub-blocks.
number
number
number
number
number
number
[0067]
[0084] At step 1204, method 1200 may include storing a bidirectionally predicted motion vector in response to determining that the sub-block is within a bidirectionally predicted area. Method 1200 may also include storing a unidirectionally predicted motion vector in response to determining that the sub-block is not within a bidirectionally predicted area.
[0068]
[0085] In some embodiments, the method 1200 may include dividing the block into multiple sub-blocks. In some embodiments, the size of the sub-blocks may be the same as the size of the block. Then, the bidirectionally predicted motion vector may be the same as the unidirectionally predicted motion vector.
[0069]
[0086] In the current design of the motion field storage process, when two unidirectionally predicted motion vectors for two divisions are both from the same reference picture list, many comparison steps need to be performed to convert one of the two unidirectionally predicted motion vectors to another reference picture list. In some embodiments of the present disclosure, the conversion step can be eliminated. The bidirectionally predicted motion vector generation of sub-blocks in a bidirectionally predicted area can be simplified. Then, the motion vector derivation process of sub-blocks located in a bidirectionally predicted area can be simplified.
[0070]
[0087] In some embodiments, when two unidirectionally predicted motion vectors are from different reference picture lists, the two unidirectionally predicted motion vectors are combined to form a bidirectionally predicted motion vector. Otherwise, one of the two unidirectionally predicted motion vectors is stored for a subblock located within a bidirectional prediction area.
[0071]
[0088] 13 is a schematic diagram illustrating an example of triangular partitioning according to some embodiments of the present disclosure. In one example, one of the two unidirectionally predicted motion vectors is a motion vector from the top partition as shown in FIG. 13. In another example, one of the two unidirectionally predicted motion vectors is a motion vector from the bottom partition as shown in FIG. 13. In another example, one of the two unidirectionally predicted motion vectors is a motion vector from the left partition as shown in FIG. 13. In another example, one of the two unidirectionally predicted motion vectors is a motion vector from the right partition as shown in FIG. 13.
[0072]
[0089] In another example, one of the two unidirectionally predicted motion vectors is the motion vector whose reference picture is closer to the current picture of the current block.For example, the picture order counts (POC) of the reference pictures of the upper and lower divisions are represented by POC1 and POC2, respectively.The POC of the current picture is represented by POC0.If the difference between POC0 and POC1 is smaller than the difference between POC0 and POC2, the motion vector from the upper division is stored.Otherwise, the motion vector from the lower division is stored if the difference between POC0 and POC1 is equal to or greater than the difference between POC0 and POC2.
[0073]
[0090] In another example, one of the two unidirectional prediction motion vectors is the motion vector whose reference picture has higher quality (i.e., lower QP).For example, the QPs of the reference pictures of upper and lower divisions are represented by QP1 and QP2, respectively.If QP1 is equal to or less than QP2, the motion vector from upper division is stored.If not, the motion vector from lower division is stored.
[0074]
[0091] In another example, one of the two unidirectionally predicted motion vectors is a motion vector with a smaller amount of motion, for example, abs(mvx0)+abs(mvy0)<=abs(mvx1)+abs(mvy1). The motion vector with the smaller amount of motion is stored.
[0075]
[0092] 14 illustrates a flow diagram of an example method 1400 of motion vector generation according to some embodiments of the present disclosure. In some embodiments, method 1400 may be performed by an encoder (e.g., encoder 200 of FIG. 2) or may be performed by one or more software or hardware components of an apparatus (e.g., apparatus 400 of FIG. 4). For example, a processor (e.g., processor 402 of FIG. 4) may perform method 1400. In some embodiments, method 1400 may be implemented by a computer program product embodied in a computer-readable medium that includes computer-executable instructions, such as program code, for execution by a computer (e.g., apparatus 400 of FIG. 4).
[0076]
[0093] At step 1402, method 1400 may determine whether a first unidirectionally predicted motion vector of a first partition of a block (or CU) and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list. The first partition and the second partition of the block may be triangular partitions or geometric partitions.
[0077]
[0094] At step 1404, method 1400 may include storing one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within the bidirectionally predicted area of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list. In some embodiments, the stored one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector may be a motion vector from the top partition, a motion vector from the bottom partition, a motion vector from the left partition, a motion vector from the right partition, a motion vector whose reference picture is closer to the current picture of the current block, a motion vector whose reference picture has higher quality, a motion vector whose amount of motion is smaller, etc.
[0078]
[0095] In some embodiments, method 1400 may include, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector to form a bidirectionally predicted motion vector, and storing the bidirectionally predicted motion vector for a sub-block located within the bidirectionally predicted area of the block.
[0079]
[0096] In some embodiments, the method 1400 may include determining whether a sub-block of a block (or CU) is within a bi-prediction area. For example, the sub-block is an M×N sub-block. In a triangular partitioning mode, the method 1400
number
number
number
number
number
number
[0080]
[0097] In some embodiments, when two unidirectionally predicted motion vectors are from different reference picture lists, the two unidirectionally predicted motion vectors are combined to form a bidirectionally predicted motion vector; otherwise, the average motion vector of the two unidirectionally predicted motion vectors is stored.
[0081]
[0098] In one example, when the reference pictures of two unidirectionally predicted motion vectors are the same as each other, the two unidirectionally predicted motion vectors are averaged and stored.
[0082]
[0099] In another example, when the reference pictures of two unidirectionally predicted motion vectors are different from each other, the two unidirectionally predicted motion vectors are scaled to the same reference picture and then averaged. For example, the motion vector of the upper division and the motion vector of the lower division are represented by Mv1 and Mv2, respectively. And the reference picture of the upper division and the reference picture of the lower division are represented by RefPic1 and RefPic2, respectively. When RefPic1 is not equal to RefPic2, Mv2 is first scaled to RefPic1. Then, the average motion vector and the scaled motion vector of Mv1 are stored. In one embodiment, the temporal motion vector scaling process in VVC Draft 5 can be used to perform the scaling.
[0083]
[0100] In another example, when the reference pictures of two unidirectionally predicted motion vectors are different from each other, the two unidirectionally predicted motion vectors are averaged and stored regardless of the difference in their reference pictures.
[0084]
[0101] 15 shows a flow diagram of another exemplary method 1500 of motion vector generation according to some embodiments of the present disclosure. In some embodiments, method 1500 may be performed by an encoder (e.g., encoder 200 of FIG. 2) or may be performed by one or more software or hardware components of an apparatus (e.g., apparatus 400 of FIG. 4). For example, a processor (e.g., processor 402 of FIG. 4) may perform method 1500. In some embodiments, method 1500 may be implemented by a computer program product embodied in a computer-readable medium that includes computer-executable instructions, such as program code, for execution by a computer (e.g., apparatus 400 of FIG. 4).
[0085]
[0102] At step 1502, method 1500 may determine whether a first unidirectionally predicted motion vector of a first partition of a block (or CU) and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list. The first partition and the second partition of the block may be triangular partitions or geometric partitions.
[0086]
[0103] In step 1504, method 1500 may include storing an average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within the bidirectionally predicted area of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list.
[0087]
[0104] In some embodiments, the method 1500 may include, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, determining whether a first reference picture of the first unidirectionally predicted motion vector is the same as a second reference picture of the second unidirectionally predicted motion vector. If the first reference picture is determined to be different from the second reference picture, the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector may be scaled to the first reference picture, and an average motion vector of the scaled first unidirectionally predicted motion vector and the scaled second unidirectionally predicted motion vector may be stored.
[0088]
[0105] In some embodiments, method 1500 may also include, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector to form a bidirectionally predicted motion vector, and storing the bidirectionally predicted motion vector of a sub-block located within the bidirectionally predicted area of the block.
[0089]
[0106] In some embodiments, the method 1500 may include determining whether a sub-block of a block (or CU) is within a bi-prediction area. For example, the sub-block is an M×N sub-block. In a triangular partitioning mode, the method 1500
number
number
number
number
number
number
[0090]
[0107] It is understood that some of the above-mentioned embodiments can be implemented in combination with each other. Below are some exemplary embodiments of such combinations. Although 8x8 sub-blocks are used as the basic unit of motion vector storage in the following embodiments, it is understood that MxN sub-blocks can also be used.
[0091]
[0108] In some embodiments, motion vectors for CUs coded in triangular partitioning mode or GPM are stored in 8x8 sub-blocks. Depending on the location of each 8x8 sub-block, either unidirectionally predicted or bidirectionally predicted motion vectors are stored. In triangular partitioning mode, for example, the unidirectionally predicted motion vectors for left and right partitions are denoted by Mv1 and Mv2, respectively. If an 8x8 sub-block is located within a unidirectional prediction area, either Mv1 or Mv2 is stored for that 8x8 sub-block. Otherwise, if the 8x8 sub-block is located within a bidirectional prediction area, a bidirectionally predicted motion vector is stored. The bidirectionally predicted motion vector is derived from Mv1 and Mv2 by the following process: 1. If Mv1 and Mv2 are from different reference picture lists (one from L0 and the other from L1), Mv1 and Mv2 are simply combined to form a bi-predictive motion vector. 2. Otherwise, if Mv1 and Mv2 are from the same list, only the unidirectional predicted motion Mv2 is stored.
[0092]
[0109] The following process is used to determine whether an 8x8 sub-block is considered to be within the bi-prediction area:
number
[0093]
[0110] In another embodiment, motion vectors for CUs coded in triangular partitioning mode or GPM are stored in 8x8 sub-blocks. Depending on the location of each 8x8 sub-block, either unidirectionally predicted or bidirectionally predicted motion vectors are stored. In triangular partitioning mode, for example, the unidirectionally predicted motion vectors for the top and bottom partitions are denoted by Mv1 and Mv2, respectively. If an 8x8 sub-block is located within a unidirectional prediction area, either Mv1 or Mv2 is stored for that 8x8 sub-block. Otherwise, if the 8x8 sub-block is located within a bidirectional prediction area, a bidirectionally predicted motion vector is stored. The bidirectionally predicted motion vector is derived from Mv1 and Mv2 by the following process: 1. If Mv1 and Mv2 are from different reference picture lists (one from L0 and the other from L1), Mv1 and Mv2 are simply combined to form a bi-predictive motion vector. 2. Otherwise, if Mv1 and Mv2 are from the same list, only the unidirectional predicted motion Mv2 is stored.
[0094]
[0111] The following process is used to determine whether an 8x8 sub-block is considered to be within the bi-prediction area:
number
[0095]
[0112] 16 shows a flow diagram of another exemplary method 1600 of motion field storage according to some embodiments of the present disclosure. In some embodiments, method 1600 may be performed by an encoder (e.g., encoder 200 of FIG. 2) or may be performed by one or more software or hardware components of an apparatus (e.g., apparatus 400 of FIG. 4). For example, a processor (e.g., processor 402 of FIG. 4) may perform method 1600. In some embodiments, method 1600 may be implemented by a computer program product embodied in a computer-readable medium that includes computer-executable instructions, such as program code, for execution by a computer (e.g., apparatus 400 of FIG. 4).
[0096]
[0113] At step 1602, method 1600 may include determining whether a sub-block of a block (or CU) is within a bi-prediction area. The sub-block has a width, or height, or both, greater than 4. In some embodiments, at least one of the width and height of the sub-block is greater than or equal to 8. For example, the sub-block may be an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, or a min(block width, 16) x min(block height, 16) sub-block. In some embodiments, the size of the sub-block may depend on the size of the block.
[0097]
[0114] In some embodiments, the sub-blocks are M×N sub-blocks. In triangulation mode, for example, method 1600
number
number
number
number
number
number
[0098]
[0115] At step 1604, method 1600 may determine whether a first unidirectionally predicted motion vector of a first partition of the block and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list. The first partition and second partition of the block may be triangular or geometric partitions.
[0099]
[0116] At step 1606, method 1600 may include storing one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of the sub-block in response to determining that the sub-block is in a bi-predictive area and determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list. In some embodiments, the stored one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector may be a motion vector from the top partition, a motion vector from the bottom partition, a motion vector from the left partition, a motion vector from the right partition, a motion vector whose reference picture is closer to the current picture of the current block, a motion vector whose reference picture has higher quality, a motion vector with a smaller amount of motion, etc.
[0100]
[0117] In some embodiments, method 1600 may include, in response to determining that the subblock is within a bidirectional prediction area and determining that the first unidirectional predictive motion vector and the second unidirectional predictive motion vector are not from the same reference picture list, combining the first unidirectional predictive motion vector and the second unidirectional predictive motion vector to form a bidirectional predictive motion vector and storing the bidirectional predictive motion vector of the subblock.
[0101]
[0118] In some embodiments, the method 1600 may include dividing a block into multiple sub-blocks.
[0102]
[0119] It is understood that the disclosed methods (e.g., method 1200 of FIG. 12, method 1400 of FIG. 14, method 1500 of FIG. 15, and method 1600 of FIG. 16) are not limited to triangular decompositions and may be applied to geometric decompositions. In geometric decompositions, a block may be divided into two geometric shape decompositions. FIG. 17 is a schematic diagram illustrating some examples of geometric decompositions according to some embodiments of the present disclosure.
[0103]
[0120] Each geometric partition may be inter-predicted by using its own unidirectionally predicted motion vector. The unidirectionally predicted motion vector for each partition may be derived directly from the merge candidate list constructed for extended merge prediction, and the selection of a unidirectionally predicted motion vector from a given merge candidate in the list may follow the procedure described below.
[0104]
[0121] If a geometric partition mode is used for the current CU, a geometric partition index (angle and offset) indicating the partition mode of the geometric partition and two merge indices (one per partition) are further signaled as shown in Table 1 below (highlighted in italics):
[0105] [Table 1]
[0106]
[0122] After predicting each part of the geometric partition, the sample values along the geometric partition edges are adjusted using an adaptive weighted blending process. This is the prediction signal for the entire CU, and the transformation and quantization processes can be applied to the entire CU as in other prediction modes. Finally, the motion field of the CU predicted using the geometric partition mode can be stored in 4x4 sub-blocks.
[0107]
[0123] Given a merge candidate index, a unidirectional predictive motion vector is derived from the merge candidate list constructed for extended merge prediction. Figure 6 shows an example unidirectional predictive motion vector selection 600 for geometric partitioning according to some embodiments of the present disclosure. For a candidate in the list, the LX motion vector with X equal to the parity of the merge candidate index value is used as the unidirectional predictive motion vector for the geometric partitioning. These motion vectors are marked with an "X" in Figure 6. If there is no corresponding LX motion vector, the L(1-X) motion vector of the same candidate in the extended merge prediction candidate list is used as the unidirectional predictive motion vector for the geometric partitioning.
[0108]
[0124] After predicting each geometric partition using its own motion, blending is applied to the two predicted signals to derive samples around the partition edge. The following weightings are used in the blending process: {7 / 8, 6 / 8, 5 / 8, 4 / 8, 3 / 8, 2 / 8, 1 / 8}. The weighting of each sample is explained below.
[0109]
[0125] The blending weight for each position in the block is derived based on the distance of the individual position to the dividing edge. The distance of a position (x,y) to the dividing edge is derived as follows:
number
[0110] [Table 2]
[0111]
[0126] ρ x,j , ρ y,j The sign of depends on the angle index i. The variables (w,h) represent the width and height of the block. The weighting of each part of the geometric division is derived as follows:
number
[0112]
[0127] Motion vectors for blocks coded in geometric partitioning are stored in 4x4 sub-blocks. Depending on the location of each 4x4 sub-block, either unidirectionally predicted or bidirectionally predicted motion vectors are stored. The unidirectionally predicted motion vectors for partition 1 and partition 2 are denoted by Mv1 and Mv2, respectively. Mv1 is derived from the extended merge candidate list shown in FIG. 6 by using the first signaled merge index (e.g., merge_gpm_idx0[x0][y0]). Similarly, Mv2 is derived from the extended merge candidate list by using the second signaled merge index (e.g., merge_gpm_idx1[x0][y0]). If a 4x4 sub-block is located within a unidirectional prediction area, either Mv1 or Mv2 is stored for that 4x4 sub-block. Otherwise, if the 4x4 sub-block is located within a bidirectional prediction area, a bidirectionally predicted motion vector is stored. The bidirectionally predicted motion vector is derived from Mv1 and Mv2 by the following process: 1. If Mv1 and Mv2 are from different reference picture lists (e.g., one from L0 and the other from L1), Mv1 and Mv2 are simply combined to form a bidirectional predicted motion vector; 2. Otherwise, one of the two motion vectors is stored.
[0113]
[0128] In one example, one of the two motion vectors is Mv1, and in another example, one of the two motion vectors is Mv2.
[0114]
[0129] To determine whether a 4x4 sub-block is located in the bidirectional prediction area, the weighting of the luma sample located at (4x+2, 4y+2) is used, where (x, y) represents the sub-block position within the block as shown in Figure 18.
[0115]
[0130] If the absolute value of the weighting is less than the threshold, the 4x4 sub-block is treated as a bi-prediction area. Otherwise, the 4x4 sub-block is treated as a uni-prediction area. The following equation may be used for each 4x4 sub-block: sType=abs(motionIdx)<32?2:(motionIdx≦0?(1-partldx):partldx) Formula 5 where motionIdx is equal to d(4x+2, 4y+2). If sType is equal to 2, bidirectional predicted motion vectors may be stored in 4x4 sub-blocks.
[0116]
[0131] In some embodiments, a non-transitory computer-readable storage medium containing instructions is also provided, which may be executed by an apparatus (such as the disclosed encoders and decoders) to perform the above-described methods. Common non-transitory media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage medium, CD-ROMs, any other optical data storage medium, any physical medium with a pattern of holes, RAM, PROMs, and EPROMs, flash EPROMs or any other flash memory, NVRAM, cache, registers, any other memory chip or cartridge, and networked versions thereof. An apparatus may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.
[0117]
[0132] Embodiments may be further described using the following clauses: 1. A computer-implemented method comprising: determining whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, store one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within the bidirectionally predicted area of the block within the motion field of the block.
[0118] 2. A method according to clause 1, further comprising: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and Storing the bidirectionally predicted motion vectors of the sub-blocks located within the bidirectionally predicted area of the block in the motion field of the block.
[0119] 3. The method of clause 1 or clause 2, wherein the first subdivision and the second subdivision are two geometric subdivisions or two triangular subdivisions.
[0120] 4. The method of any one of clauses 1 to 3, wherein the stored one of the first unidirectional predictive motion vector and the second unidirectional predictive motion vector is one of the following: a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to the target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector whose motion amount is smaller.
[0121] 5. The method of any one of clauses 1 to 4, wherein the stored one of the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector is the second unidirectionally predictive motion vector.
[0122] 6. The method of any one of clauses 1 to 5, wherein the sub-block comprises MxN pixels, and at least one of M and N is greater than 4.
[0123] 7. The method of any one of clauses 1 to 6, wherein a sub-block comprises MxN pixel samples, and at least one of M and N is greater than or equal to 8.
[0124] 8. The method of any one of clauses 1 to 7, further comprising determining whether a sub-block of the block is within a bi-prediction area.
[0125] 9. The method of clause 8, wherein the sub-block is an MxN sub-block, and determining whether the sub-block is within a bi-directional prediction area comprises:
number
number
number
number
[0126] 10. The method of any one of clauses 1 to 9, further comprising dividing the block into a plurality of sub-blocks, each of which is one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0127] 11. An apparatus comprising: a memory configured to store instructions; and a processor coupled to the memory, the processor causing the apparatus to: determining whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and 1. An apparatus configured to execute instructions to: store one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list.
[0128] 12. The processor further instructs the device to: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and 12. The apparatus of clause 11, configured to execute instructions to cause storing, in a motion field of the block, bidirectionally predicted motion vectors of sub-blocks located within a bidirectionally predicted area of the block.
[0129] 13. The apparatus of clause 11 or clause 12, wherein the first division and the second division are two geometric divisions or two triangular divisions.
[0130] 14. An apparatus described in any one of clauses 11 to 13, wherein the stored one of the first unidirectional predictive motion vector and the second unidirectional predictive motion vector is one of a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to the target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector having a smaller amount of motion.
[0131] 15. An apparatus according to any one of clauses 11 to 14, wherein the sub-block comprises MxN pixels, and at least one of M and N is greater than four.
[0132] 16. The apparatus of any one of clauses 11 to 15, wherein a sub-block comprises MxN pixel samples, and at least one of M and N is greater than or equal to 8.
[0133] 17. The apparatus of any one of clauses 11 to 16, wherein the processor is further configured to execute instructions to cause the apparatus to determine whether a sub-block of the block is within a bi-prediction area.
[0134] 18. The apparatus of clause 17, wherein the sub-blocks are MxN sub-blocks, and the processor further causes the apparatus to:
number
number
number
number
[0135] 19. The apparatus of any one of clauses 11 to 18, wherein the processor causes the apparatus to: 1. An apparatus configured to execute instructions to cause division of a block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0136] 20. A non-transitory computer-readable storage medium storing a set of instructions, the set of instructions being executable by one or more processors of a device, wherein execution of the set of instructions causes the device to: determining whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and A non-transitory computer-readable storage medium that, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, stores one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block.
[0137] 21. Execution of a set of instructions causes an apparatus to, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list: combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and 21. The non-transitory computer-readable storage medium of clause 20, further comprising storing, in a motion field of the block, bi-directionally predicted motion vectors of sub-blocks located within the bi-directionally predicted area of the block.
[0138] 22. The non-transitory computer-readable storage medium of clause 20 or clause 21, wherein the first division and the second division are two geometric divisions or two triangular divisions.
[0139] 23. A non-transitory computer-readable storage medium described in any one of clauses 20 to 22, wherein the stored one of the first unidirectional predictive motion vector and the second unidirectional predictive motion vector is one of a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to the target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector whose motion amount is smaller.
[0140] 24. A non-transitory computer-readable storage medium according to any one of clauses 20 to 23, wherein a sub-block comprises MxN pixels, and at least one of M and N is greater than 4.
[0141] 25. The non-transitory computer-readable storage medium of any one of clauses 20 to 24, wherein a sub-block includes M×N pixel samples, and at least one of M and N is 8 or greater.
[0142] 26. A non-transitory computer-readable storage medium according to any one of clauses 20 to 25, wherein execution of the set of instructions further causes the device to determine whether a sub-block of the block is within a bidirectional prediction area.
[0143] 27. The subblock is an M×N subblock, and determining whether the subblock is within the bidirectional prediction area is:
number
number
number
number
[0144] 28. The non-transitory computer-readable storage medium of any one of clauses 20 to 27, wherein execution of the set of instructions further causes the device to divide the block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0145] 29. A computer-implemented method comprising: determining whether a sub-block having at least one of a width and a height greater than 4 is within a bidirectional prediction area of a block; and, in response to determining that the sub-block is within the bidirectional prediction area, storing a bidirectional prediction motion vector of the sub-block within a motion field of the block.
[0146] 30. The method of clause 29, wherein at least one of the width and height of the sub-blocks is 8 or greater.
[0147] 31. The method of clause 29 or clause 30, further comprising, in response to determining that the sub-block is not within a bi-prediction area, storing a uni-directional predicted motion vector for the sub-block in a motion field of the block.
[0148] 32. The subblock is an M×N subblock, and determining whether the subblock is within the bidirectional prediction area is:
number
number
number
number
[0149] 33.
number
number
[0150] 34. The method of any one of clauses 29 to 33, further comprising dividing the block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0151] 35. A method according to any one of clauses 29 to 34, wherein the size of the sub-blocks depends on the size of the block.
[0152] 36. The method of clause 35, further comprising determining that the bidirectionally predicted motion vector is the same as the unidirectionally predicted motion vector in response to the sub-block and the block having the same size.
[0153] 37. An apparatus including: a memory configured to store instructions; and a processor coupled to the memory, the processor causing the apparatus to: determining whether a sub-block having at least one of a width and a height greater than 4 is present within the bidirectional prediction area of the block; and 11. An apparatus configured to execute instructions to cause, in response to determining that a sub-block is within a bi-directional prediction area, storing a bi-directional predicted motion vector for the sub-block in a motion field of the block.
[0154] 38. The apparatus of clause 37, wherein at least one of the width and height of the sub-blocks is 8 or greater.
[0155] 39. The apparatus of clause 37 or clause 38, wherein the processor is configured to execute instructions to cause the apparatus to store a unidirectional predicted motion vector of the sub-block in the motion field of the block in response to determining that the sub-block is not within a bidirectional prediction area.
[0156] 40. The sub-block is an M×N sub-block, and the processor further comprises:
number
number
number
number
[0157] 41. The processor further instructs the device to:
number
number
[0158] 42. The apparatus of clauses 37 to 41, wherein the processor is further configured to execute instructions to cause the apparatus to divide the block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0159] 43. The apparatus of any one of clauses 37 to 42, wherein the size of the sub-blocks depends on the size of the block.
[0160] 44. The apparatus of clause 43, wherein the processor is further configured to execute instructions to cause the apparatus to determine that the bidirectional predictive motion vector is the same as the unidirectional predictive motion vector in accordance with the sub-block and the block having the same size.
[0161] 45. A non-transitory computer-readable storage medium storing a set of instructions, the set of instructions being executable by one or more processors of a device, wherein execution of the set of instructions causes the device to: determining whether a sub-block having at least one of a width and a height greater than 4 is present within the bidirectional prediction area of the block; and A non-transitory computer-readable storage medium that causes a method to be performed, the method including, in response to determining that a sub-block is within a bi-directional prediction area, storing a bi-directional predicted motion vector for the sub-block within a motion field of the block.
[0162] 46. The non-transitory computer-readable storage medium of clause 45, wherein at least one of the width and height of the sub-blocks is 8 or greater.
[0163] 47. A non-transitory computer-readable storage medium as described in clause 45 or clause 46, wherein execution of the set of instructions further causes the device to store a unidirectional predicted motion vector for the sub-block in the motion field of the block in response to determining that the sub-block is not within a bidirectional prediction area.
[0164] 48. The subblock is an M×N subblock, and determining whether the subblock is within the bidirectional prediction area is:
number
number
number
number
[0165] 49. Execution of a set of instructions causes a device to:
number
number
[0166] 50. The non-transitory computer-readable storage medium of any one of clauses 45 to 49, wherein execution of the set of instructions further causes the device to divide the block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
[0167] 51. The non-transitory computer-readable storage medium of any one of clauses 45 to 50, wherein the size of the sub-blocks depends on the size of the block.
[0168] 52. The non-transitory computer-readable storage medium of clause 51, wherein execution of the set of instructions further causes the device to determine that the bidirectionally predicted motion vector is the same as the unidirectionally predicted motion vector in accordance with the sub-block and the block having the same size.
[0169] 53. Determining whether a first unidirectionally predicted motion vector of a first division of a block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and A computer-implemented method comprising: storing an average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list.
[0170] 54. In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and 54. The method of clause 53, further comprising storing in a motion field of the block bidirectionally predicted motion vectors of sub-blocks located within the bidirectionally predicted area of the block.
[0171] 55. Storing the average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of the sub-block located in the bidirectionally predicted area of the block in the motion field of the block includes: determining whether a first reference picture of a first unidirectionally predicted motion vector is the same as a second reference picture of a second unidirectionally predicted motion vector; In response to determining that the first reference picture is different from the second reference picture, scaling the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector relative to the first reference picture; and 54. The method of clause 53, comprising storing an average motion vector of the scaled first unidirectionally predicted motion vector and the scaled second unidirectionally predicted motion vector in a motion field of the block.
[0172] 56. The method of any one of clauses 53 to 55, wherein the first division and the second division are two geometric divisions or two triangular divisions.
[0173] 57. An apparatus including a memory configured to store instructions and a processor coupled to the memory, the processor causing the apparatus to: determining whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and An apparatus configured to execute instructions to, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, store an average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of sub-blocks located within a bidirectionally predicted area of the block in a motion field of the block.
[0174] 58. The processor further instructs the device to: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and 58. The apparatus of clause 57, configured to execute instructions to cause storing, in a motion field of the block, bidirectionally predicted motion vectors of sub-blocks located within a bidirectionally predicted area of the block.
[0175] 59. Storing the average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of the sub-block located in the bidirectionally predicted area of the block in the motion field of the block includes: determining whether a first reference picture of a first unidirectionally predicted motion vector is the same as a second reference picture of a second unidirectionally predicted motion vector; In response to determining that the first reference picture is different from the second reference picture, scaling the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector relative to the first reference picture; and 58. The apparatus of clause 57, comprising storing an average motion vector of the scaled first unidirectionally predicted motion vector and the scaled second unidirectionally predicted motion vector in a motion field of the block.
[0176] 60. An apparatus according to any one of clauses 57 to 59, wherein the first division and the second division are two geometric divisions or two triangular divisions.
[0177] 61. A non-transitory computer-readable storage medium storing a set of instructions, the set of instructions being executable by one or more processors of a device, wherein execution of the set of instructions causes the device to: determining whether a first unidirectionally predicted motion vector of a first division of the block and a second unidirectionally predicted motion vector of a second division of the block are from the same reference picture list; and A non-transitory computer-readable storage medium that causes a method to be performed, the method including storing an average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of sub-blocks located within a bidirectionally predicted area of the block in a motion field of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list.
[0178] 62. Execution of a set of instructions causes a device to: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predictive motion vector and the second unidirectionally predictive motion vector to form a bidirectionally predictive motion vector; and 62. The non-transitory computer-readable storage medium of clause 61, further comprising storing, in a motion field of the block, bidirectionally predicted motion vectors of sub-blocks located within the bidirectionally predicted area of the block.
[0179] 63. Storing an average motion vector of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of the sub-blocks located in the bidirectionally predicted area of the block in the motion field of the block includes: determining whether a first reference picture of a first unidirectionally predicted motion vector is the same as a second reference picture of a second unidirectionally predicted motion vector; In response to determining that the first reference picture is different from the second reference picture, scaling the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector relative to the first reference picture; and 62. The non-transitory computer-readable storage medium of clause 61, comprising storing an average motion vector of the scaled first unidirectionally predicted motion vector and the scaled second unidirectionally predicted motion vector in a motion field of the block.
[0180] 64. An apparatus according to any one of clauses 61 to 63, wherein the first division and the second division are two geometric divisions or two triangular divisions.
[0181] It should be noted that relative terms such as "first" and "second" are used herein merely to distinguish one entity or operation from another and do not require or imply any actual relationship or order between those entities or operations. Furthermore, the words "comprising," "having," "containing," and "including," and other similar forms, are intended to be equivalent in meaning and are non-limiting in that the items following any one of these words are not intended to be an exhaustive list of such items or to be limited to only the items they list.
[0182] As used herein, unless otherwise stated, the term "or" includes all possible combinations except where feasible. For example, if it is stated that a database may include A or B, then the database may include A, or B, or A and B, unless otherwise stated or feasible. As a second example, if it is stated that a database may include A, B, or C, then the database may include A, or B, or C, or A and B, or A and C, or B and C, or A and B and C, unless otherwise stated or feasible.
[0183]
[0135] It is understood that the above embodiments can be implemented by hardware, software (program code), or a combination of hardware and software. If implemented by software, it can be stored in the computer-readable medium. The software can perform the disclosed methods when executed by a processor. The computational units and other functional units described in this disclosure can be implemented by hardware, software, or a combination of hardware and software. Those skilled in the art will also understand that multiple of the above modules / units can be combined into one module / unit, and that each of the above modules / units can be further divided into multiple sub-modules / sub-units.
[0184]
[0136] In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary from implementation to implementation. Certain adaptations and modifications of the described embodiments may be made. Other embodiments may become apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with the true scope and spirit of the invention being indicated by the appended claims. The order of steps depicted in the figures is for illustrative purposes only and is not intended to be limited to any particular order of steps. As such, one skilled in the art will recognize that steps can be performed in different orders while implementing the same method.
[0185]
[0137] In the accompanying drawings and specification, illustrative embodiments have been disclosed. However, many variations and modifications may be made to these embodiments. Accordingly, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation.
Claims
1. determining whether a first unidirectionally predicted motion vector of a first partition of a block and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list; and a motion field for the block, the motion field including a first unidirectionally predicted motion vector and a second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list;
2. In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector to form a bidirectionally predicted motion vector; and The method of claim 1 , further comprising storing the bidirectionally predicted motion vectors of sub-blocks located within the bidirectionally predicted area of the block in the motion field of the block.
3. The method of claim 1 , wherein the first and second subdivisions are two geometric subdivisions or two triangular subdivisions.
4. 2. The method of claim 1, wherein the stored one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector is one of a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to a target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector whose motion amount is smaller.
5. The method of claim 1 , wherein the stored one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector is the second unidirectionally predicted motion vector.
6. The method of claim 1 , wherein the sub-block comprises M×N pixels, and at least one of M and N is greater than four.
7. The method of claim 1 , wherein the sub-block comprises M×N pixel samples, and at least one of M and N is greater than or equal to 8.
8. 2. The method of claim 1, further comprising dividing the block into a plurality of sub-blocks, each of the plurality of sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
9. 1. An apparatus comprising: a memory configured to store instructions; and a processor coupled to the memory, the processor causing the apparatus to: determining whether a first unidirectionally predicted motion vector of a first partition of a block and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list; and storing one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list.
20. An apparatus configured to execute the instructions to cause:
10. The processor may cause the device to: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector to form a bidirectionally predicted motion vector; and storing the bidirectionally predicted motion vectors of sub-blocks located within the bidirectionally predicted area of the block in the motion field of the block.
10. The apparatus of claim 9, further configured to execute the instructions to cause:
11. The apparatus of claim 9 , wherein the first subdivision and the second subdivision are two geometric subdivisions or two triangular subdivisions.
12. 10. The apparatus of claim 9, wherein the stored one of the first unidirectional predictive motion vector and the second unidirectional predictive motion vector is one of a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to a target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector whose motion amount is smaller.
13. The apparatus of claim 9 , wherein the sub-block comprises M×N pixels, and at least one of M and N is greater than four.
14. 10. The apparatus of claim 9, wherein the sub-block comprises MxN pixel samples, and at least one of M and N is greater than or equal to 8.
15. 10. The apparatus of claim 9, wherein the processor is further configured to execute the instructions to cause the apparatus to: divide the block into a plurality of sub-blocks, each of the sub-blocks being one of an 8x8 sub-block, a 4x8 sub-block, an 8x4 sub-block, a 16x16 sub-block, and a min(block width, 16) x min(block height, 16) sub-block.
16. 1. A non-transitory computer-readable storage medium storing a set of instructions, the set of instructions executable by one or more processors of a device, wherein said execution of the set of instructions causes the device to: determining whether a first unidirectionally predicted motion vector of a first partition of a block and a second unidirectionally predicted motion vector of a second partition of the block are from the same reference picture list; and A non-transitory computer-readable storage medium that, in response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are from the same reference picture list, stores one of the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector of a sub-block located within a bidirectionally predicted area of the block in a motion field of the block.
17. The execution of the set of instructions causes the device to: In response to determining that the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector are not from the same reference picture list, combining the first unidirectionally predicted motion vector and the second unidirectionally predicted motion vector to form a bidirectionally predicted motion vector; and 17. The non-transitory computer-readable storage medium of claim 16, further comprising: storing the bidirectionally predicted motion vectors of sub-blocks located within the bidirectionally predicted area of the block in the motion field of the block.
18. 17. The non-transitory computer-readable storage medium of claim 16, wherein the first division and the second division are two geometric divisions or two triangular divisions.
19. 17. The non-transitory computer-readable storage medium of claim 16, wherein the stored one of the first unidirectional predictive motion vector and the second unidirectional predictive motion vector is one of a motion vector from an upper division of the block, a motion vector from a lower division of the block, a motion vector from a left division of the block, a motion vector from a right division of the block, a motion vector whose reference picture is closer to a target picture corresponding to the target block, a motion vector whose reference picture has higher quality, and a motion vector whose motion amount is smaller.
20. 17. The non-transitory computer-readable storage medium of claim 16, wherein the sub-block comprises MxN pixels, and at least one of M and N is greater than four.
Citation Information
Patent Citations
Video processing methods and apparatuses of determining motion vectors for storage in video coding systems
WO2020108560A1
Triangle motion information for video coding
WO2020118064A1