Advanced syntax for inter-frame prediction using geometric partitioning

By using geometric segmentation mode for inter-frame prediction in video encoding and decoding, the problem of insufficient compression ratio and complexity in the prior art is solved, and more efficient video encoding and decoding is achieved, and encoding and decoding efficiency and quality are improved.

CN114868395BActive Publication Date: 2025-08-12DOUYIN VISION CO LTD +1
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080090435.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-24
Filing Date
2020-12-24
Publication Date
2025-08-12
Estimated Expiration
2040-12-24

AI Technical Summary

Technical Problem

There is room for improvement in the compression ratio and complexity of existing video encoding and decoding technologies, especially in high-efficiency video encoding and decoding (HEVC) and general video encoding and decoding, where more efficient inter prediction methods are needed to improve the encoding and decoding efficiency.

Method used

The geometric segmentation mode is used for inter prediction, and the video block and bitstream representation is converted through the rule-based geometric segmentation mode, including the conversion between the video unit and the bitstream representation, the video block is coded using the geometric segmentation mode, and the applicability is determined based on the block width, block height and aspect ratio, and the mapping of geometric segmentation mode index and distance index is applied, and the encoding and decoding is optimized in combination with the filtering process.

Benefits of technology

It improves the compression efficiency and encoding and encoding efficiency of video encoding and encoding and encoding and encoding efficiency, reduces the computational complexity, and enhances the flexibility and quality of video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114868395B_ABST
    Figure CN114868395B_ABST
Patent Text Reader

Abstract

A method of video processing is described. The method includes determining, based on a rule, the applicability of a geometric partitioning mode for converting between a current video block of a video and a bitstream representation of the video; and performing the conversion based on the determination, wherein the rule depends on a block width, a block height, and / or an aspect ratio of the current video block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is an application entering the Chinese national phase of International Patent Application No. PCT / CN2020 / 138784 filed on December 24, 2020, which claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 128091 filed on December 24, 2019. The entire disclosure of the above application is incorporated by reference as part of the disclosure of this application. Technical Field

[0003] This patent document relates to video encoding and decoding technologies, devices and systems. Background Art

[0004] Currently, efforts are underway to improve the performance of current video codec technologies to provide better compression ratios or to provide video encoding and decoding schemes that allow for lower complexity or parallel implementations. Several new video codec tools have recently been proposed by industry experts and are currently being tested to determine their effectiveness. Summary of the Invention

[0005] Devices, systems, and methods related to digital video coding and decoding, and more particularly, to motion vector management, are described. The methods described can be applied to existing video coding standards (e.g., High Efficiency Video Codec (HEVC) or Universal Video Codec) and future video coding standards or codecs.

[0006] In one representative aspect, the disclosed technology can be used to provide a method of video processing, the method comprising determining, based on a rule, the applicability of a geometric partitioning mode for converting between a current video block of a video and a bitstream representation of the video; and performing the conversion based on the determination, wherein the rule depends on a block width, a block height, and / or an aspect ratio of the current video block.

[0007] In another representative aspect, the disclosed technology can be used to provide another method of video processing. The method includes performing conversion between a video unit of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, wherein the format rule specifies whether to include one or more syntax elements indicating a number of geometric partitioning modes allowed to represent the video unit in the bitstream representation.

[0008] In yet another representative aspect, the disclosed technology can be used to provide another method of video processing. The method includes performing conversion between a video unit comprising one or more video blocks of a video and a bitstream representation of the video according to a rule, wherein the one or more video blocks are encoded or decoded using one or more geometric partitioning modes, and wherein the rule specifies that the one or more geometric partitioning modes are from two sets of geometric partitioning modes allowed for processing the one or more video blocks.

[0009] In another representative aspect, the disclosed technology can be used to provide another method of video processing. The method includes performing conversion between a video unit comprising one or more video blocks of a video and a bitstream representation of the video according to a rule, wherein the one or more video blocks are classified into a plurality of block categories according to decoded information, and wherein the rule specifies a plurality of sets of geometric partitioning modes allowed for processing the one or more video blocks.

[0010] In another representative aspect, the disclosed technology can be used to provide another method of video processing, the method comprising performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule specifies that a mapping between a geometric partitioning mode index of the current video block and an angle index and / or a distance index for determining a partition of the current video block depends on decoded information of the current video block.

[0011] In another representative aspect, the disclosed technology can be used to provide another method of video processing, the method comprising performing a conversion between a current video block of a video unit of a video and a bitstream representation of the video according to a rule, wherein the rule specifies that a first number indicating a number of geometric partitioning modes, geometric partitioning angles, and / or geometric partitioning distances allowed for the current video block is different from a second number indicating a number of geometric partitioning modes, geometric partitioning angles, and / or geometric partitioning distances available for the video unit.

[0012] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a current video block of a video and a bitstream representation of the video, wherein a geometric partitioning mode index of the current video block is encoded in the bitstream representation, such that binarization of the geometric partitioning mode index is performed according to a rule, wherein the rule stipulates that when a dimension of the current video block satisfies a specific condition, a maximum value of the geometric partitioning mode index during binarization is equal to X, where X is a positive integer.

[0013] In another representative aspect, the disclosed technology can be used to provide another method of video processing, the method comprising: for converting between a current video block of a video and a bitstream representation of the video, determining a geometric partition distance based on a table including values of geometric partition distances corresponding to geometric partition indices; and performing the conversion based on the determination.

[0014] In another representative aspect, the disclosed technology can be used to provide another method of video processing. The method includes performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule specifies that in order to encode the current video block using a geometric partitioning mode, the conversion allows the use of a codec tool, and wherein the bitstream representation includes an indication of and information about the codec tool and the geometric partitioning mode.

[0015] In another representative aspect, the disclosed technology can be used to provide another method of video processing. The method includes performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule specifies whether or how a filtering process is applied to the current video block depends on a geometric partitioning mode used when encoding or decoding the current video block.

[0016] Furthermore, in a representative aspect, an apparatus in a video system is disclosed, comprising a processor and non-transitory memory having instructions thereon, wherein execution of the instructions by the processor causes the processor to implement any one or more of the disclosed methods.

[0017] Furthermore, a computer program product stored on a non-transitory computer-readable medium is disclosed, the computer program product comprising program code for performing any one or more of the disclosed methods.

[0018] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the description, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0019] Figure 1 Example locations of spatial merge candidates are shown.

[0020] Figure 2 Examples of candidate pairs considered for redundancy checking of spatial merge candidates are shown.

[0021] Figure 3 An example of motion vector scaling for temporal merge candidates is shown.

[0022] Figure 4 Example candidate positions for time-domain Merge candidates are shown.

[0023] Figure 5 An example of inter prediction mode based on triangle partitioning is shown.

[0024] Figure 6 An example of unidirectional prediction motion vector selection for triangle partitioning mode is shown.

[0025] Figure 7A and Figure 7BExamples of weights used in the blending process for luma blocks and chroma blocks are shown separately.

[0026] Figure 8 Examples of existing and proposed shapes related to triangle prediction mode are shown.

[0027] Figure 9 An example of a geometric merge mode (GEO) partition boundary description is shown.

[0028] Figure 10A An example illustration of edges supported in GEO is shown.

[0029] Figure 10B An example of the geometric relationship between a given pixel position and two edges is shown.

[0030] Figure 11 Examples of proposed corners and their corresponding aspect ratios for GEO are shown.

[0031] Figure 12 Example positions of the top left chroma sample as a function of the ChromaLocType variable are shown.

[0032] Figure 13A is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document.

[0033] Figure 13B is a block diagram of an example of a video processing system.

[0034] Figure 14 A flow chart illustrating an example method for video processing is shown.

[0035] Figure 15 is a block diagram illustrating a video encoding and decoding system according to some embodiments of the present disclosure.

[0036] Figure 16 is a block diagram illustrating an encoder according to some embodiments of the present disclosure.

[0037] Figure 17 is a block diagram illustrating a decoder according to some embodiments of the present disclosure.

[0038] 18A to 18C is a flow chart of an example method for video processing based on some implementations of the disclosed technology.

[0039] Figures 19 to 21 The specification of angleIdx and distanceIdx values is shown.

[0040] Figure 22 shows the old Table 8-10 that was deleted from the relevant working draft,

[0041] Figure 23 Tables 8-10 of the new recommendations are shown with corresponding changes in the relevant working drafts.

[0042] Figure 24 A mapping table of geo_partition_idx values based on geo_partition_idx values is shown.

[0043] Figure 25 shows the old Table 36 that was deleted from the relevant working draft, and

[0044] Figures 26 to 30 An example of the newly proposed Table 36 is shown, where Table 36 shows the specification of angleIdx and distanceIdx values based on the geo_partition_idx value. DETAILED DESCRIPTION

[0045] HEVC / H.265 video codec

[0046] Video codec standards evolve primarily through the well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. The two organizations jointly developed H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC. Since H.262, video codec standards have been based on a hybrid video codec architecture that utilizes temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). JVET meetings are also held quarterly, with the goal of achieving a 50% bitrate reduction compared to HEVC for the new codec standard. The new video codec standard was officially named the Versatile Video Codec (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. Due to the ongoing efforts to standardize VVC, new codec technologies are adopted into the VVC standard at each JVET meeting. The VVC working draft and test model (VTM) are updated after each meeting. The VVC project is currently aiming for technical completion (FDIS) at the July 2020 meeting.

[0047] 2.1. Extended Merge Prediction

[0048] In VTM, the merge candidate list is constructed by including the following five types of candidates in sequence:

[0049] 1) Airspace MVP from the airspace adjacent to the CU

[0050] 2) Temporal MVP of collocated CUs

[0051] 3) History-based MVP from FIFO table

[0052] 4) Paired Average MVP

[0053] 5) Zero MV.

[0054] The size of the merge list is signaled in the slice header, and the maximum allowed size of the merge list in VTM is 6. For each CU code in merge mode, the index of the best merge candidate is encoded using truncated unary binarization (TU). The first bin of the merge index is decoded with context, and bypass codecs are used for other bins.

[0055] This course will introduce the generation process of each type of Merge candidate.

[0056] 2.1.1. Spatial Candidate Derivation

[0057] The derivation of spatial Merge candidates for VVC is the same as that for HEVC. Figure 1 Up to four Merge candidates are selected from the candidates at the positions shown. The order of derivation is A0, B0, B1, A1 and B2. Position B2 is considered only when any CU at position A0, B0, B1, A1 is unavailable (for example, because it belongs to another strip or slice) or is intra-coded. After the candidate at position A1 is added, the addition of the remaining candidates is subject to redundancy check, which ensures that candidates with the same motion information are excluded from the list, thereby improving codec efficiency. In order to reduce computational complexity, not all possible candidate pairs are considered in the mentioned redundancy check. Instead, only the Figure 2 The pairs are linked by arrows in , and a candidate is added to the list only if the corresponding candidate for redundancy check does not have the same motion information.

[0058] 2.1.2. Temporal Candidate Derivation

[0059] In this step, only one candidate is added to the list. Specifically, when deriving the temporal merge candidate, the scaled motion vector is derived based on the co-located CU belonging to the collocated reference picture. The reference picture list used to derive the co-located CU is explicitly signaled in the slice header. Figure 3As shown by the dotted line in , the scaled motion vector for the temporal merge candidate is obtained, which is scaled from the motion vector of the co-located CU using the POC distances tb and td, where tb is defined as the POC difference between the reference picture of the current picture and the current picture, and td is defined as the POC difference between the reference picture of the co-located picture and the co-located picture. The reference picture index of the temporal merge candidate is set to zero.

[0060] like Figure 4 As shown, the position for the temporal candidate is selected between candidates C0 and C1. If the CU at position C0 is not available, is intra-coded, or is outside the current row of the CTU, position C1 is used. Otherwise, position C0 is used in the derivation of the temporal merge candidate.

[0061] 2.1.3. History-based Merge Candidate Export

[0062] History-based MVP (HMVP) Merge candidates are added to the Merge list after spatial MVP and TMVP. In this method, the motion information of previously coded blocks is stored in a table and used as the MVP for the current CU. A table with multiple HMVP candidates is maintained during the encoding / decoding process. The table is reset (cleared) when a new CTU row is encountered. Whenever a non-subblock inter-coded CU exists, the associated motion information is added to the last entry of the table as a new HMVP candidate.

[0063] In VTM, the HMVP table size S is set to 6, which indicates that up to 6 historically based MVP (HMVP) candidates can be added to the table. When a new motion candidate is inserted into the table, a constrained first-in-first-out (FIFO) rule is used, where a redundancy check is first applied to find if there is an identical HMVP in the table. If found, the identical HMVP is deleted from the table and all HMVP candidates are moved forward.

[0064] HMVP candidates can be used in the Merge candidate list construction process. The most recent HMVP candidates in the table are checked in order and inserted into the candidate list after the TMVP candidate. Redundancy checks are applied to HMVP candidates to make spatial or temporal Merge candidates.

[0065] To reduce the number of redundant checking operations, the following simplifications are introduced:

[0066] The number of HMPV candidates used for Merge list generation is set to (N<=4) × M: (8–N), where N indicates the number of existing candidates in the Merge list and M indicates the number of available HMVP candidates in the table.

[0067] Once the total number of available Merge candidates reaches the maximum allowed Merge candidate minus 1, the Merge candidate list construction process from HMVP is terminated.

[0068] 2.1.4. Pairwise Average Merge Candidate Derivation

[0069] Pairwise average candidates are generated by averaging predefined candidate pairs in the existing merge candidate list. The predefined pairs are defined as {(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}, where the numbers represent the merge index of the merge candidate list. The averaged motion vector is calculated for each reference list separately. If two motion vectors are available in a list, they are averaged even if they point to different reference pictures. If only one motion vector is available, that motion vector is used directly. If no motion vector is available, the list remains invalid.

[0070] When the merge list is not full after adding pairwise average merge candidates, zero MVPs are inserted at the end until the maximum number of merge candidates is encountered.

[0071] 2.2. Triangle Partitioning for Inter-frame Prediction

[0072] In VTM, inter prediction supports triangle partitioning mode (TPM). Triangle partitioning mode is only applied to CUs of 64 samples or larger, and is encoded or decoded in skip or merge mode, rather than in regular merge mode, MMVD mode, CIIP mode, or sub-block merge mode. A CU-level flag is used to indicate whether triangle partitioning mode is applied.

[0073] When using this mode, the CU can be evenly divided into two triangular partitions using diagonal or anti-diagonal partitioning ( Figure 5 ). Each triangle partition in the CU uses its own motion for inter prediction; only unidirectional prediction is allowed for each partition, i.e., each partition has one motion vector and one reference index. Unidirectional prediction motion constraints are applied to ensure that, as with traditional bidirectional prediction, only two motion-compensated predictions are required for each CU. The unidirectional prediction motion for each partition is derived directly from the Merge candidate list constructed for extended Merge prediction in 2.1, and the unidirectional prediction motion is selected from a given Merge candidate in the list according to the process in 2.2.1.

[0074] If triangle partitioning mode is used for the current CU, a flag indicating the direction of the triangle partitioning (diagonal or anti-diagonal) and two Merge indices (one for each partition) are further signaled. After predicting each of the triangle partitions, a blending process with adaptive weights is used to adjust the sample values along the diagonal or anti-diagonal edges. This is the prediction signal for the entire CU, and the transform and quantization process will be applied to the entire CU, just as in other prediction modes. Finally, as in 2.2.3, the motion field of the CU predicted using triangle partitioning mode is stored in 4×4 units.

[0075] 2.2.1. One-way prediction candidate list construction

[0076] Given a Merge candidate index, use the process in 2.1 to derive the unidirectional prediction motion vector from the Merge candidate list constructed for extended Merge prediction, such as Figure 6 For the candidates in the list, their LX motion vectors (where X is equal to the parity of the Merge candidate index value) are used as the unidirectional prediction motion vectors for triangle partitioning mode. These motion vectors are Figure 6 In the case where the corresponding LX motion vector does not exist, the L(1-X) motion vector of the same candidate in the extended Merge prediction candidate list is used as the unidirectional prediction motion vector for the triangle partition mode.

[0077] 2.2.2. Blending along triangle split edges

[0078] After each triangle segmentation is predicted using its own motion, blending is applied to the two prediction signals to derive samples around diagonal or anti-diagonal edges. The following weights are used in the blending process:

[0079] For luma it is {7 / 8, 6 / 8, 5 / 8, 4 / 8, 3 / 8, 2 / 8, 1 / 8}, and for chroma it is {6 / 8, 4 / 8, 2 / 8}, as shown in FIG7 .

[0080] 2.2.3. Sports Field Storage

[0081] The motion vector of a CU encoded and decoded in triangle partitioning mode is stored in 4x4 units. Depending on the position of each 4x4 unit, a unidirectional prediction or bidirectional prediction motion vector is stored. Mv1 and Mv2 are represented as unidirectional prediction motion vectors for partition 1 and partition 2, respectively. If the 4x4 unit is located in a non-weighted area as shown in the example of Figure 7, Mv1 or Mv2 is stored for the 4x4 unit. Otherwise, if the 4x4 unit is located in a weighted area, a bidirectional prediction motion vector is stored. The bidirectional prediction motion vector is derived from Mv1 and Mv2 according to the following process:

[0082] 1) If Mv1 and Mv2 are from different reference picture lists (one from L0 and the other from L1), then Mv1 and Mv2 are simply combined to form a bi-predictive motion vector.

[0083] 2) Otherwise, if Mv1 and Mv2 are from the same list, and without loss of generality, assume that they are both from L0. In this case,

[0084] 2.a) If the reference picture of Mv2 (or Mv1) appears in L1, then the reference picture is used in L1 to convert Mv2 (or Mv1) into an L1 motion vector. Then the two motion vectors are combined to form a bidirectional prediction motion vector;

[0085] Otherwise, instead of bidirectional predicted motion, only unidirectional predicted motion Mv1 is stored.

[0086] 2.3. Geometric Partitioning for Inter Prediction (GEO)

[0087] The following description is excerpted from JVET-P0884, JVET-P0107, JVET-P0304, and JVET-P0264.

[0088] The Geometric Merge Mode (GEO) was proposed at the 15th JVET conference in Gothenburg as an extension of the existing Triangle Prediction Mode (TPM). At the 16th JVET conference in Geneva, the simpler GEO mode from JVET-P0884 was selected as the CE anchor for further research. Currently, VVC is researching the GEO mode as a replacement for the existing TPM.

[0089] Figure 8 The TPM in VTM-6.0 is shown along with additional shapes proposed for non-rectangular interior blocks.

[0090] The division boundary of the geometric merge mode is determined by the angle and distance offset ρ i Description, such as Figure 9 As shown. represents a quantized angle between 0 and 360 degrees, and the distance offset is ρ i represents the maximum distance ρ max In addition, the partitioning directions that overlap with binary tree partitioning and TPM partitioning are excluded.

[0091] In JVET-P0884, GEO is applied to block sizes no smaller than 8×8, and for each block size, there are 82 different partitioning methods, distinguished by 24 corners and 4 edges relative to the center of the CU. Figure 10AIt shows that starting from edge 0 passing through the center of the CU, 4 edges are evenly distributed along the direction of the normal vector within the CU. Each partitioning pattern in GEO (i.e., a pair of corner indices and edge indices) is assigned a pixel adaptive weight table to mix the samples on the two partitioned parts, where the weight values of the samples range from 0 to 8 and are determined by the L2 distance from the center position of the pixel to the edge. Basically, when assigning weight values, the unity gain constraint is followed, that is, when a small weight value is assigned to the GEO partition, a large complementary weight value is assigned to the other partition, totaling 8.

[0092] The calculation of the weight value for each pixel is twofold: (a) calculating the displacement from the pixel position to a given edge, and (c) mapping the calculated displacement to a weight value through a predefined lookup table. The method for calculating the displacement from a pixel position (x, y) to a given edge Edgei is actually the same as calculating the displacement from (x, y) to Edge0 and subtracting it from the distance ρ between Edge0 and Edgei. Figure 10B The geometric relationship between (x, y) and the edge is shown. Specifically, the displacement from (x, y) to Edgei can be expressed as follows:

[0093]

[0094] The value of ρ is a function of the normal vector and the maximum length of the edge index I (denoted by ρmax), that is:

[0095]

[0096] Where N is the number of edges supported by GEO, and the "1" is to prevent the last edge EdgeN-1 from being too close to the CU corner for certain corner indices. Substituting equation (6) with equation (8), we can calculate the displacement from each pixel (x, y) to a given edge i. In short, we will Expressed as wIdx(x, y), ρ needs to be calculated once for each CU, and wIdx(x, y) needs to be calculated once for each sample point, which involves multiplication.

[0097] 2.3.1.JVET-P0884

[0098] Based on CE4-1.14 of the 16th Geneva JVET meeting, JVET-P0884 incorporates the proposed slope-based version 2 of JVET-P0107, JVET-P0304, and simplifications of Test 1 of JVET-P0264.

[0099] a) In the joint contribution, the geo angle is defined as the same slope (tangled power of 2) as in JVET-P0107 and JVET-P0264. The slopes used in this proposal are (1, 1 / 2, 1 / 4, 4, 2). In this case, if the blending mask is calculated on the fly, the multiplication is replaced by a shift operation.

[0100] b) The rho calculation is replaced by offset X and offset Y, as described in JVET-P 304. In this case, only 24 blend masks need to be stored without computing blend masks on the fly.

[0101] 2.3.2.JVET-P0107 Slope-Based Version 2

[0102] Based on the slope-based GEO version 2, the Dis[.] lookup table is shown in Table 1.

[0103] Table 1. Lookup table for 2-bit Dis[.] based on slope GEO

[0104] idx 0 1 2 4 6 7 8 9 10 12 14 15 Dis[idx] 4 4 4 4 2 1 0 -1 -2 -4 -4 -4 idx 16 17 18 20 22 23 24 25 26 28 30 31 Dis[idx] -4 -4 -4 -4 -2 -1 0 1 2 4 4 4

[0105] For slope-based GEO version 2, the computational complexity of geo blend mask derivation is assumed to be multiplication (up to 2-bit shift) and addition. There is no different splitting compared to TPM. In addition, the rounding operation of distFromLine has been removed to make it easier to store blend masks. This bugfix ensures that the sample weights are repeated in a shifted manner for each row or column.

[0106] For example:

[0107] TPM:

[0108]

[0109]

[0110] GEO

[0111] Corner idx is 0: ((x<<1)+1)*(4<<1)–((y<<1)+1))*(1<<1)–rho

[0112] Corner idx is 4: ((x<<1)+1)*(4<<1)–((y<<1)+1))*(4<<1)–rho

[0113] The angle idx is 6: ((x<<1)+1)*(2<<1)–((y<<1)+1))*(4<<1)–rho

[0114] 2.3.3.JVET-P0264 Test 1

[0115] In JVET-P0264, the GEO angles are replaced with angles whose tangents are powers of 2. Because the tangents of the proposed angles are powers of 2, most multiplications can be replaced by shifts. Furthermore, the weights for these angles can be implemented by repeatedly shifting them row-by-row or column-by-column. The proposed angles require one row or column per block size and per segmentation mode. Figure 11 Proposed angles and their corresponding width:height ratios for GEO are shown.

[0116] 2.3.4.JVET-P0304

[0117] In JVET-P0304, it was proposed to derive the weights and masks for motion field storage for all blocks and segmentation modes from two sets of predefined masks, one set for blending weight derivation and the other set for motion field storage masks. Each set has a total of 16 masks. Each mask for each corner is calculated using the same equations as in GEO, with block width and block height set to 256 and displacement set to 0. For blocks with corners The blending weights for the luma samples are directly clipped from the predefined mask and the offset is calculated as follows:

[0118] - The variables offsetX and offsetY are calculated as follows:

[0119]

[0120]

[0121] -

[0122] , where g_sampleWeight L [] are predefined masks for blending weights.

[0123] 2.4. GEO Specifications in JVET-P0884

[0124] The following specification is an excerpt from the working draft provided in JVET-P0884, which is based on JVET-O2001-vE. In the following specification, GEO is also referred to as merge wedge mode.

[0125] Merge data syntax

[0126]

[0127]

[0128] The variable wedge_merge_mode[x0][y0] specifies whether to use non-rectangular based motion compensation to generate the prediction samples for the current codec unit when decoding B slices. It is derived as follows:

[0129] – wedge_merge_mode[x0][y0] is set equal to 1 if all of the following conditions are true:

[0130] –sps_wedge_enabled_flag is equal to 1.

[0131] –slice_type is equal to B.

[0132] –general_merge_flag[x0][y0] is equal to 1.

[0133] –MaxNumWedgeMergeCand is greater than or equal to 2.

[0134] –cbWidth is greater than 8, and cbHeight is greater than 8.

[0135] –regular_merge_flag[x0][y0] is equal to 0.

[0136] –merge_subblock_flag[x0][y0] is equal to 0.

[0137] –ciip_flag[x0][y0] is equal to 0.

[0138] – Otherwise, wedge_merge_mode[x0][y0] is set equal to 0.

[0139] wedge_partition_idx[x0][y0] specifies the geometry partition type for Merge geometry mode. The array indices x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[0140] merge_merge_wedge_idx0[x0][y0] specifies the first Merge candidate index of the motion compensation candidate list based on a non-rectangular shape, where x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[0141] When wedge_partition_idx0[x0][y0] does not exist, it is inferred to be equal to 0.

[0142] merge_wedge_idx1[x0][y0] specifies the second Merge candidate index of the wedge-based motion compensation candidate list, where x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[0143] When merge_wedge_idx1[x0][y0] does not exist, it is inferred to be equal to 0.

[0144] Decoding process of wedge-shaped inter-frame blocks

[0145] General

[0146] This process is called when decoding a codec with wedge_merge_mode[xCb][yCb] equal to 1.

[0147] Inputs to this process include:

[0148] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0149] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0150] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0151] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0152] – chroma motion vectors mvCA and mvCB,

[0153] – reference indexes refIdxA and refIdxB,

[0154] –Prediction list flags predListFlagA and predListFlagB.

[0155] The output of this process is:

[0156] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0157] – predSamples, an array of (cbWidth / SubWidthC) x (cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0158] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cr Cr .

[0159] Set predSamplesLA L and predSamplesLB L is a (cbWidth)x(cbHeight) array of predicted luma sample values, and predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0160] predSamples L 、predSamples Cb and predSamples Cr Export via the following sequence of steps:

[0161] 1. For each of N A and B, the following applies:

[0162] – An ordered two-dimensional array refPicLN containing luminance samples L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The reference picture is derived by calling the procedure specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0163] –array predSamplesLN L is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0,0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L, the variable bdofFlag sets euqal to FALSE, and the variable cIdx is set equal to 0 as input.

[0164] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0,0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cb Set equal to refPicLN Cb , and the variable bdofFlag has euqal set to FALSE, and the variable cIdx is set equal to 1, as input.

[0165] –array predSamplesLN Cr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0,0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr , the variable bdofFlag sets euqal to FALSE, and the variable cIdx is set equal to 2, as input.

[0166] 2. Set the split angle and distance of wedge Merge mode angleIdx and distanceIdex according to the value of wedge_partition_idx[xCb][yCb], as specified in Table 8-10.

[0167] 3. The predicted samples in the current luminance codec block, predSamplesL[xL][yL], where x L =0..cbWidth-1 and y L= 0..cbHeight-1, is derived by invoking the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[0168] 4. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by invoking the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , and the variables angleIdx, distanceIdx, and cIdx are equal to 1, as input.

[0169] 5. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by invoking the weighted sample prediction process for the Wedge Merge mode specified in clause 8.5.7.2, with the codec block width nCbW set equal to cbWidth / SubWidthC, the codec block height nCbH set equal to cbHeight / SubHeightC, and the sample arrays predSamplesLACr and predSamplesLBCr, and the variables angleIdx, distanceIdx, and cIdx equal to 2, as input.

[0170] 6. Call the motion vector storage procedure for Merge wedge mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, partition directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input. The specification of angleIdx and distanceIdx values based on wedge_partition_idx value is shown in Table 8-10. Figure 19 shown.

[0171] Weighted sample prediction process of wedge-shaped Merge model

[0172] Inputs to this process include:

[0173] – Two variables nCbW and nCbH specifying the width and height of the current codec block,

[0174] – two (nCbW) x (nCbH) arrays predSamplesLA and predSamplesLB,

[0175] – The variable angleIdx specifies the angle index of the wedge segmentation,

[0176] – The variable distanceIdx specifies the distance Idx of the wedge split,

[0177] – The variable cIdx that specifies the color component index.

[0178] The output of this process is a (nCbW) x (nCbH) array pbSamples of predicted sample values.

[0179] The variable bit depth is derived as follows:

[0180] – If cIdx is equal to 0, bitDepth is set to BitDepth Y .

[0181] – If cIdx is equal to 0, nW and nH are set equal to nCbW and nCbH respectively, otherwise (cIdx is not equal to 0) nW and nH are set equal to nCbW x SubWidthC and nCbH x SubHeightC respectively.

[0182] – If cIdx is equal to 0, subW and subH are both set to 1, otherwise (cIdx is not equal to 0) subW and subH are set equal to SubWidthC and SubHeightC respectively.

[0183] – Otherwise, the bit depth is set equal to BitDepth C .

[0184] The variables shift1 and offset1 are derived as follows:

[0185] – The variable shift1 is set to Max(5,17-bitDepth).

[0186] –The variable offset1 is set equal to 1<<(shift1-1).

[0187] Set the values of the following variables:

[0188] –hwRatio is set to nH / nW

[0189] –displacementX is set to angleIdx

[0190] –displacementY is set to (displacementX+6)%24

[0191] – If angleIdx>=10&&angleIdx<=20, then PART1 and PART2 are set equal to A and B respectively, otherwise PART1 and PART2 are set equal to B and A respectively.

[0192] – Set rho to the following values using the Dis lookup table specified in Table 8-12:

[0193] rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8)

[0194] The variable shiftHor is set equal to 0 if any of the following conditions is true:

[0195] angleIdx%12 is equal to 6

[0196] angleIdx%12 is not equal to 0 and hwRatio≥1

[0197] Otherwise, set shiftHor equal to 1.

[0198] If shiftHor is equal to 0, the calculation formulas for offsetX and offsetY are as follows:

[0199] offsetX=(256-nW)>>1

[0200] offsetY=(256-nH)>>1+angleIdx<12? (distanceIdx*nH)>>3:-((distanceIdx*nH)>>3)

[0201] Otherwise, if shiftHor is equal to 1, then offsetX and offsetY are calculated as follows:

[0202] offsetX=(256-nW)>>1+angleIdx<12? (distanceIdx*nW)>>3:-((distanceIdx*nW)>>3)

[0203] offsetY=(256-nH)>>1

[0204] The predicted sample values pbSamples[x][y], where x = 0..nCbW 1 and y = 0..nCbH – 1, are set according to the following ordered steps:

[0205] -The variables weightIdx and weightIdxAbs are calculated using the lookup tables Tables 8-12 as follows:

[0206] weightIdx=(((x*subW+offsetX)<<1)+1)*Dis[displacementX]+(((y*subH+offsetY)<<1)+1))*Dis[displacementY]-rho.

[0207] weightIdxAbs=Clip3(0,26,abs(weightIdx)).

[0208] The value of -sampleWeight is derived according to Table 8-13 as follows:

[0209] sampleWeight=weightIdx<=0? WedgeFilter[weightIdxAbs]:8WedgeFilter[weightIdxAbs]

[0210] Note – sampleWeight L The values of [x][y] can also be obtained from Weight LDerived from [x-shiftX][y-shiftY]. If angleIdx is greater than 4 and less than 12, or angleIdx is greater than 20 and less than 24, then shiftX is the tangent of the angle and shiftY is 1. Otherwise, shiftX is 1 of the angle and shiftY is the cotangent of the angle. If the tangent (resp. cotangent) value is infinite, shiftX is 1 (resp. 0) or shiftY is 0 (resp. 1).

[0211] -The predicted sample value pbSamples[x][y] is derived as follows:

[0212] pbSamples[x][y]=Clip3(0,(1< <bitDepth)-1,(predSamplesLPART1[x][y]*(8–sampleWeight)+predSamplesLPART2[x][y]*sampleWeight+offset1)> >shift1)

[0213] Table 8-12 - Lookup table Dis derived from wedge split distance.

[0214] idx 0 1 2 3 4 5 6 7 8 9 10 11 Dis[idx] 8 8 8 8 4 2 0 -2 -4 -8 -8 -8 idx 12 13 14 15 16 17 18 19 20 21 22 23 Dis[idx] -8 -8 -8 -8 -4 -2 0 2 4 8 8 8

[0215] Table 8-13 - Filter weight lookup table derived from wedge filter weights WedgeFilter

[0216] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 WedgeFilter[idx] 4 4 4 4 5 5 5 5 5 5 5 6 6 6 idx 14 15 16 17 18 19 20 21 22 23 24 25 26 WedgeFilter[idx] 6 6 6 6 7 7 7 7 7 7 7 7 8

[0217] Motion vector storage process in wedge-shaped Merge mode

[0218] This process is called when decoding a codec with MergeWedgeFlag[xCb][yCb] equal to 1.

[0219] Inputs to this process include:

[0220] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0221] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0222] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0223] – Luma motion vectors mvA and mvB with 1 / 16 fractional sample accuracy,

[0224] – reference indexes refIdxA and refIdxB,

[0225] –Prediction list flags predListFlagA and predListFlagB.

[0226] The variables numSbX and numSbY, which specify the number of 4×4 blocks in the horizontal and vertical directions in the current codec block, are set equal to numSbX=cbWidth>>2 and numSbY=cbHeight>>2.

[0227] Set the values of the following variables:

[0228] –displacementX is set to angleIdx, displacementY is set to (displacementX+6)%24

[0229] –hwRatio is set to equal nCbH / nCbW

[0230] The variable shiftHor is set equal to 0 if any of the following conditions is true:

[0231] angleIdx%12 is equal to 8

[0232] angleIdx%12 is not equal to 0 and hwRatio≥1

[0233] Otherwise, set shiftHor equal to 1.

[0234] partIdx is set to angleIdx>=10&&angleIdx<=20?1:0.

[0235] If shiftHor is equal to 0, the calculation formulas for offsetX and offsetY are as follows:

[0236] –offsetX=(64–numSbX)>>1

[0237] –offsetY=(64nums by)>>1+angle idx<12? (distance idx*nCbH)>>5: ((distance idx*nCbH)>>5)

[0238] Otherwise, if shiftHor is equal to 1, then offsetX and offsetY are calculated as follows:

[0239] –offsetX=(64–num sbx)>>1+angle idx<12? (distance idx*nCbW)>>5: ((distance idx*nCbW)>>5)

[0240] –offsetY=(64–nums by)>>1

[0241] The value of the variable rho is derived from the following equation and the Dis lookup table specified in Table 8-12:

[0242] –rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8).

[0243] Using the Dis lookup tables specified in Table 8-11 and Table 8-12, set motionOffset equal to the following values:

[0244] –motionOffset=3*Dis[displacementX]+3*Dis[displacementY].

[0245] For each 4x4 sub-block at sub-block index (xSbIdx, ySbIdx), where xSbIdx = 0..numSbX–1 and ySbIdx = 0..numSbY–1, the following applies:

[0246] The variable motionIdx is calculated using the lookup table 8-12 as follows:

[0247] –motionIdx=(((xSbIdx+offsetX)<<3)+1)*Dis[displacementX]+(((xSbIdx+offsetY<<3)+1))*Dis[displacementY]–rho+motionOffset

[0248] The variable sType is derived as follows:

[0249] –sType=abs(motionIdx)<32?2:motionIdx<=0? partIdx:1-partIdx

[0250] – Depending on the value of sType, the following allocations are made:

[0251] – If sType is equal to 0, the following applies:

[0252] predFlagL0=(predListFlagA==0)?1:0 (8-853)

[0253] predFlagL1=(predListFlagA==0)?0:1 (8-854)

[0254] refIdxL0=(predListFlagA==0)?refIdxA:-1 (8-855)

[0255] refIdxL1=(predListFlagA==0)?-1:refIdxA (8-856)

[0256] mvL0[0]=(predListFlagA==0)?mvA[0]:0 (8-857)

[0257] mvL0[1]=(predListFlagA==0)?mvA[1]:0 (8-858)

[0258] mvL1[0]=(predListFlagA==0)?0:mvA[0] (8-859)

[0259] mvL1[1]=(predListFlagA==0)?0:mvA[1] (8-860)

[0260] – Otherwise, if sType is equal to 1 or (sType is equal to 2, predListFlagA+predListFlagB is not equal to 1), then apply the following content:

[0261] predFlagL0=(predListFlagB==0)?1:0 (8-861)

[0262] predFlagL1=(predListFlagB==0)?0:1 (8-862)

[0263] refIdxL0=(predListFlagB==0)?refIdxB:-1 (8-863)

[0264] refIdxL1=(predListFlagB==0)?-1:refIdxB (8-864)

[0265] mvL0[0]=(predListFlagB==0)?mvB[0]:0 (8-865)

[0266] mvL0[1] = (predListFlagB == 0)? mvB[1] : 0 (8 - 866)

[0267] mvL1[0] = (predListFlagB == 0)? 0 : mvB[0] (8 - 867)

[0268] mvL1[1] = (predListFlagB == 0)? 0 : mvB[1] (8 - 868)

[0269] - Otherwise (sType equals 2, predListFlagA + predListFlagB equals 1), the following applies:

[0270] predFlagL0 = 1 (8 - 869)

[0271] predFlagL1 = 1 (8 - 870)

[0272] refIdxL0 = (predListFlagA == 0)? refIdxA : refIdxB (8 - 871)

[0273] refIdxL1 = (predListFlagA == 0)? refIdxB : refIdxA (8 - 872)

[0274] mvL0[0] = (predListFlagA == 0)? mvA[0] : mvB[0] (8 - 873)

[0275] mvL0[1] = (predListFlagA == 0)? mvA[1] : mvB[1] (8 - 874)

[0276] mvL1[0] = (predListFlagA == 0)? mvB[0] : mvA[0] (8 - 875)

[0277] mvL1[1] = (predListFlagA == 0)? mvB[1] : mvA[1] (8 - 876)

[0278] - For x = 0..3 and y = 0..3, the following assignments are made:

[0279] MvL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y] = mvL0 (8 - 877)

[0280] MvL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y] = mvL1 (8 - 878)

[0281] RefIdxL0[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=refIdxL0 (8-879)

[0282] RedIdxL1[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=refIdxL1 (8-880)

[0283] PredFlagL0[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=predFlagL0 (8-881)

[0284] PredFlagL1[(xSbIdx<<2)+x][(ySbIdx<<2)+y]=predFlagL1 (8-882)

[0285] Decoding of residual signals of codec blocks coded and decoded in inter-frame prediction mode

[0286] Inputs to this process include:

[0287] – specifies the sample position (xTb0, yTb0) of the top left sample of the current transform block relative to the top left sample of the current picture,

[0288] – variable nTbW that specifies the current transform block width,

[0289] – variable nTbH that specifies the current transform block height,

[0290] – Variable cIdx that specifies the color component of the current block.

[0291] The output of this process is a (nTbW)x(nTbH) array resSamples.

[0292] The maximum transform block width maxTbWidth and height maxTbHeight are derived as follows:

[0293] maxTbWidth=(cIdx==0)? MaxTbSizeY:MaxTbSizeY / SubWidt hC (8-883)

[0294] maxTbHeight=(cIdx==0)? MaxTbSizeY:MaxTbSizeY / SubHeightC (8-884)

[0295] The luminance sample positions are derived as follows:

[0296] (xTbY,yTbY)=(cIdx==0)? (xTb0,yTb0):(xTb0*SubWidthC,yTb0*SubHeightC) (8-885)

[0297] Depending on maxTbSize, the following applies:

[0298] – If nTbW is greater than maxTbWidth or nTbH is greater than maxTbHeight, then the following ordered steps apply.

[0299] 1. The variables newTbW and newTbH are derived as follows:

[0300] newTbW=(nTbW>maxTbWidth)? (nTbW / 2):nTbW (8-886)

[0301] newTbH=(nTbH>maxTbHeight)? (nTbH / 2):nTbH (8-887)

[0302] 2. Calling the decoding process of the residual signal of the codec unit coded in inter-frame prediction mode as specified in this clause, with position (xTb0, yTb0), transform block width nTbW set equal to newTbW and height nTbH set equal to newTbH and variable cIdx as input, and output is the modified reconstructed picture before loop filtering.

[0303] 3. When nTbW is greater than maxTbWidth, the decoding process of the residual signal of the codec unit coded and decoded in inter-frame prediction mode specified in this clause is called, where the position (xTb0, yTb0) is set equal to (xTb0+newTbW, yTb0), the transform block width nTbW is set equal to newTbW, the height nTbH is set equal to newTbH, and the variable cIdx is used as input, and the output is the modified reconstructed picture.

[0304] 4. When nTbH is greater than maxTbHeight, the decoding process of the residual signal of the codec unit coded in inter-frame prediction mode specified in this clause is called, where the position (xTb0, yTb0) is set equal to (xTb0, yTb0+newTbH), the transform block width nTbW is set equal to newTbW, the height nTbH is set equal to newTbH, and the variable cIdx is used as input, and the output is the modified reconstructed picture before loop filtering.

[0305] 5. When nTbW is greater than maxTbWidth and nTbH is greater than maxTbHeight, the decoding process of the residual signal of the codec unit coded in inter-frame prediction mode specified in this clause is called, where the position (xTb0, yTb0) is set equal to (xTb0+newTbW, yTb0+newTbH), the transform block width nTbW is set equal to newTbW, the height nTbH is set equal to newTbH and the variable cIdx, as input, and the output is the modified reconstructed picture before loop filtering.

[0306] – Otherwise, if cu_sbt_flag is equal to 1, the following applies:

[0307] – The variables sbtMinNumFourths, wPartIdx and hPartIdx are derived as follows:

[0308] sbtMinNumFourths=cu_sbt_quad_flag? 1:2 (8-888)

[0309] wPartIdx=cu_sbt_horizontal_flag? 4:sbtMinNumFourths (8-889)

[0310] hPartIdx=! cu_sbt_horizontal_flag? 4:sbtMinNumFourths (8-890)

[0311] – The variables xPartIdx and yPartIdx are derived as follows:

[0312] – If cu_sbt_pos_flag is equal to 0, xPartIdx and yPartIdx are set equal to 0.

[0313] – Otherwise (cu_sbt_pos_flag is equal to 1), the variables xPartIdx and yPartIdx are derived as follows:

[0314] xPartIdx=cu_sbt_horizontal_flag? 0:(4-sbtMinNumFourths) (8-891)

[0315] yPartIdx=! cu_sbt_horizontal_flag? 0:(4-sbtMinNumFourths) (8-892)

[0316] – The variables xTbYSub, yTbYSub, xTb0Sub, yTb0Sub, nTbWSub and nTbHSub are derived as follows:

[0317] xTbYSub=xTbY+((nTbW*((cIdx==0)?1:SubWidthC)*xPartIdx / 4) (8-893)

[0318] yTbYSub=yTbY+((nTbH*((cIdx==0)?1:SubHeightC)*yPartIdx / 4) (8-894)

[0319] xTb0Sub=xTb0+(nTbW*xPartIdx / 4) (8-895)

[0320] yTb0Sub=yTb0+(nTbH*yPartIdx / 4) (8-896)

[0321] nTbWSub=nTbW*wPartIdx / 4 (8-897)

[0322] nTbHSub=nTbH*hPartIdx / 4 (8-898)

[0323] – Call the scaling and transformation process specified in clause 8.7.2, taking as input the luma position (xTbYSub, yTbYSub), variables cIdx, nTbWSub, and nTbHSub, and outputting the (nTbWSub)x(nTbHSub) array resSamplesTb.

[0324] – Residual samples resSamples[x][y], where x = 0..nTbW–1, y = 0..nTbH–1, are set equal to 0.

[0325] – The residual samples resSamples[x][y], where x = xTb0Sub..xTb0Sub+nTbWSub–1 and y = yTb0Sub..yTb0Sub+nTbHSub–1 are derived as follows:

[0326] resSamples[x][y]=resSamplesTb[x–xTb0Sub][y–yTb0Sub] (8-899)

[0327] Otherwise, call the scaling and transformation process specified in clause 8.7.2, taking as input the luma position (xTbY, yTbY), the variable cIdx, the transformed width nTbW, and the transformed height nTbH, and outputting the (nTbW) x (nTbH) array resSamples.

[0328] Table 9-77 – Binarization of syntax elements and associated relationships

[0329]

[0330] 2.5. Chroma Sample Location Type

[0331] The definition of chroma sample location types in this section is taken from JVET-P2007-v3.

[0332] Figure 12 Shown is the indicated relative position of the top left chroma sample when chroma_format_idc is equal to 1 (4:2:0 chroma format) and chroma_sample_loc_type_top_field or chroma_sample_loc_type_bottom_field is equal to the value of the variable ChromaLocType. The area represented by the top left 4:2:0 chroma sample (depicted as a large red square with a large red dot in the center) is shown relative to the area represented by the top left luma sample (depicted as a small black square with a small black dot in the center). The area represented by the adjacent luma sample is depicted as a small gray square with a small gray dot in its center.

[0333] Disadvantages of existing implementations

[0334] There are several potential problems in the current GEO design, as described below.

[0335] (1) In the CE anchor of JVET-P0884, the total number of GEO patterns used for hardware verification is 1558, which is calculated by multiplying 19 PU shapes by 82 GEO patterns. Experts said that 1558 verification cases for the GEO codec tool are too many. They hope to reduce the total number of GEO cases.

[0336] (2) In the CE anchor of JVET-P0884, the GEO mode is applied to block sizes no smaller than 8x8, i.e., W>=8 and H>=8.

[0337] a) For large block sizes, GEO mode may not be necessary. A better trade-off between codec gain and complexity can be considered by reducing the allowable block size of GEO.

[0338] b) The 4xN and Nx4 block sizes may be beneficial for coding / decoding gain.

[0339] Example Techniques and Embodiments

[0340] The detailed embodiments described below should be considered as examples for explaining general concepts. These embodiments should not be interpreted narrowly. In addition, these embodiments can be combined in any way.

[0341] The term "GEO" may represent a coding / decoding method that divides a block into two or more sub-regions, where at least one sub-region cannot be generated by any existing segmentation structure (e.g., QT / BT / TT). The term "GEO" may represent a triangle prediction mode (TPM), and / or a geometric Merge mode (GEO), and / or a wedge prediction mode.

[0342] The term "block" may represent a coding / decoding block of a CU and / or a PU and / or a TU.

[0343] In some embodiments, the "GEO mode index (or GEO mode)" may be the GEO mode index signaled in the coded bitstream. In some embodiments, during the decoding process of a wedge inter-block, the GEO mode index (or GEO mode) is used to derive the GEO angle index and the GEO distance index. In some embodiments, the GEO mode index (or GEO mode) used to derive the angle / distance index during the decoding process may also be obtained through table mapping. If not specified, the GEO mode index may represent the wedge_partition_idx used to derive the angle / distance index during the decoding process, such as defined in Table 8-10 of the working draft of JVET-P0884-v8.

[0344] Block Size Limitations of GEO Mode

[0345] Let W denote the block width and H denote the block height.

[0346] 1. Whether GEO is allowed may depend on the block width and / or the block height.

[0347] a) Whether GEO is allowed may depend on the block size (such as W*H) and / or the aspect ratio of the block.

[0348] i. For example, for a W×H block, GEO can be enabled only when W >= T1 and / or H >= T2 and / or W*H < T3 and / or W*H > T4, where T1, T2, T3, and T4 are constant values.

[0349] ii. As another example, for a W×H block, GEO can be enabled only if W >= T1 and / or H >= T2 and / or W*H <= T3 and / or W*H >= T4, where T1, T2, T3, and T4 are constant values.

[0350] iii. In one example, for a W×H block, GEO can be enabled only if W*H < T1 || (W*H <= T2 && W / H <= T3 && H / W <= T4).

[0351] 1) In one example, T1, T2, T3, and T4 can refer to luminance blocks.

[0352] 2) In one example, T1 = 512, T2 = 2048, T3 = 2, T4 = 2.

[0353] iv. In one example, for a W×H block, GEO can be enabled only if W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3).

[0354] 1) In one example, T1, T2, T3, and T4 can refer to luminance blocks.

[0355] 2) In one example, T1 = 512, T2 = 2048, T3 = 1.

[0356] v. In one example, for a W×H block, GEO is enabled only if W*H <= T1 & W / H <= T2 & H / W <= T3.

[0357] 1) In one example, T1, T2, T3, and T4 can refer to luminance blocks.

[0358] 2) In one example, T1 = 2048, T2 = 2, T3 = 4.

[0359] vi. In one example, for a W×H block, GEO is enabled only if W >= Tx and H >= Ty and / or one of the above 1.a.i to 1.a.v is satisfied.

[0360] 1) In one example, Tx and Ty can refer to luminance blocks.

[0361] 2) In one example, Tx = 8, Ty = 8.

[0362] vii. For blocks with a block width greater than N or / and a block height greater than m, GEO may not be allowed.

[0363] 1) In one example, N and M can refer to luminance blocks.

[0364] 2) In one example, N = M = 64.

[0365] 3) In one example, N = M = 32.

[0366] viii. For a block with a block width equal to N or / and a block height equal to M, GEO may not be allowed.

[0367] 1) In one example, N = M = 4.

[0368] ix. For example, for a W×H block, if one and / or more of the following conditions (1.a) to (1.f) are satisfied, GEO may not be allowed, where Ti (i = 1…17) are constant values.

[0369] 1) Conditions (1.a) to (1.f) may be as follows.

[0370] a) W < T1 and / or W > T2 and / or W = T3

[0371] b) H < T4 and / or H > T5 and / or H = T6

[0372] c) W*H < T7 and / or W*H > T8 and / or W*H = T8

[0373] d) W / H < T9 and / or W / H > T10 and / or W / H = T11

[0374] e) H / W < T12 and / or H / W > T13 and / or H / W = T14

[0375] f) Abs(logW – logH) > T15 and / or Abs(logW – logH) < T16 and / or Abs(logW – logH) = T17

[0376] 2) Alternatively, GEO may be allowed only if one or more of the above conditions (1.a) to (1.f) are satisfied.

[0377] 3) For example, for a W×H block, if W < T1 or H < T2 or W*H > T3 or (W*H >= T4 and Abs(logW – logH) > T5), GEO may not be allowed.

[0378] a) Alternatively, for a W×H block, GEO may be allowed only if W >= T1 and H >= T2 and (W*H < T4 or (W*H <= T3 and Abs(logW – logH) <= T5).

[0379] b) In one example, Ti (i = 1…5) may refer to a luminance block.

[0380] c) In one example, T1 = 8, T2 = 8, T3 = 2048, T4 = 512, T5 = 1

[0381] 4) For example, for a W×H block, if W < T1 or H < T2 or W*H > T3 or (W*H >= T4 and (W / H > T5 or H / W > T5)), GEO may not be allowed.

[0382] a) Alternatively, for a width×height block, GEO is allowed only if W >= T1 and H >= T2 and (W*H < T4 or (W*H <= T3 and W / H <= T5 and H / W <= T5)).

[0383] b) In one example, Ti (i = 1…5) may refer to a luma block.

[0384] c) In one example, T1 = 8, T2 = 8, T3 = 2048, T4 = 512, T5 = 2.

[0385] 5) For example, for a width×height block, if W < T1 or H < T2 or W*H > T3 or H / W > T4 or W / H > T5, GEO may not be allowed.

[0386] a) Alternatively, for a width×height block, GEO is allowed only if W >= T1 and H >= T2 and W*H <= T3 and H / W <= T4 and W / H <= T5.

[0387] b) In one example, Ti (i = 1…5) may refer to a luma block.

[0388] c) In one example, T1 = 8, T2 = 8, T3 = 2048, T4 = 4, T5 = 2.

[0389] b) Whether to enable or disable GEO may depend on a function of the block width and height.

[0390] i. For example, the function may depend on the ratio of the block width and / or height. For example, the function can be max(H,W) / min(H,W).

[0391] ii. For example, the function can be the difference and / or ratio between the block width and height, such as Abs(Log2(cbWidth)-Log2(cbHeight)), where Abs(x) returns the absolute value of x and Log2(x) returns the base-2 logarithm of the number x.

[0392] c) For blocks with an aspect ratio (or height-to-width ratio) greater than (in another example, not less than) X (e.g., X = 2), GEO may not be allowed.

[0393] i. In one example, for a W×H block, if W / H > X (e.g., X = 2), GEO can be disabled.

[0394] ii. In one example, for a W×H block, if H / W > X (e.g., X = 2), GEO can be disabled.

[0395] d) In one example, GEO can be enabled for one color component (e.g., a luminance block) in the same decoding unit / prediction unit / block, but disabled for another color component (e.g., a chrominance block).

[0396] e) In one example, whether GEO is allowed or not for a decoding unit / prediction unit / block can depend on the dimension of the luminance block.

[0397] i. In one example, when GEO is not allowed for the luminance block, GEO is also prohibited for the chrominance block.

[0398] ii. In one example, when GEO is allowed for the luminance block, GEO is also allowed for the chrominance block.

[0399] f) Whether to enable GEO may depend on the block width and / or block height and / or block aspect ratio and / or block height-width ratio.

[0400] i. For example, for a width×height block, GEO is only allowed when W >= T1 and H >= T2 and W <= T3 and H <= T4 and W / H <= T5 and H / W <= T6.

[0401] 1) In one example, T1 = T2 = 8, T3 = T4 = 64, T5 = 2, T6 = 4.

[0402] 2) In one example, T1 = T2 = 8, T3 = T4 = 64, T5 = T6 = 4.

[0403] 3) In one example, T1 = T2 = 8, T3 = T4 = 32, T5 = 2, T6 = 4.

[0404] 4) In one example, T1 = T2 = 8, T3 = T4 = 32, T5 = T6 = 4.

[0405] ii. For example, for a width×height block, GEO is only allowed when W >= T1 and H >= T2 and W <= T3 and H <= T4.

[0406] 1) In one example, T1 = T2 = 8, T3 = T4 = 64.

[0407] 2) In one example, T1 = T2 = 8, T3 = T4 = 32.

[0408] iii. Alternatively, for a WxH block, GEO can be disabled when W < T1 or H < T2 or W > T3 or H > T4 or W / H > T5 or H / W > T6.

[0409] 1) In one example, T1 = T2 = 8, T3 = T4 = 64, T5 = 2, T6 = 4.

[0410] 2) In one example, T1 = T2 = 8, T3 = T4 = 64, T5 = T6 = 4.

[0411] 3) In one example, T1 = T2 = 8, T3 = T4 = 32, T5 = 2, T6 = 4.

[0412] 4) In one example, T1 = T2 = 8, T3 = T4 = 32, T5 = T6 = 4.

[0413] iv. Alternatively, for a WxH block, when W < T1 or H < T2 or W > T3 or H > T4, GEO can be disabled.

[0414] 1) In one example, T1 = T2 = 8, T3 = T4 = 64.

[0415] 2) In one example, T1 = T2 = 8, T3 = T4 = 32.

[0416] 2. Whether a block allows GEO may depend on the maximum transform size.

[0417] a) In one example, for a block with a width or / and height greater than the maximum transform size, GEO may not be allowed.

[0418] 3. Whether a block allows GEO may depend on the allowed maximum CU size.

[0419] a) In one example, for a block with a block width or / and height equal to the maximum CU size, GEO may not be allowed.

[0420] 4. GEO may not be allowed for a specific chroma format.

[0421] a) In one example, for the 4:0:0 chroma format, GEO may not be allowed.

[0422] b) In one example, for the 4:4:4 chroma format, GEO may not be allowed.

[0423] c) In one example, for the 4:2:2 chroma format, GEO may not be allowed.

[0424] d) In one example, for a specific color component (e.g., Cb or Cr) with a specific chroma format, GEO may not be allowed.

[0425] 5. GEO and codec tool X may be mutually exclusive.

[0426] a) In one example, if GEO is applied to a block, codec X is disabled.

[0427] i. Alternatively, furthermore, when GEO is applied, the signaling of the usage indication of codec X and / or the auxiliary information of codec X is skipped.

[0428] ii. Alternatively, when codec X is applied to a block, GEO is not applied.

[0429] 1) Alternatively, and in addition, when X applies, signaling of an indication of use of GEO and / or auxiliary information of GEO is skipped.

[0430] b) In one example, X may refer to adaptive color transform.

[0431] c) In one example, X may refer to dual-tree codec mode.

[0432] d) In one example, X may refer to transform skip mode.

[0433] e) In one example, X may refer to the BDPCM codec mode.

[0434] f) In one example, X may be a sub-block transform (SBT).

[0435] 6. Different color components can have different GEO mode indices.

[0436] a) In one example, the chroma components may have a different GEO index than the luma component.

[0437] b) In one example, GEO may not be applicable for chroma components.

[0438] c) Alternatively, or in addition, different GEO mode indices may be signaled for different color components.

[0439] i. For example, a mode index may be signaled for luma components, and a mode index may be signaled for chroma components.

[0440] ii. Alternatively, or in addition, the mode index of the first color component may be predicted from the mode index of the second color component.

[0441] 7. GEO may not be allowed if the precision of the reference pictures associated with different sub-regions in GEO is different.

[0442] a) Alternatively, if the precision of one of the reference pictures used in GEO is different from the precision of the current picture, GEO may not be allowed.

[0443] b) Alternatively, GEO may be allowed even when the precision of the reference picture and the current picture are different.

[0444] c) The precision of an image can refer to the width / height of the image, or it can refer to a window within the image, such as a consistency window or a zoom window within the image.

[0445] 8. When GEO is disabled or not allowed, GEO syntax elements (such as wedge_partition_idx, merge_wedge_idx0 and merge_wedge_idx1 in the syntax table of Merge data signaling) may not be signaled.

[0446] a) When a syntax element is not signaled, it can be inferred to be a default value, such as 0.

[0447] b) When GEO is disabled or not allowed, GEO-related semantic variables (such as wedge_merge_mode) may be inferred to default values, such as 0.

[0448] GEO mode selection depending on block size

[0449] 9. One or more syntax elements (e.g., flags) may be signaled at the sequence / picture / slice / tile / sub-picture / other video processing unit (e.g., VPDU) level to specify how many GEO modes are allowed for a video unit (e.g., picture / group of pictures / picture / sub-picture / slice / VPDU / CTU row / CTU / CU / PU / TU).

[0450] a) In one example, they can be signaled at SPS / VPS / APS / PPS / PH / SH / picture / sub-picture / slice / slice level.

[0451] i. Alternatively, or in addition, syntax elements may be conditionally signaled, such as whether GEO mode is enabled for the video processing unit (such as whether sps_geo_enabled_flag is equal to 1); and / or whether the current picture type is a non-intra picture or a B picture; and / or whether the current slice type is a B slice.

[0452] b) In one example, the syntax element may indicate whether the number of GEO modes allowed in the video processing unit is equal to X (such as X=16 or 32 or 30).

[0453] i. In one example, a syntax element (e.g., an SPS flag or a PPS flag, or a flag in a picture header) can be signaled to indicate whether X (e.g., X=16 or 32 or 30) GEO modes are allowed for all blocks in a video unit.

[0454] 1) Alternatively, a flag may be signaled to indicate whether X (eg, X=16 or 32 or 30) GEO modes are allowed for selective blocks, eg, blocks that meet condition C.

[0455] a) C can be represented as a block with H / W <= T (eg, T = 1 or 2 or 4 or 8).

[0456] b) C can be represented as a block with H / W>T (eg, T=1 or 2 or 4 or 8).

[0457] ii. In one example, multiple syntax elements (eg, two SPS flags) may be signaled to indicate the allowed GEO modes for each category of blocks, where blocks are categorized into multiple categories, such as based on block dimensions.

[0458] 1) In one example, one is used to indicate whether X (such as X=16 or 32 or 30) GEO modes are allowed for a block with condition c. The other is used to indicate whether Y (such as Y=16 or 32 or 30) GEO modes are allowed for a block with condition D.

[0459] a) Alternatively, in addition, C may be a block with H / W ≤ T (such as T = 1 or 2 or 4 or 8), and D may be a block with H / W > T (such as T = 1 or 2 or 4 or 8).

[0460] c) In one example, how to signal the GEO mode index of a block may depend on the aforementioned syntax element (eg, flag).

[0461] i. In one example, binarization and / or entropy coding of a block's GEO mode index may depend on syntax elements and / or block dimensions.

[0462] 1) In one example, if the number of allowed GEO modes for a block derived from a syntax element is equal to X (such as X=16 or 32 or 30), then the value of cMax for GEO mode index decoding may be equal to X.

[0463] 2) In one example, if the number of allowed GEO modes for a block derived from the syntax element is equal to X (such as X=16 or 32 or 30), and the block dimension satisfies condition C, then the value of cMax for GEO mode index decoding may be equal to X.

[0464] a) C can be represented as a block with H / W <= T (eg, T = 1 or 2 or 4 or 8).

[0465] b) C can be represented as a block with H / W>T (eg, T=1 or 2 or 4 or 8).

[0466] ii. In one example, the binarization method for GEO mode index decoding may differ according to block dimension and / or syntax element.

[0467] d) In one example, the maximum value of merge_geo_partition_idx (eg, wedge_partition_idx) may depend on the aforementioned syntax elements (eg, flags) and / or block dimensions.

[0468] i. In one example, a bitstream constraint may be added to constrain the value of merge_geo_partition_idx (eg, wedge_partition_idx) to be smaller than the maximum allowed geo mode in the bitstream.

[0469] ii. In one example, a bitstream constraint may be added to constrain the value of merge_geo_partition_idx (e.g., wedge_partition_idx) to be less than the maximum allowed geo mode of a block whose block dimensions satisfy condition c.

[0470] a)c can be expressed as a block of H / W<=T (eg, T=1 or 2 or 4 or 8).

[0471] b) c can be expressed as a block with H / W>T (eg, T=1 or 2 or 4 or 8).

[0472] e) In one example, one or more restriction flags may be signaled at the video processing unit level to specify whether to restrict usage of the X (such as X=16 or 32 or 30) mode GEO method for a video unit.

[0473] 1) In one example, a constraint flag may be signaled to constrain whether the X-mode GEO method is used for all blocks in a sequence.

[0474] 2) In one example, how the X-Mode GEO method is constrained may depend on the block size.

[0475] a) In one example, a restriction flag may be signaled at the SPS level to restrict whether the X-mode GEO method is used for blocks with condition C.

[0476] iC can be expressed as a block of H / W<=T (eg, T=1 or 2 or 4 or 8).

[0477] ii. C can be represented as a block with H / W>T (e.g., T=1 or 2 or 4 or 8).

[0478] b) In one example, two constraint flags may be signaled at the SPS level: one is whether the X-mode GEO method is constrained to be used for blocks with condition C, and the other is whether the Y-mode GEO method is constrained to be used for blocks with condition D.

[0479] iC may be a block with H / W<=T (eg, T=1 or 2 or 4 or 8), and D may be a block with H / W>T (eg, T=1 or 2 or 4 or 8).

[0480] f) In one example, which GEO modes are allowed for a block may depend on the aforementioned syntax elements (eg, flags).

[0481] i. In one example, whether a block allows a subset of GEO mode or the full set of GEO mode may depend on the aforementioned syntax elements (eg, flags).

[0482] ii. In one example, for a block, whether a subset of GEO angles or the full set of GEO angles is allowed may depend on the above-mentioned syntax elements (eg, flags).

[0483] iii. In one example, for a block, whether a subset of GEO offsets is allowed or the full set of GEO offsets is allowed may depend on the aforementioned syntax element (eg, flag).

[0484] 1) In one example, whether to use GEO mode with a non-zero displacement index may depend on the aforementioned syntax element (eg, flag).

[0485] 10. Multiple sets of allowed GEO modes may be utilized to process video units (eg, picture / slice / slice / tile / CTU row / CTU).

[0486] a) In one example, selection of a set from a plurality of sets may depend on decoded information (eg, block dimensions / block shape of a block).

[0487] b) In one example, at least two of the plurality of sets have different numbers of allowed GEO modes.

[0488] c) In one example, T (such as T=2) of the multiple sets may have the same number of allowed GEO patterns, however, at least one GEO pattern included in one set is excluded from another set.

[0489] d) In one example, T (such as T=2) sets among the plurality of sets may have the same GEO pattern, however, for any two sets among the T sets, at least one GEO pattern is arranged in a different position.

[0490] e) In one example, how the GEO pattern index is signaled may depend on the corresponding allowed GEO pattern set, such as the number of allowed GEO patterns in the set.

[0491] f) In one example, the decoded GEO mode index may correspond to a different GEO mode (eg, a different angle or a different distance).

[0492] i. In one example, how a decoded GEO mode index is mapped to a GEO mode may depend on the set of corresponding blocks.

[0493] g) In one example, the number of GEO modes available for blocks in a bitstream may be defined as being less than the number A (denoted as B) (eg, A=81 as in the decoding process of the working draft of JVET-P0884-v8).

[0494] a. For example, B can be a constant value for any GEO block, regardless of dimension.

[0495] b. For example, B can be a variable that can change from block to block depending on the block dimension.

[0496] h) In one example, the number of GEO modes that may be signaled for a block in a bitstream may be defined as a number (denoted as C) that may be less than A.

[0497] c. For example, C can be a constant value for any GEO block, regardless of the block dimensions.

[0498] d. For example, C can be a variable that can change from block to block depending on the block dimension.

[0499] e. For example, B may be equal to C.

[0500] f. For example, B or C can be equal to 30 or 40 or 45 or 50.

[0501] i) In one example, B or C can be signaled from the encoder to the decoder.

[0502] j) In one example, two sets (eg, Set A and Set B) of allowed GEO modes may be defined to process GEO-coded blocks.

[0503] i. In one example, at least one GEO pattern included in set A may be excluded from set B.

[0504] 1) In one example, at least one GEO angle derived from the GEO pattern in set A may be excluded from the GEO angles derived from the GEO pattern in set B.

[0505] ii. In one example, Set A and Set B may have the same number of allowed GEO patterns, eg, X (such as X=16 or 32 or 30) patterns for either set.

[0506] 1) In one example, Set A and Set B may have the same number of allowed GEO angles, eg, Y (such as Y<24) angles for either set.

[0507] 1) In one example, Set A and Set B may have different numbers of allowed GEO modes, for example, an X1 mode (such as X1=16) for Set A and an X2 mode (such as X2=32) for Set B. In one example, Set A and Set B may have different numbers of allowed GEO angles, for example, a Y1 angle for Set A and a Y2 angle for Set B, for example, Y1≠Y2, Y1<24, Y2<24.

[0508] iii. In one example, whether a block uses the GEO mode / angle / distance from set A or set B may depend on the block dimensions, eg, whether the block dimensions satisfy condition C.

[0509] 1) C can be represented as a block with H / W<=T (eg, T=1 or 2 or 4 or 8).

[0510] 2) C can be represented as a block with H / W>T (eg, T=1 or 2 or 4 or 8).

[0511] iv. In one example, how the GEO mode index of a block is signaled may depend on the block dimension.

[0512] 1) In one example, given H / W<=T (eg, T=1 or 2 or 4 or 8), the cMax value for TR encoding of the GEO mode index may be equal to X (eg, X=16 or 32 or 30).

[0513] v. Assume that I represents the total number of GEO pattern sets, Set i (i=0...I-1) represents the GEO mode set for the block, L i (i=0…I-1) represents Set i In one example, according to decoded information (eg, related syntax elements, block dimensions), GEO-encoded blocks may be classified into a plurality of block categories.

[0514] 1) In one example, which GEO mode set is used for a block may depend on the block category and / or syntax elements (such as the flag described in item 9).

[0515] 2) In one example, how much GEO mode is allowed for a block may depend on the block category and / or syntax elements (eg, the flag described in item 9).

[0516] 3) Assume that the corresponding GEO pattern set of the block is represented as GEO pattern set I (e.g. Set i )

[0517] a) In one example, the number of allowable GEO modes for the block may be less than Set i The length is less than L i .

[0518] b) In one example, the number of allowable GEO modes for the block may be equal to Set i The length is equal to L i .

[0519] c) In one example, all permissible GEO modes for the block may be from a corresponding GEO mode set i (e.g., Set i ).

[0520] d) In one example, a portion of the permissible GEO patterns for the block may be from a corresponding GEO pattern set i (e.g., Set i ).

[0521] e) In one example, the permissible GEO modes for the block may include a corresponding GEO mode set (e.g., Set i ) of at least N (e.g. N <L i )model.

[0522] i. In one example, the first N (such as N=16 or 14) patterns in the corresponding GEO pattern set may be used.

[0523] ii. In one example, the last N (such as N=16 or 14) patterns in the corresponding GEO pattern set may be used.

[0524] iii. In one example, one out of every M (such as M=2) patterns in the corresponding GEO pattern set may be used.

[0525] f) In one example, the allowable GEO patterns for the block may include some patterns in the corresponding GEO pattern set and some other predefined GEO patterns (such as GEO patterns with zero displacement, eg, distance index equal to 0).

[0526] 11. How to map GEO mode indices to angle / distance indices may depend on decoded information (eg, relevant syntax elements, block dimensions).

[0527] a) In one example, how the GEO mode index is mapped to the angle / distance index may depend on whether the block dimension satisfies condition C.

[0528] iC can be expressed as a block of H / W<=T (eg, T=1 or 2 or 4 or 8).

[0529] ii. C can be represented as a block with H / W>T (e.g., T=1 or 2 or 4 or 8).

[0530] b) Assume that I represents the total number of allowed GEO modes for a block, J represents the total number of allowed GEO angles for a block, K represents the total number of allowed GEO distances for a block, and M i (i=0…I-1) represents the GEO mode index of the codec / signaling notification of the block, A j (j=0...J-1) represents the mapping angle index of the block, D k (k=0...K-1) represents the distance index of the block.

[0531] i. In one example, the mapped angular index A j May not be indexed with GEO mode M i value increases.

[0532] 1) In one example, for multiple consecutive GEO mode indices M of codec / signaling notifications i , the corresponding angle index A j The numbers may not be consecutive, and / or not in descending order, and / or not in ascending order, and / or may not be in order.

[0533] 2) Alternatively, for multiple consecutive GEO mode indices of codec / signaling notifications, the corresponding angular index A j Can be consecutive numbers, and / or in descending order, and / or in ascending order.

[0534] ii. In one example, the distance index D of the map k May not be indexed with GEO mode M i value increases.

[0535] 1) In one example, for multiple consecutive GEO mode indices M of codec / signaling notifications i , the corresponding distance index D k The numbers may not be consecutive, and / or not in descending order, and / or not in ascending order, and / or may be unordered.

[0536] 2) Alternatively, for multiple consecutive GEO mode indices of codec / signaling notifications, the corresponding distance index D k Can be consecutive numbers, and / or in descending order, and / or in ascending order.

[0537] iii. In one example, if a codec / signaled GEO mode index is mapped to another set of mapped GEO mode indices, the mapped GEO mode indices may not increase with the codec / signaled GEO mode indices.

[0538] 1) In one example, for multiple consecutive GEO mode indices of codec / signaling, the corresponding mapped GEO mode indices may not be consecutive numbers, and / or not in descending order, and / or not in ascending order, and / or may be out of order.

[0539] 2) Alternatively, for multiple consecutive GEO mode indices notified by codecs / signaling, the corresponding mapped GEO mode indices may be consecutive numbers, and / or in descending order, and / or in ascending order.

[0540] 12. The number of allowed modes / angles / distances for a GEO block may be different from the number of possible GEO modes / angles / distances for a video unit.

[0541] a) In one example, the maximum GEO mode index signaled for a block may be less than the total number of GEO modes allowed for the sequence.

[0542] b) In one example, the number of GEO angles allowed for a block may be less than the total number of allowed GEO angles defined for a sequence.

[0543] c) In one example, how many number of GEO modes / angles / distances are allowed for a tile may depend on the tile dimensions (such as W or H or W / H or H / W).

[0544] 13. The number of GEO modes that can be signaled or used in the bitstream for different block dimensions (such as block height and / or block width) may be different. The total number of GEO modes that can be used to derive the angle / distance index as defined in JVET-P0884-v8 during decoding is denoted as A. The number of GEO modes that can be used for a block in the bitstream can be defined as a number, denoted as B. The number of GEO modes that can be signaled for a block in the bitstream can be defined as a number, denoted as C.

[0545] a) In one example, B or C may be different from A.

[0546] i. For example, B may be equal to C.

[0547] ii. For example, B and C may be smaller than A.

[0548] b) In one example, B or C may be defined differently for different block categories.

[0549] 1) In one example, block categories can be classified by the ratio of block width to height.

[0550] a. In one example, for a W×H block, if W / H = 1 and / or 2 and / or 3 and / or 4 and / or 8, then B or C can be less than A.

[0551] b. In one example, for a W×H block, if H / W = 1 and / or 2 and / or 3 and / or 4 and / or 8, then B or C can be less than A.

[0552] 2) In one example, block categories can be classified by a function of block width and height, such as the block size equal to W*H.

[0553] a. In one example, for a W×H block, if W*H > T (e.g., T = 512 / 1024 / 2048 / 4096), then B or C can be less than A.

[0554] b. In one example, for a W×H block, if W*H <= T (e.g., T = 512 / 1024 / 2048 / 4096), then B or C can be less than A.

[0555] 3) In one example, block categories can be classified by block dimensions (e.g., W and / or H).

[0556] a. In one example, for a W×H block, if W = T1 and / or H = T2 (where T1 and T2 are constant values), then B or C can be less than A.

[0557] b. In one example, for a W×H block, if W > T1 and / or H > T2 (where T1 and T2 are constant values), then B or C can be less than A.

[0558] c. In one example, for a W×H block, if W < T1 and / or H < T2 (where T1 and T2 are constant values), then B or C can be less than A.

[0559] 4) In one example, a fixed set B can be defined for B or C of block category i i (i = 0…N - 1, where N represents the number of block categories defined in the above items).

[0560] a. In one example, for block category 0 with block width less than 32 and block height less than 32, B0 is equal to 40 or 45 or 50. B1 is equal to 20 or 30 or 40 for block category 1, where the block width is equal to 32 and the block height is equal to 32. For block category 2 with block width greater than 32 and block height greater than 32, B2 is equal to 20 or 30.

[0561] 5) B or C for each block category can be signaled from the encoder to the decoder.

[0562] a. Alternatively, B or C for each block category can be predefined for the encoder and decoder.

[0563] 6) In one example, the width and height of the luma block can be used to derive B and / or C.

[0564] 14. The value of the GEO Mode Index signaled in the bitstream may be different from the value of the GEO Mode Index used to derive the angle / distance index during the decoding process.

[0565] a) In one example, a subset of the GEO modes / angles / distances with respect to the full set of GEO modes / angles / distances (e.g., the full set of GEO modes is defined in Tables 8-10 in the working draft of JVET-P0884) may be used for a block class, where the block class may be categorized by block width and / or block height, as detailed in the above items.

[0566] b) In one example, a mapping table (e.g., a lookup table) may be used to define a correspondence between a signaled GEO pattern index and a mapped GEO pattern index (e.g., a mapped GEO pattern may be used to derive an angle index and a distance index, such as wedge_partition_idx in Table 8-10 of the decoding process provided by the working draft of JVET-P0884).

[0567] c) In one example, N mapping tables (N>1) may be defined according to the GEO block category. For example, N is a constant that may be less than 19.

[0568] a. In one example, the number of mapping tables may depend on the number of block categories.

[0569] b. The length of these mapping tables may be different for different chunk classes, depending on the number of GEO modes allowed for the different chunk classes.

[0570] d) One or more mapping tables as defined above may be signaled from the encoder to the decoder.

[0571] a. Alternatively, mapping tables can be predefined for the encoder and decoder.

[0572] 15. The binarization of the signaled GEO mode index may depend on the decoded information (eg, block dimension / category).

[0573] a) In one example, during binarization of the signaled wedge pattern index, the value of the maximum value (denoted as cMax) can depend on the block dimensions (such as block width and / or block height), or the block category (as detailed in the above items).

[0574] b) In one example, if the block size satisfies condition C, the value of cMax for GEO mode index coding may be equal to X (such as X=16 or 32 or 30).

[0575] iC can be represented as a block with H / W<=T (eg, T=1 or 2 or 4 or 8).

[0576] ii. C can be represented as a block with H / W>T (e.g., T=1 or 2 or 4 or 8).

[0577] 16. GEO mode indexes can be encoded and decoded using truncated Rice, truncated binary, truncated unary, fixed length, k-th order Exp-Golomb, or limited k-th order Exp-Golomb binarization.

[0578] a) Truncated binary codes may be used for binarization of the signaled GEO mode index.

[0579] i. In one example, the GEO mode index signaled in the bitstream may be different from the derived GEO mode index used in the decoding process to derive the angle / distance index as defined in JVET-P0884-v8.

[0580] b)K th -EG codec can be used for binarization of the signaled GEO mode index.

[0581] i. In one example, K=0 or 1 or 2 or 3.

[0582] 17.Context codec can be used to encode and decode GEO mode indexes.

[0583] a) In one example, the first X (such as X=1) bins of the GEO mode index may be decoded by context decoding, while the other bins may be encoded and decoded by bypass encoding without context modeling.

[0584] Blending weights and motion memory weight generation

[0585] 18. The blending weights and / or motion storage weights of the chroma components in TPM and / or GEO mode may depend on the chroma sample location type (e.g. Figure 12 in the ChromaLocType).

[0586] a) The type of downsampling filter used for mixing weight derivation of chroma samples can be signaled at the video unit level (such as SPS / VPS / PPS / picture header / sub-picture / slice / slice header / slice / tile / CTU / VPDU level).

[0587] a. In one example, a high-level flag may be signaled to switch between different chroma position types for the content.

[0588] i. In one example, an advanced flag may be signaled to switch between chroma location type 0 and chroma location type 2.

[0589] ii. In one example, a signaling flag may be signaled to specify whether the top left downsampled luma weight in TPM / GEO prediction mode is collocated with the top left luma weight (ie, chroma sample location type 0).

[0590] iii. In one example, a signaling flag may be signaled to specify whether the top left downsampled luma sample in TPM / GEO prediction mode is horizontally co-sited with the top left luma sample, but vertically shifted by 0.5 luma sample units relative to the top left luma sample (i.e., chroma sample location type 2).

[0591] b. In one example, for 4:2:0 chroma format and / or 4:2:2 chroma format, the type of downsampling filter may be signaled.

[0592] c. In one example, a flag may be signaled to specify the type of chroma downsampling filter used for TPM / GEO prediction.

[0593] i. In one example, a flag may be signaled to indicate whether downsampling filter A or downsampling filter B is used for chroma weight derivation in TPM / GEO prediction mode.

[0594] b) The type of downsampling filter used for mixing weight derivation of chroma samples can be derived at video unit level (such as SPS / VPS / PPS / picture header / sub-picture / slice / slice header / slice / tile / CTU / VPDU level).

[0595] a. In one example, a lookup table may be defined to specify the correspondence between the chroma subsampling filter type and the chroma format type of the content.

[0596] c) In case of different chroma location types, the specified downsampling filter can be used for TPM / GEO prediction mode.

[0597] a. In one example, with a certain chroma sample location type (eg, chroma sample location type 0), the chroma weights of the TPM / GEO may be subsampled from the collocated top left luma weight.

[0598] b. In one example, for a particular chroma sample position type (e.g., chroma sample position type 0 or 2), a specified X-tap filter (where X is a constant, such as X = 6 or 5) can be used for chroma weight subsampling in the TPM / GEO prediction mode.

[0599] Reduce GEO angle / distance

[0600] 19. The number of angles of a GEO block can be less than T1 (such as T1 = 24). Assume the number of angles used in the decoding process is represented as NUM_ANGLE.

[0601] a) Alternatively, the number of GEO patterns can be less than T2 (such as T2 = 82).

[0602] i. In one example, the mapping of angleIdx and distanceIdx from wedge_partition_idx can depend on how many angles are supported by the GEO pattern and / or how many distances are supported by each angle. <开

[0603] b) Alternatively, the number of distances of a GEO block can be less than T3 (such as T3 = 4 or 3).

[0604] i. In one example, the number of distances for one or more angles can be less than T3. [[ID=I19]]

[0605] 1) For example, the number of distances for vertical and horizontal angles can be equal to X (such as X = 2)

[0606] c) In one example, the number of angles NUM_ANGLE used in the decoding process can be equal to the maximum angleIdx plus 1.

[0607] i. For example, NUM_ANGLE = 24, and the maximum angleIdx defined in Table 8-10 of the JVET-P0884 working draft is equal to 23.

[0608] ii. Another example is NUM_ANGLE < T1 (e.g., T1 = 24).

[0609] d) In one example, the weighted sample prediction for the block used in GEO pattern encoding / decoding and / or the calculation of displacementY in the motion vector storage process can depend on the total number of angles used in the decoding process.

[0610] i. In one example, displacementY can be set to (displacementX + (NUM_ANGLE >> 2)) % NUM_ANGLE.

[0611] e) In one example, the calculation of shiftHor in the weighted sample prediction and / or motion vector storage process for a block in GEO mode coding may depend on the total number of angles used in the decoding process.

[0612] i. In one example, if one of the following conditions is true, shiftHor may be set to 0. Otherwise, shiftHor is set equal to 1.

[0613] 1) angleIdx % (NUM_ANGLE / 2) equals (NUM_ANGLE >> 2)

[0614] 2) angleIdx%(NUM_ANGLE / 2) is not equal to 0 and hwRatio≥1, where hwRatio is set to H / W.

[0615] f) In one example, the derivation of offsetX and / or offsetY used to derive the blend weight index for the GEO block may depend on the number of angles and / or the value of shiftHor.

[0616] i. In one example, if shiftHor is equal to 0, then offsetY used to derive the blend weight index for the GEO block can be derived as follows:

[0617] 1)offsetY=(256-nH)>>1+angleIdx<(NUM_ANGLE / 2)? (distanceIdx*nH)>>3:-((distanceIdx*nH)>>3)

[0618] ii. In one example, if shiftHor is equal to 1, offsetX used to derive the blend weight index of the GEO block can be derived as follows:

[0619] 1)offsetX=(256-nW)>>1+angleIdx<(NUM_ANGLE / 2)? (distanceIdx*nW)>>3:-((distanceIdx*nW)>>3)

[0620] g) In one example, the derivation of offsetX and / or offsetY used to derive the motion index of the GEO block may depend on the number of angles and / or the value of shiftHor.

[0621] i. In one example, if shiftHor is equal to 0, then offsetY used to derive the motion index of the GEO block can be derived as follows:

[0622] 1)offsetY=(64-numSbY)>>1+angleIdx<(NUM_ANGLE / 2)? (distanceIdx*nCbH)>>5:-((distanceIdx*nCbH)>>5)

[0623] ii. In one example, if shiftHor is equal to 1, then offsetX used to derive the motion index of the GEO block may be derived as follows:

[0624] 1)offsetX=(64–numSbX)>>1+angleIdx<(NUM_ANGLE / 2)? (distanceIdx*nCbW)>>5:-((distanceIdx*nCbW)>>5)

[0625] h) In one example, the length of the lookup table used to derive the GEO segmentation distance may depend on the number of corners used in the GEO block decoding process.

[0626] i. In one example, as shown in Tables 8-12 in the working draft of JVET-P0884, the length of the lookup table used to derive the GEO segmentation distance can be equal to NUM_ANGLE.

[0627] 1) In one example, NUM_ANGLE<24.

[0628] i) In one example, the values of the lookup table used to derive the GEO segmentation distance may be redesigned and have a length equal to NUM_ANGLE.

[0629] 1) In one example, the redesigned lookup table may be a subset of Tables 8-12 in the working draft of JVET-P0884.

[0630] 2) In one example, when NUM_ANGLE=20, the table can be designed as follows.

[0631] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Dis[idx] 8 8 8 4 2 -2 -4 -8 -8 -8 -8 -8 -8 -4 -2 2 4 8 8 8

[0632] 3) In one example, when NUM_ANGLE=20, the table can be designed as follows.

[0633] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Dis[idx] 8 8 8 4 2 0 -2 -4 -8 -8 -8 -8 -8 -4 -2 0 2 4 8 8

[0634] 4) In one example, when NUM_ANGLE=20, the table can be designed as follows.

[0635] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Dis[idx] 8 8 8 8 2 0 -2 -8 -8 -8 -8 -8 -8 -8 -2 0 2 8 8 8

[0636] 5) In one example, when NUM_ANGLE=20, the table can be designed as follows.

[0637] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Dis[idx] 8 8 8 8 4 0 -4 -8 -8 -8 -8 -8 -8 -8 -4 0 4 8 8 8

[0638] 6) In one example, when NUM_ANGLE=16, the table can be designed as follows.

[0639] idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dis[idx] 8 8 4 2 0 -2 -4 -8 -8 -8 -4 -2 0 2 4 8

[0640] j) In one example, whether part 1 and part 2 of the weighted sample prediction process for GEO mode are equal to A or B may depend on the angle index T1 and the angle index T2, where A and B indicate two input arrays predSamplesLA and predSamplesLB of the weighted sample prediction process for GEO mode, and PART1 and PART2 are representations of A and B of the output weighted prediction sample values of the block used to derive the GEO prediction.

[0641] i. In one example, if angleIdx>=T1&&angleIdx<=T2, then PART1 and PART2 may be set equal to A and B, respectively; otherwise, PART1 and PART2 may be set equal to B and A, respectively.

[0642] ii. In one example, T1 and T2 can be constant values, and T1 <NUM_ANGLE,T2<=NUM_ANGLE。

[0643] 1) In one example, when NUM_ANGLE=24, T1=10, T2=20.

[0644] 2) In one example, when NUM_ANGLE=20, T1=8, T2=16.

[0645] 3) In one example, when NUM_ANGLE=20, T1=8, T2=17.

[0646] 4) In one example, when NUM_ANGLE=20, T1=9, T2=16.

[0647] 5) In one example, when NUM_ANGLE=16, T1=7, T2=13.

[0648] iii. In one example, T1 and T2 can be calculated based on the number of angles.

[0649] k) In one example, whether partIdx used in the motion vector storage process for the GEO mode is set to 0 or 1 can depend on angle index T1 and angle index T2, where partIdx is used to derive variable sType for allocating motion vectors for GEO motion storage.

[0650] i. In one example, if angleIdx >= T1 && angleIdx <= T2, partIdx can be set to 1, otherwise partIdx can be set to 0. sType = abs(motionIdx) < 32? 2 : motionIdx <= 0? partIdx : 1 - partIdx, where variable motionIdx is calculated using a lookup table for deriving the GEO segmentation distance (e.g., Table 8-12 in the working draft of JVET-P0884).

[0651] ii. In one example, T1 and T2 can be constant values, T1 < NUM_ANGLE and T2 <= NUM_ANGLE.

[0652] 1) In one example, when NUM_ANGLE = 24, T1 = 10, T2 = 20.

[0653] 2) In one example, when NUM_ANGLE = 20, T1 = 8, T2 = 16.

[0654] 3) In one example, when NUM_ANGLE = 20, T1 = 8, T2 = 17.

[0655] 4) In one example, when NUM_ANGLE = twenty, T1 = 9, T2 = 16.

[0656] 5) In one example, when NUM_ANGLE = 16, T1 = 7, T2 = 13. <00GEO / wedge segmentation distance (such as Dis[i], i = 0...NUM_ANGLE - 1) can be set as shown in the following table.

[0659] 1) Alternatively, the values of the lookup table for deriving the GEO / wedge segmentation distance (such as Dis[i], i = 0...NUM_ANGLE - 1) can be set as a subset of the following table.

[0660] It should be noted that in the translation of item 18, "twenty" is used instead of the Arabic numeral "20" for better readability in the context. If a more literal translation is required, it can be changed back to "20".​​​2) In one example, for angle indices equal to 3 and / or 21, the GEO / wedge split distance may be equal to 4.

[0661] 3) In one example, for angle indices equal to 9 and / or 15, the GEO / wedge split distance may be equal to -4.

[0662] idx 0 1 2 3 4 5 6 7 8 9 10 11 Dis[idx] 8 8 8 4 4 2 0 -2 -4 -4 -8 -8 idx 12 13 14 15 16 17 18 19 20 21 22 23 Dis[idx] -8 -8 -8 -4 -4 -2 0 2 4 4 8 8

[0663] GEO combined with other codec tools

[0664] 20. Codec X can be used for GEO-encoded blocks. In this case, an indication of X and GEO usage / auxiliary information can be signaled.

[0665] a) In one example, X may be SBT.

[0666] b) In one example, X may be CIIP.

[0667] c) In one example, X may be MMVD.

[0668] d) The GEO process may differ when using or not using codec X. For example, GEO directions / distances may be used when using codec X, and a subset of GEO directions / distances may be used when not using codec X.

[0669] 21. Whether / how to apply the filtering process may depend on the use of GEO.

[0670] a) In one example, the value of the boundary filter strength (eg, bS) during the deblocking process may depend on whether the block is coded with GEO.

[0671] b) In one example, if the block edge is a transform block edge and sample p0 or q0 is in a codec block with MergeGeoFlag equal to 1, the value of bS may be set equal to T (such as T=2).

[0672] c) In one example, the value of the deblocking edge (eg, edgeFlags) within a GEO block may never be equal to 2.

[0673] i. In one example, the value of the deblocking edge (eg, edgeFlags) within a GEO block may be equal to 2.

[0674] ii. In one example, given a block edge, if sample p0 or q0 is in a coded block with MergeGeoFlag equal to 1, the value of bS may depend on the motion vector and / or the reference picture.

[0675] Additional Examples

[0676] The following example embodiments can be applied to the VVC specification. Modifications are made to the CE anchor based on the GEO working draft (JVET-P0884_P0885_WD(on_top_of_JVET-O2001-vE)_r2). New additions are marked with bold underline, and deletions from the VVC working draft are marked with double brackets (e.g., [[a]] indicates the deletion of the character "a").

[0677] 5.1. Example Embodiment #1: GEO Mode Constraint 1

[0678] 7.3.8.7Merge Data Syntax

[0679]

[0680]

[0681] 5.2. Example Embodiment #2: GEO Mode Constraint 2

[0682] 7.3.8.7Merge Data Syntax

[0683]

[0684]

[0685] 5.3. Example Embodiment #3: Block Size Dependent GEO Mode Selection 1

[0686] 8.5.7 Decoding Process for Wedge-Shaped Inter-Frame Blocks

[0687] 8.5.7.1 Overview

[0688] This process is called when decoding a codec with wedge_merge_mode[xCb][yCb] equal to 1.

[0689] Inputs to this process include:

[0690] It specifies the luma position (xCb, yCb) of the top left sample of the current codec block relative to the top left luma sample of the current picture,

[0691] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0692] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0693] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0694] – chroma motion vectors mvCA and mvCB,

[0695] – reference indexes refIdxA and refIdxB,

[0696] –Prediction list flags predListFlagA and predListFlagB.

[0697] The output of this process is:

[0698] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0699] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0700] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0701] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0702] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0703] 1. For each of N A and B, the following applies:

[0704] – An ordered two-dimensional array refPicLN containing luminance samples L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN CrThe reference picture is derived by calling the procedure specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0705] –array predSamplesLN L It is derived by calling the fractional sampling interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L , variable bdofFlag is set to FALSE, and variable cIdx is set to 0 as input.

[0706] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cb Set equal to refPicLN Cb , the variable bdofFlag is set equal to FALSE, and the variable cIdx is set equal to 1, as input.

[0707] –array predSamplesLN Cr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr , the variable bdofFlag is set equal to FALSE, and the variable cIdx is set equal to 2, as input.

[0708]

[0709] 3. Set the split angle and distance of wedge Merge mode angleIdx and distanceIdex according to the value of wedge_partition_idx'[xCb][yCb], as shown in Table 8-10

[0710] 4. Prediction samples within the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by invoking the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[0711] 5. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx, distanceIdx, and cIdx are equal to 1, as input.

[0712] 6. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C=0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , and the variables angleIdx and distanceIdx and cIdx equal to 2, as input.

[0713] 7. Call the motion vector storage procedure for Merge wedge mode specified in clause 8.5.7.3, with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0714]

[0715]

[0716]

[0717]

[0718]

[0719] Table 9-77 – Syntax elements and associated binarization

[0720]

[0721] 5.4. Example Embodiment #4: Block Size-Dependent GEO Mode Selection 2

[0722] 8.5.7 Decoding Process for Wedge-Shaped Inter-Frame Blocks

[0723] 8.5.7.1 Overview

[0724] This process is called when decoding a codec with wedge_merge_mode[xCb][yCb] equal to 1.

[0725] Inputs to this process include:

[0726] – specifies the top left luma sample position (xCb, yCb) of the current codec block relative to the top left luma sample of the current picture,

[0727] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0728] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0729] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0730] – chroma motion vectors mvCA and mvCB,

[0731] – reference indexes refIdxA and refIdxB,

[0732] –Prediction list flags predListFlagA and predListFlagB.

[0733] The output of this process is:

[0734] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[0735] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0736] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0737] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0738] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0739] 8. For each of N A and B, the following applies:

[0740] – An ordered two-dimensional array refPicLN containing luminance samples L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The reference picture is derived by calling the procedure specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0741] –array predSamplesLN L It is derived by calling the fractional sampling interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L , variable bdofFlag is set to FALSE, and variable cIdx is set to 0 as input.

[0742] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cb Set equal to refPicLN Cb , the variable bdofFlag is set equal to FALSE, and the variable cIdx is set equal to 1, as input.

[0743] –array predSamplesLN Cris derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr , the variable bdofFlag is set equal to FALSE, and the variable cIdx is set equal to 2, as input.

[0744]

[0745] 10. Set the split angle and distance of wedge Merge mode angleIdx and distanceIdex according to the value of wedge_partition_idx'[xCb][yCb], as shown in Table 8-10

[0746] 11. Prediction samples in the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by invoking the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[0747] 12. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C= 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx, distanceIdx, and cIdx are equal to 1, as input.

[0748] 13. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the wedge-shaped Merge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , and the variables angleIdx and distanceIdx and cIdx equal to 2, as input.

[0749] 14. Call the motion vector storage procedure for the Merge wedge mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0750]

[0751]

[0752]

[0753] Table 9.77 – Syntax elements and associated binarization

[0754]

[0755] 5.5. Example Embodiment #5: Supporting 64 GEO Modes at 20 Angles

[0756]

[0757] Figure 22 shows the old table 810 that was deleted from the related working draft, Figure 23 Table 8-10 shows the new proposal corresponding to the changes in the relevant working draft. Table 8-10 is a specification of angleIdx and distanceIdx values based on the wedge_partition_idx value.

[0758]

[0759] 8.5.7.2 Weighted Sample Point Prediction Process for Wedge Merge Mode

[0760] Inputs to this process include:

[0761] – Two variables nCbW and nCbH specifying the width and height of the current codec block,

[0762] – two (nCbW) x (nCbH) arrays predSamplesLA and predSamplesLB,

[0763] – The variable angleIdx specifies the angle index of the wedge segmentation,

[0764] – variable distance idx specifying the distance Idx of the wedge spacer,

[0765] – Variable cIdx that specifies the color component index.

[0766] The output of this process is a (nCbW) x (nCbH) array pbSamples of predicted sample values.

[0767] The variable bitDepth is derived as follows:

[0768] – If cIdx is equal to 0, bitDepth is set to BitDepthY.

[0769] – If cIdx is equal to 0, nW and nH are set equal to nCbW and nCbH respectively, otherwise (cIdx is not equal to 0) nW and nH are set equal to nCbW xSubWidthC and nCbH x SubHeightC respectively.

[0770] – If cIdx is equal to 0, subW and subH are both set to 1, otherwise (cIdx is not equal to 0) subW and subH are set equal to SubWidthC and SubHeightC respectively.

[0771] – Otherwise, bitDepth is set equal to BitDepthC.

[0772] The variables shift1 and offset1 are derived as follows:

[0773] – The variable shift1 is set to Max(5,17-bitDepth).

[0774] –The variable offset1 is set equal to 1<<(shift1-1).

[0775] Set the values of the following variables:

[0776] –hwRatio is set to nH / nW

[0777] –displacementX is set to angleIdx

[0778] –The displacement y is set to

[0779] -if Then PART1 and PART2 are set equal to A and B respectively, otherwise PART1 and PART2 are set equal to B and A respectively.

[0780] – Set rho to the following values using the Dis lookup table specified in Table 8-12:

[0781] rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8)

[0782] The variable shiftHor is set equal to 0 if one of the following conditions is true:

[0783]

[0784] Otherwise, set shiftHor equal to 1.

[0785] If shiftHor is equal to 0, the calculation formulas for offsetX and offsetY are as follows:

[0786] offsetX=(256-nW)>>1

[0787]

[0788] Otherwise, if shiftHor is equal to 1, then offsetX and offsetY are calculated as follows:

[0789]

[0790] offsetY=(256-nH)>>1

[0791] The predicted sample values pbSamples[x][y], where x = 0..nCbW-1 and y = 0..nCbH-1, are set according to the following ordered steps:

[0792] -The variables weightIdx and weightIdxAbs are calculated using the lookup tables Tables 8-12 as follows:

[0793] weightIdx=(((x*subW+offsetX)<<1)+1)*Dis[displacementX]+(((y*subH+offsetY)<<1)+1))*Dis[displacementY]-rho.

[0794] weightIdxAbs=Clip3(0,26,abs(weightIdx)).

[0795] The value of -sampleWeight is derived according to Table 8-13 as follows:

[0796] sampleWeight=weightIdx<=0? WedgeFilter[weightIdxAbs]:8-WedgeFilter[weightIdxAbs]

[0797] Note – sampleWeight L The values of [x][y] can also be obtained from sampleWeight L Derived from [x-shiftX][y-shiftY]. If angleIdx is greater than 4 and less than 12, or angleIdx is greater than 20 and less than 24, then shiftX is the tangent of the angle and shiftY is 1. Otherwise, shiftX is 1 of the angle and shiftY is the cotangent of the angle. If the tangent (resp. cotangent) value is infinite, shiftX is 1 (resp. 0) or shiftY is 0 (resp. 1).

[0798] -The predicted sample value pbSamples[x][y] is derived as follows:

[0799] pbSamples[x][y]=Clip3(0,(1< <bitDepth)-1,(predSamplesLPART1[x][y]*(8–sampleWeight)+predSamplesLPART2[x][y]*sampleWeight+offset1)> >shift1)

[0800] Table 8-12 - Lookup table Dis derived from wedge split distance.

[0801] idx 0 1 2 3 4 5 6 7 8 9 10 11 Dis[idx] 8 8 8 8 4 2 0 -2 -4 -8 -8 -8 idx 12 13 14 15 16 17 18 19 20 21 22 23 Dis[idx] -8 -8 -8 -8 -4 -2 0 2 4 8 8 8

[0802] Tables 8-12 shown above have been changed.

[0803]

[0804]

[0805]

[0806] <![CDATA[ idx ]]> <![CDATA[ 0 ]]> <![CDATA[ 1 ]]> <![CDATA[ 2 ]]> <![CDATA[ 3 ]]> <![CDATA[ 4 ]]> <![CDATA[ 5 ]]> <![CDATA[ 6 ]]> <![CDATA[ 7 ]]> <![CDATA[ 8 ]]> <![CDATA[ 9 ]]> <![CDATA[ 10 ]]> <![CDATA[ 11 ]]> <![CDATA[ 12 ]]> <![CDATA[ 13 ]]> <![CDATA[ 14 ]]> <![CDATA[ 15 ]]> <![CDATA[ 16 ]]> <![CDATA[ 17 ]]> <![CDATA[ 18 ]]> <![CDATA[ 19 ]]> <![CDATA[ Dis[idx] ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 4 ]]> <![CDATA[ 2 ]]> <![CDATA[ 0 ]]> <![CDATA[ -2 ]]> <![CDATA[ -4 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -4 ]]> <![CDATA[ -2 ]]> <![CDATA[ 0 ]]> <![CDATA[ 2 ]]> <![CDATA[ 4 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]>

[0807]

[0808] <![CDATA[ idx ]]> <![CDATA[ 0 ]]> <![CDATA[ 1 ]]> <![CDATA[ 2 ]]> <![CDATA[ 3 ]]> <![CDATA[ 4 ]]> <![CDATA[ 5 ]]> <![CDATA[ 6 ]]> <![CDATA[ 7 ]]> <![CDATA[ 8 ]]> <![CDATA[ 9 ]]> <![CDATA[ 10 ]]> <![CDATA[ 11 ]]> <![CDATA[ 12 ]]> <![CDATA[ 13 ]]> <![CDATA[ 14 ]]> <![CDATA[ 15 ]]> <![CDATA[ 16 ]]> <![CDATA[ 17 ]]> <![CDATA[ 18 ]]> <![CDATA[ 19 ]]> <![CDATA[ Dis[idx] ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 2 ]]> <![CDATA[ 0 ]]> <![CDATA[ -2 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -2 ]]> <![CDATA[ 0 ]]> <![CDATA[ 2 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]>

[0809]

[0810] <![CDATA[ idx ]]> <![CDATA[ 0 ]]> <![CDATA[ 1 ]]> <![CDATA[ 2 ]]> <![CDATA[ 3 ]]> <![CDATA[ 4 ]]> <![CDATA[ 5 ]]> <![CDATA[ 6 ]]> <![CDATA[ 7 ]]> <![CDATA[ 8 ]]> <![CDATA[ 9 ]]> <![CDATA[ 10 ]]> <![CDATA[ 11 ]]> <![CDATA[ 12 ]]> <![CDATA[ 13 ]]> <![CDATA[ 14 ]]> <![CDATA[ 15 ]]> <![CDATA[ 16 ]]> <![CDATA[ 17 ]]> <![CDATA[ 18 ]]> <![CDATA[ 19 ]]> <![CDATA[ Dis[idx] ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 4 ]]> <![CDATA[ 0 ]]> <![CDATA[ -4 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -4 ]]> <![CDATA[ 0 ]]> <![CDATA[ 4 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]>

[0811]

[0812] <![CDATA[ idx ]]> <![CDATA[ 0 ]]> <![CDATA[ 1 ]]> <![CDATA[ 2 ]]> <![CDATA[ 3 ]]> <![CDATA[ 4 ]]> <![CDATA[ 5 ]]> <![CDATA[ 6 ]]> <![CDATA[ 7 ]]> <![CDATA[ 8 ]]> <![CDATA[ 9 ]]> <![CDATA[ 10 ]]> <![CDATA[ 11 ]]> <![CDATA[ 12 ]]> <![CDATA[ 13 ]]> <![CDATA[ 14 ]]> <![CDATA[ 15 ]]> <![CDATA[ Dis[idx] ]]> <![CDATA[ 8 ]]> <![CDATA[ 8 ]]> <![CDATA[ 4 ]]> <![CDATA[ 2 ]]> <![CDATA[ 0 ]]> <![CDATA[ -2 ]]> <![CDATA[ -4 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -8 ]]> <![CDATA[ -4 ]]> <![CDATA[ -2 ]]> <![CDATA[ 0 ]]> <![CDATA[ 2 ]]> <![CDATA[ 4 ]]> <![CDATA[ 8 ]]>

[0813] Table 8-13 Filter weight lookup table for wedge filter, used to derive wedge segmentation filter weights.

[0814]

[0815] 8.5.7.3 Motion Vector Storage Process in Wedge Merge Mode

[0816] This process is called when decoding a codec with MergeWedgeFlag[xCb][yCb] equal to 1.

[0817] Inputs to this process include:

[0818] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0819] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0820] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0821] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0822] – reference indexes refIdxA and refIdxB,

[0823] –Prediction list flags predListFlagA and predListFlagB.

[0824] The variables numSbX and numSbY, which specify the number of 4×4 blocks in the horizontal and vertical directions in the current codec block, are set equal to numSbX=cbWidth>>2 and numSbY=cbHeight>>2.

[0825] Set the values of the following variables:

[0826] –displacementX is set to angleIdx, displacementY is set to

[0827]

[0828] –hwRatio is set to equal nCbH / nCbW

[0829] The variable shiftHor is set equal to 0 if one of the following conditions is true:

[0830]

[0831]

[0832] Otherwise, set shiftHor equal to 1.

[0833]

[0834] If shiftHor is equal to 0, the calculation formulas for offsetX and offsetY are as follows:

[0835] –offsetX=(64–numSbX)>>1

[0836]

[0837] Otherwise, if shiftHor is equal to 1, then offsetX and offsetY are calculated as follows:

[0838]

[0839] –offsetY=(64–numSbY)>>1

[0840] The value of the variable rho is derived from the following equation and the Dis lookup table specified in Table 8-12:

[0841] –rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8).

[0842] Using the Dis lookup tables specified in Table 8-11 and Table 8-12, set motionOffset equal to the following values:

[0843] –motionOffset=3*Dis[displacementX]+3*Dis[displacementY].

[0844] For each 4x4 sub-block at sub-block index (xSbIdx, ySbIdx), where xSbIdx = 0..numSbX-1, and ySbIdx = 0..numSbY-1, the following applies:

[0845] The variable motionIdx is calculated using the lookup table 8-12 as follows:

[0846] –motionIdx=(((xSbIdx+offsetX)<<3)+1)*Dis[displacementX]+(((xSbIdx+offsetY<<3)+1))*Dis[displacementY]–rho+motionOffset

[0847] The variable sType is derived as follows:

[0848] –sType=abs(motionIdx)<32?2:motionIdx<=0? partIdx:1-partIdx

[0849] The following example embodiments can be applied to the VVC specification. Modifications are made to the CE anchor based on the GEO working draft (JVET-P0884_P0885_WD(on_top_of_JVET-O2001-vE)_r2). New additions are marked with bold underline, and deletions from the VVC working draft are marked with double brackets (e.g., [[a]] indicates the deletion of the character "a").

[0850] Example Embodiment: GEO Mode Constraints

[0851] 7.3.9.7Merge Data Syntax

[0852]

[0853] Example Embodiment: GEO Mode Constraints

[0854] 7.3.9.7Merge Data Syntax

[0855]

[0856] Example Embodiment: GEO Mode Constraints

[0857] 7.3.9.7Merge Data Syntax

[0858]

[0859] Example Embodiment: GEO Mode Constraints

[0860] 7.3.9.7Merge Data Syntax

[0861]

[0862] Example embodiment: Block size dependent GEO mode selection

[0863] 8.5.7 Decoding Process of GEO Inter-frame Blocks

[0864] 8.5.7.1 Overview

[0865] This process is called when decoding a codec unit with MergeGeoFlag[xCb][yCb] equal to 1.

[0866] Inputs to this process include:

[0867] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0868] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0869] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0870] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0871] – chroma motion vectors mvCA and mvCB,

[0872] – reference indexes refIdxA and refIdxB,

[0873] –Prediction list flags predListFlagA and predListFlagB.

[0874] The output of this process is:

[0875] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[0876] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0877] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0878] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0879] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0880] 1. For each of N A and B, the following applies:

[0881] – An ordered two-dimensional array of luminance samples refPicLN L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The composed reference picture is derived by calling the procedure specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0882] –array predSamplesLN L It is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the luma codec block width sbWidth set equal to cbWidth, the luma codec block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvN, the reference array refPicLXL set equal to refPicLNL, the variable bdofFlag set equal to FALSE, the variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input.

[0883] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cb Set equal to refPicLN Cb , variable bdofFlag is set equal to FALSE, variable cIdx is set equal to 1, and RefPicScale[predListFlagN][refIdxN], as input.

[0884] –array predSamplesLN Cr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cr Set equal to refPicLN Cr , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 2, and RefPicScale[predListFlagN][refIdxN], as input.

[0885]

[0886] 3. The split angle and distance of the Mergegeo mode variables angleIdx and distanceIdx are set according to the value of merge_geo_parition_idx'_[xCb][yCb], as shown in Table 36.

[0887] 4. Prediction samples within the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, with the codec block width nCbW set equal to cbWidth, the codec block height nCbH set equal to cbheight, the sample arrays predSamplesLAL and predSamplesLBL, and the variables angleIdx, distanceIdx and cIdx equal to 0, as input.

[0888] 5. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx are equal to 1 as input.

[0889] 6. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C=0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2, as input.

[0890] 7. Call the motion vector storage procedure for MergeGEO mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0891] Figure 24 A mapping table of geo_partition_idx' values based on geo_partition_idx values is shown. Figure 25 shows the old table 36 that was deleted from the relevant working draft, Figure 26 Table 36 shows the new proposal corresponding to the changes in the related working draft. Table 36 shows the specification of angleIdx and distanceIdx values based on the geo_partition_idx value.

[0892] Table 123 - Syntax elements and associated binarization

[0893]

[0894] Example embodiment: Block size dependent GEO mode selection

[0895] 8.5.7 Decoding Process of GEO Inter-frame Blocks

[0896] 8.5.7.1 Overview

[0897] This process is called when decoding a codec unit with MergeGeoFlag[xCb][yCb] equal to 1.

[0898] Inputs to this process include:

[0899] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0900] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0901] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0902] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0903] – chroma motion vectors mvCA and mvCB,

[0904] – reference indexes refIdxA and refIdxB,

[0905] –Prediction list flags predListFlagA and predListFlagB.

[0906] The output of this process is:

[0907] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[0908] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0909] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0910] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0911] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0912] 1. For each of N A and B, the following applies:

[0913] – An ordered two-dimensional array of luminance samples refPicLN L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The composed reference picture is derived by calling the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0914] –array predSamplesLN L is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L , variable bdofFlag is set equal to FALSE, variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN], as input.

[0915] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cb Set equal to refPicLN Cb, the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 1, and RefPicScale[predListFlagN][refIdxN], as input.

[0916] –array predSamplesLN Cr is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cr Set equal to refPicLN Cr , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 2, and RefPicScale[predListFlagN][refIdxN], as input.

[0917] 2. The split angle and distance of the Mergegeo mode variables angleIdx and distanceIdx are set according to the value of merge_geo_parition_idx[xCb][yCb], as shown in Table 36.

[0918] 3. Prediction samples within the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[0919] 4. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where xC =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx are equal to 1 as input.

[0920] 5. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2, as input.

[0921] 6. Call the motion vector storage procedure for MergeGEO mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0922] Figure 26 shows the old table 36 that was deleted from the relevant working draft, Figure 28Table 36 shows the new proposed changes in the relevant working draft. Table 36 shows the specification of angleIdx and distanceIdx values based on geo_partition_idx values. Figure 28 As shown in Table 36,

[0923]

[0924] Table 123 - Syntax elements and associated binarization

[0925]

[0926] Example embodiment: Block size dependent GEO mode selection

[0927] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[0928]

[0929]

[0930]

[0931] 7.4.10.7Merge Data Semantics

[0932] merge_geo_partition_idx[x0][y0] specifies the direction of the geometry partition for Merge geometry mode. The array indices x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[0933] When merge_geo_partition_idx[x0][y0] does not exist, it is inferred to be equal to 0.

[0934]

[0935] 8.5.7 Decoding Process of GEO Inter-frame Blocks

[0936] 8.5.7.1 Overview

[0937] This process is called when decoding a codec unit with MergeGeoFlag[xCb][yCb] equal to 1.

[0938] Inputs to this process include:

[0939] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0940] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0941] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0942] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0943] – chroma motion vectors mvCA and mvCB,

[0944] – reference indexes refIdxA and refIdxB,

[0945] –Prediction list flags predListFlagA and predListFlagB.

[0946] The output of this process is:

[0947] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[0948] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0949] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0950] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0951] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0952] 1. For each of N A and B, the following applies:

[0953] – An ordered two-dimensional array of luminance samples refPicLN L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The composed reference picture is derived by calling the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0954] –array predSamplesLN L is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the luma codec block width sbWidth set equal to cbWidth, the luma codec block height sbHeight set equal to cbHeight, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvN, and the reference array refPicLXL set equal to refPicLN L , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN], as input.

[0955] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cb Set equal to refPicLN Cb , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 1, and RefPicScale[predListFlagN][refIdxN], as input.

[0956] –array predSamplesLN CrIt is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, the reference array refPicLXCr set equal to refPicLNCr, the variable bdofFlag set equal to FALSE, the variable cIdx set equal to 2, and RefPicScale[predListFlagN][refIdxN] as input.

[0957]

[0958] 3. The split angle and distance of the Mergegeo mode variables angleIdx and distanceIdx are set according to the value of merge_geo_parition_idx'_[xCb][yCb], as shown in Table 36.

[0959] 4. Prediction samples within the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to CB height, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[0960] 5. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C= 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, with the codec block width nCbW set equal to cbWidth / SubWidthC, the codec block height nCbH set equal to cbHeight / SubHeightC, the sample arrays predSamplesLACb and predSamplesLBCb, the variables angleIdx and distanceIdx, and cIdx equal to 1, as input.

[0961] 6. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLBCr, variables angleIdx and distanceIdx, and cIdx equal to 2, as input.

[0962] 7. Call the motion vector storage procedure for MergeGEO mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0963] Figure 24 A mapping table of geo_partition_idx' values based on geo_partition_idx values is shown. Figure 25 shows the old table 36 that was deleted from the relevant working draft, Figure 28Table 36 shows the new proposal corresponding to the changes in the related working draft. Table 36 shows the specification of angleIdx and distanceIdx values based on the geo_partition_idx value.

[0964] Table 123 - Syntax elements and associated binarization

[0965]

[0966] Example embodiment: Block size dependent GEO mode selection

[0967] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[0968]

[0969]

[0970]

[0971] 7.4.10.7Merge Data Semantics

[0972] merge_geo_partition_idx[x0][y0] specifies the direction of the geometry partition for Merge geometry mode. The array indices x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[0973] When merge_geo_partition_idx[x0][y0] does not exist, it is inferred to be equal to 0.

[0974]

[0975] 8.5.7 Decoding Process of GEO Inter-frame Blocks

[0976] 8.5.7.1 Overview

[0977] This process is called when decoding a codec unit with MergeGeoFlag[xCb][yCb] equal to 1.

[0978] Inputs to this process include:

[0979] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[0980] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[0981] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[0982] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[0983] – chroma motion vectors mvCA and mvCB,

[0984] – reference indexes refIdxA and refIdxB,

[0985] –Prediction list flags predListFlagA and predListFlagB.

[0986] The output of this process is:

[0987] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[0988] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0989] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[0990] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0991] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[0992] 1. For each of N A and B, the following applies:

[0993] – An ordered two-dimensional array of luminance samples refPicLN L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The composed reference picture is derived by calling the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[0994] –array predSamplesLN L is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN], as input.

[0995] –array predSamplesLN Cb It is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, with the luma position (xCb, yCb), the codec block width sbWidth set equal to cbWidth / SubWidthC, the codec block height sbHeight set equal to cbHeight / SubHeightC, the motion vector offset mvOffset set equal to (0, 0), the motion vector mvLX set equal to mvCN, the reference array refPicLXCb set equal to refPicLNCb, the variable bdofFlag set equal to FALSE, the variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input.

[0996] –array predSamplesLN Cris derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cr Set equal to refPicLN Cr , variable bdofFlag set equal to FALSE, variable cIdx set equal to 2, and RefPicScale[predListFlagN][refIdxN], as input.

[0997]

[0998] 3. The split angle and distance of the Mergegeo mode variables angleIdx and distanceIdx are set according to the value of merge_geo_parition_idx'_[xCb][yCb], as shown in Table 36.

[0999] 4. Prediction samples within the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to CbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[1000] 5. Prediction samples predSamples within the current chroma component Cb codec block Cb [xC][yC], where x C =0..cbWidth / SubWidthC-1 and y C= 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx are equal to 1 as input.

[1001] 6. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample arrays predSamplesLACr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2, as input.

[1002] 7. Call the motion vector storage procedure for MergeGEO mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[1003] Figure 24 A mapping table of geo_partition_idx values based on geo_partition_idx values is shown. Figure 25 shows the old table 36 that was deleted from the relevant working draft, Figure 29Table 36 shows the new proposal corresponding to the changes in the related working draft. Table 36 shows the specification of angleIdx and distanceIdx values based on the geo_partition_idx value.

[1004] Table 123 - Syntax elements and associated binarization

[1005]

[1006] Example embodiment: Block size dependent GEO mode selection

[1007] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[1008]

[1009]

[1010]

[1011] 7.4.10.7Merge Data Semantics

[1012] merge_geo_partition_idx[x0][y0] specifies the direction of the geometry partition for Merge geometry mode. The array indices x0, y0 specify the position (x0, y0) of the top left luma sample of the considered codec block relative to the top left luma sample of the picture.

[1013] When merge_geo_partition_idx[x0][y0] does not exist, it is inferred to be equal to 0.

[1014]

[1015] 8.5.7 Decoding Process of GEO Inter-frame Blocks

[1016] 8.5.7.1 Overview

[1017] This process is called when decoding a codec unit with MergeGeoFlag[xCb][yCb] equal to 1.

[1018] Inputs to this process include:

[1019] – specifies the luma position (xCb, yCb) of the top left luma sample of the current codec block relative to the top left luma sample of the current picture,

[1020] – The variable cbWidth specifies the width of the current codec block in luminance samples,

[1021] – The variable cbHeight specifies the height of the current codec block in luminance samples,

[1022] – Luma motion vectors mvA and mvB with 1 / 16 fractional sampling accuracy,

[1023] – chroma motion vectors mvCA and mvCB,

[1024] – reference indexes refIdxA and refIdxB,

[1025] –Prediction list flags predListFlagA and predListFlagB.

[1026] The output of this process is:

[1027] – The (cbWidth)x(cbHeight) array of luminance prediction samples is pre-sampled to 1,

[1028] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[1029] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) of chroma prediction samples of component Cr Cr .

[1030] Set predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luminance sample values, predSamplesLA Cb 、predSamplesLB Cb 、predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[1031] predSamples L 、predSamples Cb and predSamples Cr Export in the following sequential steps:

[1032] 8. For each of N A and B, the following applies:

[1033] – An ordered two-dimensional array of luminance samples refPicLN L and two ordered two-dimensional arrays refPicLN of chrominance samples Cb and refPicLN Cr The composed reference picture is derived by calling the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input.

[1034] –array predSamplesLN L is derived by calling the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the luma codec block width sbWidth is set equal to cbWidth, the luma codec block height sbHeight is set equal to cbHeight, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvN, and the reference array refPicLX is set equal to 0. L Set equal to refPicLN L , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN], as input.

[1035] –array predSamplesLN Cb is derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cb Set equal to refPicLN Cb , variable bdofFlag is set equal to FALSE, variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN], as input.

[1036] –array predSamplesLN Cris derived by invoking the fractional sample interpolation process specified in clause 8.5.6.3, where the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOffset is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX is set equal to 0. Cr Set equal to refPicLN Cr , the variable bdofFlag is set equal to FALSE, the variable cIdx is set equal to 0, and RefPicScale[predListFlagN][refIdxN] is taken as input.

[1037]

[1038] 10. The parition angle and distance of the Mergegeo mode variables angleIdx and distanceIdx are set according to the value of merge_geo_parition_idx'[xCb][yCb], as shown in Table 36.

[1039] 11. Prediction samples in the current luminance codec block, predSamples L [x L ][y L ], where x L =0..cbWidth-1 and y L = 0..cbHeight-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth, the codec block height nCbH is set equal to CbHeight, and the sample array predSamplesLA L and predSamplesLB L , and the variables angleIdx, distanceIdx, and cIdx are equal to 0, as input.

[1040] 12. Prediction samples predSamples within the current chroma component Cb codec block Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C= 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx are equal to 1 as input.

[1041] 13. Prediction samples predSamples in the current chroma component Cr codec block Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C = 0..cbHeight / SubHeightC-1, is derived by calling the weighted sample prediction process of the GEOMerge mode specified in clause 8.5.7.2, where the codec block width nCbW is set equal to cbWidth / SubWidthC, the codec block height nCbH is set equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2, as input.

[1042] 14. Call the motion vector storage procedure for MergeGEO mode specified in clause 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[1043] Figure 24 A mapping table of geo_partition_idx values based on geo_partition_idx values is shown. Figure 25 shows the old table 36 that was deleted from the relevant working draft, Figure 30Table 36 shows the new proposal corresponding to the changes in the related working draft. Table 36 shows the specification of angleIdx and distanceIdx values based on the geo_partition_idx value.

[1044] Table 123 - Syntax elements and associated binarization

[1045]

[1046] Example Implementations of the Disclosed Technology

[1047] Figure 13A is a block diagram of a video processing device 1300. Device 1300 can be used to implement one or more methods described herein. Device 1300 can be embodied in a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. Device 1300 may include one or more processors 1302, one or more memories 1304, and video processing hardware 1306. Processor 1302 can be configured to implement one or more methods described in this document. Memory 1304 can be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 1306 can be used to implement some of the techniques described in this document in hardware circuits and can be partially or completely part of processor 1302 (e.g., a graphics processor core GPU or other signal processing circuitry).

[1048] Figure 13B is a block diagram of an example video processing system in which the disclosed technology may be implemented.

[1049] Figure 13B 1 is a block diagram illustrating an example video processing system 1310 in which the various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1310. System 1310 may include an input 1312 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8 or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 1312 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces, such as Ethernet, a passive optical network (PON), and the like, as well as wireless interfaces, such as Wi-Fi or a cellular interface.

[1050] System 1310 may include a codec component 1314 that can implement the various codecs or encoding methods described in this document. Codec component 1314 can reduce the average bit rate of the video from input 1312 to the output of codec component 1314 to produce a coded representation of the video. Therefore, codec technology is sometimes referred to as video compression or video transcoding technology. As represented by component 1316, the output of codec component 1314 can be stored or sent via a connected communication. Component 1318 can use the stored or transmitted bitstream (or coded) representation of the video received at input 1312 to generate pixel values or displayable video sent to display interface 1320. The process of generating user-viewable video from the bitstream representation is sometimes referred to as video decompression. In addition, although some video processing operations are referred to as "codec" operations or tools, it should be understood that the codec tools or operations are used at the encoder, and the corresponding decoding tools or operations that are opposite to the encoding results will be performed by the decoder.

[1051] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High-Definition Multimedia Interface (HDMI), or DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described in this document may be implemented in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.

[1052] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In an example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of the video block, but may not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from the video block to the bitstream representation of the video will use the video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of the video to the video block will be performed using the video processing tool or mode enabled based on the decision or determination.

[1053] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, an encoder will not use the tool or mode when converting video blocks into a bitstream representation of the video. In another example, when a video processing tool or mode is disabled, a decoder will process the bitstream knowing that the bitstream has not been modified using the video processing tool or mode enabled based on the decision or determination.

[1054] The disclosed and other solutions, examples, embodiments, modules, and functional operations described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or in a combination of one or more thereof. The disclosed and other embodiments may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium, for execution by a data processing apparatus or for controlling the operation of the data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a storage device, a combination of materials that implements a machine-readable propagated signal, or a combination of one or more thereof. In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from a pixel representation of a video to a corresponding bitstream representation, or vice versa. As defined by the syntax, the bitstream representation of a current video block may, for example, correspond to bits co-located or interspersed at different locations within the bitstream. For example, a macroblock may be encoded based on error residuals from transforms and encodings, and also using bits from headers and other fields in the bitstream.

[1055] The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an execution environment for the computer program in question, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.

[1056] A computer program (also referred to as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple collaborating files (e.g., files that store one or more modules, subroutines, or code portions). A computer program may be deployed to execute on one computer or on multiple computers located in one location or distributed across multiple locations and interconnected by a communications network.

[1057] The processes and logic flows described herein can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[1058] By way of example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors of any type of digital computer. Typically, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, to receive data from or transfer data to the mass storage devices, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, special-purpose logic circuitry.

[1059] It will be appreciated that by enabling use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial to video encoder and / or decoder embodiments incorporated into video processing devices, such as smartphones, laptops, desktop computers, and similar devices.

[1060] Figure 14 is a flow chart of an example method 1400 of video processing. The method 1400 includes, at 1402, performing a conversion between a current video block of visual media data and a bitstream representation of the visual media data, wherein, during the conversion, use of a geometric partitioning mode is selectively enabled or disabled based at least in part on a determination that one or more dimensions of the current video block and / or a mathematical function of one or more dimensions of the current video block meet at least one threshold condition.

[1061] Figure 15 is a block diagram illustrating an example video coding system 100 that may utilize the techniques of this disclosure.

[1062] like Figure 15As shown, the video codec system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may be referred to as a video encoding device. The destination device 120 may decode the encoded video data generated by the source device 110, which may be referred to as a video decoding device.

[1063] Source device 110 may include a video source 112 , a video encoder 114 , and an input / output (I / O) interface 116 .

[1064] The video source 112 may include a source such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of these sources. The video data may include one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a sequence of bits that form a coded representation of the video data. The bitstream may include coded pictures and associated data. The coded pictures are coded representations of the pictures. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The coded video data may be transmitted directly to the destination device 120 via the I / O interface 116 via the network 130a. The coded video data may also be stored on a storage medium / server 130b for access by the destination device 120.

[1065] Destination device 120 may include an I / O interface 126 , a video decoder 124 , and a display device 122 .

[1066] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may obtain encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with destination device 120 or may be external to destination device 120, with destination device 120 configured to interface with an external display device.

[1067] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as the High Efficiency Video Codec (HEVC) standard, the Versatile Video Codec (VVM) standard, and other current and / or future standards.

[1068] Figure 16 is a block diagram illustrating an example of a video encoder 200, which may be Figure 5 The video encoder 114 in the system 100 is shown.

[1069] Video encoder 200 is configured to perform any or all of the techniques of this invention. Figure 16 In the example of FIG, video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.

[1070] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205 and an intra-frame prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213 and an entropy coding unit 214.

[1071] In other examples, the video encoder 200 may include more, fewer, or different functional components. In an example, the prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode where at least one reference picture is a picture in which the current video block is located.

[1072] Furthermore, some components such as the motion estimation unit 204 and the motion compensation unit 205 may be highly integrated, but for the purpose of explanation, they are not shown in FIG. Figure 6 are represented separately in the example.

[1073] The partitioning unit 201 may partition a picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.

[1074] The mode selection unit 203 may select one of the coding modes (e.g., intra or inter) based on the error result, and provide the resulting intra- or inter-coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra and inter prediction (CIIP) modes, where prediction is based on both inter prediction signals and intra prediction signals. In the case of inter prediction, the mode selection unit 203 may also select a resolution for the motion vector for the block (e.g., sub-pixel or integer pixel precision).

[1075] To perform inter-frame prediction on the current video block, motion estimation unit 204 may generate motion information for the current video block by comparing the current video block with one or more reference frames from buffer 213. Motion compensation unit 205 may determine a predicted video block for the current video block based on the motion information of pictures other than the picture associated with the current video block from buffer 213 and decoded samples.

[1076] Motion estimation unit 204 and motion compensation unit 205 may perform different operations on the current video block, eg, depending on whether the current video block is in an I slice, a P slice, or a B slice.

[1077] In some examples, motion estimation unit 204 may perform unidirectional prediction on the current video block, and motion estimation unit 204 may search for a reference video block for the current video block in the reference pictures in list 0 or list 1. Motion estimation unit 204 may then generate a reference index indicating the reference picture in list 0 or list 1 that contains the reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 may output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 may generate a predicted video block for the current block based on the reference video block indicated by the motion information for the current video block.

[1078] In other examples, motion estimation unit 204 may perform bidirectional prediction on the current video block. Motion estimation unit 204 may search for a reference video block for the current video block in the reference pictures in list 0 and may also search for another reference video block for the current video block in the reference pictures in list 1. Motion estimation unit 204 may then generate a reference index indicating the reference pictures in list 0 and list 1 that contain the reference video block and a motion vector indicating the spatial displacement between the reference video block and the current video block. Motion estimation unit 204 may output the reference index and motion vector for the current video block as motion information for the current video block. Motion compensation unit 205 may generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.

[1079] In some examples, motion estimation unit 204 may output complete motion information for use in the decoding process of a decoder.

[1080] In some examples, motion estimation unit 204 may not output a complete set of motion information for the current video. Instead, motion estimation unit 204 may reference motion information of another video block to signal the motion information for the current video block. For example, motion estimation unit 204 may determine that the motion information for the current video block is sufficiently similar to the motion information for an adjacent video block.

[1081] In one example, motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block that indicates to video decoder 300 that the current video block has the same motion information as another video block.

[1082] In another example, motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.

[1083] As described above, video encoder 200 may predictively signal motion vectors.Two examples of predictive signaling techniques that may be implemented by video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge mode signaling.

[1084] Intra-frame prediction unit 206 may perform intra-frame prediction on the current video block. When intra-frame prediction unit 206 performs intra-frame prediction on the current video block, intra-frame prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements.

[1085] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the predicted video block(s) of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.

[1086] In other examples, the current video block may not have residual data for the current video block, such as in skip mode, and the residual generation unit 207 may not perform the subtraction operation.

[1087] Transform processing unit 208 may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video block associated with the current video block.

[1088] After transform processing unit 208 generates a transform coefficient video block associated with the current video block, quantization unit 209 may quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.

[1089] Inverse quantization unit 210 and inverse transform unit 211 may apply inverse quantization and inverse transform, respectively, to the transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit 212 may add the reconstructed residual video block to corresponding samples from one or more predicted video blocks generated by prediction unit 202 to generate a reconstructed video block associated with the current block for storage in buffer 213.

[1090] After reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce video block artifacts in the video block.

[1091] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.

[1092] Figure 17 is a block diagram illustrating an example of a video decoder 300, which may be Figure 15 Video decoder 114 in system 100 is shown.

[1093] Video decoder 300 may be configured to perform any or all of the techniques of this invention. Figure 17 In the example of FIG, video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.

[1094] exist Figure 17 In the example of FIG. 3 , the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform the same operations as those generally performed for the video encoder 200 ( Figure 16 ) is a decoding process that is the inverse of the encoding process described.

[1095] The entropy decoding unit 301 may retrieve an encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 may decode the entropy-encoded video data, and from the entropy-decoded video data, the motion compensation unit 302 may determine motion information, including motion vectors, motion vector precision, reference picture list indexes, and other motion information. The motion compensation unit 302 may determine this information, for example, by implementing AMVP and Merge modes.

[1096] The motion compensation unit 302 may generate motion compensated blocks, possibly performing interpolation based on an interpolation filter. An identifier of an interpolation filter to be used with sub-pixel precision may be included in the syntax element.

[1097] Motion compensation unit 302 may calculate interpolated values for sub-integer pixels of a reference block using interpolation filters as used during encoding of the video block by video encoder 20. Motion compensation unit 302 may determine the interpolation filters used by video encoder 200 based on received syntax information and use the interpolation filters to produce a prediction block.

[1098] The motion compensation unit 302 may use some syntax information to determine the sizes of blocks used to encode the frame(s) and / or slice(s) of the coded video sequence, partitioning information describing how each macroblock of the pictures of the coded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the coded video sequence.

[1099] The intra prediction unit 303 can form a prediction block from spatially adjacent blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 303 inversely quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.

[1100] The reconstruction unit 306 may add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If necessary, a deblocking filter may also be applied to the decoded block to remove blocking artifacts. The decoded video block is then stored in the buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction and also produces decoded video for presentation on a display device.

[1101] Some embodiments may be described using the following clause-based format.The first set of clauses illustrates example embodiments of the techniques discussed in the previous sections.

[1102] 1. A method of video processing, comprising: performing a conversion between a current video block of visual media data and a bitstream representation of the visual media data, wherein, during the conversion, use of a geometric partitioning mode is selectively enabled or disabled based at least in part on a determination that one or more dimensions of the current video block and / or a mathematical function of one or more dimensions of the current video block meet at least one threshold condition.

[1103] 2. The method according to clause 1, wherein the geometric segmentation pattern includes at least one of the following: triangle prediction pattern (TPM), geometric Merge pattern (GEO), and / or wedge prediction pattern.

[1104] 3. The method according to any one or more of clauses 1-2, wherein the geometric segmentation pattern includes dividing a video block into two or more sub-regions, wherein at least one sub-region does not include QT, BT, and / or segmentation.

[1105] 4. The method according to any one or more of clauses 1-3, wherein one or more dimensions of the current video block include the block width, block height, and / or aspect ratio of the current video block.

[1106] 5. The method according to any one or more of clauses 1-4, wherein achieving at least one threshold condition includes one or more dimensions of the current video block or a mathematical function thereof being greater than and / or less than a corresponding threshold.

[1107] 6. The method according to clause 5, wherein the block width is represented as W, the block height is represented as H, the thresholds are represented as T1, T2, T3, T4, and wherein if W >= T1 and / or H >= T2 and / or W*H < T3 and / or W*H > T4, then the geometric segmentation pattern is enabled.

[1108] 7. The method according to clause 5, wherein the block width is represented as W, the block height is represented as H, the thresholds are represented as T1, T2, T3, T4, and wherein if W≥T1 and / or H≥T2 and / or W*H≤T3 and / or W*H≥T4, then the geometric segmentation pattern is enabled.

[1109] 8. The method according to clause 5, wherein the block width is represented as W, the block height is represented as H, the thresholds are represented as T1, T2, T3, T4, and wherein if W*H < T1 || (W*H <= T2 && W / H <= T3 && H / W <= T4), then the geometric segmentation pattern is enabled.

[1110] 9. The method according to clause 5, wherein the block width is represented as W, the block height is represented as H, the thresholds are represented as T1, T2, T3, T4, and wherein if W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3), then the geometric segmentation pattern is enabled.

[1111] 10. The method according to clause 5, wherein the block width is represented as W, the block height is represented as H, the thresholds are represented as T1, T2, T3, T4, and wherein if W*H <= T1 && W / H <= T2 && H / W <= T3, then the geometric segmentation pattern is enabled.

[1112] 11. The method according to Clause 5, wherein the block width is represented as W, the block height is represented as H, wherein the thresholds are represented as Tx, Ty, and wherein if W≥Tx and H≥Ty, the geometric segmentation mode is enabled.

[1113] 12. The method according to Clause 5, wherein the block width is represented as W, the block height is represented as H, wherein the thresholds are represented as N, M, and wherein if W > N and / or H > M, the geometric segmentation mode is disabled.

[1114] 13. The method according to Clause 5, wherein the block width is represented as W, the block height is represented as H, wherein the thresholds are represented as Ti (i = 1…17), and wherein if one or more of the following specified threshold conditions are met, the geometric segmentation mode is disabled:

[1115] W < T1 and / or W > T2 and / or W = T3

[1116] H < T4 and / or H > T5 and / or H = T6

[1117] W * H < T7 and / or W * H > T8 and / or W * H = T8

[1118] W / H > T9 and / or W / H > T10 and / or W / H = T11

[1119] H / W > T12 and / or H / W > T13 and / or H / W = T14

[1120] Abs(logW – logH) > T15 and / or Abs(logW – logH) < T16 and / or Abs(logW – logH) = T17.

[1121] 14. The method according to Clause 5, wherein the block width is represented as W, the block height is represented as H, wherein the thresholds are represented as Ti (i = 1…17), and wherein if one or more of the following specified threshold conditions are met, the geometric segmentation mode is enabled:

[1122] W < T1 and / or W > T2 and / or W = T3

[1123] H < T4 and / or H > T5 and / or H = T6

[1124] W * H < T7 and / or W * H > T8 and / or W * H = T8

[1125] W / H > T9 and / or W / H > T10 and / or W / H = T11

[1126] H / W > T12 and / or H / W > T13 and / or H / W = T14

[1127] Abs(logW–logH) > T15 and / or Abs(logW–logH) < T16 and / or Abs(logW–logH) = T17.

[1128] 15. The method of any one or more of clauses 5 - 14, wherein the current video block is a luminance block.

[1129] 16. The method of any one or more of clauses 5 - 14, wherein the current video block is a chrominance block.

[1130] 17. The method according to any one or more of clauses 5 - 14, wherein the current video block includes a luminance component and a chrominance component, and wherein after determining to disable the geometric segmentation mode for the luminance component according to at least one threshold condition, the geometric segmentation mode is also disabled for the chrominance component.

[1131] 18. The method according to any one or more of clauses 5 - 14, wherein the current video block includes a luminance component and a chrominance component, and wherein after determining to enable the geometric segmentation mode for the luminance component according to at least one threshold condition, the geometric segmentation mode is also enabled for the chrominance component.

[1132] 19. The method according to any one or more of clauses 5 - 14, wherein the current video block includes a luminance component and a chrominance component, and wherein at least one threshold condition is met for the luminance component but not for the chrominance component.

[1133] 20. A method for video processing, comprising: performing a conversion between a current video block of visual media data and a bitstream representation of the visual media data, wherein during the conversion, multiple sets of geometric segmentation modes are allowed to be used for the current video block, and wherein multiple sets of geometric segmentation modes are selected at least partially based on the size of the current video block.

[1134] 21. The method of clause 20, wherein an indication of allowing multiple sets of geometric segmentation modes is included in the bitstream representation.

[1135] 22. The method of clause 20, wherein at least two sets of the multiple sets of geometric segmentation modes include different numbers of geometric segmentation modes.

[1136] 23. The method of clause 20, wherein at least two sets of the multiple sets of geometric segmentation modes include the same number of geometric segmentation modes, and wherein at least one geometric segmentation mode included in one set is excluded from the other set.

[1137] 24. The method of clause 20, wherein an indication of the total count of the selected multiple sets of geometric segmentation modes is included in the bitstream representation.

[1138] 25. The method of clause 25, wherein a total count of the plurality of sets of selected geometric partitioning patterns is less than a threshold value.

[1139] 26. The method of any one or more of clauses 20-26, wherein the geometric partitioning modes associated with the plurality of sets of allowed geometric partitioning modes are identified by a geometric partitioning mode index, and wherein the geometric partitioning mode index comprises a corresponding partitioning angle index and / or a corresponding partitioning distance index of a wedge associated with the current video block.

[1140] 27. The method of clause 26, wherein the mapping of the geometric partitioning pattern index to the first geometric partitioning pattern is based on determining which of a plurality of sets of geometric partitioning patterns is associated with the first geometric partitioning pattern.

[1141] 28. A method for video processing, comprising:

[1142] A conversion between video blocks of visual media data and a bitstream representation of the visual media data is performed, wherein during the conversion, a first counted geometric partitioning pattern is used to calculate a partitioning angle index and / or a partitioning distance index for the first video block, a second counted geometric partitioning pattern is used in the bitstream representation of the second video block, and a third counted geometric partitioning pattern is signaled in the bitstream representation of the third video block, wherein the first count and / or the second count and / or the third count are based on at least corresponding dimensions of the first video block, the second video block, and the third video block.

[1143] 29. The method of clause 28, wherein the second count and / or the third count is different from the first count.

[1144] 30. The method of clause 28, wherein the second count is equal to the third count.

[1145] 31. The method of clause 28, wherein the second count and / or the third count is less than the first count.

[1146] 32. The method of clause 28, wherein the first video block, the second video block, and the third video block are associated with first, second, and third categories of video blocks.

[1147] 33. The method of clause 32, wherein the first category, the second category, and the third category video blocks are different, and wherein the first category, the second category, and the third category video blocks are associated with different dimensions.

[1148] 34. The method of clause 28, wherein the second count and / or the third count is less than the first count when the dimension of the first block satisfies one or more threshold conditions.

[1149] 35. A method of video processing, comprising: performing a conversion between a current video block of visual media data and a bitstream representation of the visual media data, wherein during the conversion, a first geometric partitioning mode index value is signaled in the bitstream representation of the current video block, and a second geometric partitioning mode index value is used to calculate a partitioning angle index and / or a partitioning distance index of the current video block, and wherein the first geometric partitioning mode index value is different from the second geometric partitioning mode index value.

[1150] 36. The method of clause 35, wherein at least one mapping table defines a relationship between a first geometric partitioning mode index value and a second geometric partitioning mode index value.

[1151] 37. The method of clause 36, wherein the at least one mapping table comprises a first mapping table and a second mapping table, and wherein the first mapping table is associated with video blocks of a first type and the second mapping table is associated with video blocks of a second type.

[1152] 38. A method of video processing, comprising: performing a conversion between a current video block of visual media data and a bitstream representation of the visual media data, wherein, during the conversion, a geometric partitioning mode is enabled for the current video block, and wherein parameters of the geometric partitioning mode are calculated using a reduced set of angles and / or a reduced set of distances.

[1153] 39. The method of clause 38, wherein the count of the reduced set of corners is less than a threshold, and wherein the threshold is 24.

[1154] 40. The method of clause 38, wherein the count of the reduced set of distances is less than a threshold, and wherein the threshold is 82.

[1155] 41. The method of clause 38, wherein a lookup table is used in calculating the reduced set of distances, and wherein a size of the lookup table is based at least in part on the reduced set of angles.

[1156] 42. A video decoding apparatus comprising a processor configured to implement the method of one or more of clauses 1 to 41.

[1157] 43. A video encoding apparatus comprising a processor configured to implement the method of one or more of clauses 1 to 41.

[1158] 44. A computer program product having computer code stored thereon which, when executed by a processor, causes the processor to carry out the method of any one of clauses 1 to 41.

[1159] 45. The methods, devices, or systems described in this document.

[1160] The second set of clauses describes certain features and aspects of the technology disclosed in the previous section.

[1161] 1. A method for video processing (e.g., method 1810 as shown Figure 18A ), including: for the conversion between the current video block of the video and the bitstream representation of the video, determining 1812 the applicability of the geometric partitioning mode based on a rule; and performing 1814 the conversion based on this determination, and wherein the rule depends on the block width, block height, and / or aspect ratio of the current video block.

[1162] 2. The method according to clause 1, wherein the geometric partitioning mode includes at least one of the following: triangle prediction mode (TPM), geometric Merge mode (GEO), and / or wedge prediction mode.

[1163] 3. The method according to any one or more of clauses 1-2, wherein the geometric partitioning mode includes dividing the video block into two or more sub-regions, where at least one sub-region does not include QT, BT, and / or splitting.

[1164] 4. The method according to any one or more of clauses 1-3, wherein the rule stipulates that for the current video block with width (W) and height (H), the geometric partitioning mode is allowed when W≥T1 and H≥T2 and W≤T3 and H≤T4 and W / H≤T5 and H / W≤T6.

[1165] 5. The method according to any one or more of clauses 1-3, wherein the rule stipulates that for the current video block with width (W) and height (H), the geometric partitioning mode is allowed when W≥T1 and H≥T2 and W≤T3 and H≤T4.

[1166] 6. The method according to any one or more of clauses 1-3, wherein the rule stipulates that for the current video block with width (W) and height (H), the geometric partitioning mode is not allowed when W<T1 or H<T2 or W>T3 or H>T4 or W / H>T5 or H / W>T6.

[1167] 7. The method according to any one of clauses 4-6, wherein T1 = T2 = 8, T3 = T4 = 32 or 64, T5 = 2 or 4, or T6 = 4.

[1168] 8. A method for video processing (e.g., Figure 18B method 1820 as shown), including: performing 1822 the conversion between the video unit of the video and the bitstream representation of the video, wherein the bitstream representation conforms to format rules, and wherein the format rules stipulate whether to include one or more syntax elements, and the one or more syntax elements indicate the number of geometric partitioning modes allowed to represent the video unit in the bitstream representation.

[1169] 9. The method of clause 8, wherein the video unit corresponds to a sequence, a group of pictures, a picture, a sub-picture, a slice, a virtual pipe data unit (VPDU), a codec tree unit (CTU), a CTU row, a codec unit, a prediction unit, or a transform unit.

[1170] 10. The method of clause 8 or 9, wherein the one or more syntax elements are signaled in a sequence parameter set (SPS), a video parameter set (VPS), an adaptation parameter set (APS), a picture parameter set (PPS), a picture header, a slice header, a picture, a sub-picture, a slice, or a slice.

[1171] 11. The method of any of clauses 8-10, wherein the format rule provides for conditional signaling of one or more syntax elements based on whether geometric partitioning mode is enabled for the video unit, whether the current picture type is a non-intra picture or a B picture, and / or whether the current slice type is a B slice.

[1172] 12. The method of any of clauses 8-10, wherein a syntax element of the one or more syntax elements indicates whether the number of geometric partitioning modes of the video unit is equal to X, where X is a positive integer.

[1173] 13. The method of any of clauses 8-10, wherein a syntax element of the one or more syntax elements indicates whether X geometric partitioning modes are allowed for all blocks in the video unit, where X is a positive integer.

[1174] 14. The method of any of clauses 8-10, wherein a syntax element of the one or more syntax elements indicates whether X geometric partitioning modes are allowed for certain blocks in the video unit, whereby X is a positive integer and the certain blocks satisfy a condition related to an aspect ratio of the certain blocks.

[1175] 15. The method of any of clauses 8-10, wherein a plurality of the one or more syntax elements indicate allowed geometric partitioning patterns for each category of blocks in the video unit, and wherein the blocks are classified into categories based on dimensions of the blocks.

[1176] 16. The method of clause 16, wherein the plurality of syntax elements comprises a first syntax element and a second syntax element, the first syntax element indicating whether some blocks allow X geometric partitioning modes, the second syntax element indicating whether other blocks allow Y geometric partitioning modes.

[1177] 17. The method of clause 16, wherein some blocks satisfy a condition of H / W ≤ T and other blocks satisfy another condition of H / W > T, whereby W and H represent the width and height of the block, respectively, and T is a positive integer.

[1178] 18. The method of any one of clauses 12-14 or 16, wherein X or Y is 16, 30 or 32.

[1179] 19. The method of any of clauses 8-10, wherein how the geometric partitioning mode index of a block is signaled depends on one or more syntax elements and / or block dimensions.

[1180] 20. The method of clause 19, wherein binarization and / or entropy coding of a geometric partitioning mode index of a block depends on one or more syntax elements and / or block dimensions.

[1181] 21. The method of clause 20, wherein the value of the input parameter of the geometric partitioning mode index is equal to X if the number of geometric partitioning modes for the block derived from the one or more syntax elements is equal to X.

[1182] 22. The method of clause 20, wherein the value of the input parameter of the geometric partitioning mode index is equal to X if the number of geometric partitioning modes of the block derived from the one or more syntax elements is equal to X and the block dimensions meet certain conditions.

[1183] 23. The method of any of clauses 8-10, wherein the maximum value of the geometric partitioning mode index depends on one or more syntax elements and / or block dimensions.

[1184] 24. The method of clause 23, wherein a bitstream constraint is added to constrain the maximum value to be less than the number of geometric partitioning patterns.

[1185] 25. The method of clause 23, wherein a bitstream constraint is added to constrain the maximum value to be less than the number of geometric partitioning modes allowed for blocks having block dimensions that meet certain conditions.

[1186] 26. The method of any of clauses 8-10, wherein one or more constraint flags are signaled at the video processing unit level to specify whether to constrain usage of X geometric partitioning modes for the video unit, where X is a positive integer.

[1187] 27. The method of clause 26, wherein a constraint flag is signaled to constrain whether the X geometric partitioning modes are used for all blocks in the sequence.

[1188] 28. The method of clause 26, wherein how the X geometric partitioning patterns are constrained depends on the block dimension.

[1189] 29. The method of any of clauses 8-10, wherein which geometric partitioning modes are allowed for blocks in a video unit depends on one or more syntax elements.

[1190] 30. The method of clause 29, wherein whether a subset or the full set of geometric partitioning modes is allowed for a block, whether a subset or the full set of geometric partitioning angles is allowed for a block, and / or whether a subset or the full set of geometric partitioning displacements is allowed for a block depends on one or more syntax elements.

[1191] 31. A method for video processing, comprising: performing conversion between a video unit comprising one or more video blocks of a video and a bitstream representation of the video according to rules, encoding and decoding the one or more video blocks using one or more geometric partitioning modes, and wherein the rules specify that the one or more geometric partitioning modes are from two sets of geometric partitioning modes allowed for processing the one or more video blocks.

[1192] 32. The method of clause 31, wherein the two sets of geometric partitioning patterns include a first set and a second set, and at least one geometric partitioning pattern in the first set is not included in the second set.

[1193] 33. The method of clause 31, wherein the two sets of geometric partitioning patterns include the same number of geometric partitioning patterns.

[1194] 34. The method of clause 31, wherein the two sets of geometric partitioning patterns each include a different number of geometric partitioning patterns.

[1195] 35. The method of clause 1, wherein the video block from which set uses the geometric partitioning pattern, angle, and / or distance depends on the dimensions of the video block.

[1196] 36. The method of clause 31, wherein how a geometric partitioning mode index of a video block is signaled depends on the dimensions of the video block.

[1197] 37. A method of video processing, comprising: performing conversion between a video unit comprising one or more video blocks of a video and a bitstream representation of the video according to rules, wherein the one or more video blocks are classified into a plurality of block categories based on decoded information, and wherein the rules specify that a plurality of sets of geometric partitioning modes are allowed for processing the one or more video blocks.

[1198] 38. The method of clause 37, wherein the rule further specifies which set to use for a video block depends on the block category and / or one or more syntax elements related to a geometric partitioning mode.

[1199] 39. The method of clause 37, wherein the rule further specifies that the number of geometric partitioning modes allowed for a video block depends on the block category and / or one or more syntax elements related to the geometric partitioning mode.

[1200] 40. The method of clause 37, wherein the number of geometric partitioning modes allowed for a video block is less than or equal to the number of Sets representing the corresponding set of geometric partitioning modes for the video block. i Length (L i ).

[1201] 41. The method of clause 37, wherein all or part of the geometric partitioning modes allowed for the video block are from a Set representing a corresponding set of geometric partitioning modes for the video block. i .

[1202] 42. The method of clause 37, wherein the allowed geometric partitioning modes of the video block include a Set representing a corresponding set of geometric partitioning modes for the video block. i At least N patterns in Set i An integer of the length of .

[1203] 43. The method of clause 37, wherein the allowed geometric partitioning modes for a video block include a Set representing a corresponding set of geometric partitioning modes for the video block. i and some other predefined geometric segmentation patterns.

[1204] 44. A method for video processing, comprising: performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule stipulates that a mapping between a geometric partitioning mode index of the current video block and an angle index and / or a distance index used to determine the partitioning of the current video block depends on decoded information of the current video block.

[1205] 45. The method of clause 44, wherein the decoded information comprises dimensions of the current video block and / or a category of the current video block.

[1206] 46. The method of clause 44 or 45, wherein the rule specifies that the mapping depends on whether the block dimensions meet a certain condition.

[1207] 47. The method of clause 44 or 45, wherein the rule specifies corresponding to a plurality of consecutive geometric partitioning pattern indices (M j )'s angular index (A j ) are unordered such that the angle indices are not consecutive, not in descending order, and / or not in ascending order.

[1208] 48. The method of clause 44 or 45, wherein the rule specifies corresponding to a plurality of consecutive geometric partitioning pattern indices (M j )'s angular index (A j ) are ordered so that the angle indices are consecutive, in descending order and / or in ascending order.

[1209] 49. The method of clause 44 or 45, wherein the rule specifies corresponding to a plurality of consecutive geometric partitioning pattern indices (M j )’s distance index (D k ) is unordered so that the distance index (D k ) are not consecutive, not in descending order, and / or not in ascending order.

[1210] 50. The method of clause 44 or 45, wherein the rule specifies corresponding to a plurality of consecutive geometric partitioning pattern indices (M j )’s distance index (D k ) is ordered so that the distance index (D k ) are sequential, descending and / or ascending.

[1211] 51. The method of clause 44 or 45, wherein the rule provides that the geometric partitioning mode indices corresponding to multiple consecutive codecs or signaling geometric partitioning mode indices are unordered, such that the geometric partitioning mode indices are not consecutive, not in descending order and / or not in ascending order.

[1212] 52. The method of clause 44 or 45, wherein the rule provides that the geometric partitioning mode indices corresponding to multiple consecutive codecs or signaling geometric partitioning mode indices are ordered such that the geometric partitioning mode indices are consecutive, in descending order and / or in ascending order.

[1213] 53. A method for video processing, comprising: performing conversion between a current video block of a video unit of a video and a bitstream representation of the video according to a rule, wherein the rule stipulates that a first number indicating the number of geometric partitioning modes, geometric partitioning angles and / or geometric partitioning distances allowed for the current video block is different from a second number indicating the number of geometric partitioning modes, geometric partitioning angles and / or geometric partitioning distances available for the video unit.

[1214] 54. The method of clause 53, wherein the rule further specifies that the maximum geometric partitioning mode index signaled for the current video block is less than a second number of the total number of geometric partitioning modes allowed for the sequence corresponding to the video.

[1215] 55. The method of clause 53, wherein the rule further specifies that a first number indicating a number of geometric partition angles allowed for the current video block is less than a second number corresponding to a total number of geometric partition angles allowed for the sequence of the video.

[1216] 56. The method of clause 53, wherein the first number is dependent on a dimension of the current video block.

[1217] 57. A method for video processing, comprising: performing a conversion between a current video block of a video and a bitstream representation of the video, wherein a geometric partitioning mode index of the current video block is encoded and decoded in the bitstream representation, so that binarization of the geometric partitioning mode index is performed according to a rule, wherein the rule stipulates that when a dimension of the current video block meets a specific condition, the maximum value of the geometric partitioning mode index during binarization is equal to X, where X is a positive integer.

[1218] 58. The method of clause 57, wherein X is 16, 30, or 32.

[1219] 59. The method of clause 57, wherein the specific condition is H / W ≤ T or H / W > T, whereby H and W represent the height and width of the current video block, respectively, and T is a positive integer.

[1220] 60. The method of clause 59, wherein T is 1, 2, 4 or 8.

[1221] 61. A method as described in any one of clauses 1 to 60, wherein the index of the geometric partitioning pattern is encoded using truncated Rice, or truncated binary, or truncated unary, or fixed length, or k-order Exp-Golomb, or finite k-order Exp-Golomb binarization.

[1222] 62. A method of video processing (e.g., Figure 18C The method 1830 shown comprises: for a conversion between a current video block of a video and a bitstream representation of the video, determining 1832 a geometric partitioning distance based on a table including geometric partitioning distance values corresponding to geometric partitioning indices; and performing the conversion based on the determination.

[1223] 63. The method of clause 62, wherein the geometric partitioning distance is determined based on a subset of the table.

[1224] 64. The method of clause 62, wherein the table indicates a value of 4 as the geometric partition distance corresponding to a geometric partition angle index equal to 3 or 21.

[1225] 65. The method of clause 62, wherein the table indicates a value of -4 as a geometric partition distance corresponding to a geometric partition angle index equal to 9 and / or 15.

[1226] 66. A method of video processing, comprising: performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule specifies that the conversion allows the use of a codec tool for the current video block encoded and decoded using a geometric partitioning mode, and wherein the bitstream representation includes indications and information of the codec tool and the geometric partitioning mode.

[1227] 67. The method of clause 66, wherein the encoding and decoding tool is a sub-block transform (SBT) tool, which includes applying a transform process or an inverse transform process to a sub-portion of the prediction residual block.

[1228] 68. The method of clause 66, wherein the coding tool is a combined inter- and intra-frame prediction (CIIP) tool comprising combining an intra-frame prediction signal and an inter-frame prediction signal using a weighted matrix.

[1229] 69. The method of clause 66, wherein the codec tool is a Merge Mode with Motion Vector Difference (MMVD) tool that includes a motion vector representation that includes a distance table that specifies a distance between two motion candidates.

[1230] 70. The method of clause 66, wherein the parameters of the geometric partitioning mode are based on the use of a codec tool.

[1231] 71. A method of video processing, comprising: performing a conversion between a current video block of a video and a bitstream representation of the video according to a rule, wherein the rule specifies whether or how a filtering process is applied to the current video block depends on the use of a geometric partitioning mode when encoding and decoding the current video block.

[1232] 72. The method of clause 71, wherein the rule further specifies that a value of a boundary filter strength during the deblocking process depends on whether the current video block is encoded using a geometric partitioning mode.

[1233] 73. The method of clause 71, wherein the rule further specifies that the value of the boundary filter strength during the deblocking process is equal to T when the edge of the current video block is a transform block edge and the sample has a flag related to the geometric partitioning mode and is set to 1 in the current video block.

[1234] 74. The method of clause 71, wherein the rule further specifies that the value of the deblocking margin within the current video block encoded using the geometric partitioning mode is different from 2.

[1235] 75. The method of clause 71, wherein the rule further specifies that the value of the deblocking margin within the current video block encoded using the geometric partitioning mode is 2.

[1236] 76. A method as described in any of clauses 1 to 75, wherein the geometric partitioning pattern is selected from a set of geometric partitioning patterns, and wherein the set of geometric partitioning patterns includes one or more geometric partitioning patterns to divide the block into two or more partitions, at least one of the two or more partitions being non-square and non-rectangular.

[1237] 77. The method of any of clauses 1 to 76, wherein converting comprises encoding the video into a bitstream representation.

[1238] 78. The method of any of clauses 1 to 76, wherein converting comprises decoding the video from a bitstream representation.

[1239] 79. A video processing apparatus comprising a processor configured to implement the method of any one or more of clauses 1 to 78.

[1240] 80. A computer-readable medium storing program instructions which, when executed, cause a processor to implement the method of any one or more of clauses 1 to 78.

[1241] 81. A computer readable medium storing a coded or bitstream representation generated according to any of the above methods.

[1242] 82. A video processing apparatus for storing a bitstream representation, wherein the video processing apparatus is configured to implement the method of any one or more of clauses 1 to 78.

[1243] The disclosed and other solutions, examples, embodiments, modules, and functional operations described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or in a combination of one or more thereof. The disclosed and other embodiments may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium, for execution by a data processing apparatus or to control the operation of the data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a storage device, a combination of matter that implements a machine-readable propagated signal, or a combination of one or more thereof. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof. A propagated signal is an artificially generated signal, such as a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to a suitable receiver apparatus.

[1244] A computer program (also referred to as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple collaborating files (e.g., files that store one or more modules, subroutines, or code portions). A computer program may be deployed to execute on one computer or on multiple computers located in one location or distributed across multiple locations and interconnected by a communications network.

[1245] The processes and logic flows described herein can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[1246] By way of example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors of any type of digital computer. Typically, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, to receive data from or transfer data to the mass storage devices, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, special-purpose logic circuitry.

[1247] Although this patent document contains many details, these details should not be construed as limitations on the scope of any subject matter or of what is claimed, but rather as descriptions of features specific to particular embodiments of particular technologies. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments, alone or in any suitable subcombination. Furthermore, although features may be described above as functioning in certain combinations, and even initially claimed as such, one or more features from a claimed combination may in some cases be deleted from that combination, and a claimed combination may be directed to a subcombination or variant of a subcombination.

[1248] Similarly, while operations are described in a particular order in the drawings, this should not be understood as requiring that these operations be performed in the particular order or order shown, or that all illustrated operations be performed, in order to achieve the desired results. Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.

[1249] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A method for processing video data, comprising: performing a conversion between a current video block of a video and a bitstream of said video, The geometric partitioning mode index of the current video block is encoded and decoded in the bitstream, and binarization of the geometric partitioning mode index is performed according to a rule. The geometric partitioning mode index specifies the geometric partitioning shape of the geometric partitioning mode applied to the current video block. The rule specifies that the geometric partitioning mode index is encoded and decoded using fixed-length binary, and The method further includes: determining whether to enable the geometric partitioning mode for the current video block based at least on a first syntax element and a second syntax element, wherein the first syntax element indicates the application of a combined inter-picture Merge and intra-picture prediction mode, and the second syntax element indicates the application of a conventional Merge mode.

2. The method according to claim 1, wherein A partition angle variable and a partition distance variable are derived according to the value of the geometric partition mode index, and the partition angle variable and the partition distance variable are used in a weighted sample prediction process in the geometric partition mode of the current video block.

3. The method according to claim 2, wherein: In the geometric partitioning mode, first motion information and second motion information are determined, the weighted sample prediction process is performed to generate a final prediction of the current video block based on a weighted sum of prediction samples derived from the first motion information and the second motion information, and a weight value is derived based on the partition angle variable and the partition distance variable.

4. The method according to claim 2, wherein: The geometric partitioning mode applied to the current video block is selected from a set of geometric partitioning modes, wherein the geometric partitioning pattern is calculated using a partitioning angle set and a partitioning distance set for the partitioning angle set, and The number of division distances of the vertical division angles or the horizontal division angles in the division angle set is equal to 2.

5. The method according to claim 1, wherein When the geometric partitioning mode index for a video block is not present in the bitstream, the geometric partitioning mode index is inferred to be equal to 0.

6. The method according to claim 1, wherein If the first syntax element indicates application of the combined inter-picture Merge and intra-picture prediction mode, or if the second syntax element indicates application of the normal Merge mode, the geometric partitioning mode is disabled.

7. The method according to claim 3, wherein: The first motion information and the second motion information are determined as follows: Constructing a Merge candidate list having an L0 motion vector and an L1 motion vector; and Determine the first motion information and the second motion information based on the Merge candidate list, the parity of the first Merge index, and the parity of the second Merge index, The first motion information and the second motion information are unidirectional prediction motion information.

8. The method according to claim 1, wherein The converting includes encoding the video into the bitstream.

9. The method according to claim 1, wherein The converting includes decoding the video from the bitstream.

10. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein: The instructions, when executed by the processor, cause the processor to: performing a conversion between a current video block of a video and a bitstream of said video, The geometric partitioning mode index of the current video block is encoded and decoded in the bitstream, and binarization of the geometric partitioning mode index is performed according to a rule. The geometric partitioning mode index specifies the geometric partitioning shape of the geometric partitioning mode applied to the current video block. The rule specifies that the geometric partitioning mode index is encoded and decoded using fixed-length binary, and The processor is further configured to determine whether to enable the geometric partitioning mode for the current video block based at least on a first syntax element and a second syntax element, wherein the first syntax element indicates the application of a combined inter-picture Merge and intra-picture prediction mode, and the second syntax element indicates the application of a conventional Merge mode.

11. The device according to claim 10, wherein Derives a partition angle variable and a partition distance variable according to the value of the geometric partition mode index, wherein the partition angle variable and the partition distance variable are used in a weighted sample prediction process in the geometric partition mode of the current video block. wherein, in the geometric partitioning mode, first motion information and second motion information are determined, the weighted sample prediction process is performed to generate a final prediction of the current video block based on a weighted sum of prediction samples derived from the first motion information and the second motion information, and a weight value is derived based on the partition angle variable and the partition distance variable, The first motion information and the second motion information are determined as follows: Constructing a Merge candidate list having an L0 motion vector and an L1 motion vector; and Determine the first motion information and the second motion information based on the Merge candidate list, the parity of the first Merge index, and the parity of the second Merge index, wherein the first motion information and the second motion information are unidirectional prediction motion information; wherein the geometric partitioning mode applied to the current video block is selected from a set of geometric partitioning modes, wherein the geometric partitioning pattern is calculated using a partitioning angle set and a partitioning distance set for the partitioning angle set, and The number of division distances of the vertical division angles or the horizontal division angles in the division angle set is equal to 2.

12. The device according to claim 10, wherein When the geometric partitioning mode index for a video block is not present in the bitstream, the geometric partitioning mode index is inferred to be equal to 0.

13. The device according to claim 10, wherein If the first syntax element indicates application of the combined inter-picture Merge and intra-picture prediction mode, or if the second syntax element indicates application of the normal Merge mode, the geometric partitioning mode is disabled.

14. A non-transitory computer-readable storage medium storing instructions that cause a processor to: performing a conversion between a current video block of a video and a bitstream of said video, in, The geometric partitioning mode index of the current video block is encoded and decoded in the bitstream, and binarization of the geometric partitioning mode index is performed according to a rule, The geometric partitioning mode index specifies the geometric partitioning shape of the geometric partitioning mode applied to the current video block. The rule specifies that the geometric partitioning mode index is encoded and decoded using fixed-length binary, and The processor is further configured to determine whether to enable the geometric partitioning mode for the current video block based at least on a first syntax element and a second syntax element, wherein the first syntax element indicates the application of a combined inter-picture Merge and intra-picture prediction mode, and the second syntax element indicates the application of a conventional Merge mode.

15. The non-transitory computer-readable storage medium of claim 14, wherein: Derives a partition angle variable and a partition distance variable according to the value of the geometric partition mode index, wherein the partition angle variable and the partition distance variable are used in a weighted sample prediction process in the geometric partition mode of the current video block. wherein, in the geometric partitioning mode, first motion information and second motion information are determined, the weighted sample prediction process is performed to generate a final prediction of the current video block based on a weighted sum of prediction samples derived from the first motion information and the second motion information, and a weight value is derived based on the partition angle variable and the partition distance variable, The first motion information and the second motion information are determined as follows: Constructing a Merge candidate list having an L0 motion vector and an L1 motion vector; and Determine the first motion information and the second motion information based on the Merge candidate list, the parity of the first Merge index, and the parity of the second Merge index, wherein the first motion information and the second motion information are unidirectional prediction motion information; wherein the geometric partitioning mode applied to the current video block is selected from a set of geometric partitioning modes, wherein the geometric partitioning pattern is calculated using a partitioning angle set and a partitioning distance set for the partitioning angle set, and The number of division distances of the vertical division angles or the horizontal division angles in the division angle set is equal to 2.

16. The non-transitory computer-readable storage medium of claim 14, wherein: When the geometric partitioning mode index of a video block is not present in the bitstream, the geometric partitioning mode index is inferred to be equal to 0, If the first syntax element indicates the application of the combined inter-picture Merge and intra-picture prediction mode, or if the second syntax element indicates the application of the normal Merge mode, the geometric partitioning mode is disabled.

17. A method for storing a video bitstream, comprising: generating a bitstream for a current video block of the video, and storing the bitstream in a non-transitory computer-readable storage medium, The geometric partitioning mode index of the current video block is encoded and decoded in the bitstream, and binarization of the geometric partitioning mode index is performed according to a rule. The geometric partitioning mode index specifies the geometric partitioning shape of the geometric partitioning mode applied to the current video block. The rule specifies that the geometric partitioning mode index is encoded and decoded using fixed-length binary, and The method further includes: determining whether to enable the geometric partitioning mode for the current video block based at least on a first syntax element and a second syntax element, wherein the first syntax element indicates the application of a combined inter-picture Merge and intra-picture prediction mode, and the second syntax element indicates the application of a conventional Merge mode.

18. The method according to claim 17, wherein A partition angle variable and a partition distance variable are derived according to the value of the geometric partition mode index, and the partition angle variable and the partition distance variable are used in a weighted sample prediction process in the geometric partition mode of the current video block.

19. The method according to claim 18, wherein In the geometric partitioning mode, first motion information and second motion information are determined, the weighted sample prediction process is performed to generate a final prediction of the current video block based on a weighted sum of prediction samples derived from the first motion information and the second motion information, and a weight value is derived based on the partition angle variable and the partition distance variable.

20. The method according to claim 18, wherein The geometric partitioning mode applied to the current video block is selected from a set of geometric partitioning modes, wherein the geometric partitioning pattern is calculated using a partitioning angle set and a partitioning distance set for the partitioning angle set, and The number of division distances of the vertical division angles or the horizontal division angles in the division angle set is equal to 2.

21. The method according to claim 17, wherein When the geometric partitioning mode index for a video block is not present in the bitstream, the geometric partitioning mode index is inferred to be equal to 0.

22. The method according to claim 17, wherein If the first syntax element indicates application of the combined inter-picture Merge and intra-picture prediction mode, or if the second syntax element indicates application of the normal Merge mode, the geometric partitioning mode is disabled.

23. The method according to claim 19, wherein The first motion information and the second motion information are determined as follows: Constructing a Merge candidate list having an L0 motion vector and an L1 motion vector; and Determine the first motion information and the second motion information based on the Merge candidate list, the parity of the first Merge index, and the parity of the second Merge index, The first motion information and the second motion information are unidirectional prediction motion information.

24. A video processing apparatus comprising a processor configured to implement the method of any one of claims 2 to 4 and 7 to 9.

25. A computer-readable medium storing program instructions, which, when the program instructions are executed, causes a processor to implement the method according to any one of claims 2 to 9.

Citation Information

Patent Citations

  • Method for encoding and decoding image using adaptive deblocking filtering, and apparatus therefor

    US20180176601A1