Video coding method, device, storage medium, and bitstream storage method using geometric partitioning
Geometric partitioning with triangular prediction units improves video encoding efficiency by optimizing motion compensation prediction, effectively compressing high-definition and ultra-high-definition video data.
Patent Information
- Application Number
- JP2025077460
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-12-16
- Filing Date
- 2025-05-07
- Publication Date
- 2025-07-30
AI Technical Summary
Existing video encoding techniques struggle to efficiently compress high-definition and ultra-high-definition video data while maintaining picture quality, as the exponential increase in data volume poses challenges for existing block partitioning schemes.
The implementation of geometric partitioning using triangular prediction units (PUs) within coding units (CUs) for video encoding, where each CU is divided into two PUs, and a merge list is constructed to determine motion vectors (MVs) for improved prediction efficiency.
This approach enhances video encoding efficiency by optimizing motion compensation prediction, reducing data volume without significant quality degradation, thus addressing the challenges of high-definition and ultra-high-definition video compression.
Smart Images

Figure 2025111803000001_ABST
Abstract
Description
Technical Field
[0001] The present application generally relates to video encoding and compression, and more particularly, to methods and apparatuses for motion compensation prediction using triangular prediction units (i.e., special cases of geometric partition prediction units) in video encoding, but is not limited thereto.
Background Art
[0002] Digital video is supported by various electronic devices such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smartphones, video teleconferencing devices, video streaming devices, etc. Electronic devices transmit, receive, encode, decode, and / or store digital video data by implementing video compression / decompression. Digital video devices implement video encoding techniques as described in standards defined by VVC (Versatile Video Coding), JEM (Joint Exploration Test Model), MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, AVC (Advanced Video Coding), ITU-T H.265 / HEVC (High Efficiency Video Coding), and extensions of such standards.
[0003] Video encoding generally utilizes prediction methods (e.g., inter prediction, intra prediction) that exploit redundancy present in video pictures or sequences. An important goal of video encoding techniques is to compress video data into a form that uses a lower bitrate while avoiding or minimizing degradation of video quality. As evolving video services become available, encoding techniques with better encoding efficiency are needed. The block partitioning schemes in each standard are also evolving.
[0004] Video compression includes performing spatial (intra-frame) prediction and / or temporal (inter-frame) prediction to reduce or remove redundancy inherent in regular, video data. In the case of block-based video coding, a video frame is divided into one or more slices, and each slice has a plurality of video blocks that may also be referred to as coding tree units (CTUs). Each CTU can contain one CU or can be recursively divided into smaller CUs until a predetermined minimum coding unit (CU) size is reached. Each CU (also referred to as a leaf CU) contains one or more transform units (TUs), and each CU also contains one or more prediction units (PUs). Each CU can be coded in an intra mode, an inter mode, or an IBC mode. Video blocks within an intra-coded (I) slice of a video frame are coded using spatial prediction with respect to reference samples within neighboring blocks in the same video frame. Video blocks within an inter-coded (P or B) slice of a video frame can use spatial prediction with respect to reference samples within neighboring blocks in the same video frame or temporal prediction with respect to reference samples within other previous and / or future reference video frames.
[0005] Spatial or temporal prediction based on previously encoded reference blocks, such as neighboring blocks, results in a prediction block for the current video block to be encoded. The process of finding the reference block can be achieved by a block matching algorithm. The residual data representing the pixel difference between the current block to be encoded and the prediction block is called the residual block or prediction error. An inter-coded block is encoded according to a reference block in a reference frame forming the prediction block and a motion vector indicating the residual block. The process of determining the motion vector is typically called motion estimation. An intra-coded block is encoded according to an intra prediction mode and a residual block. For further compression, the residual block is transformed from a pixel domain to a transform domain, such as a frequency domain, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients are first arranged in a two-dimensional array, scanned to generate a one-dimensional vector of the transform coefficients, and then entropy encoded into a video bit stream to achieve further compression.
[0006] The encoded video bit stream is then stored in a computer-readable storage medium (e.g., flash memory) so that it can be accessed by another electronic device having digital video capabilities or transmitted directly to the electronic device, either wired or wirelessly. The electronic device then parses the encoded video bit stream to obtain syntax elements from the bit stream and reconstructs the digital video data from the encoded video bit stream into its original format based at least in part on the syntax elements obtained from the bit stream, thereby performing video decompression (a process opposite to the above-described video compression), and rendering the reconstructed digital video data on a display of the electronic device.
[0007] In digital video quality ranging from high definition to 4K×2K or 8K×4K, the amount of video data to be encoded / decoded increases exponentially. This has always been an issue regarding methods for more efficiently encoding / decoding video data while maintaining the picture quality of the decoded video data.
[0008] In the JVET (Joint Video Experts Team) meeting, the JVET defined the first draft of VVC (Versatile Video Coding) and the VTM1 (VVC Test Model 1) encoding method. As an initial new encoding feature of VVC, it was decided to include a quadtree with nested multi-type trees using binary and ternary trees for encoding block structures. Subsequently, during the JVET meeting, the reference software VTM for implementing the encoding method and the VVC decoding process draft was developed.
Summary of the Invention
Problems to be Solved by the Invention
[0009] Generally, the present disclosure describes examples of techniques related to motion compensation prediction using a geometric shape prediction unit in video encoding.
Means for Solving the Problems
[0010] According to a first aspect of the present disclosure, a video picture is divided into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two prediction units (PUs), a first PU and a second PU, including at least one geometric shape prediction unit (PU). A first merge list including a plurality of candidates is constructed based on a merge list construction process for regular merge prediction. Each of the plurality of candidates is a motion vector (MV) including List0MV and / or List1MV. A first candidate of the first PU is detected by a first index, a second candidate of the second PU is detected by a second index, and a first uni-prediction MV of the first PU is obtained by selecting ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag. A second uni-prediction MV of the second PU is obtained by selecting ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag. A video coding method using geometric partitioning is provided.
[0011] According to a second aspect of the present disclosure, there is provided a video encoding apparatus using geometric partitioning, comprising one or more processors and a memory configured to store instructions executable by the one or more processors. When the instructions are executed, the one or more processors divide a video picture into a plurality of coding units (CUs), at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU), construct a first merge list including a plurality of candidates based on a merge list construction process for regular merge prediction, each of the plurality of candidates is a motion vector (MV) including List0MV and / or List1MV, detect a first candidate of the first PU by a first index, detect a second candidate of the second PU by a second index, obtain a first uni-prediction MV of the first PU by selecting ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag, obtain a second uni-prediction MV of the second PU by selecting ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag.
[0012] According to a third aspect of the present disclosure, when executed by one or more computer processors, a video picture is divided into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU), and a first merge list including a plurality of candidates is constructed based on a merge list construction process for regular merge prediction, each of the plurality of candidates being a motion vector (MV) including List0MV and / or List1MV, a first candidate of the first PU is detected by a first index, a second candidate of the second PU is detected by a second index, a first uni-prediction MV of the first PU is obtained by selecting ListX1MV of the first candidate by a first binary reference list indication flag, X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag, a second uni-prediction MV of the second PU is obtained by selecting ListX2MV of the second candidate by a second binary reference list indication flag, X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag, and a non-transitory computer-readable storage medium for video coding using geometric division that stores computer-executable instructions for causing one or more of the computer processors to execute the operations is provided.
Brief Description of the Drawings
[0013]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13A
Figure 13B
Figure 14A
Figure 14B
Figure 14C
Figure 14D
Figure 15A
Figure 15B
Figure 16
【Figure 1 Block diagram showing an exemplary apparatus for video encoding according to some implementations of the present disclosure. Flowchart showing an exemplary process of video encoding for motion compensation prediction using a geometric prediction unit according to some implementations of the present disclosure. **DETAILED DESCRIPTION OF THE INVENTION**
[0014] A more detailed description of the embodiments of the present disclosure is made by referring to specific embodiments shown in the accompanying drawings. These drawings show only some examples and are therefore not considered to limit the scope. By using the accompanying drawings, examples are described and explained with additional specificity and detail.
[0015] Here, specific embodiments are referred to in detail and the examples are shown in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to assist in the understanding of the subject matter presented herein. However, it will be apparent to those skilled in the art that various alternatives can be used. For example, it will be apparent to those skilled in the art that the subject matter presented herein can be implemented on many types of electronic devices having digital video capabilities.
[0016] Throughout this specification, references to "one embodiment", "an example", "some embodiments", "some examples", or similar terms mean that the particular feature, structure, or characteristic described is included in at least one embodiment or example. Features, structures, elements, or characteristics described in connection with one or some embodiments are applicable to other embodiments as well, unless specifically stated otherwise.
[0017] Throughout this disclosure, the terms "first," "second," "third," etc., are used solely as names for reference to related elements, such as devices, components, compositions, steps, etc., without implying a spatial or temporal order, unless otherwise specified. For example, "a first device" and "a second device" can refer to two separately formed devices, or two parts, components, or operating states of the same device, and can be arbitrarily named.
[0018] As used herein, the terms "if" or "when" can be understood to mean "when performing" or "in response to" depending on the context. These terms may not indicate that the related limitations or features are conditional or optional when they appear in the claims.
[0019] The terms "module," "sub-module," "circuit," "sub-circuit," "unit," or "sub-unit" can include a memory (shared, dedicated, or group) that stores code or instructions that can be executed by one or more processors. A module can include one or more circuits with or without the stored code or instructions. A module or circuit can include one or more components that are directly or indirectly connected. These components may or may not be physically attached to each other, may or may not be adjacent to each other.
[0020] A unit or module may be implemented by software only, by hardware only, or by a combination of hardware and software. In a software-only implementation, for example, a unit or module can include functionally related encoded blocks or software components that are directly or indirectly linked to each other to perform a particular function.
[0021] FIG. 1 shows a block diagram illustrating an exemplary block-based hybrid video encoder 100 that can be used in conjunction with many video coding standards that use a block-based process. In encoder 100, a video frame is divided into a plurality of video blocks for the process. For each given video block, a prediction is formed based on either an inter prediction approach or an intra prediction approach. In inter prediction, one or more predictors are formed by motion estimation and motion compensation based on pixels from previously reconstructed frames. In intra prediction, a predictor is formed based on reconstructed pixels within the current frame. Mode decision can be used to select the best predictor for predicting the current block.
[0022] A prediction residual representing the difference between the current video block and its predictor is sent to the transform circuit 102. Next, the transform coefficients are sent from the transform circuit 102 to the quantization circuit 104 for entropy reduction. Then, the quantized coefficients are supplied to the entropy encoding circuit 106 to generate a compressed video bit stream. As shown in FIG. 1, prediction-related information 110 from the inter prediction circuit and / or intra prediction circuit 112, such as video block partition information, motion vectors, reference picture indices, and intra prediction modes, is also supplied through the entropy encoding circuit 106 and stored in the compressed video bit stream 114.
[0023] In encoder 100, decoder-related circuitry is also required to reconstruct pixels for prediction purposes. First, the prediction residual is reconstructed through inverse quantization 116 and inverse transform circuit 118. This reconstructed prediction residual is combined with the block predictor 120 to generate unfiltered reconstructed pixels for the current video block.
[0024] Spatial prediction (or “intra prediction”) predicts the current video block using pixels from samples of already encoded neighboring blocks (referred to as reference samples) within the same video frame as the current video block.
[0025] Temporal prediction (also called "inter prediction") predicts the current video block using reconstructed pixels from already encoded video pictures. Temporal prediction reduces the temporal redundancy inherent in the video signal. The temporal prediction signal for a given coded unit (CU) or coded block is typically signaled by one or more motion vectors (MVs) indicating the amount and direction of motion between the current CU and its temporal reference. Further, if multiple reference pictures are supported, one reference picture index is additionally transmitted, and the reference picture index is used to identify from which reference picture in the reference picture store the temporal prediction signal arrives.
[0026] After spatial and / or temporal prediction has been performed, the inter mode / inter mode decision circuit 121 within the encoder 100 selects the best prediction mode, for example, based on the rate-distortion optimization method. Next, the block predictor 120 is subtracted from the current video block, and the resulting prediction residual is decorrelated using the transform circuit 102 and quantization circuit 104. The resulting quantized residual coefficients are inverse quantized by the inverse quantization circuit 116 and inverse transformed by the inverse transform circuit 118 to form a reconstructed residual, which is then added to the prediction block to form the reconstructed signal of the CU. Further in-loop filtering 115, such as a deblocking filter, sample adaptive offset (SAO), and / or adaptive loop filter (ALF), can be applied to the reconstructed CU before the reconstructed CU is placed in the reference picture store of the picture buffer 117 and used to encode future video blocks. To form the output video bitstream 114, the coding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all sent to the entropy coding unit 106, further compressed, and packed to form a bitstream.
[0027] For example, deblocking filters are available in the current versions of AVC, HEVC, and VVC. In HEVC, an additional in-loop filter called SAO (Sample Adaptive Offset) is defined to further improve the coding efficiency. In the current VVC standard, yet another in-loop filter called ALF (Adaptive Loop Filter) is being actively considered and is likely to be included in the final standard.
[0028] These in-loop filter operations are optional. Performing these operations helps to improve coding efficiency and visual quality. They can also be turned off as a decision made by the encoder 100 to save computational complexity.
[0029] Note that intra prediction is usually based on non-filtered reconstructed pixels, while inter prediction is based on filtered reconstructed pixels if these filter options are turned on by the encoder 100.
[0030] Figure 2 is a block diagram showing an exemplary block-based video decoder 200 that can be used with many video coding standards. This decoder 200 is similar to the reconstruction-related part present in the encoder 100 of FIG. 1. In the decoder 200, the input video bitstream 201 is first decoded through entropy decoding 202 to derive quantized coefficient levels and prediction-related information. The quantized coefficient levels are then processed through inverse quantization 204 and inverse transform 206 to obtain the reconstructed prediction residual. The block prediction mechanism implemented in the intra / inter mode selector 212 is configured to perform either intra prediction 208 or motion compensation 210 based on the decoded prediction information. By adding the reconstructed prediction residual from the inverse transform 206 and the prediction output generated by the block predictor mechanism, an adder 214 is used to obtain a set of non-filtered reconstructed pixels.
[0031] Before being stored in the picture buffer 213 that functions as a reference picture store, the reconstructed block can further pass through the in-loop filter 209. The reconstructed video in the picture buffer 213 can be used not only to predict future video blocks but also to be sent to drive a display device. In the situation where the in-loop filter 209 is turned on, filtering operations are performed on these reconstructed pixels to derive the final reconstructed video output 222.
[0032] The above-mentioned video encoding / decoding standards such as VVC, JEM, HEVC, MPEG-4, Part 10 are conceptually similar. For example, they all use a block-based process. The block partitioning schemes in some of the standards are detailed below.
[0033] HEVC (High Efficient Video Coding) HEVC is based on a hybrid block-based motion compensated transform coding architecture. The basic unit for compression is called a coding tree unit (CTU). The maximum CTU size is defined as two blocks of 32×32 chroma pixels and up to 64×64 luma pixels for the 4:2:0 chroma format. Each CTU can contain one coding unit (CU) or be recursively divided into four smaller CUs until a predetermined minimum CU size is reached. Each CU (also called a leaf CU) contains one or more prediction units (PUs) and a tree of transform units (TUs).
[0034] Generally, except for monochrome content, a CTU can include one luminance coding tree block (CTB) and two corresponding chrominance CTBs, a CU can include one luminance coding block (CB) and two corresponding chrominance CBs, a PU can include one luminance prediction block (PB) and two corresponding chrominance PBs, and a TU can include one luminance transform block (TB) and two corresponding chrominance TBs. However, an exception can occur because the minimum TB size is 4×4 for both luminance and chrominance (i.e., 2×2 chrominance TBs are not supported for the 4:2:0 color format), and each intra chrominance CB always has only one intra chrominance PB regardless of the number of intra luminance PBs within the corresponding intra luminance CB.
[0035] For an intra CU, the luminance CB may be predicted by one or four luminance PBs, each of the two chrominance CBs is always predicted by one chrominance PB, each luminance PB has one intra luminance prediction mode, and the two chrominance PBs share one intra chrominance prediction mode. Further, for an intra CU, the TB size cannot be made larger than the PB size. In each PB, intra prediction is applied to predict the samples of each TB inside the PB from the reconstructed samples neighboring the TB. For each PB, in addition to the 33-direction intra prediction modes, the DC and planar modes are also supported to predict flat regions and gradually changing regions, respectively.
[0036] For each inter-PU, one of three prediction modes including inter, skip, and merge can be selected. Generally speaking, the motion vector competition (MVC) scheme is introduced to select motion candidates from a given candidate set including spatial and temporal motion candidates. Multiple references for motion estimation enable finding the best reference in two possible reconstructed reference picture lists (i.e., List0 and List1). In the case of the inter mode (referred to as the AMVP mode, where AMVP represents Advanced Motion Vector Prediction), the inter prediction indicator (List0, List1, or bi-directional prediction), the reference indicator, the motion candidate indicator, the motion vector difference (MVD), and the prediction residual are transmitted. For the skip mode and the merge mode, only the merge index is transmitted, and the current PU inherits the inter prediction indicator, the reference index, and the motion vector from neighboring PUs that are referenced by the encoded merge index. In the case of a skipped encoded CU, the residual signal is also omitted.
[0037] JEM (Joint Exploration Test Model) JEM (Joint Exploration Test Model) is built on top of the HEVC test model. Although the basic encoding and decoding flowcharts of HEVC remain unchanged in JEM, the design elements of the most important modules including the block structure, intra prediction and inter prediction, residual transform, loop filter, and entropy encoding modules are modified somewhat, and additional encoding tools are added. JEM includes the following new encoding functions.
[0038] In HEVC, to adapt to various local characteristics, a CTU is divided into CUs by using a quadtree structure represented as an encoding tree. The decision on whether to encode a picture area using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs according to the PU split type. Within one PU, the same prediction process is applied, and related information is sent to the decoder on a PU basis. After obtaining a residual block by applying a prediction process based on the PU split type, a CU may be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree for the CU. One of the important features of the HEVC structure is having a multiple split concept including CUs, PUs, and TUs.
[0039] FIG. 3 is a schematic diagram showing a quadtree plus binary tree (QTBT) structure according to some implementations of the present disclosure.
[0040] The QTBT structure removes the concept of multiple split types. That is, it removes the separation of the CU, PU, and TU concepts and supports the CU split shape more flexibly. In the QTBT block structure, the CU can have either a square or rectangular shape. As shown in Figure 3, the Coding Tree Unit (CTU) is first divided by a quadtree (i.e., quad tree) structure. The quadtree leaf nodes can be further divided by a binary tree structure. There are two split types for binary tree splitting: symmetric horizontal splitting and symmetric vertical splitting. The binary tree leaf nodes are called Coding Units (CUs), and their segmentation is used for the prediction and transformation processes without further splitting. This means that in the QTBT coding block structure, the CU, PU, and TU have the same block size. In JEM, a CU may be composed of coding blocks (CBs) of different color components. For example, one CU contains one luminance CB and two chrominance CBs in the case of P slices and B slices in the 4:2:0 chroma format, and may be composed of single-component CBs. For example, one CU contains only one luminance CB or only two chrominance CBs in the case of I slices.
[0041] The following parameters are defined for the QTBT splitting scheme. - CTU size: The size of the root node of the quadtree, the same concept as in HEVC; - MinQTSize: The minimum size of the allowed quadtree leaf nodes; - MaxBTSize: The maximum allowed binary tree root node size; - MaxBTDepth: The maximum allowed binary tree depth; - MinBTSize: The minimum allowed binary tree leaf node size.
[0042] In an example of the QTBT partitioning structure, the CTU size is set as 128×128 luminance samples having two corresponding 64×64 blocks of chrominance samples (having a 4:2:0 chrominance format), MinQTSize is set as 16×16, MaxBTSize is set as 64×64, MinBTSize (for both width and height) is set as 4×4, and MaxBTDepth is set as 4. The quadtree partitioning is first applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes can have sizes ranging from 16×16 (i.e., MinQTSize) to 128×128 (i.e., CTU size). When the quadtree leaf node is 128×128, since its size exceeds MaxBTSize (i.e., 64×64), it is not further divided by the binary tree. Otherwise, the quadtree leaf node may be further divided by the binary tree. Thus, the quadtree leaf node is also the root node of the binary tree, and the depth of the binary tree is 0. When the depth of the binary tree reaches MaxBTDepth (i.e., 4), no further division is considered. When the binary tree node has a width equal to MinBTSize (i.e., 4), no further horizontal division is considered. Similarly, when the binary tree node has a height equal to MinBTSize, no further vertical division is considered. The leaf nodes of the binary tree are further processed by the prediction and transformation processes without further division. In JEM, the maximum CTU size is 256×256 luminance samples.
[0043] An example of block splitting by using the QTBT scheme and the corresponding tree representation are shown in FIG. 3. Solid lines indicate quadtree splitting, and dotted lines indicate binary tree splitting. As shown in FIG. 3, the encoding tree unit 300 is first split by a quadtree structure, and three of the four quadtree leaf nodes 302, 304, 306, 308 are further split by a quadtree structure or a binary tree structure. For example, the quadtree leaf node 306 is further split by quadtree splitting, the quadtree leaf node 304 is further split into two leaf nodes 304a and 304b by binary tree splitting, and the quadtree leaf node 302 is also further split by binary tree splitting. At each split (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which split type (i.e., horizontal or vertical) is used, where 0 indicates horizontal splitting and 1 indicates vertical splitting. For example, 0 is signaled for the quadtree leaf node 304 to indicate horizontal splitting, and 1 is signaled for the quadtree leaf node 302 to indicate vertical splitting. In the case of quadtree splitting, since the quadtree splitting always splits the block both horizontally and vertically to generate four sub-blocks of the same size, there is no need to indicate the split type.
[0044] Furthermore, the QTBT scheme supports the ability that the luminance and chrominance have separate QTBT structures. Currently, for P slices and B slices, the luminance CTB and chrominance CTB within one CTU share the same QTBT structure. However, for I slices, the luminance CTB is split into CUs by the QTBT structure, and the chrominance CTB is split into chrominance CUs by another QTBT structure. This means that the CUs within an I slice consist of the encoded blocks of the luminance component or the encoded blocks of two chrominance components, while the CUs within a P or B slice consist of the encoded blocks of all three color components.
[0045] VVC (Versatile Video Coding) At the JVET (Joint Video Experts Team) meeting, JVET defined the first draft of the VVC (Versatile Video Coding) and VVC Test Model 1 (VTM1) coding methods. As the initial new coding features of VVC, it was decided to include a quadtree with nested multi-type trees using binary and ternary to code the block structure.
[0046] In VVC, the picture partitioning structure divides the input video into blocks called coding tree units (CTUs). A CTU is divided into coding units (CUs) that have leaf coding units (CUs) defining regions sharing the same prediction mode (e.g., intra or inter) using a quadtree with a nested multi-type tree structure. The term "unit" defines the region of the picture covering all components, and the term "block" is used to define the region covering a specific component (e.g., luminance), and may have different spatial positions when considering a chroma sampling format such as 4:2:0.
[0047] Partitioning of a Picture into CTUs FIG. 4 is a schematic diagram showing an example of a picture divided into CTUs according to some implementations of the present disclosure.
[0048] In VVC, a picture is divided into a sequence of CTUs, and the concept of CTU is the same as that of HEVC. For a picture with three sample arrays, a CTU consists of an N×N block of luminance samples and two corresponding blocks of chroma samples. FIG. 4 shows an example of a picture 400 divided into CTU 402.
[0049] The maximum allowable size of the luminance block within a CTU is specified as 128×128 (although the maximum size of the luminance transform block is 64×64).
[0050] Partitioning of CTU Using a Tree Structure FIG. 5 is a schematic diagram showing a multi-type tree partitioning mode according to some implementations of the present disclosure.
[0051] In HEVC, in order for the CTU to adapt to various local characteristics, it is divided into CUs by using a quadtree structure shown as an encoding tree. The decision of whether to encode a picture area using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the leaf CU level. Each leaf CU may be further divided into one, two, or four PUs according to the PU partition type. Within one PU, the same prediction process is applied, and the relevant information is sent to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU partition type, the leaf CU may be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree of the CU. One of the important features of the HEVC structure is that it has multiple partition concepts including CUs, PUs, and TUs.
[0052] In VVC, a quadtree with a nested multi-type tree using a 2-way and 3-way segmentation structure replaces the concept of multiple partition unit types, that is, it eliminates the separation of the concepts of CU, PU, and TU, except for CUs with sizes that are too large for the maximum transform length, and supports further flexibility in CU partition shapes. In the coding tree structure, a CU can have either a square or rectangular shape. A Coding Tree Unit (CTU) is first divided by a quadtree (i.e., quad tree) structure. Next, the quadtree leaf nodes may be further divided by a multi-type tree structure. As shown in FIG. 5, the multi-type tree structure has four split types: vertical 2-way split 502 (SPLIT_BT_VER), horizontal 2-way split 504 (SPLIT_BT_HOR), vertical 3-way split 506 (SPLIT_TT_VER), and horizontal 3-way split 508 (SPLIT_TT_HOR). The multi-type tree leaf nodes are called Coding Units (CUs), and this segmentation is used for the prediction and transform processes without further splitting as long as the CU is not too large for the maximum transform length. That is, in most cases, in a quadtree with a nested multi-type tree coding block structure, the block sizes of the CU, PU, and TU are the same. This exception occurs when the maximum supported transform length is smaller than the width or height of the color components of the CU. In VTM1, a CU consists of coding blocks (CBs) of different color components. For example, one CU includes one luma CB and two chroma CBs (except when the video is monochrome, i.e., has only one color component).
[0053] Partitioning of a CU into Multiple Prediction Units In VVC, for each CU partitioned based on the above structure, the prediction of the block content can be performed for the entire CU block or in a sub-block manner described in the following paragraphs. Such an operation unit for prediction is called a Prediction Unit (or PU).
[0054] In the case of intra prediction (or intra-frame prediction), usually, the size of the PU is equal to the size of the CU. That is, prediction is performed for the entire CU block. In the case of inter prediction (or inter-frame prediction), the size of the PU may be less than or equal to the size of the CU. In other words, for prediction, the CU may be divided into a plurality of PUs in some cases.
[0055] Examples of making the PU size smaller than the CU size include the affine prediction mode, the ATMVP (Advanced Temporal Level Motion Vector Prediction) mode, the triangular prediction mode, and the like.
[0056] Under the affine prediction mode, the CU can be divided into a plurality of 4×4 PUs for prediction. Motion vectors may be derived for each 4×4 PU, and motion compensation may be performed accordingly for the 4×4 PUs. Under the ATMVP mode, the CU can be divided into one or more 8×8 PUs for prediction. Motion vectors are derived for each 8×8 PU, and motion compensation may be performed accordingly on the 8×8 PUs. Under the triangular prediction mode, the CU can be divided into two triangular prediction units. Motion vectors are derived for each PU, and motion compensation is performed accordingly. The triangular prediction mode is supported for inter prediction. Further details of the triangular prediction mode are shown below.
[0057] Triangular Prediction Mode FIG. 6 is a schematic diagram showing the division of a CU into triangular prediction units according to some implementations of the present disclosure.
[0058] The concept of the triangular prediction mode is to introduce triangular partitioning for motion compensation prediction. Also, the triangular prediction mode can be named the triangular prediction unit mode. As shown in FIG. 6, CU602 or 604 is divided into two triangular prediction units PU1 and PU2 either in the diagonal direction or the anti-diagonal direction (i.e., divided from the upper left corner to the lower right corner as shown in CU602, or divided from the upper right corner to the lower left corner as shown in CU604). Each triangular prediction unit within the CU is inter-predicted using its own uni-prediction motion vector and reference frame index derived from the uni-prediction candidate list. After predicting the triangular prediction units, an adaptive weighting process is performed on the diagonal edges. Next, the transformation and quantization processes are applied to the entire CU. Note that this mode is only applicable to the skip mode and the merge mode in the current VVC. In FIG. 6, the CU is shown as a square block, but the triangular prediction mode may similarly be applied to non-square (i.e., rectangular) shaped CUs.
[0059] The uni-prediction candidate list can include one or more candidates, and each candidate can be a motion vector. Thus, throughout the present disclosure, the terms "uni-prediction candidate list", "uni-prediction motion vector candidate list", and "uni-prediction merge list" may be used interchangeably, and the terms "uni-prediction merge candidate" and "uni-prediction motion vector" may be used interchangeably.
[0060] Uni-prediction motion vector candidate list FIG. 7 is a schematic diagram showing the positions of neighboring blocks according to some implementations of the present disclosure.
[0061] In some examples, the uni-prediction motion vector candidate list can include from two to five uni-prediction motion vector candidates. In some other examples, other numbers may also be possible. It is derived from neighboring blocks. The uni-prediction motion vector candidate list is derived from seven neighboring blocks including five spatial neighboring blocks (1 to 5) and two temporal same-position blocks (6 to 7) as shown in FIG. 7. The motion vectors of the seven neighboring blocks are collected in the first merge list. And then, according to a specific order, based on the first merge list motion vectors, a uni-prediction candidate list is formed. Based on the order, the uni-prediction motion vectors from the first merge list are first put into the uni-prediction motion vector candidate list, then the reference picture List0 or L0 motion vector of the bi-prediction motion vector, then the reference picture List1 or L1 motion vector of the bi-prediction motion vector, and then the averaged motion vector of the L0 and L1 motion vectors of the bi-prediction motion vector follow. At that point, if the number of candidates is still less than the target number (which may be 5), zero motion vectors are added to the list to meet the target number.
[0062] Predictors are derived for each of the triangular PUs based on their motion vectors. It is worth noting that the derived predictors cover a larger area than the actual triangular PUs, and as a result, there is an overlapping area of the two predictors along the shared diagonal edge of the two triangular PUs. A weighting process is applied to the diagonal edge area between the two predictors to derive the final prediction of the CU. The weight coefficients currently used for luminance samples and chroma samples are {7 / 8, 6 / 8, 5 / 8, 4 / 8, 3 / 8, 2 / 8, 1 / 8} and {6 / 8, 4 / 8, 2 / 8} respectively.
[0063] Triangular Prediction Mode Syntax and Signaling The triangular prediction mode is signaled using a triangular prediction flag. The triangular prediction flag is signaled when the CU is coded in either skip mode or merge mode. For a given CU, if the triangular prediction flag has a value of 1, it means that the corresponding CU is coded using the triangular prediction mode. Otherwise, the CU is coded using a prediction mode other than the triangular prediction mode.
[0064] For example, the triangular prediction flag is conditionally signaled in either skip mode or merge mode. First, the enable / disable flag of the triangular prediction tool is signaled in the sequence parameter set (or SPS). The triangular prediction flag is signaled at the CU level only if this triangular prediction tool enable / disable flag is true. Second, the triangular prediction tool is permitted only in B slices. Therefore, the triangular prediction flag is signaled at the CU level only in B slices. Third, the triangular prediction mode is signaled only for CUs having a size greater than a specific threshold. If the CU has a size smaller than that threshold, the triangular prediction flag is not signaled. Fourth, the triangular prediction mode can be signaled for a CU only if the CU is not coded in the sub-block merge mode including both the affine mode and the ATMVP mode. In the above four cases, when the triangular prediction flag is not signaled, it is inferred as 0 at the decoder side.
[0065] When the triangular prediction flag is signaled, it is signaled using a CABAC (Context-adaptive binary arithmetic coding) entropy coder having a specific context. The context is formed based on the triangular prediction flag values of the left and upper blocks of the current CU.
[0066] To encode (i.e., either encode or decode) the triangular prediction flag of the current block (or current CU), the triangular prediction flags from both the left and upper blocks (or CUs) are derived and their values are summed. This enables three contexts corresponding to the following cases: 1) Both the left block and the upper block have a triangular prediction flag of 0; 2) Both the left block and the upper block have a triangular prediction flag of 1; 3) Otherwise.
[0067] Separate probabilities are maintained for each of the three contexts. When the context value is determined for the current block, the triangular prediction flag of the current block is encoded using the CABAC probability model corresponding to that context value.
[0068] If the triangular prediction flag is true, the triangular partition orientation flag is signaled to indicate whether the partition is oriented from the upper left corner to the lower right corner or from the upper right corner to the lower left corner.
[0069] When the triangular prediction mode is used for a CU, two index values are signaled to indicate the index values of the first and second uni-prediction merge candidates for triangular prediction, respectively. These two index values are used to find two merge candidates from the above-mentioned uni-prediction motion vector candidate list for the first and second partitions, respectively. In the case of triangular prediction, the two index values need to be different so that the two predictors of the two triangular partitions are different from each other. As a result, the first index value is directly signaled. To signal the second index value, if the second index value is smaller than the first index value, that value is directly signaled. Otherwise, the value is subtracted by 1 before being signaled to the decoder. On the decoder side, the first index is decoded and used directly. To decode the second index value, the value indicated as "idx" is first decoded from the CABAC engine. If idx is smaller than the first index value, the second index value is equal to the value of idx. Otherwise, the second index value is equal to (idx + 1).
[0070] Geometric merge mode Under the geometric merge mode (i.e., GEO), a CU can be divided into two prediction units (i.e., geometric PUs) according to geometric partitioning. FIG. 8 shows some examples of geometric partitioning according to some implementations of the present disclosure. As shown in FIG. 8, a CU may be divided into two PUs along a line that is not exactly diagonal, and the two PUs may have geometric shapes such as triangles, wedges, or trapezoids. The geometric merge mode can be considered an extension of the triangular prediction mode or a superset of the triangular prediction mode.
[0071] FIG. 9 is a schematic diagram showing an example of a geometric partitioning representation according to some implementations of the present disclosure. As shown in FIG. 9, when a GEO partition is given, signaling for the partition requires signaling for the angle α and the separation line displacement denoted as ρ relative to the center of the block. Here, α represents a quantized angle between 0 and 360 degrees.
[0072] Similar to the triangular prediction mode, under GEO partitioning, only uni-prediction is allowed for each of the two GEO partitions. As a result, the memory bandwidth requirement in this mode does not exceed that for the bi-prediction block on the decoder side. The motion vector prediction for GEO partitioning is combined with the triangular prediction mode. Also, similar to the triangular prediction mode, a blending operation based on weighted average can be applied to the inner boundary between the two partitions in the geometric merge mode. Therefore, the techniques related to motion compensation prediction using the triangular prediction unit can also be applied to motion compensation prediction using the geometric shape prediction unit.
[0073] Regular merge mode motion vector candidate list According to the current VVC, under the regular merge mode where the entire CU is predicted without dividing it into one or more PUs, the motion vector candidate list or the merge candidate list is constructed using a procedure different from the triangular prediction mode.
[0074] First, as shown in FIG. 10, which is a schematic diagram showing the positions of spatial merge candidates according to some embodiments of the present disclosure, spatial motion vector candidates are selected based on motion vectors from neighboring blocks. In deriving the spatial merge candidates for the current block 1002, up to four merge candidates are selected from the candidates at the positions as shown in FIG. 10. These candidates are selected in a certain order. One exemplary order of derivation is A1→B1→B0→A0→(B2). The position B2 is considered only when any of the PUs at positions A1, B1, B0, A0 is not available or is intra-coded. Note that other different orders may be used.
[0075] Next, time merge candidates are derived. In the derivation of time merge candidates, the scaled motion vectors are derived based on PUs placed at the same position in a picture having the minimum picture order count (POC) difference from the current picture within a given reference picture list. The reference picture list used for the derivation of the PUs placed at the same position is explicitly signaled in the slice header. The scaled motion vectors for time merge candidates are obtained as shown by the dotted line in FIG. 11 showing motion vector scaling for time merge candidates according to some implementations of the present disclosure. The scaled motion vectors for time merge candidates are scaled from the motion vectors of the PU col_PU placed at the same position using the POC distances tb and td, where tb is defined as the POC difference between the reference picture curr_ref of the current picture and the current picture curr_pic, and td is defined as the POC difference between the reference picture col_ref of the picture placed at the same position and the picture col_pic placed at the same position. The reference picture index for the time merge candidate is set equal to zero. A practical implementation of the scaling process is described in the HEVC draft specification. In the case of a B slice, two motion vectors, i.e., one for reference picture List0 and the other for reference picture List1, are obtained and combined to create a bi-prediction merge candidate.
[0076] FIG. 12 is a schematic diagram showing candidate positions of time merge candidates according to some implementations of the present disclosure.
[0077] The position of the PU at the same position is selected between two candidate positions C3 and H as shown in FIG. 12. If the PU at position H is not available, or is intra-coded, or is outside the current CTU, position C3 is used for the derivation of time merge candidates. Otherwise, position H is used for the derivation of time merge candidates.
[0078] As described above, after inserting both the spatial motion vector and the temporal motion vector into the merge candidate list, history-based merge candidates are added. So-called history-based merge candidates include motion vectors from previously encoded CUs, and these motion vectors are kept in a separate motion vector list and managed based on certain rules.
[0079] After inserting the history-based candidates, if the merge candidate list is not full, pairwise average motion vector candidates are further added to the list. As its name indicates, this type of candidate is constructed by averaging the candidates already in the current list. More specifically, based on a certain order or rule, two candidates in the merge candidate list are taken out each time, and the average motion vector of the two candidates is added to the current list.
[0080] After inserting the pairwise average motion vector, if the merge candidate list is still not full, zero motion vectors are added to make the list full.
[0081] Construction of the First Merge List for Triangular Prediction Using the Regular Merge List Construction Process The triangular prediction mode in the current VVC shares some similarities with the regular merge prediction mode in its overall procedure for forming predictors. For example, under both prediction modes, the merge list needs to be constructed based on at least the spatial motion vectors in the vicinity of the current CU and the motion vectors at the same position. At the same time, the triangular prediction mode also has some aspects that are different from the regular merge prediction mode.
[0082] For example, it is necessary to construct a merge list under both the triangular prediction mode and the regular merge prediction mode, but the detailed procedures for constructing such a list are different.
[0083] These differences incur additional costs in codec implementation because additional logic is required. The procedures and logic for constructing the merge list may be unified and shared between the triangular prediction mode and the regular merge prediction mode.
[0084] In some examples, when forming a unidirectional prediction (also called uni-prediction) merge list for the triangular prediction mode, before adding a new motion vector to the merge list, the new motion vector is fully pruned against the motion vectors already in the list. In other words, the new motion vector is compared with each motion vector already in the uni-prediction merge list and added to the list only if it is different from all the motion vectors in that merge list. Otherwise, the new motion vector is not added to the list.
[0085] According to some examples of the present disclosure, under the triangular prediction mode, a unidirectional prediction merge list is constructed from a regular merge mode motion vector candidate list that may be referred to as a regular merge list.
[0086] Specifically, first, to construct a merge candidate list for the triangular prediction mode, a first merge list is constructed based on the merge list construction process for regular merge prediction. The first merge list includes a plurality of candidates each of which is a motion vector. Then, using the motion vectors of the first merge list, a unidirectional prediction merge list for the triangular prediction mode is further constructed.
[0087] Note that the first merge list constructed in this case may select a list size different from that of the general merge mode or the regular merge mode. In one example of the present disclosure, the first merge list has the same size as that of the general merge mode. In another example of the present disclosure, the constructed first merge list has a list size different from that of the list size of the general merge mode.
[0088] Construction of the Unidirectional Prediction Merge List from the First Merge List According to some examples of the present disclosure, the unidirectional prediction merge list for the triangular prediction mode can be constructed from the first merge list based on one of the following methods.
[0089] In one example of the present disclosure, to construct the unidirectional prediction merge list, the candidate prediction List0 motion vectors in the first merge list are checked and first selected into the unidirectional prediction merge list. After this process, if the unidirectional prediction merge list is not full (e.g., the number of candidates in this list is still less than the target number), the candidate prediction List1 motion vectors in the first merge list are checked and selected into the unidirectional prediction merge list. If the unidirectional prediction merge list is still not full, the prediction List0 zero vector is added to the unidirectional prediction merge list. If the unidirectional prediction merge list is still not full, the prediction List1 zero vector is added to the unidirectional prediction merge list.
[0090] In another example of the present disclosure, for each candidate in the first merge list, its prediction List0 motion vector and prediction List1 motion vector are added to the unidirectional prediction merge list in an interleaved manner. More specifically, for each candidate in the first merge list, if the candidate is a unidirectional prediction motion vector, it is directly added to the unidirectional prediction merge list. Otherwise, if the candidate is a bidirectional prediction motion vector in the first merge list, its prediction List0 motion vector is first added to the unidirectional prediction merge list, and subsequently its prediction List1 motion vector is added. All motion vector candidates in the first merge list are checked and added, but if the unidirectional prediction merge list is still not full, a unidirectional prediction zero motion vector can be added. For example, for each reference frame index, the prediction List0 zero motion vector and the prediction List1 zero motion vector may be separately added to the unidirectional prediction merge list until the list is full.
[0091] In yet another example of the present disclosure, a unidirectional prediction motion vector from the first merge list is first selected into the unidirectional prediction merge list. After this process, if the unidirectional prediction merge list is not full, for each bidirectional prediction motion vector in the first merge list, its predicted List0 motion vector is first added to the unidirectional prediction merge list, and subsequently its predicted List1 motion vector is added. After this process, if the unidirectional prediction merge list is still not full, a unidirectional prediction zero motion vector can be added. For example, for each reference frame index, the predicted List0 zero motion vector and the predicted List1 zero motion vector may be separately added to the unidirectional prediction merge list until the list is full.
[0092] In the above description, when a unidirectional prediction motion vector is added to the unidirectional prediction merge list, a motion vector pruning process may be performed to confirm that the new motion vector to be added is different from the motion vectors already in the unidirectional prediction merge list. Such a motion vector pruning process may be partially performed to further reduce complexity, for example, checking only some of the new motion vectors to be added against some but not all of the motion vectors already in the unidirectional prediction merge list. In an extreme case, no motion vector pruning (i.e., motion vector comparison operation) is performed in the process.
[0093] Construction of the Unidirectional Prediction Merge List from the First Merge List Based on the Picture Prediction Configuration In some examples of the present disclosure, the uni prediction merge list can be constructed in an adaptive manner based on whether the current picture uses backward prediction. For example, the uni prediction merge list may be constructed using different methods depending on whether the current picture uses backward prediction. If the picture order count (POC) values of all reference pictures are not greater than the POC value of the current picture, it means that the current picture does not use backward prediction.
[0094] In one example of the present disclosure, when the current picture does not use backward prediction, or when it is determined that the current picture does not use backward prediction, the predicted List0 motion vectors of the candidates in the first merge list are first checked and selected into the uni-directional prediction merge list, and then the predicted List1 motion vectors of those candidates follow. If the uni-directional prediction merge list is not yet full, a uni-directional prediction zero motion vector can be added. Otherwise, when the current picture uses backward prediction, the predicted List0 and List1 motion vectors of each candidate in the first merge list are checked and can be selected into the uni-directional prediction merge list in an interleaved manner as described above, that is, the predicted List0 motion vector of the first candidate in the first merge list is added, followed by the predicted List1 motion vector of the first candidate, then the predicted List0 motion vector of the second candidate is added, followed by the predicted List1 motion vector of the second candidate. At the end of the process, if the uni-directional prediction merge list is not yet full, a uni-directional prediction zero vector can be added.
[0095] In another example of the present disclosure, when the current picture does not use backward prediction, the predicted List1 motion vectors of the candidates in the first merge list are checked and first selected into the uni-directional prediction merge list, and then the predicted List0 motion vectors of those candidates follow. If the uni-directional prediction merge list is not yet full, a uni-directional prediction zero motion vector can be added. Otherwise, when the current picture uses backward prediction, the predicted List0 and List1 motion vectors of each candidate in the first merge list are checked and can be selected into the uni-directional prediction merge list in an interleaved manner as described above, that is, the predicted List0 motion vector of the first candidate in the first merge list is added, followed by the predicted List1 motion vector of the first candidate, then the predicted List0 motion vector of the second candidate is added, followed by the predicted List1 motion vector of the second candidate. At the end of the process, if the uni-directional prediction merge list is not yet full, a uni-directional prediction zero vector can be added.
[0096] In yet another example of the present disclosure, when the current picture does not use backward prediction, only the predicted List0 motion vectors of the candidates in the first merge list are checked and first selected into the uni-directional prediction merge list. If the uni-directional prediction merge list is not yet full, a uni-directional prediction zero motion vector can be added. Otherwise, when the current picture uses backward prediction, the predicted List0 and List1 motion vectors of each candidate in the first merge list are checked and can be selected into the uni-directional prediction merge list in an interleaved manner as described above, i.e., adding the predicted List0 motion vector of the first candidate in the first merge list, followed by adding the predicted List1 motion vector of the first candidate, then adding the predicted List0 motion vector of the second candidate, and followed by adding the predicted List1 motion vector of the second candidate. At the end of the process, if the uni-directional prediction merge list is not yet full, a uni-directional prediction zero vector can be added.
[0097] In yet another example of the present disclosure, when the current picture does not use backward prediction, only the predicted List1 motion vectors of the candidates in the first merge list are first checked and selected into the uni-directional prediction merge list. If the uni-directional prediction merge list is not yet full, a uni-directional prediction zero motion vector may be added. Otherwise, when the current picture uses backward prediction, the predicted List0 and List1 motion vectors of each candidate in the first merge list are checked and can be selected into the uni-directional prediction merge list in an interleaved manner as described above, i.e., adding the predicted List0 motion vector of the first candidate in the first merge list, followed by adding the predicted List1 motion vector of the first candidate, then adding the predicted List0 motion vector of the second candidate, and followed by adding the predicted List1 motion vector of the second candidate. At the end of the process, if the uni-directional prediction merge list is not yet full, a uni-directional prediction zero vector can be added.
[0098] In the above example, a unidirectional prediction merge list for triangular prediction is constructed by moving from the first merge list to the unidirectional prediction merge list and selecting motion vectors. However, in practice, it may be implemented in different ways, with or without using a physically formed unidirectional prediction (or uni-prediction) merge list. In some examples, the first merge list can be used directly without physically creating a unidirectional prediction merge list. For example, the motion vectors of List0 and / or List1 for each candidate in the first merge list can simply be indexed based on a particular order and accessed directly from the first merge list. That is, after constructing a first merge list that includes a plurality of candidates, each of which is one or more motion vectors, based on the merge list construction process for regular merge prediction, instead of constructing a unidirectional prediction merge list, an index list is constructed that includes a plurality of reference indexes, each of which is a reference to the motion vector of a candidate in the first merge list. Note that the indexing order can follow any of the selection orders described in the example where a unidirectional prediction merge list is constructed.
[0099] In one example of the present disclosure, when the current picture does not use backward prediction, the candidate predicted List0 motion vectors in the first merge list are used as unidirectional prediction merge candidates indexed in the same index order as those in the first merge list. That is, if it is determined that the POC of the current picture is greater than each POC of the reference pictures, the reference index is arranged according to the same order of the List0 motion vectors of the candidates in the first merge list. Otherwise, when the current picture uses backward prediction, the List0 and List1 motion vectors of each candidate in the first merge list are used as unidirectional prediction merge candidates indexed based on an interleaving method, that is, following the List0 motion vector of the first candidate in the first merge list is the List1 motion vector of the first candidate, then following the List0 motion vector of the second candidate is the List1 of the second candidate, and so on. That is, if it is determined that the POC of the current picture is smaller than at least one of the POCs of the reference pictures, the reference index is arranged according to the interleaving method of the List0 and List1 motion vectors of each candidate in the first merge list, and the candidates are bidirectional prediction motion vectors. When the candidate in the first merge list is a unidirectional motion vector, a zero motion vector is indexed as the unidirectional prediction merge candidate following the motion vector of that candidate. Thereby, when the current picture uses backward prediction, each candidate in the first merge list is guaranteed to provide two unidirectional motion vectors as unidirectional prediction merge candidates regardless of whether it is a bidirectional or unidirectional prediction motion vector.
[0100] In another example of the present disclosure, when the current picture does not use backward prediction, the predicted List0 motion vectors of the candidates in the first merge list are used as unidirectional prediction merge candidates indexed in the same index order as those in the first merge list. Otherwise, when the current picture uses backward prediction, the List0 and List1 motion vectors of each candidate in the first merge list are used as unidirectional prediction merge candidates, indexed based on the interleaving method as described above, that is, following the List0 motion vector of the first candidate in the first merge list is the List1 motion vector of the first candidate, then following the List0 motion vector of the second candidate is the List1 motion vector of the second candidate. When the candidate in the first merge list is a unidirectional motion vector, a motion vector with a certain motion offset added is indexed as the unidirectional prediction merge candidate following the motion vector of the candidate.
[0101] In the above process, when examining new motion vectors to be added to the unidirectional prediction merge list, pruning may be performed fully or partially. If it is performed partially, it means that the new motion vectors are compared with some but not all of the motion vectors already in the uni prediction merge list. In an extreme case, motion vector pruning (i.e., the motion vector comparison operation) is not performed in this process.
[0102] Motion vector pruning may also be adaptively performed when forming the uni prediction merge list based on whether the current picture uses backward prediction or not. For example, in the example of the present disclosure regarding the index list configuration based on the picture prediction configuration, when the current picture does not use backward prediction, the motion vector pruning operation is performed fully or partially. When the current picture uses backward prediction, the motion vector pruning operation is not performed.
[0103] Selection of Uni Prediction Merge Candidates for Triangular Prediction Mode In addition to the above example, other methods of uni-prediction merge list construction or uni-prediction merge candidate selection are disclosed.
[0104] In one example of the present disclosure, when a first merge list for regular merge mode is constructed, uni-prediction merge candidates can be selected for triangular prediction according to the following rules.
[0105] For a motion vector candidate in the first merge list, only one of its List0 or List1 motion vectors is used for triangular prediction.
[0106] For a given motion vector candidate in the first merge list, if its merge index value in the list is even, its List0 motion vector is used for triangular prediction if available, and if this motion vector candidate does not include the List1 motion vector, its List0 motion vector is used for triangular prediction.
[0107] For a given motion vector candidate in the first merge list, if its merge index value in the list is odd, its List1 motion vector is used for triangular prediction if available, and if this motion vector candidate does not include the List1 motion vector, its List0 motion vector is used for triangular prediction.
[0108] FIG. 13A shows an example of uni-prediction motion vector (MV) selection (or uni-prediction merge candidate selection) for the triangular prediction mode. In this example, the first N (for example, N is equal to 5) merge MV candidates derived from the first merge list are indexed from 0 to (N-1), and each row has two columns, representing the motion vectors of List0 and List1 respectively for the candidates in the first merge list. Each candidate in the list may be either a uni-prediction or a bi-prediction. For a uni-prediction candidate, it has only the motion vector of List0 or List1, but not both. For a bi-prediction candidate, it has the motion vectors of both List0 and List1. In FIG. 13A, for each merge index, the motion vector marked with "×" is the motion vector that is first used for triangular prediction if available. If the motion vector marked with "×" is not available, the unmarked motion vector corresponding to the same merge index is used for triangular prediction.
[0109] The above concept can be extended to other examples. FIG. 13B shows another example of uni-prediction motion vector (MV) selection for the triangular prediction mode. According to FIG. 13B, the rules for selecting uni-prediction merge candidates for triangular prediction are as follows.
[0110] For the motion vector candidates in the first merge list, only one of its List0 or List1 motion vectors is used for triangular prediction.
[0111] For a given motion vector candidate in the first merge list, if the merge index value in the list is even, its List1 motion vector is used for triangular prediction if available, and if this motion vector candidate does not include the List1 motion vector, its List0 motion vector is used for triangular prediction.
[0112] For a given motion vector candidate in the first merge list, if the merge index value of that candidate in the list is odd, if its List0 motion vector is available, it is used for triangular prediction, and if this motion vector candidate does not include the List0 motion vector, its List1 motion vector is used for triangular prediction.
[0113] In some examples, different other orders can be defined and used to select the uni-prediction merge candidates for triangular prediction from the motion vector candidates in the first merge list. More specifically, for a given motion vector candidate in the first merge list, the determination of whether its List0 or List1 motion vector is first used when available for triangular prediction does not necessarily depend on the parity of the index value of the candidate in the first merge list as described above. For example, the following rules can also be used.
[0114] For a motion vector candidate in the first merge list, only one of its List0 or List1 motion vectors is used for triangular prediction.
[0115] Based on a predetermined pattern, for some motion vector candidates in the first merge list, if their List0 motion vectors are available, they are used for triangular prediction, and if the List0 motion vectors do not exist, the corresponding List1 motion vectors are used for triangular prediction.
[0116] Based on the same predetermined pattern, for the remaining motion vector candidates in the first merge list, if their List1 motion vectors are available, they are used for triangular prediction, and if the List1 motion vectors do not exist, the corresponding List0 motion vectors are used for triangular prediction.
[0117] Figures 14A to 14D show some examples of a predetermined pattern in the uni-prediction motion vector (MV) selection for the triangular prediction mode. For each merge index, the motion vectors marked with "×" are the motion vectors that are first used for triangular prediction if they are available. If the motion vectors marked with "×" are not available, the unmarked motion vectors corresponding to the same merge index are used for triangular prediction.
[0118] In Figure 14A, for the first three motion vector candidates in the first merge list, their List0 motion vectors are first checked. Only if the List0 motion vectors are not available, the corresponding List1 motion vectors are used for triangular prediction. For the fourth and fifth motion vector candidates in the first merge list, their List1 motion vectors are first checked. Only if the List1 motion vectors are not available, the corresponding List0 motion vectors are used for triangular prediction. Figures 14B to 14D show three other patterns when selecting uni-prediction merge candidates from the first merge list. The examples shown in the drawings are not limiting, and there are additional examples. For example, versions mirrored horizontally and / or vertically of the patterns shown in Figures 14A to 14D can also be used.
[0119] The concepts illustrated by some embodiments may be used in conjunction with the concepts illustrated by some other embodiments of the present disclosure. According to an example of the present disclosure, for a given motion vector candidate in the first merge list, the determination of whether its motion vector in List0 or List1 is first used when it is available for triangular and / or geometric prediction may further depend on whether the current picture and / or slice uses backward prediction. FIGS. 15A-15B are schematic diagrams showing examples of uni-prediction MV selection for the triangular prediction mode according to some implementations of the present disclosure. As shown in FIG. 15A, when the current picture and / or slice uses backward prediction, the selection order between the candidate motion vectors in List0 and List1 is based on the parity of the index value of the candidate in the first merge list. When the current picture and / or slice does not use backward prediction, the candidate Listx (x is 0 or 1) motion vector is preferred and is first selected if available, and an example where x is equal to 0 is shown in FIG. 15B. Similar to the other examples described above, if the uni-prediction motion vector is not available for a certain candidate in the first merge list, the corresponding uni-prediction motion vector of the same candidate from another reference list is selected. As a result, for each candidate in the first merge list, a uni-prediction motion vector can be obtained and used in the triangular and / or geometric prediction mode. The obtained uni-prediction motion vector shares the same index value as the merge candidate in the first merge list.
[0120] Flexible Merge List Construction and Candidate Index Signaling for Triangular Prediction Mode In one example of the present disclosure, when a first merge list for the regular merge mode is constructed, a uni-prediction motion vector is selected directly from that list for triangular prediction. To indicate a motion vector of a certain List0 or List1 used for triangular prediction, first, an index value is signaled to indicate which candidate is selected from the first merge list. Next, a binary reference list indication flag (referred to as L0L1_flag) is signaled to indicate whether the List0 or List1 motion vector of the candidate selected from the first merge list is selected for the first partition of triangular prediction. The same signaling method is used to indicate a motion vector of a second List0 or List1 used for the second partition of triangular prediction. For example, the syntax signaled for a triangular mode coded CU can include index1, L0L1_flag1, index2, L0L1_flag2. Here, index1 and index2 are the merge index values of two candidates selected from the first merge lists of the first and second partitions, respectively. Index1 and index2 are used to find the candidates (i.e., the first candidate and the second candidate) of the first partition and the second partition, respectively. L0L1_flag1 is a binary flag of the first partition indicating whether the List0 or List1 motion vector of the candidate selected based on index1 of the first merge list is selected. L0L1_flag2 is a binary flag of the second partition indicating whether the List0 or List1 motion vector of the candidate selected based on index2 of the first merge list is selected. The uni-prediction MV for the first partition is obtained by selecting ListX1MV of the first candidate according to the first binary reference list indication flag L0L1_flag1. Here, X1 takes a value of 0 or 1. The uni-prediction MV of the second partition is obtained by selecting ListX2MV of the second candidate according to the second binary reference list indication flag L0L1_flag2. Here, X2 takes a value of 0 or 1.
[0121] FIG. 16 is a schematic diagram showing an example of flexible uni-prediction MV selection for triangular prediction mode according to some implementations of the present disclosure. As shown in FIG. 16, all List0 and / or List1 motion vectors indicated by the symbol "×" within the rectangular box may be shown / signaled to the decoder to derive the prediction of the first partition, and all List0 and / or List1 motion vectors indicated by the symbol "×" within the rectangular box may be shown / signaled to the decoder to derive the prediction of the second partition under the triangular prediction mode. As a result, the selection of the uni-prediction motion vector from the first merge list becomes very flexible. Given a first merge list having a size of N candidates, up to 2N uni-prediction motion vectors can be used for each of the two triangular partitions. The two merge index values for the two partitions under the triangular prediction mode do not have to be different from each other. In other words, they can take the same value. The index values are signaled directly without adjustment before signaling. More specifically, unlike what is currently defined in VVC, the second index value is signaled directly to the decoder without performing any adjustment to the value before signaling.
[0122] In another example of the disclosure, when the two index values are the same, there is no need to signal the binary flag of the second partition L0L1_flag2. Instead, it is assumed that there is an inverse value for the binary flag of the first partition L0L1_flag1. In other words, in this case, L0L1_flag2 can take the value of (1 - L0L1_flag1).
[0123] In yet another example of the present disclosure, the binary reference list indication flags, i.e., L0L1_flag1 and L0L1_flag2, can be coded as CABAC context bins. The context used for L0L1_flag1 may be different from the context used for L0L1_flag2. The CABAC probabilities under each context can be initialized at the start of the video sequence, and / or at the start of a picture, and / or at the start of a tile group. In this example, different context modeling methods can be used to code these two flags. In one method, the context model selection for the second flag may depend on the value of the first flag. In other words, at least two context models can be used to code the second flag, and the context model is selected based on the value of the first flag that is signaled. In another method, the CABAC probabilities under each context model can be initialized differently depending on whether the current picture uses backward prediction or not. When the picture uses backward prediction, the probabilities may be initialized higher for the flags to indicate a particular list, e.g., List0. In yet another method, the first flag may be coded as a bypass bin, and only the second flag may be coded as a context bin. The methods mentioned here can be used separately or together.
[0124] In yet another example of the disclosure, when there is no motion vector indicated by the merge index value and the associated binary reference list indication flag, i.e., L0L1_flag, instead, a uni-predicted zero motion vector may be used. That is, when it is determined that the first candidate ListX1MV does not exist, the uni-predicted zero MV is selected as the uni-predicted MV for the first partition, and when it is determined that the second candidate ListX2MV does not exist, the uni-predicted zero MV is selected as the uni-predicted MV for the second partition.
[0125] In yet another example of the present disclosure, if there is no motion vector indicated by the merge index value and the associated L0L1_flag, the corresponding motion vector indicated by the same merge index value but from another list, i.e., List(1 - L0L1_flag), may be used instead. That is, when it is determined that the first candidate ListX1MV does not exist, the first candidate list (1 - X1)MV is selected to obtain the uni-predicted MV of the first partition, and when it is determined that the second candidate ListX2MV does not exist, the second candidate list (1 - X2)MV is selected to obtain the uni-predicted MV of the second partition.
[0126] In yet another example of the present disclosure, for triangular mode encoded CUs, the second L0L1_flag (i.e., L0L1_flag2) associated with the second index (i.e., index2) is not signaled and is always inferred. Even in this case, it is necessary to signal the index1, L0L1_flag1, and index2 syntax. In one way, L0L1_flag2 is inferred based on the value of L0L1_flag1 and whether the current picture uses backward prediction. More specifically, for triangular mode encoded CUs, if the current picture uses backward prediction, the value of L0L1_flag2 is inferred to be the binary value opposite to that of L0L1_flag1 (i.e., 1 - L0L1_flag1), and if the current picture does not use backward prediction, the value of L0L1_flag2 is inferred to be the same as L0L1_flag1. Further, if the current picture does not use backward prediction, since both of the two motion vectors (one for each triangular partition) are from the same prediction list, it is possible to further enforce that the value of index2 is different from the value of index1. If index2 has a value equal to index1, it means that the same motion vector is used for both triangular partitions, which is not useful from the perspective of coding efficiency. In this case, when signaling the value of index2, the same adjustment as the current VVC design for index2 signaling can be performed on the value of index2 before index2 quantization. For example, if the actual value of index1 is smaller than the value of index2, the CABAC2 quantization coding word corresponding to (index2 - 1) is used to signal the value of index2, and otherwise, the CABAC2 quantization coding word corresponding to index2 is used to signal the value of index2. Based on this example of the present disclosure, alternatively, enforcing index2 to have a value different from index1 can also be applied when the current picture uses backward prediction, along with the same adjustment of the value of index2 for CABAC2 quantization.
[0127] In yet another example of the disclosure, for CUs encoded in triangular mode, neither L0L1_flag is signaled. Instead, both are inferred. In this case, the index1 syntax and the index2 syntax need to perform signaling representing two candidate merge index values respectively selected from the first merge lists of the first partition and the second partition. Given the merge candidate index values, several approaches can be defined or used when determining whether the corresponding merge candidate's List0 motion vector or List1 motion vector from the first list is selected for triangular mode prediction. In one approach, the pattern shown in FIG. 13A for index1 is used when determining from which prediction list the merge candidate's motion vector is selected for triangular mode prediction, and the pattern shown in FIG. 13B for index2 is used when determining from which prediction list the merge candidate's motion vector is selected for triangular mode prediction. That is, if index1 is an even value, the List0 motion vector of the candidate indicated by index1 is selected, and if index1 is an odd value, the List1 motion vector of the candidate indicated by index1 is selected. If index2 is an even value, the motion vector of List1 is selected, and if index2 is an odd value, the motion vector of List0 is selected. If there is no motion vector corresponding to a certain prediction list, instead, a certain default motion vector, for example, a zero motion vector, or a corresponding motion vector from another prediction list, etc. can be used. Also, the pattern shown in FIG. 13B can be used for index1 and the pattern shown in FIG. 13A can be used for index2 to determine from which prediction list to select the merge candidate's motion vector for triangular mode prediction. That is, L0L1_flag may be determined based on the values of index1 and index2.
[0128] The method in this disclosure is exemplified using the triangular prediction mode as an example. However, the geometric merge mode can be regarded as an extension or superset of the triangular prediction mode. Similarly, the method exemplified in this disclosure is naturally applicable to the geometric merge mode as well. All merge list construction methods shown in this disclosure can be naturally used for the geometric merge mode without any modification. Similarly, all merge index signaling methods shown in this disclosure can be naturally used for the geometric merge mode without any modification. In one example, the same merge list construction process according to FIG. 13A is used for the geometric merge mode. In another example, the same merge list construction process according to FIG. 13B is used for the geometric merge mode. Also, when both modes exist in VVC, it is worth mentioning that the same merge list construction process can be shared and used for both the triangular prediction mode and the geometric merge mode.
[0129] In some examples of this disclosure, a first merge list including five merge candidates is used. However, in practice, the size of the first merge list may be defined to be different, for example, 6 or 4, or some other values. It should be noted that the method shown in the embodiments is applicable when the first merge list has a size other than 5.
[0130] In the above example, motion vector pruning can also be performed. Such pruning can be performed fully or partially. When it is performed partially, it means that the new motion vectors are compared against some, but not all, of the motion vectors already in the uni-prediction merge list. This can also mean that only some, but not all, of the new motion vectors need to be checked for pruning before being used as merge candidates for triangular prediction. One particular example is that only the second motion vector is checked against the first motion vector for pruning before being used as a merge candidate for triangular prediction, and all other motion vectors are not checked for pruning. In an extreme case, motion vector pruning (i.e., the motion vector comparison operation) is not performed in this process.
[0131] FIG. 17 is a block diagram showing an apparatus for video encoding according to some implementations of the present disclosure. The apparatus 1700 may be a terminal such as a mobile phone, a tablet computer, a digital broadcast terminal, a tablet device, or a personal digital assistant.
[0132] As shown in FIG. 17, the apparatus 1700 can include one or more of a processing component 1702, a memory 1704, a power component 1706, a multimedia component 1408, an audio component 1710, an input / output (I / O) interface 1712, a sensor component 1714, and a communication component 1716.
[0133] The processing component 1702 generally controls the overall operation of the device 1700, such as operations related to display, call, data communication, camera operation, and recording operation. The processing component 1702 can include one or more processors 1720 for executing instructions to complete all or part of the steps of the above method. Further, the processing component 1702 can include one or more modules to facilitate the interaction between the processing component 1702 and other components. For example, the processing component 1702 can include a multimedia module to facilitate the interaction between the multimedia component 1708 and the processing component 1702.
[0134] The memory 1704 is configured to store different types of data to support the operation of the device 1700. Examples of such data include instructions for any application or method operating on the device 1700, contact data, phone book data, messages, photos, videos, and the like. The memory 1704 can be implemented by any type of volatile or non-volatile storage device or a combination thereof, and the memory 1704 can be SRAM (Static Random Access Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), EPROM (Erasable Programmable Read-Only Memory), PROM (Programmable Read-Only Memory), ROM (Read-Only Memory), magnetic memory, flash memory, magnetic disk, or compact disk.
[0135] The power component 1706 supplies power for different components of the device 1700. The power component 1706 can include a power management system, one or more power sources, and other components related to generating, managing, and distributing power for the device 1700.
[0136] The multimedia component 1708 includes a screen that provides an output interface between the device 1700 and the user. In some examples, the screen may include a liquid crystal display (LCD) and a touch panel (TP). If the screen includes a touch panel, the screen may be implemented as a touch screen that receives input signals from the user. The touch panel can include one or more touch sensors for sensing touches, slides, and gestures on the touch panel. The touch sensors can detect not only the boundaries of a touch or slide operation, but also the duration and pressure associated with the touch or slide operation. In some examples, the multimedia component 1708 can include a front camera and / or a rear camera. When the device 1700 is in an operation mode such as a shooting mode or a video mode, the front camera and / or the rear camera can receive external multimedia data.
[0137] The audio component 1710 is configured to output and / or input audio signals. For example, the audio component 1710 includes a microphone (MIC). When the device 1700 is in an operation mode such as a call mode, a recording mode, and a voice recognition mode, the microphone is configured to receive external audio signals. The received audio signals may be further stored in the memory 1704 or transmitted via the communication component 1716. In some examples, the audio component 1710 further includes a speaker for outputting audio signals.
[0138] The I / O interface 1712 provides an interface between the processing component 1702 and the peripheral interface module. The peripheral interface module may be a keyboard, a click wheel, buttons, etc. These buttons can include, but are not limited to, a home button, a volume button, a start button, and a lock button.
[0139] The sensor component 1714 includes one or more sensors for providing state evaluation to the device 1700 in different manners. For example, the sensor component 1714 can detect the on / off state of the device 1700 and the relative positions of components. For example, the components are the display and keypad of the device 1700. Also, the sensor component 1714 may detect changes in components of the device 1700 or the position of the device 1700, the presence or absence of user contact with the device 1700, the orientation or acceleration / deceleration of the device 1700, and temperature changes of the device 1700. The sensor component 1714 may include a proximity sensor configured to detect the presence of nearby objects without any physical touch. The sensor component 1714 may further include an optical sensor such as a CMOS or CCD image sensor used in an imaging application. In some examples, the sensor component 1714 may further include an acceleration sensor, a gyroscope sensor, a magnetic sensor, a pressure sensor, or a temperature sensor.
[0140] The communication component 1716 is configured to facilitate wired or wireless communication between the device 1700 and other devices. The device 1700 can access a wireless network based on communication standards such as WiFi, 4G, or a combination thereof. In one example, the communication component 1716 receives a broadcast signal or broadcast-related information from an external broadcast management system via a broadcast channel. In one example, the communication component 1716 can further include a near-field communication (NFC) module for facilitating short-range communication. For example, the NFC module can be implemented based on RFID (Radio Frequency Identification) technology, IrDA (infrared data association) technology, UWB (Ultra-Wide Band) technology, BT (Bluetooth (registered trademark)) technology, and other technologies.
[0141] In one example, to perform the above method, apparatus 1700 can be implemented by one or more of Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), controllers, microcontrollers, microprocessors, or other electronic elements.
[0142] The non-transitory computer-readable storage medium can be, for example, a hard disk drive (HDD), a solid state drive (SSD), flash memory, a SSHD (Hybrid Drive or Solid-State Hybrid Drive), a ROM (Read-Only Memory), a CD-ROM (Compact Disc Read-Only Memory), magnetic tape, a floppy (registered trademark) disk, and the like.
[0143] FIG. 18 is a flowchart illustrating an exemplary process of video encoding for motion compensation prediction using geometric partitioning according to some implementations of the present disclosure.
[0144] In step 1802, processor 1720 divides a video picture into a plurality of coding units (CUs), and at least one of the coding units (CUs) is further divided into two prediction units (PUs). The two PUs can include at least one geometric-shaped PU. For example, the geometric-shaped PU may include a pair of triangular PUs, a pair of wedge-shaped PUs, or other geometric-shaped PUs.
[0145] In step 1804, the processor 1720 constructs a first merge list including a plurality of candidates, where each candidate is a motion vector including a List0 motion vector and / or a List1 motion vector. For example, the processor 1720 can construct the first merge list based on a merge list construction process for regular merge prediction. The processor 1720 may similarly obtain the first merge list from other electronic devices or storage devices.
[0146] In step 1806, the processor 1720 detects a first candidate for the first PU according to the first index.
[0147] In step 1808, the processor 1720 detects a second candidate for the second PU according to the second index.
[0148] In step 1810, the processor 1720 obtains a first uni-prediction MV for the first PU by selecting the ListX1MV of the first candidate according to the first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag.
[0149] In step 1812, the processor 1720 obtains a second uni-prediction MV for the second PU by selecting the ListX2MV of the second candidate according to the second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag.
[0150] In some examples, a device for video encoding is provided. This device includes a processor 1720 and a memory 1704 configured to store instructions executable by the processor. When executing the instructions, the processor is configured to execute a method as shown in FIG. 18.
[0151] In some other examples, a non-transitory computer-readable storage medium 1704 having instructions stored therein is provided. When the instructions are executed by the processor 1720, the instructions cause the processor to perform a method as shown in FIG. 18.
[0152] The description of the present disclosure has been presented for purposes of illustration and is not intended to be exhaustive or to limit the present disclosure to the precise forms disclosed. Many modifications, variations, and alternative implementations will be apparent to those skilled in the art having the benefit of the teachings presented in the foregoing description and the related drawings.
[0153] The examples were chosen and described in order to explain the principles of the present disclosure and to enable others skilled in the art to understand the present disclosure for various implementations and to best utilize the principles and various implementations with various modifications suitable for the particular use contemplated. Accordingly, it is to be understood that the scope of the present disclosure should not be limited to the particular examples disclosed, and that modifications and other implementations are intended to be included within the scope of the present disclosure.
[0154] [Cross-Reference to Related Applications] This application claims priority to U.S. Provisional Application No. 62 / 913,710, entitled "Video Encoding Using Triangular Prediction," filed Oct. 10, 2019, and U.S. Provisional Application No. 62 / 948,781, entitled "Video Encoding Using Triangular Prediction," filed Dec. 16, 2019, the entireties of both of which are incorporated by reference for all purposes.
Claims
1. A video picture is divided into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU), Based on a merge list construction process for regular merge prediction, a first merge list including a plurality of candidates is constructed, and each of the plurality of candidates is a motion vector (MV) including List0MV and / or List1MV, Detect a first candidate of the first PU by a first index, Detect a second candidate of the second PU by a second index, Obtain a first uni-prediction MV of the first PU by determining ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag, Obtain a second uni-prediction MV of the second PU by determining ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag, A video coding method using geometric partitioning.
2. When it is determined that the first index and the second index are the same, it is determined that the second binary reference list indication flag has a value opposite to that of the first binary reference list indication flag, The video coding method using geometric partitioning according to Claim 1.
3. When it is determined that ListX1MV of the first candidate does not exist, select a uni-prediction zero MV as the first uni-prediction MV, or When it is determined that ListX2MV of the second candidate does not exist, select a uni-prediction zero MV as the second uni-prediction MV, The video coding method using geometric partitioning according to Claim 1.
4. When it is determined that backward prediction is used in the current picture, it is determined that the second binary reference list indication flag has a value opposite to that of the first binary reference list indication flag, When it is determined that backward prediction is not used in the current picture, it is determined that the second binary reference list indication flag has the same value as the first binary reference list indication flag, The video coding method using geometric partitioning according to Claim 1.
5. The first binary reference list indication flag and the second binary reference list indication flag are each determined based on the values of the first index and the second index. The video encoding method using geometric partitioning according to claim 1.
6. The first binary reference list indication flag and the second binary reference list indication flag are encoded as CABAC context bins. The video encoding method using geometric partitioning according to claim 1.
7. Based on the parity of the index values of the first candidate and the second candidate in the first merge list, the first binary reference list indication flag and the second binary reference list indication flag are each determined. The video encoding method using geometric partitioning according to claim 1.
8. One or more processors; A memory configured to store instructions executable by one or more of the processors; comprising When the instructions are executed, one or more of the processors divide a video picture into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU). Construct a first merge list including a plurality of candidates based on a merge list construction process for regular merge prediction, and each of the plurality of candidates is a motion vector (MV) including List0MV and / or List1MV. Detect a first candidate of the first PU by a first index. Detect a second candidate of the second PU by a second index. Obtain a first uni-prediction MV of the first PU by determining a ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag. Obtain a second uni-prediction MV of the second PU by determining a ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag. configured as A video encoding device using geometric partitioning.
9. When it is determined that the first index and the second index are the same, the second binary reference list indication flag is determined to have a value opposite to that of the first binary reference list indication flag. The video encoding device using geometric partitioning according to claim 8.
10. When it is determined that the ListX1MV of the first candidate does not exist, select a uni-prediction zero MV as the first uni-prediction MV, or When it is determined that the ListX2MV of the second candidate does not exist, select a uni-prediction zero MV as the second uni-prediction MV. The video encoding device using geometric partitioning according to claim 8.
11. When it is determined that backward prediction is used for the current picture, the second binary reference list indication flag is determined to have a value opposite to that of the first binary reference list indication flag, When it is determined that backward prediction is not used for the current picture, the second binary reference list indication flag is determined to have the same value as the first binary reference list indication flag. The video encoding device using geometric partitioning according to claim 8.
12. The first binary reference list indication flag and the second binary reference list indication flag are each determined based on the values of the first index and the second index. The video encoding device using geometric partitioning according to claim 8.
13. The first binary reference list indication flag and the second binary reference list indication flag are encoded as CABAC context bins. The video encoding device using geometric partitioning according to claim 8.
14. Based on the parity of the index values of the first candidate and the second candidate in the first merge list, the first binary reference list indication flag and the second binary reference list indication flag are each determined. The video encoding device using geometric partitioning according to claim 8.
15. Acquire a video picture, divide the video picture into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU) along a non-diagonal line. Based on a merge list construction process for regular merge prediction, construct a first merge list including a plurality of candidates, each of the plurality of candidates being a motion vector (MV) including List0MV and / or List1MV. Detect a first candidate of the first PU by a first index. Detect a second candidate of the second PU by a second index. Obtain a first uni-prediction MV of the first PU by determining the ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag. Obtain a second uni-prediction MV of the second PU by determining the ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag. A video encoding method using geometric partitioning. Claim 16 One or more processors; A memory configured to store instructions executable by the one or more processors; comprising; When the instructions are executed, the one or more processors obtain a video picture, divide the video picture into a plurality of coding units (CUs), and at least one of the plurality of coding units is further divided into two PUs, a first PU and a second PU, including at least one geometric shape prediction unit (PU) along a non-diagonal line. Based on a merge list construction process for regular merge prediction, construct a first merge list including a plurality of candidates, each of the plurality of candidates being a motion vector (MV) including List0MV and / or List1MV. Detect a first candidate of the first PU by a first index. Detect a second candidate of the second PU by a second index. Obtain a first uni-prediction MV of the first PU by determining the ListX1MV of the first candidate by a first binary reference list indication flag, where X1 takes a value of 0 or 1 and is indicated by the first binary reference list indication flag. Obtain a second uni-prediction MV of the second PU by determining the ListX2MV of the second candidate by a second binary reference list indication flag, where X2 takes a value of 0 or 1 and is indicated by the second binary reference list indication flag. configured as such. Video encoding device using geometric partitioning. **Claim 17** A non-transitory computer-readable storage medium storing a bitstream generated by the video encoding method using geometric partitioning according to Claim 1. **Claim 18** Generating a bitstream by executing the video encoding method using geometric partitioning according to Claim 1, Storing the bitstream in a non-transitory computer-readable storage medium, A method for storing a bitstream.
Citation Information
Patent Citations
Method and apparatus for video encoding and decoding based on a linear model responsive to neighboring samples
WO2019147910A1