Signaling of merge indices for triangle partitioning
By deriveing and using merge candidate indexes in the motion compensation candidate list of triangle shapes, the problems of high bit rate and increased complexity of triangle segmentation mode signaling notification in the prior art are solved, and more efficient video compression is achieved.
Patent Information
- Application Number
- CN202080049012.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-07-03
- Filing Date
- 2020-07-02
- Publication Date
- 2025-01-07
- Estimated Expiration
- 2040-07-02
AI Technical Summary
When existing video compression systems use triangle segmentation mode in inter-frame prediction, the number of merged candidate indexes for signaling notifications is too large, resulting in high bit rate and increased encoding complexity, affecting compression efficiency.
A method is proposed to reduce the encoder complexity by derive the merge candidate index in the motion compensation candidate list based on the triangle shape, limiting the number of bits of signaling notification and the number of test combinations. The method includes performing motion compensation based on the shape of the triangle in the decoding and encoding process using motion information at the position indicated by the merge candidate index in the motion compensation candidate list, and determining the value of the merge candidate index through a mapping function.
It effectively reduces the number of bits and test combinations of signaling notifications, reduces the complexity of the encoder, and improves video compression efficiency.
Smart Images

Figure CN114073093B_ABST
Abstract
Description
Technical Field
[0001] At least one of the present embodiments generally relates to a method or apparatus, for example, for video encoding or decoding, and more specifically, to a method or apparatus comprising signaling a single merge candidate index that is capable of deriving a first merge candidate index and a second merge candidate index in a triangle-shaped motion compensation candidate list used in triangle-shaped motion compensation. Background Art
[0002] Field of One or More Implementations The technical field generally relates to video compression. At least some embodiments relate to improving compression efficiency compared to existing video compression systems such as HEVC (HEVC refers to High Efficiency Video Coding described in "ITU-T H.265 Telecommunication Standardization Sector of ITU (10 / 2014), Series H: Audiovisual and Multimedia Systems, Audiovisual Services Infrastructure - Motion Video Coding, High Efficiency Video Coding, ITU-T H.265 Recommendation", also known as H.265 and MPEG-H Part 2), or compared to video compression systems under development such as VVC (Versatile Video Coding, a new standard being developed by the Joint Video Experts Team JVET).
[0003] In particular, at least some embodiments also relate to improving video compression efficiency in terms of bitrate savings or complexity reduction by modifying the signaling of triangle partitioning patterns to be used for inter-frame prediction. Summary of the invention
[0004] The object of the present invention is to overcome at least one disadvantage of the prior art. To this end, according to the general aspects of at least one embodiment, a method for decoding is proposed. The decoding method comprises: decoding a syntax element representing a merge candidate index of a motion compensation candidate list based on a triangle shape; and performing triangle-shaped motion compensation to decode a block of a picture by using the motion information of the merge candidate at a position indicated by the first merge candidate index in the motion compensation candidate list and the motion information of the merge candidate at a position indicated by the second merge candidate index in the motion compensation candidate list. According to a specific feature, the method further comprises deriving a first merge candidate index and a second merge candidate index in the motion compensation candidate list based on a triangle shape from the decoded syntax element. Therefore, the method limits signaling and reduces the number of bits used for signaling 2 indexes of the merge candidate.
[0005] According to another general aspect of at least one embodiment, a method for encoding is proposed. The encoding method includes: performing triangle-shaped motion compensation to encode a block of a picture by using the motion information of a merge candidate at a position indicated by a first merge candidate index in a motion compensation candidate list and the motion information of a merge candidate at a position indicated by a second merge candidate index in the motion compensation candidate list. According to a specific feature, a merge candidate index is determined, wherein the merge candidate index is capable of deriving a first merge candidate index and a second merge candidate index in a triangle-shaped motion compensation candidate list, and thus the encoding method also includes encoding a syntax element representing a merge candidate index of a triangle-shaped motion compensation candidate list. Therefore, the method limits signaling and reduces the number of test combinations, thereby reducing the complexity of the encoder.
[0006] According to another general aspect of at least one embodiment, a mapping function determines a first merge candidate index and a second merge candidate index derived from the merge candidate index.
[0007] According to another general aspect of at least one embodiment, the merge candidate index is a first merge candidate index in a motion compensation candidate list based on a triangle shape; and the second merge candidate index is derived from the first merge candidate index. Therefore, the mapping function determines one of the following: if the first merge candidate index is equal to 0, the second merge candidate index is set to 1, otherwise the second merge candidate index is set to 0; or if the first merge candidate index is equal to 0, the second merge candidate index is set to 1, otherwise the second merge candidate index is set to half of the first merge candidate index.
[0008] According to another general aspect of at least one embodiment, the syntax element indicates whether the merge candidate index is the first merge candidate index or the second merge candidate index; and in the case where the syntax element indicates that the merge candidate index is the first merge candidate index, the second merge candidate index is derived from the first merge candidate index, or in the case where the syntax element indicates that the merge candidate index is the second merge candidate index, the first merge candidate index is derived from the second merge candidate index. Therefore, in the case where the syntax element indicates that the merge candidate index is the first merge candidate index, the mapping function determines one of the following: in the case where the first merge candidate index is equal to 0, the second merge candidate index is set to 1, otherwise the second merge candidate index is set to 0; in the case where the first merge candidate index is equal to 0, the second merge candidate index is set to 1, otherwise the second merge candidate index is set to half of the first merge candidate index.
[0009] According to another general aspect of at least one embodiment, the range of the merge candidate index is greater than the range of the motion compensation candidate list based on the triangle shape and less than twice the range of the motion compensation candidate list based on the triangle shape. Therefore, the mapping function determines one of the following: when the merge candidate index is equal to 0, the first merge candidate index is set to 0 and the second merge candidate index is set to 1; when the merge candidate index is greater than 0 and less than the range of the motion compensation candidate list based on the triangle shape, the first merge candidate index is set to the merge candidate index and the second merge candidate index is set to 0; otherwise, the first merge candidate index is set to the merge candidate index minus the range of the motion compensation candidate list based on the triangle shape, and the second merge candidate index is set to the first merge candidate index plus an offset.
[0010] According to another general aspect of at least one embodiment, a merge candidate index of the triangle-shaped motion compensation candidate list further indicates one of: a division direction of a diagonal boundary or an angle and a distance of an inclined boundary.
[0011] According to another general aspect of at least one embodiment, a device for encoding is provided, comprising components for implementing any one embodiment of the encoding method.
[0012] According to another general aspect of at least one embodiment, there is provided an apparatus for decoding, comprising components for implementing any one embodiment of the decoding method.
[0013] According to another general aspect of at least one embodiment, there is provided an apparatus for encoding, comprising one or more processors and at least one memory. The one or more processors are configured to implement any one embodiment of the encoding method.
[0014] According to another general aspect of at least one embodiment, there is provided an apparatus for decoding, comprising one or more processors and at least one memory. The one or more processors are configured to implement any one embodiment of the decoding method.
[0015] According to another general aspect of at least one embodiment, there is provided a non-transitory computer-readable medium comprising data content generated according to any of the aforementioned methods or apparatuses.
[0016] According to another general aspect of at least one embodiment, there is provided a signal comprising video data generated according to any of the aforementioned methods or apparatus.
[0017] One or more of the embodiments further provides a computer-readable storage medium on which instructions for encoding or decoding video data according to any of the above methods are stored. The embodiment further provides a computer-readable storage medium on which a bit stream generated according to the above method is stored. The embodiment further provides a method and apparatus for sending a bit stream generated according to the above method. The embodiment further provides a computer program product including instructions for executing any of the described methods. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Figure 1 An example of the concepts of Coding Tree Unit (CTU) and Coding Tree (CT) representing a compressed HEVC picture is shown.
[0019] Figure 2 An example of dividing a coding tree unit into coding units, prediction units, and transform units is shown.
[0020] Figure 3a An example of a triangular partitioning of a coding unit for inter prediction is shown.
[0021] Figure 3b An example of geometric partitioning of coding units for inter prediction is shown.
[0022] Figure 4 An example of selecting a unidirectional prediction motion vector for a triangle partitioning mode used in inter prediction is shown.
[0023] Figure 5 An example of a decoding method according to a general aspect of at least one embodiment is shown.
[0024] Figure 6 An example of an encoding method according to a general aspect of at least one embodiment is shown.
[0025] Figure 7 A block diagram of an embodiment of a video encoder is shown in which various aspects of the embodiments may be implemented.
[0026] Figure 8 A block diagram of an embodiment of a video encoder is shown in which various aspects of the embodiments may be implemented.
[0027] Fig. 9 A block diagram is shown of an example apparatus in which various aspects of the embodiments may be implemented. DETAILED DESCRIPTION
[0028] It should be understood that the drawings and descriptions have been simplified to illustrate the elements relevant to a clear understanding of the present principles, while many other elements found in typical encoding and / or decoding devices have been eliminated for clarity. It should be understood that although the terms first and second may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element.
[0029] Various embodiments are described with respect to encoding / decoding of pictures. They can be applied to encoding / decoding parts of pictures, such as slices or slices, or entire picture sequences. In addition, various embodiments are described for decoding of blocks (e.g., coding units CU), and these embodiments are easily derived to encoding of blocks.
[0030] Various methods are described above, and each method includes one or more steps or actions for implementing the method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions can be modified or combined.
[0031] In the HEVC video compression standard, pictures are divided into so-called Coding Tree Units (CTUs), which typically have a size of 64x64, 128x128 or 256x256 pixels. Figure 1 An example of the concept of Coding Tree Unit (CTU) and Coding Tree (CT) for representing a compressed HEVC picture is shown. Each CTU is represented by a coding tree in the compressed domain. This is a quadtree partitioning of the CTU, where each leaf is called a Coding Unit (CU), such as Figure 1 As shown. Then each unit is given some intra-frame or inter-frame prediction parameters (prediction information). For this purpose, it is spatially divided into one or more prediction units (PUs), and each PU is assigned some prediction information. Figure 2 As shown, intra or inter coding mode is assigned at CU level. In HEVC, only one motion vector is assigned to each PU. This motion vector is used for motion compensated temporal prediction of the considered PU. Therefore, in HEVC, the motion model of the linked prediction block and its reference blocks contains only translation.
[0032] Limitations of Triangulation Signaling in the Latest Development of VVC
[0033] In VVC, inter prediction supports geometric partition mode (GPM). Geometric partition mode allows handling of tilted motion boundaries in a CU. Geometric partition is an extension of triangle partition mode (TPM), where the angle and position of the tilted boundary between two partitions are configurable. Geometric partition mode is only applicable to CUs of 8x8 or larger. The geometric partition mode is derived at the CU level as the remaining merge mode after other merge modes (including normal merge mode, MMVD mode, sub-block merge mode, and CIIP mode). In the following, in order to enable the reader to better understand, the present principle is described for the triangle partition mode, however, for similar partition modes that raise the same technical problem (such as geometric partition mode), at least one embodiment will be explicitly derived.
[0034] Figure 3a An example of a triangular partitioning pattern of a coding unit for inter-frame prediction is shown. When a triangular partitioning pattern is used, the following is used: Figure 3a The diagonal partition or anti-diagonal partition shown divides the CU evenly into two triangular partitions (Partition 1, Partition 2). Each triangular partition in the CU uses its own motion for inter-frame prediction; only unidirectional prediction is allowed for each partition, that is, each partition has one motion vector and one reference index. Unidirectional prediction motion constraints are applied to ensure that only two motion compensated predictions are required for each CU, the same as traditional bidirectional prediction. The unidirectional prediction motion of each partition is derived using the process described below.
[0035] If triangle partitioning mode is used for the current CU, a flag indicating the triangle partitioning direction (diagonal or anti-diagonal) and two merge indices (one for each partition) are further signaled as described below. The maximum number of TPM candidates is explicitly signaled at the slice level, and the syntax binarization of the TMP merge indices is specified. After predicting each triangle partitioning, a hybrid process with adaptive weights is used to adjust the sample values along the diagonal or anti-diagonal lines. This is the prediction signal for the entire CU, and then the transform and quantization process will be applied to the entire CU as in other prediction modes. Finally, the motion field of the CU predicted using triangle partitioning mode is stored in 4x4 units.
[0036] Figure 3b An example of a geometric partitioning mode for coding units for inter prediction is shown. When the geometric partitioning mode is used, the CU is evenly divided into two partitions (Partition 1, Partition 2) along a slanted boundary. One of the partitions (Partition 2) is a triangular partition. The angle (angle) and position (d) of the slanted boundary are configurable.
[0037] Figure 4An example of selecting a unidirectional prediction motion vector for a triangle partitioning mode used in inter prediction is shown. The selection of 2 unidirectional prediction motion vectors is performed in the same way for geometric partitioning in VVC. The unidirectional prediction candidate list is directly derived from the merge candidate list constructed according to the extended merge prediction process. Denote n as the index of the unidirectional prediction motion in the triangle unidirectional prediction candidate list. The LX motion vector of the nth extended merge candidate with parity of X equal to n is used as the nth unidirectional prediction motion vector for the triangle partitioning mode. These motion vectors are in Figure 4 In the case where the corresponding LX motion vector of the n-th extended merge candidate does not exist, the L(1-X) motion vector of the same candidate is used as the unidirectional prediction motion vector of the triangle partition mode instead.
[0038] There are at most 5 unidirectional prediction candidates, and the encoder must test all candidate combinations in 2 partition directions (one for each partition). Therefore, the maximum number of test combinations is 40 (5*4*2), where the maximum number of triangle merge candidates is set to 5 and all combinations are tested (where MaxNumTriangleMergeCand=5, and nb_combinations=MaxNumTriangleMergeCand*(MaxNumTriangleMergeCand-1)*2).
[0039] Regarding signaling and as described above, the triangle partitioning mode requires signaling of (i) a binary flag indicating the triangle partitioning direction, and (ii) two merge indices after deriving whether the triangle partitioning mode is used.
[0040] Below is the part (in bold) from the VVC specification version that deals with triangle segmentation signaling. Advantageously, the current derivation process for luma motion vectors for merged triangle mode allows bits to be saved by not encoding the case where n equals m which should not occur.
[0041] 7.3.7.7 Merge Data Syntax
[0042]
[0043]
[0044] 7.4.8.7 Merge Data Semantics
[0045] …
[0046] The variable MergeTriangleFlag[x0][y0] specifies whether to use triangle-based motion compensation to generate prediction samples for the current coding unit when decoding B slices. It is derived as follows:
[0047] – MergerIagleFlag[x0][y0] is set equal to 1 if all of the following are true:
[0048] –sps_triangle_enabled_flag is equal to 1.
[0049] –slice_type is equal to B.
[0050] –general_merge_flag[x0][y0] is equal to 1.
[0051] –MaxNumTriangleMergeCand is greater than or equal to 2.
[0052] –cbwidth*cbHeight is greater than or equal to 64.
[0053] –regular_merge_flag[x0][y0] is equal to 0.
[0054] –mmvd_merge_flag[x0][y0] is equal to 0.
[0055] –merge_subblock_flag[x0][y0] is equal to 0.
[0056] –ciip_flag[x0][y0] is equal to 0.
[0057] – Otherwise, MergeTriangleFlag[x0][y0] is set equal to 0.
[0058] merge_triangle_split_dir[x0][y0] specifies the split direction of the merge triangle pattern. The array index x0, y0 specifies the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0059] When merge_triangle_split_dir[x0][y0] does not exist, it is inferred to be equal to 0.
[0060] merge_triangle_idx0[x0][y0] specifies the first merge candidate index of the triangle-shaped motion compensation candidate list, where x0, y0 specify the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0061] When merge_triangle_idx0[x0][y0] does not exist, it is inferred to be equal to 0.
[0062] merge_triangle_idx1[x0][y0] specifies the second merge candidate index of the triangle-shaped motion compensation candidate list, where x0, y0 specify the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0063] When merge_triangle_idx1[x0][y0] does not exist, it is inferred to be equal to 0.
[0064] …
[0065] 8.5.4.2 Derivation of Luma Motion Vectors for Merged Triangle Mode
[0066] …
[0067] The motion vectors mvA and mvB, the reference indices refIdxA and refIdxB, and the prediction list flags predListFlagA and predListFlagB are derived by the following ordered steps:
[0068] 1. Call the derivation process of the luma motion vector for the merge mode specified in clause 8.5.2.2 using the luma position (xCb, yCb), variables cbWidth and cbHeight as inputs, and the outputs are luma motion vectors mvL0[0][0], mvL1[0][0], reference indexes refIdxL0, refIdxL1, prediction list utilization flags preflagL0[0][0] and preflagL1[0][0], bidirectional prediction weight index bcwIdx and merge candidate list mergeCandList.
[0069] 2. Variables m and n are the merge indices of triangle splits 0 and 1, respectively. Use merge_triangle_idx0[xCb][yCb] and merge_triangle_idx1[xCb][yCb] to derive variables m and n as follows:
[0070] m=merge_triangle_idx0[xCb][yCb] (8-447)
[0071] n=merge_triangle_idx1[xCb][yCb]+(merge_triangle_idx1[xCb][yCb]>=m)? 1:0 (8-448)
[0072] 3.…
[0073] Table 9-11 – Syntax elements and associated binarization (where FL: fixed length coding, TR: truncated Rice coding, ...)
[0074]
[0075] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded binary numbers (where bypass represents no context and equal probability)
[0076]
[0077]
[0078] It is desirable to use triangle partitioning mode to simplify the triangle partitioning mode signaling that is currently contained in a flag (merge_triangle_split_dir[][]) followed by two indices (merge_triangle_idx0[][], merge_triangle_idx1[][]) for each CU. Although in VVC the geometric partitioning mode signaling is adapted to indicate the angle and distance of the slanted boundary, the signaling of the two indices of the merge candidates remains the same as that presented for triangle partitioning mode. In fact, the syntax element merge_gpm_partition_idx[x0][y0] replaces the binary syntax element merge_triangle_split_dir[x0][y0]. The syntax element merge_gpm_partition_idx[x0][y0] indicates the angle and position of the geometric partitioning mode. The merged candidate indices (except their names) then remain the same. Therefore, simplification of the merge indices is also desirable for VVC and any standard that will implement this type of partitioning in inter-frame merge mode.
[0079] At least one main embodiment relates to a method for signaling triangle partitioning for inter-frame prediction. At least one embodiment also relates to a method for encoding / decoding a video, the method comprising signaling triangle partitioning for inter-frame prediction according to any of the disclosed methods. At least one embodiment relates to a method, comprising obtaining a syntax element representing a merge candidate index of a motion compensation candidate list based on a triangle shape; deriving a first merge candidate index and a second merge candidate index in the motion compensation candidate list based on a triangle shape from the decoded syntax element; and performing motion compensation based on a triangle shape using motion information of the merge candidate at a position indicated by the first merge candidate index in the motion compensation candidate list and motion information of the merge candidate at a position indicated by the second merge candidate index in the motion compensation candidate list. In the present application, the term "motion compensation based on a triangle shape" refers to motion compensation along a slanted boundary of a square or rectangular block shape. Therefore, the terms "motion compensation based on a triangle shape" and "motion compensation based on a geometric shape" can be used interchangeably.
[0080] At least one embodiment includes deriving an index from another index. Advantageously, at least one embodiment limits signaling and reduces the number of test combinations, thereby reducing the complexity of the encoder. In a first variant, one of the indexes (e.g., merge_triangle_idx1[][]) is not signaled, and this index (e.g., merge_triangle_idx1[][]) is derived from the signaled index (e.g., merge_triangle_idx0[][]). In a second variant, one of the indexes (e.g., merge_triangle_idx1[][]) is not signaled, a flag indicating which index is sent (e.g., 0 indicates merge_triangle_idx0[][] is sent, and 1 indicates merge_triangle_idx1[][] is sent) is signaled, and the index that is not signaled is also derived from the signaled (sent) index. In a third variant, at least one embodiment includes extending the signaled index to support more candidate combinations. In a fourth variation, at least one embodiment includes replacing all signaling with one single index representing the partition direction and the triangle merging candidate index.
[0081] In the following sections, embodiments of methods for decoding using a triangle partitioning pattern used in inter prediction according to different embodiments are described. Corresponding embodiments of encoding methods are also described.
[0082] At least one main embodiment of a decoding or encoding method for triangle shape based motion compensation is performed.
[0083] In the following, two unidirectional prediction candidates for a triangular CU, one for each triangular partition, are denoted as Cand0 and Cand1, respectively.
[0084] Each of these unidirectional prediction candidates x Corresponds to merge_triangle_idx x , denoted as idx x , and with the motion vector mv x And its reference picture list L y The index refidx on x The reference frame y is associated with (where y is given by the parity of the index idxx).
[0085] Figure 5 An example of a decoding method according to a general aspect of at least one embodiment is shown. In the following, different embodiments for signaling / deriving a merge candidate index for a motion compensation candidate list based on a triangle shape are described for a decoding method, but a person skilled in the art will easily derive the present principles for a coding method. Therefore, a method 10 for decoding a block in a picture (e.g., a coding unit CU using a TPM) includes, in step 11, decoding a syntax element representing a merge candidate index for a motion compensation candidate list based on a triangle shape. Then, in step 12, a first merge candidate index idx0 and a second merge candidate index idx1 in the motion compensation candidate list based on a triangle shape are derived from the decoded syntax element. In fact, a mapping function allows the first merge candidate index and the second merge candidate index to be derived from the merge candidate index. In the following, various non-limiting examples of the mapping function and different variants are described. Advantageously, the derivation process of the merge triangle candidate index allows bits to be saved by not encoding the case where two indexes are equal, which should not occur, otherwise it is unreasonable for segmentation. Then, in step 13, by using the first merge candidate index idx0 and the second merge candidate index idx1 of the motion compensation candidate list L y The motion information of the merge candidate Cand0 at the position indicated by the first merge candidate index idx0 in the motion compensation candidate list L y Based on the motion information of the merge candidate Cand1 at the position indicated by the second merge candidate index idx1 in the decoder, triangle-shaped motion compensation is performed to decode the sample block.
[0086] Figure 6An example of a coding method according to a general aspect of at least one embodiment is shown. A method 20 for encoding a sample block in a picture (e.g., a coding unit CU using a TPM) includes, in step 21, determining a merge candidate index for a motion compensation candidate list based on a triangle shape, wherein the merge candidate index is capable of deriving a first merge candidate index and a second merge candidate index in the motion compensation candidate list based on a triangle shape. In fact, as described above, a mapping function common to the decoder and the encoder allows the first merge candidate index and the second merge candidate index to be derived from the merge candidate index. Advantageously, the derivation process of the merge triangle candidate index allows bits to be saved by not encoding the case where the two indexes are equal. In addition, the derivation process advantageously allows the number of test combinations of merge candidates to be reduced during encoding, thereby reducing the complexity of the encoder. Those skilled in the art will appreciate that during the encoding process, all possible combinations of merge candidates Cand0 and Cand1 allowed by the mapping function are tested. Here, compared with a full search, only a subset of candidate pairs is tested using the present principle. This is more effective for geometric partitioning, where more than 2 (diagonal or anti-diagonal) partitioning schemes are possible. In short, triangle shape-based motion compensation using one of the possible combinations of merge candidates from the merge index is determined as the coding mode of the sample block during the encoding process. Then, in step 22, by using the y The motion information of the merge candidate Cand0 at the position indicated by the first merge candidate index idx0 in the motion compensation candidate list L y The motion information of the merge candidate Cand1 at the position indicated by the second merge candidate index idx1 in the decoder is used to perform triangle-shaped motion compensation and encode the sample block. Finally, in step 23, a syntax element representing the merge candidate index of the triangle-shaped motion compensation candidate list is also encoded for the decoder.
[0087] In the following, non-limiting examples of mapping functions for deriving two merge candidate indexes are described.
[0088] First variant: remove one signaling index and derive another index from one index
[0089] At least one main embodiment of a method for signaling a triangle partition for inter prediction comprises signaling a first index of a unidirectional prediction candidate in a unidirectional prediction candidate list (e.g., merge_triangle_idx0[][]), and deriving a second index of the unidirectional prediction candidate from the signaled first index (e.g., merge_triangle_idx1[][]). Thus, the second index is implicitly decoded (or derived) from the signaled first index. Derivation of one of the unidirectional prediction candidate indices from another unidirectional prediction candidate index is compatible with any predefined mapping scheme between the first index and the second index, and is not limited to the examples described below.
[0090] Therefore, in order to reduce the signaling of triangle merging mode, it is possible to 1-x Export index idx x In this case, only one of the two indexes must be signaled.
[0091] In the following, two non-limiting examples of deriving idx1 from idx0 with signaled idx0 are given, but a person skilled in the art will clearly apply any of the described methods to derive idx0 from idx1 with signaled idx1.
[0092] Table 3 shows two non-limiting examples of mappings between idx0 and idx1 for deriving idx1 from idx0.
[0093] The first example of the process of deriving idx1 from idx0 is represented by X in Table 4:
[0094] (i) If idx0 is 0, idx1 is set to 1,
[0095] (ii) If idx0 is greater than 0, idx1 is set to 0.
[0096] This mapping is encoded by the mapping function: n=(m>0)?0:1, where the variables m=idx0 and n=idx1 are the merged indices of triangle partitions 0 and 1, respectively.
[0097] The second example of the process of deriving idx1 from idx0 is represented by O in Table 4:
[0098] (i) idx1 is set to half of idx0, where idx0 ≠ idx1 (i.e.: 0->1, 1->0, 2->1, 3->1, 4->2).
[0099] Table 4 Mapping between idx0 and idx1 (X: first example exported, O: second example exported halfway)
[0100]
[0101] Any other mapping that associates a value to idx1 that is dependent on idx0 other than the same value of idx0 is compatible with the present principles.
[0102] In addition, by deriving another single index idx from a single index x , which reduces the maximum number of test combinations at the encoder. It goes from 40 combinations (5*4*2 as described in the limitation section above) to only 10 combinations (5*2=MaxNumTriangleMergeCand*2), thus reducing the complexity of the encoder in terms of the number of iterations of the rate-distortion optimization loop.
[0103] In a variant, the mapping is canonical and known to the decoder. According to other variants, the mapping is signaled to the decoder. Thus, in a variant, the mapping table / function is signaled in the slice / slice header, which indicates that all luma CUs in the slice / slice use this TPM derivation method. In another variant, the mapping table / function is signaled in a picture parameter set (PPS), which indicates that all luma CUs in the frame use this TPM derivation method. In another variant, the mapping table / function is signaled in a sequence parameter set (SPS), which indicates that all luma CUs in the sequence use the TPM derivation method.
[0104] An example of modifying the VVC specification (where strikethrough indicates removal and underlining indicates addition) is given below, where triangle splitting signaling is involved (highlighted in bold), e.g. for the first mapping example (n=(m>0)?0:1):
[0105] 7.3.7.7 Merge Data Syntax
[0106]
[0107]
[0108] 7.4.8.7 Merge Data Semantics
[0109] …
[0110] merge_triangle_split_dir[x0][y0] specifies the split direction of the merge triangle pattern. The array index x0, y0 specifies the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0111] When merge_triangle_split_dir[x0][y0] does not exist, it is inferred to be equal to 0.
[0112] merge_triangle_idx0[x0][y0] specifies the first merge candidate index of the triangle-shaped motion compensation candidate list, where x0, y0 specify the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0113] When merge_triangle_idx0[x0][y0] does not exist, it is inferred to be equal to 0.
[0114]
[0115] …
[0116] 8.5.4.2 Derivation of Luma Motion Vectors for Merged Triangle Mode
[0117] …
[0118] The motion vectors mvA and mvB, the reference indices refIdxA and refIdxB, and the prediction list flags predListFlagA and predListFlagB are derived by the following ordered steps:
[0119] 1. Call the derivation process of the luma motion vector for the merge mode specified in clause 8.5.2.2 using the luma position (xCb, yCb), variables cbWidth and cbHeight as inputs, and the outputs are luma motion vectors mvL0[0][0], mvL1[0][0], reference indexes refIdxL0, refIdxL1, prediction list utilization flags preflagL0[0][0] and preflagL1[0][0], bidirectional prediction weight index bcwIdx and merge candidate list mergeCandList.
[0120] 2. Variables m and n are the merge indices of triangle splits 0 and 1, respectively, using merge_triangle_idx0[xCb][yCb] Export the variables m and n as follows:
[0121] m=merge_triangle_idx0[xCb][yCb] (8-447)
[0122]
[0123] n=(m>0)? 0:1 (8-448)
[0124] 3.…
[0125] Table 9 11 - Syntax elements and associated binarization (where FL: fixed length coding, TR: truncated Rice coding, ...)
[0126]
[0127] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded binary numbers (where bypass represents no context and equal probability)
[0128]
[0129]
[0130] Second variant: replace a signaling index with a flag indicating the signaling index and Export another index
[0131] At least one main embodiment of a method for signaling triangle partitioning for inter prediction comprises signaling a flag indicating which index is signaled (e.g., merge_triangle_idx_num0 indicates merge_triangle_idx0[][] is signaled, and 1 indicates merge_triangle_idx1[][] is signaled), signaling a first index of a unidirectional prediction candidate in a unidirectional prediction candidate list (merge_triangle_idx[][]), and signaling a first index (idx_num0) of a unidirectional prediction candidate from the signaled first index (idx_num0). x ) derives the second index (idx) of the unidirectional prediction candidate 1-x As for the first variant, the second index (idx 1-x ) is the first index (idx) notified from the signaling x ) is implicitly decoded (or derived), but this second variant further allows the number of candidate pairs to be increased. Deriving another unidirectional prediction candidate index from one unidirectional prediction candidate index is compatible with any predefined mapping scheme between the two indexes and is not limited to the examples described below with Tables 6 and 7.
[0132] Since the merge candidate index is signaled at CU level, the added flag should also be signaled at CU level. However, according to a further non-limiting example, the flag is signaled at a higher level (as slice level or picture level, ...) for the entire slice / picture.
[0133] Therefore, in order to reduce the signaling of the triangle merging mode, it is possible to indicate which index idx x The signaled flag replaces the signaling of an index, thereby defining another index idx 1-xIn this case, only one of the two indices and a flag need to be signaled.
[0134] The signaled flag denoted as merge_triangle_idx_num indicates the index idx of the following signaling x If idx0 is signaled, then idx1 must be derived from idx0, otherwise idx0 must be derived from idx1. This flag can be context-dependent and can bypass CABAC encoding.
[0135] Table 6 shows the idx x and idx 1-x A non-limiting example of a mapping between x Export idx 1-x , where X in Table 6 represents the case where merge_triangle_idx_num is 0, and O represents the case where merge_triangle_idx_num is 1.
[0136] (i) If merge_triangle_idx_num is 0 (i.e. idx0 is signaled)
[0137] a. If idx0 is 0, idx1 is set to 1,
[0138] b. And if idx0 is greater than 0, idx1 is set to 0.
[0139] (ii) If merge_triangle_idx_num is 1 (i.e. idx1 is signaled)
[0140] a.idx0 is set to 0, and idx1 is set to idx1+2.
[0141] Table 7 Mapping between idx0 and idx1 (X: idx1 comes from idx0 notified by signaling, O: idx0 comes from idx1 notified by signaling)
[0142]
[0143] In this example, the same derivation process applies whether idx0 or idx1 is signaled. In this case, since the two index pairs are common ((0, 1) and (1, 0)), when idx1 is signaled, it must be greater than 1. Therefore, idx1–2 can be signaled instead of idx1.
[0144] As mentioned before, associate values to all but idx x The same value outside depends on idxx IDX 1-x Any other mapping of is compatible with the present principles. According to another non-limiting example, the derivation process is idx x (0->1, 1->0, 2->1, 3->1, 4->2), as described above for the first variant.
[0145] Table 7 shows another non-limiting example of a mapping that associates values to other than idx for two cases of x. x The same value outside depends on idx x IDX 1-x If the mapping has several common index pairs, idx1-nb_common_pairs may be signaled instead of idx1 (as shown in Table 6, where the pairs (0, 1) and (1, 0) are common and are removed from the signaling of idx1).
[0146] Table 8 Another mapping between idx0 and idx1 (X: idx1 comes from the signaled idx0, O: idx0 comes from the signaled idx1)
[0147]
[0148] In addition, by starting from an idx x Export another index idx 1-x , which reduces the maximum number of test combinations at the encoder. In this example, it is reduced from 40 combinations (5*4*2, as described in the restrictions section above) to only 16 ((5+3)*2), and in the absence of a mapping of common pairs, it is at most 20 ((5+5)*2=2*MaxNumTriangleMergeCand*2) (as shown in Table 8). In any case, it reduces the number of test combinations to less than half, thereby reducing the complexity of the encoder.
[0149] An example of a modification of the VVC specification involving triangle splitting signaling is given below (bold unchanged) (strikethrough indicates removal, and underline indicates addition), for the variable mapping shown in Table 6:
[0150] 7.3.7.7 Merge Data Syntax
[0151]
[0152]
[0153] 7.4.8.7 Merge Data Semantics
[0154] …
[0155] merge_triangle_split_dir[x0][y0] specifies the split direction of the merge triangle pattern. The array index x0, y0 specifies the position (x0, y0) of the upper left corner luma sample of the considered coding block relative to the upper left corner luma sample of the picture.
[0156] When merge_triangle_split_dir[x0][y0] does not exist, it is inferred to be equal to 0.
[0157] merge_triangle_idx_num[x0][y0] specifies which merge_triangle_idx to decode. The x0, y0 references specify the position of the upper left corner luma sample of the coding block under consideration relative to the upper left corner luma sample of the picture (x0, y0)。
[0158] When merge_triangle_idx_num[x0][y0] does not exist, it is inferred to be equal to 0.
[0159] merge_triangle_idx[x0][y0] specifies the first (merge_triangle_idx_num+1) merge candidate indices, where x0, y0 specify the top left corner of the coding block under consideration The position of the luma sample relative to the upper left corner of the picture (x0, y0).
[0160] When merge_triangle_idx[x0][y0] does not exist, it is inferred to be equal to 0.
[0161]
[0162]
[0163] …
[0164] 8.5.4.2 Derivation of Luma Motion Vectors for Merged Triangle Mode
[0165] …
[0166] The motion vectors mvA and mvB, the reference indices refIdxA and refIdxB, and the prediction list flags predListFlagA and predListFlagB are derived by the following ordered steps:
[0167] 1. Call the derivation process of the luma motion vector for the merge mode specified in clause 8.5.2.2 using the luma position (xCb, yCb), variables cbWidth and cbHeight as inputs, and the outputs are luma motion vectors mvL0[0][0], mvL1[0][0], reference indexes refIdxL0, refIdxL1, prediction list utilization flags preflagL0[0][0] and preflagL1[0][0], bidirectional prediction weight index bcwIdx and merge candidate list mergeCandList.
[0168] 2. Variables m and n are the merged indices of triangle split 0 and 1 respectively, using merge_triangle_idx_num [xCb][yCb] and merge_triangle_idx[xCb][yCb]
[0169] Export the variables m and n as follows:
[0170] - if (merge_triangle_idx_num[xCb][yCb] == 1)
[0171] Then m=0
[0172] (8-447)
[0173] n=merge_triangle_idx[xCb][yCb]+2 (=nb_common_pairs, which depends on the mapping)
[0174] (8-448)
[0175] - otherwise
[0176] m=merge_triangle_idx[xCb][yCb] (8-449)
[0177] n=(m>0)? 0:1 (8-450)
[0178]
[0179] 3.…
[0180] Table 9 11 - Syntax elements and associated binarization (where FL: fixed length coding, TR: truncated Rice coding, ...)
[0181]
[0182] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded binary numbers (where bypass represents no context and equal probability)
[0183]
[0184]
[0185] Third variant: adding index dynamics
[0186] In a third variant, at least one embodiment comprises an index of an extended signaling notification. Therefore, at least one main embodiment of a method for signaling a triangle partitioning for inter-frame prediction comprises signaling an extended index in a list of unidirectional prediction candidates, and deriving a first index and a second index of the unidirectional prediction candidate from the signaled extended index. According to a specific feature, the dynamic extension is based on MaxNumTriangleMergeCand. According to another specific feature, the dynamic extension is in the range of [0 to (MaxNumTriangleMergeCand*(MaxNumTriangleMergeCand–1))-MaxNumTriangleMergeCand].
[0187] In both the first variant and the second variant embodiments, many tested combinations are removed. In order to keep some of them, while still removing a signaled index, it is advantageous to extend the dynamics of the signaled index.
[0188] The following non-limiting example shows the dynamic expansion of the index combined with the first variant, but all described expansions can also be applied to the second variant. In other words, the range of the merged candidate index is larger than the range of the motion compensation candidate list based on the triangle shape, and less than twice the range of the motion compensation candidate list based on the triangle shape.
[0189] As described in Table 11, an example extension of the index dynamics may be that idx0 is extended by the size of MaxNumTriangleMergeCand-2 (here 5-2=3):
[0190] (i) if idx0 is 0, idx1 is set to 1 (as in the first variant),
[0191] (ii) if idx0 is greater than 0 and less than 5, idx1 is set to 0 (as in the first variant),
[0192] (iii) If idx0 is greater than 4, idx0 is set to idx0-5, and idx1 is set to idx0+2 (extended index is added).
[0193] Table 11 Mapping between idx0 and idx1 (X: signaled idx0, O: shifted extended idx0)
[0194]
[0195] Likewise, as mentioned before, several other derivations of the extended index are possible, as are any other mappings that associate idx0 to a valid value and associate idx1 to a value that is dependent on idx0 other than the same value of idx0.
[0196] The extension size can be any value between 0 (equivalent to the first variable) and 15 (including 0 and 15), up to the maximum number of test combinations (= (5*4)-5 = (MaxNumTriangleMergeCand*(MaxNumTriangleMergeCand–1))-MaxNumTriangleMergeCand). In addition, this extension size must depend on Cand x The maximum number of (MaxNumTriangleMergeCand) can be used flexibly to use the maximum value of this signaling notification.
[0197] Compared to the first variant (the common part does not exist), a revised example of the VVC specification concerning triangle partitioning signaling is given below (bold unchanged) (strikethrough indicates removal, and underlining indicates addition):
[0198] 8.5.4.2 Derivation of Luma Motion Vectors for Merged Triangle Mode
[0199] …
[0200] The motion vectors mvA and mvB, the reference indices refIdxA and refIdxB, and the prediction list flags predListFlagA and predListFlagB are derived by the following ordered steps:
[0201] 1. Call the derivation process of the luma motion vector for the merge mode specified in clause 8.5.2.2 using the luma position (xCb, yCb), variables cbWidth and cbHeight as inputs, and the outputs are luma motion vectors mvL0[0][0], mvL1[0][0], reference indexes refIdxL0, refIdxL1, prediction list utilization flags preflagL0[0][0] and preflagL1[0][0], bidirectional prediction weight index bcwIdx and merge candidate list mergeCandList.
[0202] 2. Variables m and n are the merge indices of triangle splits 0 and 1, respectively, using merge_triangle_idx0[xCb][yCb] Export the variables m and n as follows:
[0203] m=merge_triangle_idx0[xCb][yCb]-(merge_triangle_idx0[xCb][yCb]>= MaxNumTriangleMergeCand)? MaxNumTriangleMergeCand:0 (8-447)n=(merge_ triangle_idx0[xCb][yCb]>=MaxNumTriangleMergeCand)? m+2: (m>0)? 0:1 (8- 448)
[0204]
[0205] 3.…
[0206] Table 9 11 - Syntax elements and associated binarization (where FL: fixed length coding, TR: truncated Rice coding, ...)
[0207]
[0208] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded binary numbers (where bypass represents no context and equal probability)
[0209]
[0210] Fourth variant: adding index dynamics
[0211] In a fourth variation, at least one embodiment comprises replacing all signaling with one single index representing the partitioning direction and the triangle merging candidate index. Thus, at least one main embodiment of a method for signaling triangle partitioning for inter prediction comprises signaling a generalized index representing the triangle partitioning direction, a first index and a second index of a uni-directional prediction candidate from a uni-directional prediction candidate list.
[0212] In the fourth variant embodiment, the previous third variant embodiment is generalized to any combination of index and partition direction using a signaled index mapped to a combination of partition direction and merge index. Table 14 describes an example of mapping.
[0213] Table 14: Mapping signaling index and triangle combinations
[0214]
[0215]
[0216] Likewise, as described above, several other derivation procedures are possible for mapping the signaled index to idx0, idx1, and partition direction.
[0217] A person skilled in the art will clearly derive this variation of the GPM, where the index in the table has been used to signal both the angle and the distance of the slanted boundary.The extended table may further define the merge candidate indexes.
[0218] An example of a modification of the VVC specification involving triangle partitioning signaling is given below (in bold), compared to the first variant (strikethrough indicates removal, and underlining indicates addition):
[0219] 7.3.7.7 Merge Data Syntax
[0220]
[0221]
[0222] 7.4.8.7 Merge Data Semantics
[0223] …
[0224] merge_triangle_idx[x0][y0] specifies the merge of the motion compensation candidate list based on the triangle shape A combination of candidate index and partition direction, where x0, y0 specifies the top left corner luma sample of the considered coding block relative to the image. The position of the upper left corner brightness sample of the image (x0, y0).
[0225] When merge_triangle_idx0[x0][y0] does not exist, it is inferred to be equal to 0.
[0226]
[0227] …
[0228] 8.5.4.2 Derivation of Luma Motion Vectors for Merged Triangle Mode
[0229] …
[0230] The motion vectors mvA and mvB, the reference indices refIdxA and refIdxB, and the prediction list flags predListFlagA and predListFlagB are derived by the following ordered steps:
[0231] 1. Call the derivation process of the luma motion vector for the merge mode specified in clause 8.5.2.2 using the luma position (xCb, yCb), variables cbWidth and cbHeight as inputs, and the outputs are luma motion vectors mvL0[0][0], mvL1[0][0], reference indexes refIdxL0, refIdxL1, prediction list utilization flags preflagL0[0][0] and preflagL1[0][0], bidirectional prediction weight index bcwIdx and merge candidate list mergeCandList.
[0232] 2. Variables m and n are the merged indices of triangle split 0 and 1 respectively, using merge_triangle_idx[xCb] [yCb] Export the variables m and n as follows:
[0233] merge_triangle_split_dir=signaled_merge_triangle_split_dir[merge_ triangle_idx[xCb][yCb]] (8-447)
[0234] m=merge_triangle_idx0[merge_triangle_idx[xCb][yCb]] (8-448)
[0235] n=merge_triangle_idx1[merge_triangle_idx[xCb][yCb]] (8-449)
[0236]
[0237] 3.…
[0238] Table 9-11 – Syntax elements and associated binarization (where FL: fixed length coding, TR: truncated Rice coding, ...)
[0239]
[0240] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded binary numbers (where bypass represents no context and equal probability)
[0241]
[0242] Additional Examples and Information
[0243] The present application describes various aspects, including tools, features, embodiments, models, methods, etc. Many aspects in these aspects are specifically described, and at least in order to show individual characteristics, are usually described in a manner that may sound restrictive. However, this is to describe the purpose clearly, and does not limit the application or scope of those aspects. In fact, all different aspects can be combined and interchanged to provide further aspects. In addition, these aspects can also be combined and interchanged with the aspects described in the earlier application.
[0244] The aspects described and contemplated in this application can be implemented in many different forms. Figure 7 , Figure 8 and Fig. 9 Some embodiments are provided, but other embodiments are contemplated, and Figure 7 , Figure 8 and Fig. 9 The discussion of the present invention does not limit the breadth of implementations. At least one of these aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to sending a generated or encoded bitstream. These and other aspects can be implemented as methods, apparatus, computer-readable storage media having stored thereon instructions for encoding or decoding data according to any of the methods described, and / or computer-readable storage media having stored thereon bitstreams generated according to any of the methods described.
[0245] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image", "picture" and "frame" may be used interchangeably.
[0246] Various methods are described herein, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0247] Various methods and other aspects described in this application can be used to modify modules, such as Figure 7 and Figure 8 The motion compensation modules (170, 275) of the video encoder 100 and decoder 200 are shown. In addition, the present aspects are not limited to VVC or HEVC, and can be applied to, for example, other standards and recommendations, whether existing or developed in the future, and extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise stated, or technically excluded, the aspects described in this application can be used alone or in combination.
[0248] Various numerical values are used in this application, for example, the maximum number of triangle partitioning pattern candidates. The specific values are used for example purposes and the described aspects are not limited to these specific values.
[0249] Figure 7 An encoder 100 is shown. Variations of the encoder 100 are contemplated, but for purposes of clarity, the encoder 100 is described below without describing all contemplated variations.
[0250] Before being encoded, the video sequence may undergo a pre-encoding process (101), for example, applying a color transform to an input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of input picture components in order to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0251] In encoder 100, a picture is encoded by encoder elements as described below. The picture to be encoded is segmented (102) and processed in units such as CUs. Each unit is encoded using, for example, intra or inter mode. When a unit is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which of intra mode or inter mode to use for encoding the unit and indicates the intra / inter decision by, for example, a prediction mode flag. For example, a prediction residual is calculated by subtracting (110) the predicted block from the original image block.
[0252] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients along with motion vectors and other syntax elements are entropy encoded (145) to output a bitstream. The encoder can skip the transform and apply quantization directly to the untransformed residual signal. The encoder can bypass both the transform and quantization, i.e., directly encode the residual without applying the transform or quantization process.
[0253] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (155) to reconstruct the image block. A loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / sample adaptive offset (SAO) filtering to reduce coding artifacts. The filtered picture is stored in a reference picture buffer (180).
[0254] Figure 8 2 shows a block diagram of a video decoder 200. In the decoder 200, the bitstream is decoded by the decoder elements as described below. The video decoder 200 generally performs the same Figure 7The decoding pass is the reverse of the encoding pass described in . The encoder 100 also typically performs video decoding as part of encoding the video data.
[0255] In particular, the input to the decoder includes a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors and other encoding information. Picture segmentation information indicates how the picture is segmented. Therefore, the decoder can divide (235) the image according to the decoded picture segmentation information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (255) to reconstruct the image block. The prediction block can be obtained (270) from intra-frame prediction (260) or motion compensated prediction (i.e., inter-frame prediction) (275). A loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0256] The decoded picture may further undergo post-decoding processing (285), such as an inverse color transform (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping that performs the inverse of the remapping performed in the pre-encoding process (101). The post-decoding process may use metadata derived in the pre-encoding process and signaled in the bitstream.
[0257] Fig. 9 A block diagram of an example of a system in which various aspects and embodiments are implemented is shown. System 1000 may be embodied as a device including various components described below, and is configured to perform one or more of the various aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected household appliances and servers. The elements of system 1000 may be embodied in a single integrated circuit (IC), multiple ICs and / or discrete components, either alone or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed over multiple ICs and / or discrete components. In various embodiments, system 1000 is coupled to one or more other systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more of the various aspects described in this document.
[0258] The system 1000 includes at least one processor 1010, which is configured to execute instructions loaded therein, which are used to implement various aspects described in this document, for example. The processor 1010 may include embedded memory, input and output interfaces, and various other circuits known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 1000 includes a storage device 1040, which may include non-volatile memory and / or volatile memory, including but not limited to electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, magnetic disk drive and / or optical disk drive. As non-limiting examples, the storage device 1040 may include an internal storage device, an additional storage device (including removable and non-removable storage devices), and / or a network accessible storage device.
[0259] The system 1000 includes an encoder / decoder module 1030, which is configured to, for example, process data to provide encoded video and / or decoded video, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a (multiple) module that can be included in a device to perform encoding and / or decoding functions. As is well known, a device may include one or both of the encoding and decoding modules. In addition, the encoder / decoder module 1030 may be implemented as a separate element of the system 1000, or may be incorporated into the processor 1010 as a combination of hardware and software known to those skilled in the art.
[0260] Program code to be loaded onto the processor 1010 or encoder / decoder 1030 to perform various aspects described in this document may be stored in the storage device 1040 and subsequently loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 may store one or more of various items during execution of the processes described in this document. Such stored items may include, but are not limited to, input video, decoded video or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from processing of equations, formulas, operations, and operation logic.
[0261] In some embodiments, memory internal to the processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be memory 1020 and / or a storage device 1040, such as a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, the external non-volatile flash memory is used to store, for example, an operating system for the television. In at least one embodiment, fast external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations, such as for MPEG-2 (MPEG refers to Moving Picture Experts Group, MPEG-2 is also known as ISO / IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding, a new standard being developed by the Joint Video Experts Team JVET).
[0262] Inputs to the elements of system 1000 may be provided through various input devices, as indicated at block 1130. Such input devices include, but are not limited to, the following: (i) an RF section that receives a radio frequency signal (RF) transmitted over the air, for example, by a broadcaster, (ii) a component (COMP) input terminal (or a collection of COMP input terminals), (iii) a universal serial bus (USB) input terminal, and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Fig. 9 Other examples not shown include composite video.
[0263] In various embodiments, the input device of block 1130 has associated corresponding input processing elements known in the art. For example, the RF section may be associated with elements suitable for: (i) selecting a desired frequency (also referred to as selecting a signal, or band limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band to select a signal frequency band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF section of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or near baseband frequency) or baseband. In a set-top box embodiment, the RF part and its associated input processing element receive the RF signal sent by wired (for example, cable) medium, and filter to the desired frequency band again by filtering, down-conversion and perform frequency selection. Various embodiments rearrange the order of above-mentioned (and other) elements, remove some in these elements, and / or add other elements of similar or different functions. Adding element can include inserting element between existing element, for example inserting amplifier and analog-to-digital converter. In various embodiments, the RF part includes antenna.
[0264] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented as needed, for example, within a separate input processing IC or within the processor 1010. Similarly, various aspects of USB or HDMI interface processing may be implemented as needed within a separate interface IC or within the processor 1010. The demodulated, error corrected, and demultiplexed streams are provided to various processing elements, including, for example, the processor 1010 and the encoder / decoder 1030, which operate in combination with memory and storage elements to process the data streams as needed for presentation on an output device.
[0265] The various components of system 1000 may be disposed within an integrated housing. Within the integrated housing, the various components may be interconnected and transmit data between them using a suitable connection arrangement 1140, such as an internal bus known in the art (including an inter-IC (I2C) bus, wiring, and printed circuit boards).
[0266] The system 1000 includes a communication interface 1050 capable of communicating with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to send and receive data through the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, in a wired and / or wireless medium.
[0267] In various embodiments, data is streamed or otherwise provided to the system 1000 using a wireless network such as a Wi-Fi network (e.g., IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers)). The Wi-Fi signal of these embodiments is received through a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other over the top communications. Other embodiments use a set-top box that delivers data through an HDMI connection of an input block 1130 to provide streaming data to the system 1000. Still other embodiments use an RF connection of an input block 1130 to provide streaming data to the system 1000. As described above, various embodiments provide data in a non-streaming manner. In addition, various embodiments use a wireless network other than a Wi-Fi network, such as a cellular network or a Bluetooth network.
[0268] The system 1000 can provide output signals to various output devices (including a display 1100, a speaker 1110, and other peripherals 1120). The display 1100 of various embodiments includes, for example, one or more of a touch screen display, an organic light emitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100 can be used in a television, a tablet computer, a laptop computer, a cell phone (mobile phone), or other devices. The display 1100 can also be integrated with other components (for example, as in a smart phone), or separated (for example, an external monitor for a laptop computer). In various examples of embodiments, the other peripherals 1120 include one or more of a stand-alone digital video disk (or digital versatile disk) (DVR for both terms), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripherals 1120 that provide functions based on the output of the system 1000. For example, a disk player performs the function of playing the output of the system 1000.
[0269] In various embodiments, control signals are communicated between the system 1000 and the display 1100, the speaker 1110, or other peripherals 1120 using signaling such as AV link, consumer electronics control (CEC) or other communication protocols, which can achieve device-to-device control with or without user intervention. The output device can be communicatively coupled to the system 1000 via a dedicated connection through the corresponding interfaces 1070, 1080, and 1090. Alternatively, the output device can be connected to the system 1000 via the communication interface 1050 using the communication channel 1060. The display 1100 and the speaker 1110 can be integrated into a single unit with other components of the system 1000 in an electronic device (such as, for example, a television). In various embodiments, the display interface 1070 includes a display driver, such as, for example, a timing controller (T Con) chip.
[0270] For example, if the RF portion of input 1130 is part of a separate set-top box, the display 1100 and speaker 1110 may alternatively be separate from one or more of the other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signal may be provided via a dedicated output connection (including, for example, an HDMI port, a USB port, or a COMP output).
[0271] The embodiments may be performed by computer software implemented by the processor 1010, or by hardware, or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. As a non-limiting example, the memory 1020 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology (such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory). As a non-limiting example, the processor 1010 may be of any type suitable for the technical environment and may cover one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0272] Various implementations involve decoding. "Decoding" as used in this application may encompass, for example, all or part of the processing performed on a received coded sequence to produce a final output suitable for display. In various embodiments, these processes include one or more processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processes also or alternatively include processes performed by a decoder of the various implementations described in this application, such as motion compensated prediction using a triangle partitioning pattern, wherein at least one merge candidate index in a triangle shape-based motion compensation candidate list is derived from a signaled syntax element.
[0273] As a further example, in one embodiment, "decoding" refers only to entropy decoding, in another embodiment, "decoding" refers only to differential decoding, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or generally to a broader decoding process will be clear based on the context of the particular description and is considered to be well understood by those skilled in the art.
[0274] Various implementations involve encoding. In a manner similar to the discussion above regarding "decoding", "encoding" as used in this application can cover, for example, all or part of the processing of an input video sequence to produce an encoded bitstream. In various embodiments, these processes include one or more processes typically performed by an encoder, such as segmentation, differential coding, transforms, quantization, and entropy coding. In various embodiments, such processes also or alternatively include processes performed by an encoder of the various implementations described in this application, such as motion compensated prediction using a triangle segmentation pattern, wherein at least one merge candidate index in a triangle shape-based motion compensation candidate list is derived from a signaled syntax element.
[0275] As a further example, in one embodiment, "encoding" refers only to entropy encoding, in another embodiment, "encoding" refers only to differential encoding, and in another embodiment, "encoding" refers to a combination of differential encoding and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or generally to a broader encoding process will be clear based on the context of the particular description and is considered to be well understood by those skilled in the art.
[0276] Note that the syntax elements used herein (eg, merge_triangle_idx_num[x0][y0], merge_triangle_idx[x0][y0]) are descriptive terms, and therefore, they do not exclude the use of other syntax element names.
[0277] When the figure is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding device. Similarly, when the figure is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.
[0278] Various embodiments relate to rate-distortion optimization. In particular, during the encoding process, a balance or trade-off between rate and distortion is often considered, often subject to computational complexity constraints. Rate-distortion optimization is often formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are different approaches to solving the rate-distortion optimization problem. For example, these approaches can be based on extensive testing of all coding options (including all considered modes or coding parameter values) and a complete evaluation of their coding costs and associated distortions of the reconstructed signal after encoding and decoding. Faster approaches can also be used to save coding complexity, in particular, to calculate approximate distortions based on prediction or prediction residual signals rather than reconstructed signals. The two approaches can also be mixed, for example, using approximate distortions only for some possible coding options and full distortions for other coding options. Other approaches only evaluate a subset of possible coding options. Advantageously, the disclosed signaling covering a subset of possible pairs of motion compensation candidate lists based on triangle shapes provides such a faster approach. More generally, many approaches employ any of a variety of techniques for optimization, but optimization is not necessarily a complete evaluation of both coding costs and associated distortions.
[0279] The implementations and aspects described herein can be implemented in, for example, methods or processes, devices, software programs, data streams, or signals. Even if only discussed in the context of the form of a single implementation (e.g., discussed only as a method), the implementation of the features discussed can also be implemented in other forms (e.g., devices or programs). Devices can be implemented in, for example, appropriate hardware, software, and firmware. These methods can be implemented in, for example, a processor, which generally refers to a processing device (including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device). Processors also include communication devices, such as, for example, computers, cellular phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate information communication between end users.
[0280] Reference to "one embodiment" or "an embodiment" or "an implementation" or "an implementation", as well as other variations thereof, means that a particular feature, structure, characteristic, etc. described in conjunction with the embodiment is included in at least one embodiment. Thus, the appearance of the phrase "in one embodiment" or "in an embodiment" or "in an implementation" or "in an implementation", as well as any other variations appearing throughout this application, do not necessarily refer to the same embodiment.
[0281] Additionally, the present application may refer to "determining" various pieces of information. Determining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from a memory.
[0282] Additionally, the present application may refer to "accessing" various pieces of information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0283] Furthermore, the present application may refer to "receiving" various pieces of information. Receiving, like "accessing," is a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, during operations such as, for example, storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, "receiving" is generally involved in one way or another.
[0284] It should be understood that the use of any of the following “ / ”, “and / or”, and “at least one of”, for example, in the case of “A / B”, “A and / or B”, and “at least one of A and B”, is intended to cover selecting only the first listed option (A), or only the second listed option (B), or selecting both options (A and B). As another example, in the case of “A, B, and / or C” and “at least one of A, B, and C”, such wording is intended to cover selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). As will be apparent to one of ordinary skill in this and related arts, this can be extended to as many items as listed.
[0285] In addition, as used herein, the word "signaling" refers in particular to indicating something to a corresponding decoder. For example, in some embodiments, the encoder signals a specific one of a plurality of mapping functions for deriving at least one merge candidate index in a motion compensation candidate list based on a triangle shape. Thus, in one embodiment, the same parameters are used on both the encoder side and the decoder side. Thus, for example, the encoder can send (explicit signaling) specific parameters to the decoder so that the decoder can use the same specific parameters. On the contrary, if the decoder already has specific parameters as well as other parameters, signaling can be used without sending (implicit signaling) to simply allow the decoder to know and select specific parameters. Bit savings are achieved in various embodiments by avoiding the transmission of any actual function. It should be understood that signaling can be accomplished in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to signal information to the corresponding decoder. Although the verb form of the word "signaling" was mentioned above, the word "signal" can also be used as a noun here.
[0286] It will be apparent to one of ordinary skill in the art that implementations may generate various signals formatted to carry information that may be stored or transmitted, for example. The information may include, for example, instructions for performing a method, or data generated by one of the described implementations. For example, a signal may be formatted to carry a bitstream of the described embodiments. Such a signal may, for example, be formatted as an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is well known, a signal may be sent over a variety of different wired or wireless links. The signal may be stored on a processor readable medium.
[0287] We have described a number of embodiments. Features of these embodiments may be provided alone or in any combination across the various claim categories and types. In addition, an embodiment may include one or more of the following features, devices, or aspects, alone or in any combination across the various claim categories and types:
[0288] • Modify the signaling of triangle partitioning applied to the inter prediction process in the decoder and / or encoder.
[0289] • Encoding / decoding the video according to any disclosed method includes signaling of triangle partitioning for inter prediction.
[0290] • Inserting a syntax element in the signaling that represents the index into the triangle shape based motion compensation candidate list.
[0291] • At least one merge candidate index in the triangle shape based motion compensation candidate list is derived from a signaled syntax element representing an index in the triangle shape based motion compensation candidate list.
[0292] Inserting a syntax element indicating a first index of a uni-directional prediction candidate in the uni-directional prediction candidate list in the signaling, and deriving a second index of the uni-directional prediction candidate from the first index.
[0293] Inserting a flag indicating which index is signaled and a syntax element indicating the first index of a unidirectional prediction candidate in the unidirectional prediction candidate list in the signaling, and deriving the second index of the unidirectional prediction candidate from the first index.
[0294] Inserting a syntax element indicating an extended index of a unidirectional prediction candidate in a unidirectional prediction candidate list in signaling, and deriving a second index of the unidirectional prediction candidate from the first index.
[0295] • Inserting in the signaling a syntax element representing a generalized index encoding the partition direction, a first index and a second index of a uni-directional prediction candidate from a uni-directional prediction candidate list.
[0296] • Inserting syntax elements in the signaling that enable the decoder to identify the triangle partitioning (TPM) derivation process to be used.
[0297] • A mapping function for deriving a triangle partition containing n=(m>0)?0:1, where n is the derived index and m is the signaled index.
[0298] For deriving n=(m=0)? 1: Mapping function for triangle segmentation, where n is the derived index and m is the signaled index.
[0299] • Apply a mapping function to derive triangle shape based motion compensation candidates for inter prediction at the decoder.
[0300] • A bitstream or signalling comprising one or more of said syntax elements or variations thereof.
[0301] • A bitstream or signaling including syntax conveying information generated according to any of the described embodiments.
[0302] • Inserting syntax elements in the signaling that enable the decoder to perform triangle shape based motion compensation in a manner corresponding to that used by the encoder.
[0303] Insert a syntax element in the signaling in the slice / slice header that enables the decoder to use TPM derivation in a manner corresponding to that used by the encoder, the slice / slice header indicating that all luma CUs in the slice / slice use that TPM derivation method.
[0304] Insertion of syntax elements in the signaling in the picture parameter set (PPS) that enable the decoder to use TPM derivation in a manner corresponding to that used by the encoder, which indicates that all luma CUs in a frame use that TPM derivation method.
[0305] Insertion of syntax elements in the signaling in the sequence parameter set (SPS) that enable the decoder to use TPM derivation in a manner corresponding to that used by the encoder, which indicates that all luma CUs in the sequence use that TPM derivation method.
[0306] • Creating and / or sending and / or receiving and / or decoding a bitstream or signaling comprising one or more of said syntax elements or variations thereof.
[0307] • Creating and / or sending and / or receiving and / or decoding according to any of the described embodiments.
[0308] • A method, process, apparatus, medium storing instructions, medium storing data or signaling according to any of the described embodiments.
[0309] A TV, set-top box, mobile phone, tablet, or other electronic device that performs a TPM export according to any of the described embodiments.
[0310] A television, set-top box, cell phone, tablet, or other electronic device that performs a TPM export according to any of the described embodiments and displays (e.g., using a monitor, screen, or other type of display) the resulting image.
[0311] A television, set-top box, mobile phone, tablet or other electronic device that selects a channel (e.g., using a tuner) to receive signaling including an encoded image and performs TPM derived parameters according to any of the described embodiments.
[0312] A television, set-top box, mobile phone, tablet, or other electronic device that receives signaling including the encoded image over the air (e.g., using an antenna) and performs TPM derivation according to any of the described embodiments.
Claims
1. A method for decoding, comprising: decoding a syntax element representing a first merge candidate index of a triangle shape based motion compensation candidate list; deriving a second merge candidate index in the triangle shape based motion compensation candidate list from the decoded syntax element, wherein a maximum number of candidates in the triangle shape based motion compensation candidate list is greater than 2; as well as A block of a picture is decoded by performing triangle shape based motion compensation using the motion information of the merge candidate at the position indicated by the first merge candidate index in the triangle shape based motion compensation candidate list and the motion information of the merge candidate at the position indicated by the second merge candidate index in the triangle shape based motion compensation candidate list.
2. The method according to claim 1, wherein: The syntax element indicates which index in the triangle shape-based motion compensation candidate list the first merge candidate index corresponds to.
3. The method according to claim 1, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to 0.
4. The method according to claim 1, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to half of the first merge candidate index.
5. The method according to claim 1, wherein: The first merge candidate index of the triangle-shaped motion compensation candidate list further indicates one of the following: a division direction of a diagonal boundary or an angle and a distance of an inclined boundary.
6. An apparatus for decoding, comprising one or more processors, wherein the one or more processors are configured to: decoding a syntax element representing a first merge candidate index of a triangle shape based motion compensation candidate list; deriving a second merge candidate index in the triangle shape based motion compensation candidate list from the decoded syntax element, wherein a maximum number of candidates in the triangle shape based motion compensation candidate list is greater than 2; as well as A block of a picture is decoded by performing triangle shape based motion compensation using the motion information of the merge candidate at the position indicated by the first merge candidate index in the triangle shape based motion compensation candidate list and the motion information of the merge candidate at the position indicated by the second merge candidate index in the triangle shape based motion compensation candidate list.
7. The device according to claim 6, wherein: The syntax element indicates which index in the triangle shape-based motion compensation candidate list the first merge candidate index corresponds to.
8. The device according to claim 6, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to 0.
9. The device according to claim 6, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to half of the first merge candidate index.
10. The device according to claim 6, wherein: The first merge candidate index of the triangle-shaped motion compensation candidate list further indicates one of the following: a division direction of a diagonal boundary or an angle and a distance of an inclined boundary.
11. A method for encoding, comprising: Determine a first merge candidate index of a triangle-shaped based motion compensation candidate list, wherein the first merge candidate index is capable of deriving a second merge candidate index in the triangle-shaped based motion compensation candidate list, and wherein a maximum number of candidates in the triangle-shaped based motion compensation candidate list is greater than 2; encoding a block of a picture by performing triangle shape-based motion compensation using motion information of a merge candidate at a position indicated by the first merge candidate index in the triangle shape-based motion compensation candidate list and motion information of a merge candidate at a position indicated by the second merge candidate index in the triangle shape-based motion compensation candidate list; as well as A syntax element representing the first merge candidate index of the triangle shape based motion compensation candidate list is encoded.
12. The method according to claim 11, wherein: The syntax element indicates which index in the triangle shape-based motion compensation candidate list the first merge candidate index corresponds to.
13. The method according to claim 11, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to 0.
14. The method according to claim 11, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to half of the first merge candidate index.
15. An apparatus for encoding, comprising one or more processors, wherein the one or more processors are configured to: Determine a first merge candidate index of a triangle-shaped based motion compensation candidate list, wherein the first merge candidate index is capable of deriving a second merge candidate index in the triangle-shaped based motion compensation candidate list, and wherein a maximum number of candidates in the triangle-shaped based motion compensation candidate list is greater than 2; encoding a block of a picture by performing triangle shape-based motion compensation using motion information of a merge candidate at a position indicated by the first merge candidate index in the triangle shape-based motion compensation candidate list and motion information of a merge candidate at a position indicated by the second merge candidate index in the triangle shape-based motion compensation candidate list; as well as A syntax element representing the first merge candidate index of the triangle shape based motion compensation candidate list is encoded.
16. The device according to claim 15, wherein: The syntax element indicates which index in the triangle shape-based motion compensation candidate list the first merge candidate index corresponds to.
17. The device according to claim 15, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to 0.
18. The device according to claim 15, wherein: When the first merge candidate index is equal to 0, the second merge candidate index is set to 1; otherwise, the second merge candidate index is set to half of the first merge candidate index.
19. A computer program product comprising software code instructions which, when executed by a processor, perform the method according to any one of claims 1-5 or 11-14.