Method and apparatus for decoding and encoding video pictures
The method addresses redundancy in video encoding/decoding by selectively parsing indicators for MMVD and triangle PU modes, reducing coding resource usage and bit overhead, thus improving efficiency in video picture encoding and decoding.
Patent Information
- Application Number
- JP2024145112
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-12-21
- Filing Date
- 2024-08-27
- Publication Date
- 2025-11-12
- Estimated Expiration
- 2039-12-06
AI Technical Summary
Existing video encoding/decoding methods face redundancy issues due to the inability to support motion vector difference (MMVD) and triangle prediction unit (triangle PU) modes under the same conditions, leading to inefficiencies in coding resources and bit overhead.
A method and apparatus for decoding and encoding video pictures that selectively parse and encode indicators for MMVD and triangle PU modes based on specific conditions, allowing for efficient use of these modes without redundancy, by determining the need for parsing indicators only when the other mode is not used, thereby reducing bitstream overhead.
This approach reduces coding resource usage and bit overhead by avoiding redundancy in encoding/decoding processes, enhancing the efficiency of video picture encoding and decoding.
Smart Images

Figure 0007769063000006 
Figure 0007769063000007 
Figure 0007769063000008
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to Chinese Patent Application No. 201811497390.2, entitled "VIDEO PICTURE PREDICTION METHOD AND APPARATUS," filed with the China Patent Office on December 7, 2018, which is incorporated herein by reference in its entirety. This application claims priority to Chinese Patent Application No. 201811574426.2, entitled "VIDEO PICTURE DECODING AND ENCODING METHOD AND APPARATUS," filed with the China Patent Office on December 21, 2018, which is incorporated herein by reference in its entirety.
[0002] The present application relates to the field of picture coding technology, and in particular to a video picture decoding method, a video picture encoding method, a video picture decoding device, and a video picture encoding device. [Background technology]
[0003] With the development of information technology, video services such as high-definition television, web conferencing, IPTV, and 3D television are rapidly developing. Due to its advantages of intuitiveness and high efficiency, video signals have become the main information acquisition method in people's daily lives. Because video signals contain a large amount of data, they occupy a large amount of transmission bandwidth and storage space. To transmit and store video signals effectively, compression coding must be performed on the video signals. Video compression technology is gradually becoming an indispensable key technology in the field of video applications.
[0004] The basic principle of video coding compression is to maximize redundancy reduction by utilizing correlations between spatial domain, temporal domain, and codeword. Currently, the prevalent method is to implement video coding compression by using a picture block-based hybrid video coding framework and by performing steps such as prediction (including intra-prediction and inter-prediction), transform, quantization, and entropy coding.
[0005] In various video encoding / decoding methods, motion estimation / motion compensation in inter prediction is a key technique that affects the encoding / decoding performance. In existing inter prediction, merge mode using motion vector differential is used. mode with The new inter prediction mode adds motion vector difference (MMVD) and triangle prediction unit (triangle PU) modes. However, existing inter prediction implementations do not support MMVD under the same conditions. indicator and triangle PU indicator Both modes must be coded, resulting in redundancy in making both modes compatible. Summary of the Invention [Means for solving the problem]
[0006] The present application provides a method for decoding and encoding video pictures and an apparatus for decoding and encoding video pictures, which solves to some extent the conventional problem of redundancy that occurs when balancing MMVD and triangle PU modes.
[0007] According to a first aspect, an embodiment of the present application provides a video picture decoding method, the method comprising: parsing a first indicator from the bitstream; when the first indicator indicates that skip mode is used for inter prediction of the currently to-be-processed picture block (e.g., skip mode is allowed), parsing a second indicator from the bitstream; and when the second indicator indicates that merge mode with motion vector differential (MMVD) is not used for inter prediction of the currently to-be-processed picture block (e.g., in skip mode, MMVD is not used for inter prediction of the currently to-be-processed picture block), parsing a third indicator from the bitstream. and when the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed (e.g., in skip mode, a triangular prediction unit mode is used for inter prediction of the current picture block to be processed), or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed (e.g., in skip mode, a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed).
[0008] Please note that the third indicator is not sps_triangle_enabled_flag, but inter prediction is performed on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream, and the indicator information includes one or more of the first indicator, the second indicator, and the third indicator.
[0009] It should be understood that the present application does not exclude cases where another indicator may be further analyzed before the third indicator is analyzed, for example, the third indicator may be analyzed after the other indicator is analyzed to be false.
[0010] For example, the first indicator may also be called cu_skip_flag[x0][y0], and the first indicator may use one of the aforementioned names that are standard text or symbols. The second indicator may also be called skip_mmvd_flag[x0][y0], mmvd_flag[x0][y0], or merge_mmvd_flag[x0][y0], and the second indicator may use one of the aforementioned names that are standard text or symbols. The third indicator may also be called skip_triangle_flag[x0][y0], triangle_flag[x0][y0], or merge_triangle_flag[x0][y0], and the third indicator may use one of the aforementioned names that are standard text or symbols.
[0011] For example, the first value may be 1 (or true), and the second value may be 0 (or false). It should be understood that the first value and the second value are interchangeable. For example, the first value may be 0 (or false), and the second value may be 1 (or true). In this embodiment of the present application, when it is determined that the skip mode is to be used, the triangular prediction unit (triangle PU) indicator is decoded only when it is determined through decoding that the MMVD is not to be used. In other words, when it is determined through decoding that the MMVD is to be used, the third indicator does not need to be parsed from the bitstream (in other words, the triangular prediction unit indicator does not need to be coded), and inter prediction can be directly performed on the current picture block to be processed by using the MMVD. This can avoid redundancy to some extent when combining the MMVD and the triangle PU mode, reduce the amount of coding resources used, and reduce the bit overhead of the bitstream.
[0012] In one possible design, the step of performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream includes: When the third indicator is a first value, allowing inter prediction to be performed on the current picture block to be processed by using a triangular prediction unit mode; or When the third indicator is a second value, the method includes allowing inter prediction to be performed on the current picture block to be processed by using a skip mode.
[0013] In one example, when it is determined that the triangle PU mode is not allowed to be used for inter prediction of the currently processed picture block, it may be determined that the skip mode is used for inter prediction. Of course, another mode among the skip modes may be analyzed from the bitstream. In this case, the other mode among the skip modes may be used for inter prediction of the currently processed picture block instead. This is not limited in the present application.
[0014] In one possible design, the step of performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream includes the step of performing inter prediction on the current picture block to be processed by using the MMVD when the second indicator indicates that the MMVD is used for inter prediction of the current picture block to be processed.
[0015] In one possible design, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the operation of decoding the third indicator is not performed. In other words, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, it can be directly determined or inferred that triangle PU mode is not used for inter prediction of the current picture block to be processed. Furthermore, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD. In other words, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the related indicator for triangle PU mode is not analyzed, and inter prediction is directly performed on the current picture block to be processed by using MMVD in skip mode.
[0016] In the above design, when it is determined that skip mode is to be used, if it is determined through decoding that MMVD is to be used, the third indicator (triangle PU indicator) does not need to be decoded, and correspondingly, the encoder does not need to encode the third indicator in the bitstream. The triangle PU indicator is decoded only when it is determined through decoding that MMVD is not to be used. This can avoid some of the redundancy that occurs when using both MMVD and triangle PU mode, reduce the amount of coding resources used, and reduce bit overhead in the bitstream.
[0017] In one possible design, the method comprises: When the first indicator indicates that skip mode is not used (e.g., not allowed to be used) for inter prediction of the currently to be processed picture block, analyzing a fourth indicator from the bitstream; when the fourth indicator indicates that merge mode is used for inter prediction of the currently to be processed picture block, analyzing a fifth indicator from the bitstream; when the fourth indicator indicates that merge mode is used for inter prediction of the currently to be processed picture block, analyzing a fifth indicator from the bitstream; and when the fifth indicator indicates that merge mode MMVD using motion vector differential is not used for inter prediction of the currently to be processed picture block (e.g., in merge mode, merge mode MMVD using motion vector differential is not used for inter prediction of the currently to be processed picture block), and parsing a sixth indicator from the bitstream, wherein when the sixth indicator is a third value, it indicates that triangular prediction unit mode is allowed to be used for inter-prediction of the current picture block to be processed (e.g., in merge mode, triangular prediction unit mode is allowed to be used for inter-prediction of the current picture block to be processed), or when the sixth indicator is a fourth value, it indicates that triangular prediction unit mode is not allowed to be used for inter-prediction of the current picture block to be processed (e.g., in merge mode, triangular prediction unit mode is not allowed to be used for inter-prediction of the current picture block to be processed).
[0018] Note that the sixth indicator is not the sps_triangle_enabled_flag.
[0019] It should be understood that the present application does not exclude cases where another indicator may be further analyzed before the sixth indicator is analyzed, for example, the sixth indicator may be analyzed after another indicator is analyzed to be false.
[0020] Correspondingly, inter prediction is performed on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the first indicator, the fourth indicator, the fifth indicator, and the sixth indicator.
[0021] For example, the fourth indicator may also be referred to as merge_flag[x0][y0], where the fourth indicator may use one of the aforementioned names that are standard text or symbols. The fifth indicator may also be referred to as merge_mmvd_flag[x0][y0] or mmvd_flag[x0][y0], where the fifth indicator may use one of the aforementioned names that are standard text or symbols. The sixth indicator may also be referred to as merge_triangle_flag[x0][y0] or triangle_flag[x0][y0], where the sixth indicator may use one of the aforementioned names that are standard text or symbols.
[0022] It should be understood that the third value and the first value in this specification are used only for ease of distinction and are not limited in this application. For example, the first value and the third value can both be 1. Similarly, the fourth value and the second value are used only for ease of distinction. For example, the second value and the fourth value can both be 0. It should be understood that the first value and the second value are interchangeable. For example, the first value can be 0 and the second value can be 1. The third value and the fourth value are interchangeable. For example, the third value can be 0 and the fourth value can be 1.
[0023] It should be understood that the skip mode is one of the merge modes. Therefore, the second indicator and the fifth indicator in this specification may be named in the same manner. For example, both may be called mmvd_flag[x0][y0] or merge_mmvd_flag[x0][y0]. Similarly, the third indicator and the sixth indicator may be named in the same manner. For example, both may be called triangle_flag[x0][y0] or merge_triangle_flag[x0][y0].
[0024] In the above design, when it is determined that the merge mode is to be used, the triangle PU indicator is decoded only when it is determined through decoding that the MMVD is not to be used, which can avoid some of the redundancy that occurs when balancing the MMVD and triangle PU modes, reduce the amount of coding resources used, and reduce bit overhead in the bitstream.
[0025] In one possible design, the step of performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream includes: When the sixth indicator is a third value, performing inter prediction on the current picture block to be processed by using a triangular prediction unit mode; or When the sixth indicator is the fourth value, performing inter prediction on the current picture block to be processed by using a merge mode.
[0026] In one possible design, the step of parsing the third indicator from the bitstream includes: The method includes a step of analyzing a third indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0027] In one possible design, the step of performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream includes: When the fifth indicator indicates that MMVD is to be used for inter prediction of the current picture block to be processed, the method includes a step of performing inter prediction on the current picture block to be processed by using MMVD in merge mode.
[0028] In one possible design, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the operation of decoding the sixth indicator is not performed. In other words, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, it can be directly determined or inferred that triangle PU mode is not used for inter prediction of the current picture block to be processed. Furthermore, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD in merge mode. In other words, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the related indicator for triangle PU mode does not need to be analyzed, and inter prediction can be directly performed on the current picture block to be processed by using MMVD in merge mode.
[0029] In the above design, when it is determined that the merge mode is to be used, if it is determined through decoding that the MMVD is to be used, the triangle PU indicator does not need to be coded, and only when it is determined through decoding that the MMVD is not to be used, the triangle PU indicator is coded. This can avoid some of the redundancy that occurs when combining the MMVD and triangular prediction unit (triangle PU) modes, reduce the amount of coding resources used, and reduce bit overhead in the bitstream.
[0030] In one possible design, the step of parsing the sixth indicator from the bitstream may include a step of parsing the sixth indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0031] For example, the conditions under which a triangular prediction unit mode is allowed to be used for inter prediction may include at least one of the following: (1) The triangle PU control bit is true (sps_triangle_enabled_flag == 1), (2) The video frame containing the current picture block to be processed is a B frame (slice_type == B); (3) The product of the height and width of the current picture block to be processed is 16 or greater (cbWidth * cbHeight >= 16), and (4) Affine mode is not allowed to be used for the current picture block to be processed.
[0032] It should be understood that the case where other indicator information is further analyzed before the third indicator is analyzed is not excluded in this embodiment of the present application. It should be understood that when the value of the indicator information is false, the third indicator is analyzed from the bitstream.
[0033] For example, the design of the first embodiment is a triangle PU indicator Before decryption, MMVD indicator In this application, the triangle PU indicator Alternatively, MMVD indicator can be decoded before being decoded. An example is:
[0034] The video picture decoding method includes: The method includes the steps of: parsing a first indicator from the bitstream; when the first indicator indicates that skip mode is used for inter prediction of the current picture block to be processed, parsing a third indicator from the bitstream; and when the third indicator indicates that triangular prediction unit mode is not used for inter prediction of the current picture block to be processed, parsing a second indicator from the bitstream, wherein when the second indicator is a first value, it indicates that MMVD is used for inter prediction of the current picture block to be processed, or when the second indicator is a second value, it indicates that MMVD is not used for inter prediction of the current picture block to be processed, and inter prediction is performed on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream, and the indicator information includes one or more of the first indicator, the second indicator, and the third indicator.
[0035] For example, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD; or When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using a skip mode; When the third indicator is a first value, inter prediction is performed on the current picture block to be processed by using the triangular prediction unit mode.
[0036] For example, when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, a fourth indicator is parsed from the bitstream; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, a sixth indicator is parsed from the bitstream; and When the sixth indicator indicates that the triangular prediction unit mode is not used for inter prediction of the current picture block to be processed, the fifth indicator is parsed from the bitstream.
[0037] When the fifth indicator is the third value, it indicates that MMVD is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that MMVD is not used for inter prediction of the current picture block to be processed.
[0038] Note that the sixth indicator is not the sps_triangle_enabled_flag.
[0039] For example, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD; or When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using merge mode.
[0040] According to a second aspect, an embodiment of the present application provides a video picture decoding method, the method comprising: analyzing a fourth indicator from the bitstream, and when the fourth indicator indicates that a merge mode is used for inter prediction of the currently to be processed picture block, analyzing a fifth indicator from the bitstream, and when the fifth indicator indicates that a merge mode using motion vector differentials MMVD is not used for inter prediction of the currently to be processed picture block (e.g., in merge mode, a merge mode using motion vector differentials MMVD is not used for inter prediction of the currently to be processed picture block), analyzing a sixth indicator from the bitstream, where when the sixth indicator is a third value, it indicates that a triangular prediction unit mode is used for inter prediction of the currently to be processed picture block. (e.g., in merge mode, triangular prediction unit mode is used for inter prediction of the current picture block to be processed), or, when the sixth indicator is the fourth value, it indicates that triangular prediction unit mode is not used for inter prediction of the current picture block to be processed (e.g., in merge mode, triangular prediction unit mode is not used for inter prediction of the current picture block to be processed); and performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by indicator information in the bitstream, wherein the indicator information includes one or more of the fourth indicator, the fifth indicator, and the sixth indicator.
[0041] Note that the sixth indicator is not the sps_triangle_enabled_flag.
[0042] In the above design, when it is determined that the merge mode is to be used, the triangle PU indicator is decoded only when it is determined through decoding that the MMVD is not to be used. In other words, when it is determined through decoding that the MMVD is to be used, the sixth indicator does not need to be parsed from the bitstream (in other words, the triangle PU indicator does not need to be coded), and inter prediction can be directly performed on the current picture block to be processed by using the MMVD. This can avoid some of the redundancy that occurs when combining the MMVD and the triangle PU mode, reduce the amount of coding resources used, and reduce bit overhead in the bitstream.
[0043] In one possible design, the step of performing inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream includes: When the fifth indicator indicates that MMVD is to be used for inter prediction of the current picture block to be processed, the method includes a step of performing inter prediction on the current picture block to be processed by using MMVD in merge mode.
[0044] In one possible design, the step of parsing the sixth indicator from the bitstream includes a step of parsing the sixth indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0045] In one possible design, the method further includes parsing the first indicator from the bitstream; The step of parsing a fourth indicator from the bitstream includes: When the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, analyzing a fourth indicator from the bitstream.
[0046] According to a third aspect, an embodiment of the present application provides a video picture encoding method, the method comprising: determining a prediction mode to be used for inter prediction of the current picture block to be processed; encoding, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a first indicator; When the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a second indicator; When the second indicator indicates that merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed (e.g., in skip mode, merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed), the indicator information further includes a third indicator.
[0047] When the third indicator is a first value, it indicates that triangular prediction unit mode is used for inter prediction of the current picture block to be processed (e.g., in skip mode, triangular prediction unit mode is used for inter prediction of the current picture block to be processed), or when the third indicator is a second value, it indicates that triangular prediction unit mode is not used for inter prediction of the current picture block to be processed (e.g., in skip mode, triangular prediction unit mode is not used for inter prediction of the current picture block to be processed).
[0048] When the prediction mode to be used for inter prediction of the current picture block to be processed is determined, the prediction mode to be used for inter prediction of the current picture block to be processed may be determined from one or more inter prediction modes for the current picture block to be processed according to a rate-distortion cost criterion in the process of determining or selecting an appropriate prediction mode for the current picture block to be processed. For example, the prediction mode corresponding to the smallest rate-distortion cost is selected as the prediction mode to be used for inter prediction of the current picture block to be processed.
[0049] In another manner of description, an embodiment of the present application provides a video picture encoding method, the method comprising: encoding a first indicator in the bitstream, and when the first indicator indicates that skip mode is used for inter prediction of the current picture block to be processed, encoding a second indicator in the bitstream; and encoding a third indicator in the bitstream when the second indicator indicates that a merge mode using motion vector differentials (MMVD) is not used for inter prediction of the current picture block to be processed.
[0050] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0051] In yet another manner of description, an embodiment of the present application provides a video picture encoding method, the method comprising: determining a value of a first indicator, a value of a second indicator, and a value of a third indicator; encoding a first indicator, a second indicator, and a third indicator in a bitstream, wherein the value of the first indicator is used to indicate that a skip mode is used for inter prediction of the current picture block to be processed, the value of the second indicator is used to indicate that a merge mode using motion vector differentials (MMVD) is not used for inter prediction of the picture block to be processed, and the value of the third indicator is used to indicate that a triangular prediction unit mode is used for inter prediction of the picture block to be processed; or encoding a first indicator, a second indicator, and a third indicator in a bitstream, wherein the value of the first indicator is used to indicate that a skip mode is used for inter prediction of the current picture block to be processed, the value of the second indicator is used to indicate that a merge mode using motion vector differentials (MMVD) is not used for inter prediction of the picture block to be processed, and the value of the third indicator is used to indicate that a triangular prediction unit mode is not used for inter prediction of the picture block to be processed; or and encoding the first indicator and the second indicator in a bitstream, wherein the value of the first indicator is used to indicate that skip mode is used for inter prediction of the current picture block to be processed, and the value of the second indicator is used to indicate that merge mode MMVD using motion vector differential is used for inter prediction of the picture block to be processed.
[0052] In one possible design, when the indicator information includes a second indicator (when the bitstream includes the second indicator), the second indicator is located after the first indicator in the bitstream, or when the indicator information further includes a third indicator (when the bitstream includes the third indicator), the third indicator is located after the second indicator in the bitstream.
[0053] In one possible design, when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, the indicator information further includes a fourth indicator (in other words, encode the fourth indicator in the bitstream); When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator (in other words, encodes the fifth indicator in the bitstream); and When the fifth indicator indicates that merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator (in other words, encodes the sixth indicator in the bitstream).
[0054] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0055] In one possible design, when the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator: When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a third indicator.
[0056] According to a fourth aspect, an embodiment of the present application provides a video picture encoding method, the method comprising: determining a prediction mode to be used for inter prediction of the current picture block to be processed; encoding, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed (e.g., in merge mode, merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed), the indicator information further includes a sixth indicator.
[0057] When the sixth indicator is the third value, it indicates that triangular prediction unit mode is used for inter prediction of the current picture block to be processed (e.g., in merge mode, triangular prediction unit mode is used for inter prediction of the current picture block to be processed), or when the sixth indicator is the fourth value, it indicates that triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0058] In another manner of description, an embodiment of the present application provides a video picture encoding method, the method comprising: encoding a fourth indicator in the bitstream; encoding a fifth indicator in the bitstream when the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed; and encoding a sixth indicator in the bitstream when the fifth indicator indicates that a merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed.
[0059] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0060] In one possible design, when the indicator information includes a fifth indicator (when the bitstream includes the fifth indicator), the fifth indicator is located after the fourth indicator in the bitstream, or when the indicator information further includes a sixth indicator (when the bitstream includes the sixth indicator), the sixth indicator is located after the fifth indicator in the bitstream.
[0061] In one possible design, when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator: When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a sixth indicator.
[0062] In one possible design, the indicator information further includes a first indicator, where the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed.
[0063] In one possible design, the first indicator is located before the fourth indicator in the bitstream.
[0064] According to a fifth aspect, an embodiment of the present application provides a video picture decoding device, including a number of functional units configured to implement any method according to the first aspect.
[0065] For example, a video picture decoder may include an entropy decoding unit and an inter prediction unit.
[0066] The entropy decoding unit is configured to parse the first indicator from the bitstream.
[0067] The entropy decoding unit is further configured to analyze a second indicator from the bitstream when the first indicator indicates that skip mode is used for inter prediction of the current picture block to be processed.
[0068] The entropy decoding unit is further configured to analyze a third indicator from the bitstream when the second indicator indicates that a merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed.
[0069] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0070] The inter prediction unit is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of a first indicator, a second indicator, and a third indicator.
[0071] In one possible design, the inter prediction unit is particularly configured to perform inter prediction on the current picture block to be processed by using a triangular prediction unit mode when the third indicator is a first value, or to perform inter prediction on the current picture block to be processed by using a skip mode when the third indicator is a second value.
[0072] In one possible design, the inter prediction unit is specifically configured to perform inter prediction on the current picture block to be processed by using MMVD when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed.
[0073] In one possible design, the entropy decoding unit may When the first indicator indicates that a skip mode is not used for inter prediction of the current picture block to be processed, analyze a fourth indicator from the bitstream; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, analyze a fifth indicator from the bitstream; The video coding unit is further configured to analyze a sixth indicator from the bitstream when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed.
[0074] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0075] Correspondingly, inter prediction is performed on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the first indicator, the fourth indicator, the fifth indicator, and the sixth indicator.
[0076] In one possible design, when the indicator information includes one or more of the first indicator, the fourth indicator, the fifth indicator, and the sixth indicator, the inter prediction mode is When the sixth indicator is a third value, performing inter prediction on the current picture block to be processed by using a triangular prediction unit mode; or When the sixth indicator is the fourth value, it is specifically used to perform inter prediction on the current picture block to be processed by using the merge mode.
[0077] In one possible design, when parsing the third indicator from the bitstream, the entropy decoding unit It is particularly configured to analyze a third indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0078] According to a sixth aspect, an embodiment of the present application provides a video picture decoding device, including a number of functional units configured to implement any method according to the second aspect.
[0079] For example, a video picture decoder may include an entropy decoding unit and an inter prediction unit.
[0080] The entropy decoding unit is configured to parse a fourth indicator from the bitstream.
[0081] The entropy decoding unit is further configured to analyze a fifth indicator from the bitstream when the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, and to analyze a sixth indicator from the bitstream when the fifth indicator indicates that a merge mode using motion vector differentials MMVD is not used for inter prediction of the current picture block to be processed.
[0082] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0083] The inter prediction unit is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the fourth indicator, the fifth indicator, and the sixth indicator.
[0084] In one possible design, the inter prediction unit is specifically configured to perform inter prediction on the current picture block to be processed by using MMVD when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed.
[0085] In one possible design, when parsing the sixth indicator from the bitstream, the entropy decoding unit It is particularly configured to analyze a sixth indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0086] It should be understood that the present application does not exclude a case where other indicator information is further analyzed before the sixth indicator is analyzed. It should be understood that when the value of the indicator information is false, the sixth indicator is analyzed from the bitstream.
[0087] In one possible design, the entropy decoding unit is further configured to parse the first indicator from the bitstream.
[0088] When parsing the fourth indicator from the bitstream, the entropy decoding unit: It is particularly configured to analyze a fourth indicator from the bitstream when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed.
[0089] According to a seventh aspect, an embodiment of the present application provides a video picture encoding device, including a number of functional units configured to implement any method according to the third aspect.
[0090] For example, a video picture coding device an inter prediction unit configured to determine a prediction mode to be used for inter prediction of a current picture block to be processed; and an entropy coding unit configured to code, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a first indicator; When the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a second indicator; When the second indicator indicates that the merge mode using motion vector differential MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator.
[0091] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0092] For example, when determining a prediction mode to be used for inter prediction of a current picture block to be processed, the inter prediction unit may determine the prediction mode to be used for inter prediction of the current picture block to be processed according to a rate-distortion cost criterion in the process of determining or selecting an appropriate prediction mode for the current picture block to be processed from one or more inter prediction modes for the current picture block to be processed. For example, the prediction mode corresponding to the smallest rate-distortion cost is selected as the prediction mode to be used for inter prediction of the current picture block to be processed.
[0093] In one possible design, when the indicator information includes a second indicator, the second indicator is located after the first indicator in the bitstream, or when the indicator information further includes a third indicator, the third indicator is located after the second indicator in the bitstream.
[0094] In one possible design, when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, the indicator information further includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that the merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator.
[0095] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0096] In one possible design, when the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator: When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a third indicator.
[0097] According to an eighth aspect, an embodiment of the present application comprises: 4 A video picture encoding device is provided, comprising several functional units configured to perform any of the methods according to the above aspects.
[0098] For example, a video picture coding device an inter prediction unit configured to determine a prediction mode to be used for inter prediction of a current picture block to be processed; and an entropy coding unit configured to code, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that the merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator.
[0099] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0100] In one possible design, when the indicator information includes a fifth indicator, the fifth indicator is located after the fourth indicator in the bitstream, or when the indicator information further includes a sixth indicator, the sixth indicator is located after the fifth indicator in the bitstream.
[0101] In one possible design, when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator: When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a sixth indicator.
[0102] In one possible design, the indicator information further includes a first indicator, where the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed.
[0103] In one possible design, the first indicator is located before the fourth indicator in the bitstream.
[0104] According to a ninth aspect, an embodiment of the present application further provides a video picture decoding method, the method comprising: The method includes the steps of: analyzing a seventh indicator (e.g., mh_intra_flag[x0][y0]) from the bitstream; and when the seventh indicator indicates that combined inter and intra prediction (i.e., Combined inter merge / intra prediction) is not used for the current picture block to be processed, analyzing an eighth indicator (e.g., merge_triangle_flag[x0][y0]) from the bitstream, where, when the eighth indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed; and performing inter prediction for the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream, where the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0105] It should be understood that cases where other indicator information may be further analyzed before the eighth indicator is analyzed are not excluded. Cases where another condition needs to be considered to determine whether to analyze the eighth indicator are also not excluded. Another condition in this specification is, for example, sps_triangle_enabled_flag && slice_type (slice type) == B && cbWidth (width of current block) * cbHeight (height of current block) >= 16. In one example, sps_triangle_enabled_flag indicates whether the triangular prediction unit mode is allowed to be used for a sequence including the current picture block to be processed. In other words, sps_triangle_enabled_flag indicates whether the triangular prediction unit mode is allowed to be used at the sequence parameter set level.
[0106] In another example, the conditions indicating whether the triangular prediction unit mode is allowed to be used for a picture including the current picture block to be processed are "the seventh indicator indicates that combined inter merge / intra prediction is not used for the current picture block to be processed" and sps_triangle_enabled_flag && slice_type (slice type) == B && cbWidth (width of the current block) * cbHeight (height of the current block) >= 16.
[0107] In the above solution, the triangular prediction unit (triangle PU) indicator is decoded only when it is determined through decoding that combined inter prediction and intra prediction are not used. In other words, when it is determined through decoding that combined inter prediction and intra prediction are used, the eighth indicator does not need to be parsed from the bitstream (in other words, the triangular prediction unit indicator does not need to be coded), and inter prediction can be directly performed on the current picture block to be processed by using combined inter prediction and intra prediction. This can avoid redundancy to some extent when combining combined inter prediction and intra prediction with the triangle PU mode, reduce the amount of coding resources used, and reduce bit overhead of the bitstream.
[0108] According to a tenth aspect, an embodiment of the present application provides a video picture decoding device, the device comprising: an entropy decoding unit configured to analyze a seventh indicator from the bitstream, and when the seventh indicator indicates that combined inter prediction and intra prediction will not be used for the current picture block to be processed, analyze an eighth indicator from the bitstream, where when the eighth indicator is a first value, it indicates that a triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed; and an inter prediction unit configured to perform inter prediction on a current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, wherein the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0109] According to an eleventh aspect, an embodiment of the present application provides a video picture decoding method, the method comprising: Parsing a seventh indicator (e.g., mh_intra_flag[x0][y0]) from the bitstream; When the currently-to-be-processed picture block satisfies a condition that a triangular prediction unit mode is allowed to be used for inter prediction, analyzing an eighth indicator (merge_triangle_flag[x0][y0]) from the bitstream, wherein the condition that a triangular prediction unit mode is allowed to be used for inter prediction includes at least the seventh indicator indicating that combined inter prediction and intra prediction is not used for the currently-to-be-processed picture block; When the eighth indicator is a first value, it indicates that a triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed; and performing inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, wherein the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0110] For example, the conditions under which the triangular prediction unit mode is allowed to be used for inter prediction may include mh_intra_flag[x0][y0] (seventh indicator) == 0 && sps_triangle_enabled_flag && slice_type == B && cbWidth * cbHeight >= 16.
[0111] In the above design, the triangular prediction unit (triangle PU) indicator is decoded only when it is determined through decoding that combined inter prediction and intra prediction are not used. In other words, when it is determined through decoding that combined inter prediction and intra prediction are used, the eighth indicator does not need to be parsed from the bitstream (in other words, the triangular prediction unit indicator does not need to be coded), and inter prediction can be directly performed on the current picture block to be processed by using combined inter prediction and intra prediction. This can avoid some of the redundancy that occurs when combining combined inter prediction and intra prediction with the triangle PU mode, reduce the amount of coding resources used, and reduce bit overhead in the bitstream.
[0112] According to a twelfth aspect, an embodiment of the present application provides a video picture decoding apparatus, the apparatus comprising: an entropy decoding unit configured to analyze a seventh indicator from the bitstream, and when the currently-to-be-processed picture block satisfies a condition that a triangular prediction unit mode is allowed to be used for inter prediction, analyze an eighth indicator from the bitstream, wherein the condition that a triangular prediction unit mode is allowed to be used for inter prediction includes at least the seventh indicator indicating that combined inter prediction and intra prediction is not used for the currently-to-be-processed picture block; an entropy decoding unit, wherein when the eighth indicator is a first value, it indicates that a triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed; and an inter prediction unit configured to perform inter prediction on a current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, wherein the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0113] According to a thirteenth aspect, an embodiment of the present application provides a video encoder, the video encoder configured to encode a picture block.
[0114] For example, the video encoder may implement the method according to the third aspect. The video encoder may include an apparatus according to any design of the seventh aspect.
[0115] For example, the video encoder may implement the method according to any design of the fourth aspect. The video encoder includes an apparatus according to any design of the eighth aspect.
[0116] According to a fourteenth aspect, an embodiment of the present application provides a video decoder, the video decoder configured to decode a picture block from a bitstream.
[0117] For example, the video decoder may implement the method according to any design of the first aspect. The video decoder includes an apparatus according to any design of the fifth aspect.
[0118] For example, the video decoder may implement the method according to any design of the second aspect. The video decoder includes an apparatus according to any design of the sixth aspect.
[0119] For example, the video decoder may implement a method according to any design of the ninth aspect. The video decoder includes an apparatus according to any design of the tenth aspect.
[0120] For example, the video decoder may implement a method according to any design of the eleventh aspect. The video decoder includes an apparatus according to any design of the twelfth aspect.
[0121] According to a fifteenth aspect, an embodiment of the present application provides a video data decoding device, the device comprising: a memory configured to store video data in a bitstream format; and a video decoder configured to: analyze a first indicator from the bitstream, and when the first indicator indicates that skip mode is used for inter prediction of the current picture block to be processed; analyze a second indicator from the bitstream, and when the second indicator indicates that merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed; analyze a third indicator from the bitstream, and when the third indicator is a first value, it indicates that triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed; and perform inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream, wherein the indicator information includes one or more of the first indicator, the second indicator, and the third indicator.
[0122] According to a sixteenth aspect, an embodiment of the present application provides another video data decoding device, the device comprising: a memory configured to store video data in a bitstream format; A first indicator is analyzed from the bitstream, and when the first indicator indicates that a skip mode is not used for inter prediction of the currently to be processed picture block, a fourth indicator is analyzed from the bitstream, and when the fourth indicator indicates that a merge mode is used for inter prediction of the currently to be processed picture block, a fifth indicator is analyzed from the bitstream, and when the fifth indicator indicates that a merge mode using motion vector differential (MMVD) is not used for inter prediction of the currently to be processed picture block, a sixth indicator is analyzed from the bitstream, and when the sixth indicator is a third value, , indicates that a triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or, when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed, and performs inter prediction on the current picture block to be processed by using the inter prediction mode indicated by the indicator information in the bitstream, wherein the indicator information includes one or more of the first indicator, the fourth indicator, the fifth indicator, and the sixth indicator.
[0123] According to a seventeenth aspect, an embodiment of the present application provides a video data encoding device, the device comprising: a memory configured to store video data, the video data including one or more picture blocks; and a video encoder configured to determine a prediction mode to be used for inter-prediction of a current picture block to be processed and to encode, in a bitstream, indicator information used to indicate the determined prediction mode, wherein the indicator information includes a first indicator, wherein the indicator information further includes a second indicator when the first indicator indicates that skip mode is used for inter-prediction of the current picture block to be processed, and wherein the indicator information further includes a third indicator when the second indicator indicates that merge mode using motion vector differentials (MMVD) is not used for inter-prediction of the current picture block to be processed, wherein when the third indicator is a first value, it indicates that triangular prediction unit mode is allowed to be used in skip mode for inter-prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that triangular prediction unit mode is not allowed to be used in skip mode for inter-prediction of the current picture block to be processed.
[0124] According to an eighteenth aspect, an embodiment of the present application provides another video data encoding device, the device comprising: a memory configured to store video data, the video data including one or more picture blocks; and a video encoder configured to determine a prediction mode to be used for inter-prediction of a current picture block to be processed and to encode, in the bitstream, indicator information used to indicate the determined prediction mode, wherein the indicator information includes a first indicator, wherein the indicator information further includes a fourth indicator when the first indicator indicates that skip mode is not used for inter-prediction of the current picture block to be processed, wherein the indicator information further includes a fifth indicator when the fourth indicator indicates that merge mode is used for inter-prediction of the current picture block to be processed, wherein the indicator information further includes a sixth indicator when the fifth indicator indicates that merge mode using motion vector differential (MMVD) is not used for inter-prediction of the current picture block to be processed, and wherein when the sixth indicator is a third value, it indicates that triangular prediction unit mode is allowed to be used for inter-prediction of the current picture block to be processed, or when the sixth indicator is a fourth value, it indicates that triangular prediction unit mode is not allowed to be used for inter-prediction of the current picture block to be processed.
[0125] In one possible design, the first indicator is located before the fourth indicator in the bitstream.
[0126] According to a nineteenth aspect, an embodiment of the present application provides an encoding device including a non-volatile memory and a processor coupled to each other, wherein the processor invokes program code stored in the memory to perform some or all of the steps of any method according to the third or fourth aspect.
[0127] According to a twentieth aspect, an embodiment of the present application provides a decoding device including a non-volatile memory and a processor coupled to each other, wherein the processor invokes program code stored in the memory to perform some or all of the steps of any method according to the first, second, ninth or eleventh aspects.
[0128] According to a twenty-first aspect, an embodiment of the present application provides a computer-readable storage medium storing program code, the program code including instructions used to perform some or all of the steps of any method according to the first to fourth, ninth, or eleventh aspects.
[0129] According to a twenty-second aspect, an embodiment of the present application provides a computer program product, which, when run on a computer, enables the computer to perform some or all of the steps of any method according to the first to fourth, ninth or eleventh aspects.
[0130] It should be understood that the technical solutions in the second to twenty-second aspects of the present application are consistent with the technical solutions in the first aspect of the present application, and the beneficial effects achieved in the aspects and corresponding possible implementations are similar, and the details will not be described again here.
[0131] In an embodiment of the present application, when it is determined that the skip mode or the merge mode is to be used, if it is determined through coding that the MMVD is to be used, the triangle PU indicator does not need to be coded, and it can be seen that the triangle PU indicator is coded only when it is determined through coding that the MMVD is not to be used. This can avoid redundancy that occurs when using both the MMVD and the triangle PU mode, reduce the amount of coding resources used, and reduce bit overhead of the bitstream. [Brief explanation of the drawings]
[0132] [Figure 1A] 1 is a block diagram of an example video encoding and decoding system 10 according to an embodiment of the present application. [Figure 1B] 1 is a block diagram of an example video coding system 40 according to an embodiment of the present application. [Figure 2] 2 is a block diagram of an exemplary structure of an encoder 20 according to an embodiment of the present application. [Figure 3] 3 is a block diagram of an exemplary structure of a decoder 30 according to an embodiment of the present application. [Figure 4] 4 is a block diagram of an example video coding device 400 according to an embodiment of the present application. [Figure 5] 1 is a block diagram of another example of an encoding or decoding device according to an embodiment of the present application; [Figure 6] FIG. 2 is a schematic diagram of spatial and temporal candidate blocks according to an embodiment of the present application; [Figure 7] FIG. 1 is a schematic diagram of a triangular prediction unit partitioning mode according to an embodiment of the present application. [Figure 8] FIG. 2 is a schematic diagram of weight calculation according to an embodiment of the present application; [Figure 9A] FIG. 1 is a schematic diagram of an MMVD search point according to an embodiment of the present application. [Figure 9B] FIG. 2 is a schematic diagram of an MMVD search process according to an embodiment of the present application. [Figure 10A] 1 is a schematic flowchart of a video picture decoding method according to an embodiment of the present application; [Figure 10B] 1 is a schematic flowchart of a video picture encoding method according to an embodiment of the present application; [Figure 11A] 4 is a schematic flowchart of another video picture decoding method according to an embodiment of the present application; [Figure 11B] 4 is a schematic flowchart of another video picture encoding method according to an embodiment of the present application; [Figure 12]FIG. 12 is a structural block diagram of a video picture decoding device 1200 according to an embodiment of the present application. [Figure 13] FIG. 13 is a structural block diagram of a video picture encoding device 1300 according to an embodiment of the present application. DETAILED DESCRIPTION OF THE INVENTION
[0133] The following describes embodiments of the present application with reference to the accompanying drawings in the embodiments of the present application. In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of example, specific aspects of the embodiments of the present application or in which the embodiments of the present application may be used. It should be understood that the embodiments of the present application may be used in other ways and may include structural or logical changes not shown in the accompanying drawings. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present application is defined by the appended claims. For example, it should be understood that disclosure related to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, when one or more particular method steps are described, the corresponding device may include one or more units, such as functional units, for performing the described method steps (e.g., one unit that performs one or more steps, or multiple units that each perform one or more of the steps), even if such one or more units are not explicitly described or shown in the accompanying drawings. On the other hand, when a particular apparatus is described based on one or more units, such as, for example, functional units, a corresponding method may include a step used to perform the function of the one or more units (e.g., a step used to perform the function of the one or more units, or multiple steps each used to perform the function of one or more of the multiple units), even if such step or steps are not explicitly described or shown in the accompanying drawings. Furthermore, it should be understood that the features of various exemplary embodiments and / or aspects described herein may be combined with each other unless specifically stated otherwise.
[0134] The technical solutions in the embodiments of the present application are not only applicable to existing video coding standards (e.g., standards such as H.264 or HEVC), but also to future video coding standards (e.g., the H.266 standard). The terms used in the detailed description of the present application are only used to describe specific embodiments of the present application and are not intended to limit the present application. The following first briefly describes related concepts in the embodiments of the present application.
[0135] Video coding typically refers to the processing of a sequence of pictures that form a video or video sequence. The terms "picture," "frame," or "image" may be used synonymously in the field of video coding. Video coding in this application refers to video encoding or video decoding. Video coding is performed on the source side and typically involves processing original video pictures (e.g., by compression) to reduce the amount of data needed to represent the video picture for more efficient storage and / or transmission. Video decoding is performed on the destination side and typically involves the reverse processing compared to an encoder to reconstruct a video picture. "Coding" of video pictures in the embodiments should be understood as "encoding" or "decoding" of a video sequence. The combination of the encoding and decoding parts is also called a codec (encoding and decoding).
[0136] A video sequence contains a series of pictures, which are further divided into slices, which are further divided into blocks. The video coding process is performed by blocks. In some new video coding standards, the concept of a block is further extended. For example, the macroblock (MB) is introduced in the H.264 standard. A macroblock is a block of multiple prediction blocks that can be used for predictive coding. KuThe high efficiency video coding (HEVC) standard uses basic concepts such as a coding unit (CU), a prediction unit (PU), and a transform unit (TU). Multiple block units are obtained through functional partitioning and described by using a new tree-based structure. For example, a CU may be partitioned into smaller CUs based on a quadtree, and the smaller CUs may be further partitioned to generate a quadtree structure. A CU is a basic unit used to partition and encode a coded picture. PUs and TUs also have a similar tree structure. A PU may correspond to a predictive block and is a basic unit used for predictive coding. A CU is further partitioned into multiple PUs based on a partitioning pattern. A TU may correspond to a transform block and is a basic unit used to transform a prediction residual. However, fundamentally, all of CUs, PUs, and TUs are conceptually blocks (or picture blocks).
[0137] For example, in HEVC, a CTU is divided into multiple CUs by using a quadtree structure represented as a coding tree. The decision of whether to encode a picture area by using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs based on the PU division pattern. Within one PU, the same prediction process is applied, and related information is sent to the decoder for each PU. After obtaining residual blocks by applying the prediction process based on the PU division pattern, the CU may be partitioned into transform units (TUs) based on another quadtree structure similar to the coding tree used for CUs. In recent developments in video compression technology, a quadtree plus binary tree ( Quadtree plusA QTBT partitioning frame is used to partition the coding blocks. In the QTBT block structure, CUs can be square or rectangular.
[0138] In this specification, for ease of explanation and understanding, a picture block to be coded in a current coded picture may be referred to as a current block. For example, in encoding, the current block is the block currently being coded, and in decoding, the current block is the block currently being decoded. A decoded picture block in a reference picture used to predict a current block is referred to as a reference block. In other words, a reference block is a block that provides a reference signal for the current block. The reference signal represents pixel values in a picture block. A block that provides a prediction signal for a current block in a reference picture may be referred to as a prediction block. The prediction signal represents pixel values, sampling values, or sampling signals in a prediction block. For example, after scanning multiple reference blocks, a best reference block is found, and the best reference block provides a prediction for the current block, and this block is referred to as a prediction block.
[0139] In the case of lossless video coding, the original video picture can be reconstructed. That is, the reconstructed video picture has the same quality as the original video picture (assuming no transmission losses or other data losses are caused during storage or transmission). In the case of lossy video coding, further compression is performed, for example through quantization, to reduce the amount of data required to represent the video picture, and the video picture cannot be perfectly reconstructed at the decoder side. That is, the quality of the reconstructed video picture is lower or worse than the quality of the original video picture.
[0140] Some H.261 video coding standards are referred to as "lossy hybrid video codecs" (i.e., spatial and temporal prediction in the sample domain are combined with 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, at the encoder side, video is typically processed, i.e., encoded, at the block (video block) level. For example, a predictive block is generated through spatial (intra-picture) prediction and temporal (inter-picture) prediction, the predictive block is subtracted from a current block (a block currently being processed or to be processed) to obtain a residual block, and the residual block is transformed and quantized in the transform domain to reduce the amount of data to be transmitted (compressed). At the decoder side, a reverse process compared to the encoder is applied to the coded or compressed block to reconstruct the current block for representation. Furthermore, since the encoder replicates the decoder processing loop, the encoder and decoder generate the same predictions (e.g., intra-prediction and inter-prediction) and / or reconstructions for processing, i.e., coding, subsequent blocks.
[0141] The following description describes a system architecture applicable to embodiments of the present application. FIG. 1A is a schematic block diagram of an example video encoding and decoding system 10 applicable to embodiments of the present application. As shown in FIG. 1A, the video encoding and decoding system 10 may include a source device 12 and a destination device 14. Because the source device 12 generates encoded video data, the source device 12 may be referred to as a video encoder. Because the destination device 14 may decode the encoded video data generated by the source device 12, the destination device 14 may be referred to as a video decoder. In various implementation solutions, the source device 12, the destination device 14, or both the source device 12 and the destination device 14 may include one or more processors and memory coupled to the one or more processors. As described herein, memory may include, but is not limited to, RAM, ROM, EEPROM, flash memory, or any other medium that can be used to store desired program code in the form of computer-accessible instructions or data structures. The source device 12 and the destination device 14 may include a variety of devices, including desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, televisions, cameras, display devices, digital media players, video game consoles, in-vehicle computers, wireless communication devices, and the like.
[0142] 1A depicts source device 12 and destination device 14 as separate devices, alternatively, a device embodiment may include both source device 12 and destination device 14, or may include the functionality of both source device 12 and destination device 14, i.e., source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0143] The communication connection between source device 12 and destination device 14 may be implemented via link 13, and destination device 14 may receive encoded video data from source device 12 via link 13. Link 13 may include one or more media or devices capable of transferring encoded video data from source device 12 to destination device 14. In an example, link 13 may include one or more communication media that enable source device 12 to transmit encoded video data directly to destination device 14 in real time. In this example, source device 12 may modulate the encoded video data according to a communication standard (e.g., a wireless communication protocol) and transmit the modulated video data to destination device 14. The one or more communication media may include a wireless communication medium and / or a wired communication medium, e.g., a radio frequency (RF) spectrum or one or more physical transmission cables. The one or more communication media may be part of a packet-based network, e.g., a local area network, a wide area network, or a global network (e.g., the Internet). The one or more communication mediums may include a router, a switch, a base station, or another device that facilitates communication from source device 12 to destination device 14.
[0144] The source device 12 includes an encoder 20. Optionally, the source device 12 may further include a picture source 16, a picture preprocessor 18, and a communication interface 22. In a particular implementation, the encoder 20, the picture source 16, the picture preprocessor 18, and the communication interface 22 may be hardware components in the source device 12 or may be software programs in the source device 12. A description is given separately as follows:
[0145] Picture source 16 may include or be, for example, any type of picture capture device configured to capture real-world pictures and / or any type of device for generating pictures or comments (for encoding screen content, some text on the screen is also considered part of the picture or image to be encoded), e.g., a computer graphics processor configured to generate computer-animated pictures, or any type of device configured to acquire and / or provide real-world pictures or computer-animated pictures (e.g., screen content or virtual reality (VR) pictures) and / or any combination thereof (e.g., augmented reality (AR) pictures). Picture source 16 may be a camera configured to capture pictures or a memory configured to store pictures. Picture source 16 may further include any type of interface (internal or external) through which previously captured or generated pictures are stored and / or through which pictures are acquired or received. When picture source 16 is a camera, picture source 16 may be, for example, a local camera or an integrated camera integrated into the source device. When picture source 16 is a memory, picture source 16 may be, for example, a local memory or an integrated memory integrated into the source device. When picture source 16 includes an interface, the interface may be, for example, an external interface for receiving pictures from an external video source. The external video source may be, for example, an external picture capture device such as a camera, external memory, or external picture generation device. The external picture generation device may be, for example, an external computer graphics processor, computer, or server.The interface can be any type of interface, for example a wired or wireless or optical interface, according to any proprietary or standardized interface protocol.
[0146] A picture may be considered as a two-dimensional array or matrix of pixel elements. The pixel elements in the array may also be called samples. The amount of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the picture. For color representation, three color components are typically utilized, and specifically, a picture may be represented as or include an array of three samples. For example, RGB In a RGB format or color space, a picture includes corresponding red, green, and blue sample arrays. However, in video coding, each pixel is usually represented in a luma / chroma format or color space. For example, a picture in YUV format includes a luma component denoted by Y (sometimes alternatively denoted by L) and two chroma components denoted by U and V. The luma component Y represents brightness or gray-level intensity (e.g., both are the same in a grayscale picture), and the two chroma components U and V represent chroma or color information components. Correspondingly, a picture in YUV format includes a luma sample array of luma sample values (Y) and two chroma sample arrays of chroma values (U and V). A picture in RGB format may be converted or translated to YUV format, or vice versa. This process is also called color conversion or color transformation. If a picture is monochrome, it may include only a luma sample array. In this embodiment of the present application, the pictures sent by the picture source 16 to the picture processor may also be referred to as raw picture data 17 .
[0147] The picture preprocessor 18 is configured to receive raw picture data 17 and perform preprocessing on the raw picture data 17 to obtain a preprocessed picture 19 or preprocessed picture data 19. For example, the preprocessing performed by the picture preprocessor 18 may include cropping, color format conversion (e.g., from RGB format to YUV format), color correction, or noise removal.
[0148] The encoder 20 (also referred to as video encoder 20) is configured to receive pre-processed picture data 19 and process the pre-processed picture data 19 by using an associated prediction mode (e.g., a prediction mode in each embodiment of this specification) to provide encoded picture data 21 (structural details of the encoder 20 are further described below with reference to FIG. 2, FIG. 4, or FIG. 5). In some embodiments, the encoder 20 .... Video Picture Encoding To implement the encoder-side application of the method, it may be configured to carry out the embodiments described below.
[0149] The communication interface 22 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 to the destination device 14 or any other device (e.g., a memory) via the link 13 for storage or direct reconstruction. The other device may be any device used for decoding or storage. The communication interface 22 may be configured to package the encoded picture data 21 into an appropriate format, e.g., data packets, for transmission via the link 13.
[0150] Destination device 14 includes a decoder 30. Optionally, destination device 14 may further include a communication interface 28, a picture post-processor 32, and a display device 34. The descriptions are given separately as follows:
[0151] The communication interface 28 may be configured to receive the encoded picture data 21 from the source device 12 or any other source. The any other source may be, for example, a storage device. The storage device may be, for example, an encoded picture data storage device. The communication interface 28 may be configured to transmit or receive the encoded picture data 21 over a link 13 between the source device 12 and the destination device 14 or over any type of network. The link 13 may be, for example, a direct wired or wireless connection. The type of network may be, for example, a wired or wireless network, or any combination thereof, or any type of private or public network, or any combination thereof. The communication interface 28 may be configured to unpackage data packets transmitted through the communication interface 22 to obtain the encoded picture data 21, for example.
[0152] Both communication interface 28 and communication interface 22 may be configured as unidirectional or bidirectional communication interfaces, for example, to send and receive messages for setting up a connection, as well as to confirm and exchange any other information regarding the communication link and / or data transmissions, such as encoded picture data transmissions.
[0153] Decoder 30 (or video The decoder 30 receives the coded picture data 21 and outputs the decoded picture data 31 or decoded picture data 32. 3 31 (details of the structure of decoder 30 are further described below with reference to FIG. 3, FIG. 4, or FIG. 5). In some embodiments, decoder 30 is configured to provide the Video Picture Decoding To implement the decoder-side application of the method, it may be configured to carry out the respective embodiments described below.
[0154] The picture post-processor 32 is configured to post-process the decoded picture data 31 (also referred to as reconstructed picture data) to obtain post-processed picture data 33. The post-processing performed by the picture post-processor 32 may include color format conversion (e.g., from YUV format to RGB format), color correction, cropping, resampling, or any other processing. The picture post-processor 32 may further be configured to send the post-processed picture data 33 to a display device 34.
[0155] Display device 34 is configured to receive the post-processed picture data 33 for displaying the picture, e.g., to a user or viewer. Display device 34 may be or include any type of display for presenting the reconstructed picture, e.g., an integrated or external display or monitor. For example, the display may include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro-LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display.
[0156] 1A depicts source device 12 and destination device 14 as separate devices, alternatively, a device embodiment may include both source device 12 and destination device 14, or may include the functionality of both source device 12 and destination device 14, i.e., source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0157] 1A , the presence and (exact) division of functions of the various units shown in FIG. 1A or of source device 12 and / or destination device 14 may vary depending on the actual device and application. Source device 12 and destination device 14 may include any of a wide range of devices, including any type of handheld or stationary device, e.g., a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a video camera, a desktop computer, a set-top box, a television, a camera, an in-vehicle device, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or content distribution server), a broadcast receiver device, or a broadcast transmitter device, and may or may not use any type of operating system.
[0158] The encoder 20 and the decoder 30 may each be implemented as any one of a variety of suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic circuits, hardware, or any combination thereof. Where techniques are implemented in part using software, a device may store software instructions on a suitable non-transitory computer-readable storage medium and execute the instructions using hardware, such as one or more processors, to perform the techniques of this disclosure. Any of the foregoing (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors.
[0159] 1A is merely an example, and the techniques of the present application are applicable to video coding settings (e.g., video encoding or video decoding) that do not necessarily include any data communication between the encoding device and the decoding device. In another example, data may be retrieved from local memory, streamed over a network, etc. A video encoding device may encode data and store the data in memory, and / or a video decoding device may retrieve data from memory and decode the data. In some examples, encoding and decoding are performed by devices that do not communicate with each other but simply encode data to memory and / or retrieve data from memory and decode the data.
[0160] 1B is a diagram illustrating an example of a video coding system 40 including the encoder 20 of FIG. 2 and / or the decoder 30 of FIG. 3, according to an example embodiment. The video coding system 40 may implement a combination of various techniques in the embodiments of the present application. In the illustrated implementation, the video coding system 40 may include an imaging device 41, the encoder 20, the decoder 30 (and / or a video encoder / decoder implemented by logic circuitry 47 of a processing unit 46), an antenna 42, one or more processors 43, one or more memories 44, and / or a display device 45.
[0161] 1B, imaging device 41, antenna 42, processing unit 46, logic circuitry 47, encoder 20, decoder 30, processor 43, memory 44, and / or display device 45 may be in communication with one another. As described, video coding system 40 is shown with both encoder 20 and decoder 30, but in different examples, video coding system 40 may include only encoder 20 or only decoder 30.
[0162] In some examples, antenna 42 may be configured to transmit or receive an encoded bitstream of video data. Further, in some examples, display device 45 may be configured to present the video data. In some examples, logic 47 may be implemented by processing unit 46. Processing unit 46 may include application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. Video coding system 40 may also include optional processor 43. Similarly, optional processor 43 may include application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. In some examples, logic 47 may be implemented by hardware, e.g., dedicated video coding hardware, and processor 43 may be implemented by using general-purpose software, an operating system, etc. Additionally, memory 44 may be any type of memory, for example, volatile memory (e.g., Static Random Access Memory (SRAM) or Dynamic Random Access Memory (DRAM)), or non-volatile memory (e.g., flash memory). In a non-limiting example, memory 44 may be implemented by cache memory. In some examples, logic circuitry 47 may access memory 44 (e.g., for implementing a picture buffer). In other examples, logic circuitry 47 and / or processing unit 46 may include memory (e.g., cache) for implementing a picture buffer or the like.
[0163] In some examples, encoder 20 implemented by logic circuitry may include a picture buffer (e.g., implemented by processing unit 46 or memory 44) and a graphics processing unit (e.g., implemented by processing unit 46). The graphics processing unit may be communicatively coupled to the picture buffer. The graphics processing unit may include encoder 20 implemented by logic circuitry 47 to implement various modules described with reference to FIG. 2 and / or any other encoder system or subsystem described herein. The logic circuitry may be configured to perform various operations described herein.
[0164] In some examples, decoder 30 may be implemented by logic circuitry 47 in a similar manner to implement the various modules described with reference to decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. In some examples, decoder 30 implemented by logic circuitry may include a picture buffer (e.g., a processing unit 46 3 or memory 44) and a graphics processing unit (e.g., implemented by processing unit 46). The graphics processing unit may be communicatively coupled to the picture buffer. The graphics processing unit may include decoder 30 implemented by logic circuitry 47 to implement the various modules described with reference to FIG. 3 and / or any other decoder system or subsystem described herein.
[0165] In some examples, antenna 42 may be configured to receive an encoded bitstream of video data. As described, the encoded bitstream may include data related to the video frame coding described herein, indicators, index values, mode selection data, etc., such as data related to the coding partitions (e.g., transform coefficients or quantized transform coefficients, optional indicators (as described), and / or data defining the coding partitions). Video coding system 40 may further include a decoder 30 coupled to antenna 42 and configured to decode the encoded bitstream. Display device 45 is configured to present the video frames.
[0166] It should be understood that in this embodiment of the present application, with respect to the examples described with respect to encoder 20, decoder 30 may be configured to perform the inverse process. With respect to signaling syntax elements, decoder 30 may be configured to receive and parse such syntax elements and correspondingly decode associated video data. In some examples, encoder 20 may entropy encode syntax elements in the encoded video bitstream. In such examples, decoder 30 may parse the syntax elements and correspondingly decode associated video data.
[0167] It should be noted that the video picture encoding method described in the embodiment of the present application is performed by the encoder 20, and the video picture decoding method described in the embodiment of the present application is performed by the decoder 30. The encoder 20 and the decoder 30 in the embodiment of the present application are compatible with, for example, H.263, H.264, HEV C , MPEG-2, MPEG-4, VP8, or VP9, or a next-generation video standard protocol (such as H.266).
[0168] FIG. 2 is an embodiment of the present application. by2 is a schematic / conceptual block diagram of an example of an encoder 20. In the example of FIG. 2, the encoder 20 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy coding unit 270. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a mode selection unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder according to a hybrid video codec.
[0169] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form a forward signal path of the encoder 20, while for example, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form a backward signal path of the encoder. The backward signal path of the encoder corresponds to the signal path of the decoder (referring to decoder 30 in FIG. 3).
[0170] Encoder 20 receives, for example, via input 202, picture 201 or a picture block 203 of picture 201, e.g., a picture in a sequence of pictures forming a video or a video sequence. Picture block 203 may also be called a current picture block or a picture block to be coded. Picture 201 may also be called a current picture or a picture to be coded (particularly in video coding, to distinguish the current picture from other pictures, e.g., previously coded and / or decoded pictures of the same video sequence, i.e., the video sequence that also includes the current picture).
[0171] An embodiment of encoder 20 may include a partitioning unit (not shown in FIG. 2) configured to partition picture 201 into multiple blocks, such as picture block 203. Picture 201 is typically partitioned into multiple non-overlapping blocks. The partitioning unit may be configured to use the same block size for all pictures in a video sequence, with a corresponding grid that defines the block size, or to vary the block size between pictures or subsets or groups of pictures, and partition each picture into corresponding blocks.
[0172] In one example, prediction processing unit 260 in encoder 20 may be configured to perform any combination of the partitioning techniques described above.
[0173] Like picture 201, picture block 203 may also be, or may be considered to be, a two-dimensional array or matrix of samples with sample values, but the size of picture block 203 is smaller than the size of picture 201. In other words, picture block 203 may include, for example, one sample array (e.g., a luma array for a monochrome picture 201), three sample arrays (e.g., one luma array and two chroma arrays for a color picture), or any other quality and / or type of array depending on the applied color format. The amount of samples in the horizontal and vertical directions (or axes) of picture block 203 defines the size of picture block 203.
[0174] The encoder 20 shown in Figure 2 is configured to block-by-block code a picture 201. For example, coding and prediction is performed for each picture block 203.
[0175] The residual calculation unit 204 is configured to calculate the residual block 205 based on the picture block 203 and the prediction block 265, for example, by subtracting sample values of the prediction block 265 sample by sample (pixel by pixel) from sample values of the picture block 203 to obtain the residual block 205 in the sample domain (further details about the prediction block 265 are provided below).
[0176] The transform processing unit 206 is configured to apply a transform, for example, a discrete cosine transform (DCT) or a discrete sine transform (DST), to sample the values of the residual block 205 and obtain transform coefficients 207 in a transform domain. The transform coefficients 207, which may also be referred to as transform residual coefficients, represent the residual block 205 in the transform domain.
[0177] The transform processing unit 206 may be configured to apply an integer approximation of a DCT / DST, such as the transform specified in HEVC / H.265. Compared to an orthogonal DCT transform, such an integer approximation is typically scaled based on a coefficient. To maintain the norm of a residual block processed by using a forward transform and an inverse transform, an additional scale factor is applied as part of the transform process. The scale factor is typically selected based on some constraints, such as the scale factor being a power of two due to shift operations, the bit depth of the transform coefficients, and a trade-off between accuracy and implementation cost. For example, a specific scale factor may be specified for the inverse transform, e.g., by the inverse transform processing unit 212 at the decoder side 30 (and the corresponding inverse transform, e.g., by the inverse transform processing unit 212 at the encoder side 20), and a corresponding scale factor may be specified for the forward transform, e.g., by the transform processing unit 206 at the encoder side 20.
[0178] The quantization unit 208 is configured to quantize the transform coefficients 207 to obtain quantized transform coefficients 209, for example, by applying scalar quantization or vector quantization. The quantized transform coefficients 209 may also be referred to as quantized residual coefficients 209. The quantization process may reduce the bit depth for some or all of the transform coefficients 207. For example, n-bit transform coefficients may be rounded to m-bit transform coefficients during quantization, where n is greater than m. The degree of quantization may be modified by adjusting a quantization parameter (QP). For example, for scalar quantization, different scales may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, and a larger quantization step size corresponds to coarser quantization. An appropriate quantization step size may be indicated by a quantization parameter (QP). For example, the quantization parameter may be an index into a predetermined set of appropriate quantization step sizes. For example, a smaller quantization parameter may correspond to finer quantization (smaller quantization step size), a larger quantization parameter may correspond to coarser quantization (larger quantization step size), or vice versa. Quantization may include division by the quantization step size and corresponding quantization, or inverse quantization, performed, for example, by inverse quantization unit 210, or multiplication by the quantization step size. In embodiments according to some standards, such as HEVC, the quantization parameter may be used to determine the quantization step size. In general, the quantization step size may be calculated based on the quantization parameter by using a fixed-point approximation of a formula that includes division. An additional scale factor may be introduced for quantization and dequantization to restore the norm of the residual block, and the norm of the residual block may be modified by the scale used in the fixed-point approximation of the formula for the quantization step size and the quantization parameter. In some example implementations, the scale of the inverse transform may be combined with the scale of the dequantization.Alternatively, customized quantization tables can be used and signaled from the encoder to the decoder, for example in the bitstream. Quantization is a lossy operation, and the loss increases with increasing quantization step size.
[0179] The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 to the quantized coefficients to obtain dequantized coefficients 211, e.g., based on or by using the same quantization step size as the quantization unit 208, to apply the inverse of the quantization scheme applied by the quantization unit 208. The dequantized coefficients 211 may also be referred to as dequantized residual coefficients 211 and may correspond to the transform coefficients 207, although the dequantized coefficients 211 typically differ from the transform coefficients due to losses caused by quantization.
[0180] The inverse transform processing unit 212 is configured to apply an inverse transform of the transform applied by the transform processing unit 206, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), in the sample domain to obtain an inverse transform block 213. The inverse transform block 213 may also be referred to as an inverse transformed dequantized block 213 or an inverse transformed residual block 213.
[0181] The reconstruction unit 214 (e.g., adder 214) is configured to add the inverse transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265, for example, by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265, to obtain a reconstructed block 215 in the sample domain.
[0182] Optionally, a buffer unit 216 ("buffer" 216 for short), e.g., of a line buffer 216, is configured to buffer or store the reconstructed blocks 215 and corresponding sample values, e.g., for intra-prediction. In other embodiments, the encoder may be configured to use the unfiltered reconstructed blocks and / or corresponding sample values stored in the buffer unit 216 to perform any type of estimation and / or prediction, e.g., intra-prediction.
[0183] For example, in one embodiment, the encoder 20 may configure the buffer unit 216 to be used not only for the intra prediction unit 254 but also for the loop filter unit 22 0's 2. Intra prediction unit 254 may be configured to store the reconstructed blocks 215 that are also used for the intra prediction, and / or, for example, buffer 216 and decoded picture buffer unit 230 form one buffer. In other embodiments, filtered blocks 221 and / or blocks or samples from decoded picture buffer 230 (not shown in FIG. 2) are used as input or basis for intra prediction unit 254.
[0184] Loop filter unit 220 (or “loop filter” 220 for short) is configured to filter reconstructed block 215 to obtain filtered block 221 to smooth pixel transitions or enhance video quality. Loop filter unit 220 is intended to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or other filters, e.g., a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 220 is shown in FIG. 2 as an in-loop filter, in another implementation, loop filter unit 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221. Decoded picture buffer 230 may store the reconstructed coded block after loop filter unit 220 performs a filtering operation on the reconstructed coded block.
[0185] In one embodiment, the encoder 20 (and correspondingly, the loop filter unit 220) may be configured to output loop filter parameters (e.g., sample adaptive offset information), e.g., directly or after entropy coding performed by the entropy coding unit 270 or any other entropy coding unit, so that the decoder 30 can receive and apply the same loop filter parameters for decoding.
[0186] The decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for use in video data encoding by the encoder 20. The DPB 230 may be formed by any one of a variety of storage devices, such as dynamic random access memory (DRAM) (synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM)), or other types of storage devices. The DPB 230 and the buffer 216 may be provided by the same storage device or separate storage devices. In one example, the decoded picture buffer (DPB) 230 is configured to store the filtered blocks 221. The decoded picture buffer 230 may further be configured to store other previously filtered blocks, e.g., previously reconstructed filtered block 221, of the same current picture or of a different picture, e.g., a previously reconstructed picture, and may provide a complete previously reconstructed picture, i.e., a decoded picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples), e.g., for inter prediction. In one example, if the reconstructed block 215 is reconstructed without in-loop filtering, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215.
[0187] The prediction processing unit 260, also referred to as block prediction processing unit 260, is configured to receive or obtain a picture block 203 (current picture block 203 of current picture 201) and reconstructed picture data, e.g., reference samples of the same (current) picture from buffer 216 and / or reference picture data 231 of one or more previously decoded pictures from decoded picture buffer 230, and process such data for prediction, i.e., to provide a prediction block 265, which may be an inter prediction block 245 or an intra prediction block 255.
[0188] The mode selection unit 262 may be configured to select a prediction mode (e.g., an intra prediction mode or an inter prediction mode) to be used as the prediction block 265 and / or the corresponding prediction block 245 or 255 for calculation of the residual block 205 and for reconstruction of the reconstructed block 215.
[0189] In an embodiment, mode selection unit 262 may be configured to select a prediction mode (e.g., from prediction modes supported by prediction processing unit 260) that results in the best match, or in other words, the smallest residual (smallest residual means better compression for transmission or storage), or that results in the smallest signaling overhead (smallest signaling overhead means better compression for transmission or storage), or that considers or balances both. Mode selection unit 262 may be configured to perform rate-distortion optimization (RDO). - The prediction mode is determined based on RDO (rate distortion optimization), i.e., the minimum rate distortion. Mio The prediction mode selection unit 100 may be configured to select a prediction mode that results in a high-speed image, or to select a prediction mode whose associated rate-distortion satisfies at least a prediction mode selection criterion.
[0190] The following describes in detail the prediction processing (eg, performed by prediction processing unit 260) and mode selection (eg, performed by mode selection unit 262) performed by example encoder 20.
[0191] As described above, encoder 20 is configured to determine or select a best or optimal prediction mode from a (predetermined) set of prediction modes, which may include, for example, intra-prediction modes and / or inter-prediction modes.
[0192] The set of intra-prediction modes may include 35 different intra-prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in H.265, or may include 67 different intra-prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in the currently developing H.266.
[0193] In one possible implementation, the set of intra prediction modes depends on available reference pictures (i.e., at least partially decoded pictures stored in DBP 230, e.g., as described above) and other inter prediction parameters, such as whether the entire reference picture or only a portion of the reference picture, e.g., a search window area around the area of the current block, is used to find the best matching reference block, and / or whether pixel interpolation, such as half-pel and / or quarter-pel interpolation, is applied. The set of inter prediction modes may include, for example, a skip mode and a merge mode. In one particular implementation, the set of inter prediction modes includes a skip-based triangle prediction unit (triangle PU) mode, a merge-based triangle PU mode, a skip-based merge mode with motion vector differential (MMVD), and a merge mode with motion vector differential (MMVD). mode In some examples, the intra prediction unit 254 may be configured to perform any combination of the inter prediction techniques described below.
[0194] In addition to the aforementioned prediction modes, skip mode and / or direct mode may also be applied in embodiments of the present application.
[0195] The prediction processing unit 260 may, for example, dt ree, QT) partition, binary tree (binary tree, BT) partition, ternary tree ( ternaryThe picture block 203 may be further configured to partition the picture block 203 into smaller block partitions or sub-blocks, e.g., by repeatedly using a tree (TT) partition, or any combination thereof, and predict each of the block partitions or sub-blocks. The mode selection includes selecting a tree structure for the partitioned picture block 203 and selecting a prediction mode to be applied to each of the block partitions or sub-blocks.
[0196] The inter prediction unit 244 may include a motion estimation (ME) unit (not shown in FIG. 2) and a motion compensation (MC) unit (not shown in FIG. 2). The motion estimation unit is configured to receive or obtain a picture block 203 (current picture block 203 of current picture 201) and a decoded picture 231, or at least one or more previously reconstructed blocks, e.g., one or more reconstructed blocks of other / different previously decoded pictures 231, for motion estimation. For example, a video sequence may include a current picture and a previously decoded picture 231. 2 31. In other words, the current picture and the previously decoded picture 2 31 may be part of or form a sequence of pictures that form a video sequence.
[0197] For example, the encoder 20 may be configured to select a reference block from multiple reference blocks of the same picture or of a different picture among multiple other pictures, and provide an offset (spatial offset) between the position (X, Y coordinates) of the reference picture and / or reference block and the position of the current block as an inter-prediction parameter to a motion estimation unit (not shown in FIG. 2 ). This offset is also called a motion vector (MV).
[0198] The motion compensation unit is configured to obtain inter prediction parameters, and perform inter prediction based on or by using the inter prediction parameters to obtain an inter prediction block 245. The motion compensation performed by the motion compensation unit (not shown in FIG. 2) may include fetching or generating a prediction block based on a motion / block vector determined through motion estimation (possibly performing interpolation with sub-pixel accuracy). Interpolation filtering may generate additional pixel samples from known pixel samples, which increases the amount of prediction block candidates that can be used to code the picture block. Upon receiving the motion vector for the PU of the current picture block, the motion compensation unit To The motion compensation unit may locate the prediction block to which the motion vector points in one of the reference picture lists. To Also, decoder 30 may generate syntax elements associated with the blocks and video slices so that decoder 30 uses the syntax elements to decode picture blocks in the video slices.
[0199] Specifically, the inter prediction unit 244 may send a syntax element to the entropy encoding unit 270. The syntax element includes inter prediction parameters (such as indication information for selecting an inter prediction mode to be used for predicting a current block after scanning multiple inter prediction modes). In a possible application scenario, if there is only one inter prediction mode, the inter prediction parameters may not be carried in the syntax element. In this case, the decoder side 30 may directly perform decoding by using a default prediction mode. It may be understood that the inter prediction unit 244 may be configured to perform any combination of inter prediction techniques.
[0200] The intra prediction unit 254 is configured to obtain, e.g., receive, the picture block 203 (the current picture block) and one or more previously reconstructed blocks, e.g., reconstructed neighboring blocks, of the same picture for intra estimation. For example, the encoder 20 may be configured to select an intra prediction mode from a plurality of (predetermined) intra prediction modes.
[0201] In one embodiment, the encoder 20 may be configured to select an intra prediction mode according to an optimization criterion, for example, based on the smallest residual (e.g., the intra prediction mode that results in the predicted block 255 that is most similar to the current picture block 203) or the smallest rate distortion.
[0202] The intra prediction unit 254 is further configured to determine the intra-predicted block 255 based on, for example, intra prediction parameters within the selected intra prediction mode. In either case, after selecting the intra prediction mode for the block, the intra prediction unit 254 is further configured to provide the intra prediction parameters, i.e., information indicating the selected intra prediction mode for the block, to the entropy coding unit 270. In an example, the intra prediction unit 254 may be configured to perform any combination of intra prediction techniques.
[0203] Specifically, the intra prediction unit 254 may send a syntax element to the entropy encoding unit 270. The syntax element includes intra prediction parameters (such as indication information for selecting an intra prediction mode to be used for predicting a current block after scanning multiple intra prediction modes). In a possible application scenario, if there is only one intra prediction mode, the intra prediction parameters may not be carried in the syntax element. In this case, the decoder side 30 may directly perform decoding by using a default prediction mode.
[0204] The entropy coding unit 270 may use an entropy coding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC, etc.). - Adaptive VLC (CAVLC) method, arithmetic coding method, context adaptive binary arithmetic coding (context - The entropy coding unit 270 is configured to apply (or not apply) a coding scheme (e.g., a CABAC, a syntax-based context-adaptive binary arithmetic coding (SBAC), a probability interval partitioning entropy (PIPE) coding scheme, or another entropy coding scheme or technique) to one or all of the quantized residual coefficients 209, the inter-prediction parameters, the intra-prediction parameters, and / or the loop filter parameters to obtain coded picture data 21, which may be output via output 272, for example, in the form of coded bitstream 21. The coded bitstream may be transmitted to video decoder 30 or stored for subsequent transmission or retrieval by video decoder 30. The entropy coding unit 270 may further be configured to entropy code another syntax element for the current video slice being coded.
[0205] Other structural variations of the video encoder 20 may be used to encode the video stream. For example, a non-transform-based encoder 20 may, for some blocks or frames, directly quantize the residual signal without the transform processing unit 206. In another implementation, the encoder 20 may have the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.
[0206] Specifically, in this embodiment of the present application, the encoder 20 may be configured to implement the video picture encoding methods described in the following embodiments.
[0207] It should be understood that other structural variations of video encoder 20 may be used to encode the video stream. For example, for some picture blocks or picture frames, video encoder 20 may directly quantize the residual signal. In this case, no processing by transform processing unit 206 is required, and correspondingly, no processing by inverse transform processing unit 212 is required. Alternatively, for some picture blocks or picture frames, video encoder 20 does not generate residual data. Correspondingly, in this case, processing by transform processing unit 206, quantization unit 208, inverse quantization unit 210, and inverse transform processing unit 212 is not required. Alternatively, video encoder 20 may directly store the reconstructed picture block as a reference block. In this case, processing by filter 220 is not required. Alternatively, quantization unit 208 and inverse quantization unit 210 in video encoder 20 may be combined. Loop filter 220 is optional. In addition, for lossless compression coding, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, and the inverse transform processing unit 212 are also optional. It should be understood that in different application scenarios, the inter prediction unit 244 and the intra prediction unit 254 may be selectively used.
[0208] FIG. 3 is an embodiment of the present application. by 1 is a schematic / conceptual block diagram of an example of a decoder 30. The video decoder 30 generates a decoded picture 3In the decoding process, video decoder 30 receives from video encoder 20 coded picture data (e.g., coded bitstream) 21 obtained through encoding by encoder 20 to obtain coded picture data 31. In the decoding process, video decoder 30 receives from video encoder 20 coded video bitstream representing video data, e.g., picture blocks in coded video slices and associated syntax elements.
[0209] 3, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., adder 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. In some examples, video decoder 30 may perform a decoding path that is generally inverse to the encoding path described with respect to video encoder 20 of FIG.
[0210] Entropy decoding unit 304 is configured to entropy decode coded picture data 21 to obtain, e.g., quantized coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), e.g., any one or all of inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements (decoded). Entropy decoding unit 304 is further configured to forward the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to prediction processing unit 360. Video decoder 30 may receive syntax elements at the video slice level and / or the picture block level.
[0211] The inverse quantization unit 310 210, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the buffer 316 may be functionally identical to the buffer 216, the loop filter 320 may be functionally identical to the loop filter 220, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 230.
[0212] Prediction processing unit 360 may include an inter prediction unit 344 and an intra prediction unit 354. The inter prediction unit 344 may be similar in function to the inter prediction unit 244, and the intra prediction unit 354 may be similar in function to the intra prediction unit 254. Prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the coded data 21, and to receive or obtain (explicitly or implicitly) prediction-related parameters and / or information for a selected prediction mode, e.g., from the entropy decoding unit 304.
[0213] video FrameWhen a video frame is coded into an intra-coded (I) slice, intra prediction unit 354 in prediction processing unit 360 is configured to generate a predictive block 365 for a picture block in the current video slice based on a signaled intra prediction mode and data of a previously decoded block of the current frame or picture. When a video frame is coded into an inter-coded (i.e., B or P) slice, inter prediction unit 344 (e.g., a motion compensation unit) in prediction processing unit 360 is configured to generate a predictive block 365 for a video block in the current video slice based on a motion vector and another syntax element received from entropy decoding unit 304. In inter prediction, the predictive block may be generated from a reference picture in a reference picture list. Video decoder 30 may construct reference frame lists, List 0 and List 1, by using a default construction technique and based on the reference pictures stored in DPB 330.
[0214] Prediction processing unit 360 is configured to determine prediction information for video blocks in the current video slice by analyzing motion vectors and other syntax elements, and to generate predictive blocks for the current video block being decoded by using the prediction information. In one example of the present application, prediction processing unit 360 uses several received syntax elements to determine a prediction mode (e.g., intra prediction or inter prediction) for encoding video blocks in the video slice, an inter-prediction slice type (e.g., B slice, P slice, or GPB slice), construction information for one or more of a reference picture list for the slice, a motion vector for each inter-coded video block in the slice, an inter-prediction status for each inter-coded video block in the slice, and other information to decode video blocks in the current video slice. In another example of the present disclosure, syntax elements received by video decoder 30 from the bitstream include syntax elements in one or more of an adaptive parameter set (APS), a sequence parameter set (SPS), a picture parameter set (PPS), or a slice header.
[0215] Inverse quantization unit 310 may be configured to perform inverse quantization (i.e., dequantization) on the quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 304. The inverse quantization process may include using quantization parameters calculated by video encoder 20 for each video block in a video slice to determine the degree of quantization to be applied, and similarly, the degree of inverse quantization to be applied.
[0216] Inverse transform processing unit 312 is configured to apply an inverse transform (eg, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients in order to produce residual blocks in the pixel domain.
[0217] The reconstruction unit 314 (e.g., adder 314) is configured to add the inverse transform block 313 (i.e., the reconstructed residual block 313) to the prediction block 365, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365, to obtain a reconstructed block 315 in the sample domain.
[0218] Loop filter unit 320 (either in the coding loop or after the coding loop) is configured to filter reconstructed block 315 to obtain filtered block 321 to smooth pixel transitions or enhance video quality. In an example, loop filter unit 320 may be configured to perform any combination of the filtering techniques described below. Loop filter unit 320 is intended to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or other filters, e.g., a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 320 is shown in FIG. 3 as an in-loop filter, in another implementation, loop filter unit 320 may be implemented as a post-loop filter.
[0219] The decoded video blocks in a given frame or picture are then Ku is , are stored in the decoded picture buffer 330, which stores reference pictures used for subsequent motion compensation.
[0220] The decoder 30 outputs, via an output 332, for presentation or viewing to a user, e.g., decoded pictures 3 It is configured to output 31.
[0221] Other variations of the video decoder 30 may be used to decode the compressed bitstream. For example, the decoder 30 may generate an output video stream without the loop filter unit 320. For example, a non-transform-based decoder 30 may, for some blocks or frames, directly inverse quantize the residual signal without the inverse transform processing unit 312. In another implementation, the video decoder 30 may have the inverse quantization unit 310 and the inverse transform processing unit 312 combined into a single unit.
[0222] Specifically, in this embodiment of the present application, the decoder 30 may be configured to implement the video picture decoding methods described in the following embodiments.
[0223] It should be understood that other structural variations of the video decoder 30 may be used to decode the encoded video bitstream. For example, the video decoder 30 may generate an output video stream without processing by the filter 320. Alternatively, for some picture blocks or picture frames, the entropy decoding unit 304 in the video decoder 30 does not obtain quantized coefficients through decoding, and correspondingly, processing by the inverse quantization unit 310 and the inverse transform processing unit 312 is not required. The loop filter 320 is optional. In addition, in the case of lossless compression, the inverse quantization unit 310 and the inverse transform processing unit 312 are also optional. It should be understood that inter prediction units and intra prediction units may be selectively used in different application scenarios.
[0224] It should be understood that in the encoder 20 and the decoder 30 in the present application, the processing result of a step may be further processed and output to the next step. For example, after a step such as interpolation filtering, motion vector derivation, or loop filtering, a further operation such as clip or shift is performed on the processing result of the corresponding step.
[0225] For example, a motion vector of a control point of a current picture block derived based on the motion vector of a neighboring affine coding block, or a motion vector of a sub-block of the current picture block derived based on the motion vector of a neighboring affine coding block, may be further processed. This is not limited in the present application. For example, the value of a motion vector is constrained to be within a specific bit width range. Assuming that the allowed bit width of a motion vector is bitDepth, the value of a motion vector ranges from -2^(bitDepth-1) to 2^(bitDepth-1)-1, where the symbol "^" represents the exponent. When bitDepth is 16, the value ranges from -32768 to 32767. When bitDepth is 18, the value ranges from -131072 to 131071. In another example, the value of a motion vector (e.g., the motion vector MV of four 4x4 sub-blocks in one 8x8 picture block) is constrained so that the maximum difference between the integer parts of the MVs of the four 4x4 sub-blocks does not exceed N pixels, for example, not exceeding 1 pixel.
[0226] 4 is a schematic structural diagram of a video coding device 400 (e.g., video encoding device 400 or video decoding device 400) according to an embodiment of the present application. The video coding device 400 is suitable for implementing embodiments described herein. In an embodiment, the video coding device 400 may be a video decoder (e.g., decoder 30 of FIG. 1A) or a video encoder (e.g., encoder 20 of FIG. 1A). In another embodiment, the video coding device 400 may be one or more components of the decoder 30 of FIG. 1A or the encoder 20 of FIG. 1A.
[0227] The video coding device 400 includes an ingress port 410 and a receiving unit (Rx) 420 configured to receive data, a processor, logic unit, or central processing unit (CPU) 430 configured to process the data, a transmitter unit (Tx) 440 and an egress port 450 configured to transmit the data, and a memory 460 configured to store the data. The receiving unit 420 may also be referred to as a receiver 420 or a receiver unit 420. The transmitter unit 440 may also be referred to as a transmitter 440 for short. The video coding device 400 may further include optical-electrical and electro-optical (EO) components coupled to the ingress port 410, the receiver unit 420, the transmitter unit 440, and the egress port 450 for the egress or ingress of optical or electrical signals.
[0228] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. The processor 430 communicates with the ingress port 410, the receiver unit 420, the transmitter unit 440, the egress port 450, and the memory 460. The processor 430 includes a coding module 470 (e.g., an encoding module 470 or a decoding module 470). The encoding / decoding module 470 is provided in the embodiments of the present application. Video Picture Decoding and Encoding To implement the method, embodiments disclosed herein are implemented. For example, encoding / decoding module 470 performs, processes, or provides various coding operations. Thus, encoding / decoding module 470 provides significant improvements to the functionality of video coding device 400 and affects the transformation of video coding device 400 into different states. Alternatively, encoding / decoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.
[0229] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as overflow data storage to store programs when such programs are selected for execution and to store instructions and data read during program execution. Memory 460 may be volatile and / or nonvolatile, and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and / or static random access memory (SRAM).
[0230] 5 is a simplified block diagram of an apparatus 500 that may be used as either or both of the source device 12 and the destination device 14 of FIG. 1A according to an exemplary embodiment. The apparatus 500 may implement the technology of the present application. In other words, FIG. 5 is a schematic block diagram of an implementation of an encoding or decoding device (shortly referred to as coding device 500) according to an embodiment of the present application. The coding device 500 may include a processor 510, a memory 530, and a bus system 550. The processor and the memory are connected through the bus system. The memory is configured to store instructions. The processor is configured to execute the instructions stored in the memory. The memory of the coding device stores program code. The processor may invoke the program code stored in the memory to perform various video picture encoding or decoding methods described in the present application. To avoid repetition, details will not be described here.
[0231] In this embodiment of the application, processor 510 may be a Central Processing Unit (abbreviated "CPU"). Alternatively, processor 510 may be another general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, a discrete gate or transistor logic device, a discrete hardware component, etc. The general-purpose processor may be a microprocessor, any conventional processor, etc.
[0232] The memory 530 may include a read-only memory (ROM) device or a random-access memory (RAM) device. Alternatively, any other suitable type of storage device may be used as the memory 530. The memory 530 may include code and data 531 accessed by the processor 510 through the bus 550. The memory 530 may further include an operating system 533 and application programs 535. The application programs 535 include at least one program that enables the processor 510 to perform the video encoding or decoding methods described in this application (in particular the video picture encoding or decoding methods described in this application). For example, the application programs 535 may include applications 1 to N. The applications further include video encoding or decoding applications (referred to as video coding applications for short) that perform the video encoding or decoding methods described in this application.
[0233] The bus system 550 may include not only a data bus, but also a power bus, a control bus, a status signal bus, etc. However, for clarity of explanation, various types of buses in the drawings are marked as the bus system 550.
[0234] Optionally, coding device 500 may further include one or more output devices, such as a display 570. In one example, display 570 may be a touch-sensitive display that combines a display with a touch-sensing unit operable to sense touch input. Display 570 may be connected to processor 510 through bus 550.
[0235] The following describes related techniques used for inter prediction in this application.
[0236] (1) Merge mode In merge mode, a motion vector candidate list is first constructed based on the motion information of coded blocks spatially or temporally neighboring the current block. Then, the motion information candidate corresponding to the smallest rate-distortion cost in the motion vector candidate list is used as the motion vector predictor (MVP) of the current block, and the index value (e.g., hereinafter referred to as merge index) of the position of the optimal motion information candidate in the motion vector candidate list is transferred to the decoder side. The positions and scanning order of the neighboring blocks are predetermined. The rate-distortion cost is calculated according to Equation (1), where J represents the rate-distortion cost (RD cost), SAD is the sum of absolute differences (SAD) between the original pixel value and the predicted pixel value obtained through motion estimation by using the motion vector candidate predictor, R represents the bit rate, and λ represents the Lagrange multiplier. The encoder side transfers the index value of the selected motion vector predictor in the motion vector candidate list to the decoder side. Furthermore, a motion search is performed in the neighborhood centered on the MVP to obtain the actual motion vector of the current block. The encoder side transfers the difference between the MVP and the actual motion vector (ie, the residual) to the decoder side. J=SAD+λR (1)
[0237] Figure 6 shows spatial motion information candidates and temporal motion information candidates for a current block. As shown in Figure 6, spatial motion information candidates are from five spatially adjacent blocks (A0, A1, B0, B1, and B2). If a neighboring block is unavailable (the neighboring block does not exist, the neighboring block is not coded, or the prediction mode used for the neighboring block is not an inter prediction mode), the motion information of the neighboring block is not added to the motion vector candidate list. The temporal motion information candidates for the current block are obtained by scaling the motion vectors of the blocks at corresponding positions in the reference frame based on the picture order counts (POC) of the reference frame and the current frame. It is first determined whether the block at position T in the reference frame is available. If the block is not unavailable, the block at position C in the reference frame is selected.
[0238] In merge mode, the positions and scanning order of neighboring blocks are predetermined. In addition, the positions and scanning order of neighboring blocks can be different in different modes.
[0239] It can be seen that one motion vector candidate list needs to be maintained in merge mode. Every time before new motion information is added to the candidate list, it is first checked whether the same motion information exists in the list. If the same motion information exists in the list, the motion information is not added to the list. This checking process is called pruning of the motion vector candidate list. Pruning the list is to avoid the same motion information in the list to avoid redundant rate-distortion cost calculation.
[0240] (2) Skip mode Skip mode is a special merge mode. The difference is that there is no residual error during transmission and only the merge candidate index is transferred. The merge index is used to indicate the best or target motion information candidate in the merge motion information candidate list.
[0241] (3) Triangle prediction unit (triangle PU) mode As shown in Figure 7, the current block is divided into two triangular prediction units, and a motion vector and a reference frame index are selected from the uni-prediction candidate list for each triangular prediction unit. Then, a predicted value is obtained for each of the two triangular prediction units, and a predictor is obtained by performing adaptive weighting on the pixels included in the diagonal or anti-diagonal region. Then, a transform and quantization process is performed on the entire current block. In addition, it should be noted that the triangular prediction unit mode is usually only applied in skip mode or merge mode. Figure 7(1) shows the upper-left to lower-right split mode (i.e., split from the upper-left corner to the lower-right corner), and Figure 7(2) shows the upper-right to lower-left split mode (i.e., split from the upper-right corner to the lower-left corner).
[0242] Generally, a uni-prediction candidate list in a triangular prediction unit mode may include five predicted motion vector candidates. These predicted motion vector candidates are obtained, for example, by using the seven neighboring blocks (five spatial neighboring blocks and two temporal corresponding blocks) in FIG. 6. The motion information of the seven neighboring blocks is searched for, and the seven neighboring blocks are arranged in order into a uni-prediction candidate list. For example, this order may be the bi-prediction motion vector in L0, the bi-prediction motion vector in L1, and the average of the motion vectors in L0 and L1. If there are fewer than five candidates, a zero motion vector 0 is added to the uni-prediction candidate list. During encoding, the uni-prediction candidate list is obtained in the above-mentioned manner. For example, in the uni-prediction candidate list, forward prediction motion information is used to predict the pixel predictor of one triangular PU, and backward prediction motion information is used to predict the pixel predictor of the other triangular PU. The encoder side selects the best motion vector through scanning. For example, the following scheme {m, i, j} may be used: {0, 1, 0}, {1, 0, 1}, {1, 0, 2}, {0, 0, 1}, {0, 2, 0} {1, 0, 3}, {1, 0, 4}, {1, 1, 0}, {0, 3, 0}, {0, 4, 0} {0, 0, 2}, {0, 1, 2}, {1, 1, 2}, {0, 0, 4}, {0, 0, 3} {0, 1, 3}, {0, 1, 4}, {1, 1, 4}, {1, 1, 3}, {1, 2, 1} {1, 2, 0}, {0, 2, 1}, {0, 4, 3}, {1, 3, 0}, {1, 3, 2} {1, 3, 4}, {1, 4, 0}, {1, 3, 1}, {1, 2, 3}, {1, 4, 1} {0, 4, 1}, {0, 2, 3}, {1, 4, 2}, {0, 3, 2}, {1, 4, 3} {0, 3, 1}, {0, 2, 4}, {1, 2, 4}, {0, 4, 2}, {0, 3, 4} In {m,i,j}, m in the first position represents the upper left to lower right split mode or the upper right to lower left split mode, i in the second position represents the forward motion information of the i-th predicted motion vector candidate used for the first triangular PU, and j in the third position represents the backward motion information of the j-th predicted motion vector candidate used by the second triangular PU.
[0243] For the adaptive weighting process performed based on the predictors of the pixels in the diagonal or anti-diagonal regions, please refer to Figure 8. After the predictions of the triangular prediction units P1 and P2 are completed, adaptive weighting is performed on the pixels in the diagonal or anti-diagonal regions to obtain the final predictor of the current block. For example, the predictor of the pixel at position 2 in the left diagram of Figure 8 is:
number
[0244] The two sets of weighted parameters are:
[0245] The first set of weighted parameters {7 / 8, 6 / 8, 4 / 8, 2 / 8, 1 / 8} and {7 / 8, 4 / 8, 1 / 8} are used for the luma and chroma points, respectively.
[0246] The second set of weighted parameters {7 / 8, 6 / 8, 5 / 8, 4 / 8, 3 / 8, 2 / 8, 1 / 8} and {6 / 8, 4 / 8, 2 / 8} are used for the luma and chroma points, respectively.
[0247] One set of weighted parameters is used to code the current block. When the reference pictures of the two prediction units are different or the motion vector difference between the two prediction units is greater than 16 pixels, the second set of weighted parameters is selected; otherwise, the first set of weighted parameters is used.
[0248] (4) Merge mode using motion vector difference mode with motion vector difference, MMVD) Merge candidates are used in MMVD. One or more motion vector candidates are selected from the merge motion vector candidate list, and motion vector (MV) extension representation is performed based on the motion vector candidates. The MV extension representation includes the starting point, motion step size, and motion direction of the MV.
[0249] An existing merge motion vector candidate list is used, and the selected motion vector candidate is of the default merge type (e.g., MRG_TYPE_DEFAULT_N). The selected motion vector candidate is the starting point of the MV. In other words, the selected motion vector candidate is used to determine the initial position of the MV. As shown in Table 1, the base candidate index (Base candidate IDX) indicates which motion vector candidate is selected from the motion vector candidate list as the optimal motion vector candidate.
[0250] [Table 1]
[0251] If the merge motion vector candidate list includes one motion vector candidate for selection, the Base candidate IDX may not be determined.
[0252] The distance index (Distance IDX) represents the offset distance information of the motion vector. The value of the distance index represents the distance offset (e.g., a preset distance) from the initial position. The definition of the preset distance is shown in Table 2.
[0253] [Table 2]
[0254] The direction index (Direction IDX) represents the direction of the motion vector differential (MVD) based on the initial position. The direction index can include four cases in total. The specific definition is shown in Table 3.
[0255] [Table 3]
[0256] The process of determining a predicted pixel value for a current picture block by using MMVD is as follows: First, the starting point of the MV is determined based on the base candidate IDX. For example, the starting point is the hollow point in the center of FIG. 9A or the position corresponding to the solid line in FIG. 9B. Then, the offset direction based on the starting point of the MV is determined based on the direction IDX, and the specific amount of pixel elements that is the offset in the direction indicated by the direction IDX is determined based on the distance IDX. For example, direction IDX == 00 and distance IDX = 2 indicate that a motion vector offset by one pixel element in the x direction is used as the motion vector of the current picture block to predict or obtain a predicted pixel value of the current picture block.
[0257] The coding of the MMVD indicator is performed after the coding of the skip indicator and the merge indicator. If the skip indicator or the merge indicator is true, the MMVD indicator needs to be coded. For example, if the skip indicator or the merge indicator is 1 and the MMVD indicator is 1, another related indicator corresponding to the MMVD needs to be coded.
[0258] (5) Combined inter- and intra-prediction Combined inter-picture merge and intra-picture prediction (CIIP) combines intra prediction and merge prediction. A flag bit is introduced when a merge mode is allowed to be used for inter prediction of the current picture block. When the flag bit is 1, it indicates that one intra mode is selected from the intra candidate list. For the luma component, the candidates in the intra candidate list are selected from four intra prediction modes: DC mode, PLANAR mode, and horizontal prediction Based on the size of the current picture block, the length of the intra candidate list can be set to 3 or 4. When the width of the current picture block is greater than twice its height, the horizontal prediction The vertical mode is excluded from the intra candidate list when the height of the current picture block is greater than twice its width. predictiona mode is excluded from an intra candidate list, an intra prediction mode is selected from the intra candidate list based on an intra mode index, intra prediction is performed on the current block by using the selected intra prediction mode to obtain an intra predicted block of the current block, inter prediction is performed on the current block based on a motion information candidate determined from the motion information candidate list based on a merge index to obtain an inter predicted block of the current block, and weighted averaging is performed on the intra predicted block and the inter predicted block to obtain a predicted block of the current block in a combined inter prediction and intra prediction mode.
[0259] Additionally, it should be noted that in this application, "at least one" means one or more, and "multiple" means two or more. The term "and / or" describes an associative relationship for describing related objects and indicates that three relationships may exist. For example, A and / or B may represent the case where only A is present, both A and B are present, or only B is present, and A and B may be singular or plural. The character " / " generally represents an "or" relationship between related objects. "At least one of the following" or similar expressions refers to any combination of these items, including a singular item or any combination of multiple items. For example, at least one of a, b, or c may represent a, b, c, ab, ac, bc, or abc, where a, b, and c may be singular or plural.
[0260] Currently, MMVD and triangle PU mode are introduced in inter prediction. During coding, if it is determined that the inter prediction mode used for the current block is in merge mode or skip mode, both the MMVD indicator and the triangle PU indicator need to be coded. In practice, when MMVD is used, the triangle PU mode is not used. In other words, there is no case where both the MMVD indicator bit and the triangle PU indicator bit are true. In this case, if both the MMVD indicator bit and the triangle PU indicator bit are coded, redundancy occurs. This results in a waste of coding resources and increases the bit overhead of the bitstream.
[0261] Based on this, embodiments of the present application provide a video picture decoding and encoding method and a video picture decoding and encoding device. When it is determined that merge mode or skip mode is to be used, if it is determined through decoding that the MMVD indicator is true, the triangle PU indicator does not need to be coded. The triangle PU indicator is coded only when it is determined through decoding that the MMVD indicator is false. This can reduce the amount of coding resources used to a certain extent and reduce the bit overhead of the bitstream. The method and device are based on the same inventive concept. Because the principle of solving the problem of the method is similar to that of the device, implementations of the device and the method can cross-reference each other, and repeated descriptions will not be provided.
[0262] There are two cases for the video picture decoding and encoding method provided in the embodiment of the present application: In the first case, skip mode is used for inter prediction; In the second case, merge mode is used for inter prediction.
[0263] The following describes in detail the video picture decoding method provided in the present application from the decoder side perspective with reference to the accompanying drawings. Specifically, the video picture decoding method may be performed by a decoder 30, or may be performed by an entropy decoding unit and a prediction processing unit in the decoder, or may be performed by a processor.
[0264] The video picture decoding method in the first case is described from the decoding point of view, as shown in FIG. 10A.
[0265] S1001a: Parse the first indicator from the bitstream.
[0266] The first indicator is used to indicate whether skip mode is used for inter prediction of the current picture to be processed. In other words, the first indicator is used to indicate whether skip mode is allowed to be used for inter prediction of the current picture to be processed. For example, in standard text or code, the first indicator may be represented by a syntax element cu_skip_flag[x0][y0]. For example, when cu_skip_flag[x0][y0] == 1, it indicates that skip mode is used for inter prediction of the current picture to be processed. For example, skip mode is allowed to be used. When cu_skip_flag[x0][y0] == 0, it indicates that skip mode is not used for inter prediction of the current picture to be processed. For example, skip mode is not allowed to be used.
[0267] S1002a: Analyzing a second indicator from the bitstream when the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed. 。
[0268] The second indicator is used to indicate whether MMVD in skip mode is used for inter prediction of the current picture to be processed. In other words, the second indicator is used to indicate whether MMVD is allowed to be used for inter prediction of the current picture to be processed. For example, in standard text or code, the second indicator may be represented by a syntax element skip_mmvd_flag[x0][y0] or mmvd_flag[x0][y0]. mmvd_flag[x0][y0] is used as an example. When mmvd_flag[x0][y0] == 1, it indicates that MMVD is allowed to be used for inter prediction of the current picture to be processed. When mmvd_flag[x0][y0] == 0, it indicates that MMVD is not allowed to be used for inter prediction of the current picture to be processed.
[0269] S1003a: When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, analyze a third indicator from the bitstream.
[0270] The third indicator is used to indicate whether the triangle PU mode is used for inter prediction of the current picture to be processed. In other words, the third indicator is used to indicate whether the triangle PU mode is allowed to be used for inter prediction of the current picture to be processed.
[0271] When the third indicator is a first value, it indicates that a triangle PU mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangle PU mode is not used for inter prediction of the current picture block to be processed. For example, the first value is 1 and the second value is 0. In another example, the first value is 0 and the second value is 1. (For example, it should be understood that when the first value is 0, an existing indicator may be reused. For example, the third indicator may be represented by ciip_flag, and when ciip_flag=0, it indicates that CIIP is not used, and thus indirectly indicates another mode, such as that triangle PU mode is allowed to be used for inter prediction of the current picture block to be processed.)
[0272] For example, in standard text or code, the third indicator may be represented by the syntax elements skip_triangle_flag[x0][y0], triangle_flag[x0][y0], or merge_triangle_flag[x0][y0]. skip_triangle_flag[x0][y0] is used as an example. When skip_triangle_flag[x0][y0] == 1, it indicates that the triangle PU mode is allowed to be used for inter prediction of the current picture to be processed. When skip_triangle_flag[x0][y0] == 0, it indicates that the triangle PU mode is not allowed to be used for inter prediction of the current picture to be processed.
[0273] S1004a: Perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of a first indicator, a second indicator, and a third indicator.
[0274] When the third indicator indicates that the triangular prediction unit mode is to be used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using the triangular prediction unit mode.
[0275] Alternatively, when the third indicator indicates that the triangular prediction unit mode is not used for inter prediction of the current picture block to be processed, inter prediction is performed for the current picture block to be processed by using skip mode.
[0276] It should be understood that when the first indicator is decoded as true, for example, cu_skip_flag[x0][y0] = 1, in other words, when skip mode can be used for inter prediction of the current picture block to be processed, the operation of decoding the second indicator is performed, and MMVD is applied in skip mode. Therefore, the second indicator is used to indicate whether MMVD is used for inter prediction of the current picture to be processed. In other words, the second indicator is used to indicate whether MMVD in skip mode is used for inter prediction of the current picture to be processed. Similarly, the third indicator is used to indicate whether triangle PU mode is used for inter prediction of the current picture to be processed. In other words, the first indicator is used to indicate whether MMVD is used for inter prediction of the current picture block to be processed. 3 The indicator is used to indicate whether the triangle PU mode is used for inter prediction of the current picture to be processed in skip mode.
[0277] S1005a: When the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, perform inter prediction on the current picture block to be processed by using MMVD.
[0278] In one example, when it is determined and indicated that the triangle PU mode is not used in the skip mode for the inter prediction of the currently to be processed picture block, it may be determined that the skip mode is used for the inter prediction. Of course, another mode in the skip mode may be analyzed. In this case, another mode in the skip mode may alternatively be used for the inter prediction of the currently to be processed picture block.
[0279] In one possible example, when the third indicator should be parsed from the bitstream, and when it is determined that the current picture block to be processed satisfies the condition that the triangle PU mode is allowed to be used for inter prediction, the third indicator is parsed from the bitstream. In other words, when the second indicator indicates that the MMVD is not used for the inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that the triangle PU mode is allowed to be used for inter prediction, the third indicator is parsed from the bitstream.
[0280] The conditions may include at least one of the following: (1) The triangle PU control bit is true (e.g., sps_triangle_enabled_flag is true), (2) The video frame containing the current picture block to be processed is a B frame (slice_type == B); (3) The product of the height and width of the current picture block to be processed is 16 or greater; and (4) Affine mode is not allowed to be used for the current picture block to be processed.
[0281] In one possible example, when the second indicator indicates that MMVD is used in skip mode for inter prediction of the current picture block to be processed, the operation of decoding the third indicator is not performed. In other words, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, it can be directly determined or inferred that triangle PU mode is not used for inter prediction of the current picture block to be processed. Furthermore, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD in merge mode. In other words, when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the related indicator for triangle PU mode is not analyzed, and inter prediction is directly performed on the current picture block to be processed by using MMVD in skip mode.
[0282] However, it should be understood that whether the condition that the triangular prediction unit mode is allowed to be used for inter prediction is met may be determined before whether the triangular prediction unit mode is used for the current picture block, and indeed, whether the triangular prediction unit mode is used for the current picture block, is determined based on the value of merge_triangle_flag. If merge_triangle_flag is equal to 1, the triangular prediction unit mode is used or allowed to be used for the current picture block; otherwise, the triangular prediction unit mode is not used or allowed to be used for the current picture block.
[0283] The following provides an example of pseudocode for an embodiment corresponding to FIG. 10A. void CABACReader::triangle_mode(CodingUnit& cu) { RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET(STATS__CABAC_BITS__TRIANGLE_FLAG); if (!cu.cs->slice->getSPS()->getSpsNext().getUseTriangle() ||!cu.cs->slice->isInterB() || cu.lwidth() * cu.lheight() < TRIANGLE_MIN_SIZE || cu.affine) { return; } #if JVET_L0054_MMVD if (cu.firstPU->mergeFlag && (cu.firstPU->mmvdMergeFlag || cu.mmvdSkip)) { return; } #endif unsigned flag_idx = DeriveCtx::CtxTriangleFlag(cu); cu.triangle = m_BinDecoder.decodeBin(Ctx::TriangleFlag(flag_idx)); DTRACE(g_trace_ctx, D_SYNTAX, "triangle_mode() triangle_mode=%d pos=(%d,%d) size: %dx%d\n", cu.triangle, cu.Y().x, cu.Y().y, cu.lumaSize().width, cu.lumaSize().height); }
[0284] The following gives a detailed description from the perspective of coding. Figure 10B shows a schematic flowchart of an example of a video picture coding method.
[0285] S1001b: Determine the prediction mode to be used for inter prediction of the current picture block to be processed.
[0286] S1001b When the above is implemented, the prediction mode used for inter prediction of the current picture block to be processed may be determined from one or more inter prediction modes for the current picture block to be processed according to a rate-distortion cost criterion in the process of determining or selecting an appropriate prediction mode for the current picture block to be processed. For example, the prediction mode corresponding to the minimum rate-distortion cost is selected as the prediction mode used for inter prediction of the current picture block to be processed.
[0287] S1002b: Encoding, in the bitstream, indicator information used to indicate the determined prediction mode, the indicator information including a first indicator, the indicator information further including a second indicator when the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed, and the indicator information further including a third indicator when the second indicator indicates that a merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed.
[0288] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0289] For the description of the first indicator, the second indicator, and the third indicator, please refer to the description of the decoding side, and the details will not be described again here.
[0290] In one possible implementation, when coded in the bitstream, the indicators may be coded one by one, and whether a later indicator is coded in the bitstream is determined based on the value of the previous indicator.
[0291] In one example, B1: encode the first indicator in the bitstream.
[0292] B2: When the first indicator indicates that merge mode is used for inter prediction of the current picture block to be processed, encode the second indicator in the bitstream.
[0293] B3: When the second indicator indicates that the merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, encode the third indicator in the bitstream.
[0294] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0295] In another possible implementation, the values of the indicators may be determined first, and then it is determined based on the values which indicators need to be coded in the bitstream.
[0296] For example, C1: determine the value of the first indicator, the value of the second indicator, and the value of the third indicator, and then execute C21, C22, or C23.
[0297] C21: Encoding a first indicator, a second indicator, and a third indicator in a bitstream, wherein the value of the first indicator is used to indicate that skip mode is used for inter prediction of the current picture block to be processed, the value of the second indicator is used to indicate that merge mode MMVD using motion vector differential is not used for inter prediction of the picture block to be processed, and the value of the third indicator is used to indicate that triangular prediction unit mode is used for inter prediction of the picture block to be processed.
[0298] C22: Encoding a first indicator, a second indicator, and a third indicator in a bitstream, wherein the value of the first indicator is used to indicate that skip mode is used for inter prediction of the current picture block to be processed, the value of the second indicator is used to indicate that merge mode MMVD using motion vector differential is not used for inter prediction of the picture block to be processed, and the value of the third indicator is used to indicate that triangular prediction unit mode is not used for inter prediction of the picture block to be processed.
[0299] C23: Encoding a first indicator and a second indicator in the bitstream, the value of the first indicator being used to indicate that skip mode is used for inter prediction of the current picture block to be processed, and the value of the second indicator being used to indicate that merge mode MMVD using motion vector differentials is used for inter prediction of the picture block to be processed.
[0300] In one possible implementation, when the indicator information includes a second indicator (when the bitstream includes the second indicator), the second indicator is located after the first indicator in the bitstream, or when the indicator information includes a second indicator and a third indicator (when the bitstream includes the third indicator), the third indicator is located after the second indicator and the second indicator is located after the first indicator in the bitstream.
[0301] In one possible implementation, when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, the indicator information further includes a fourth indicator (in other words, encodes the fourth indicator in the bitstream); When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator (in other words, encodes the fifth indicator in the bitstream); and When the fifth indicator indicates that merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator (in other words, encodes the sixth indicator in the bitstream).
[0302] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0303] In one possible design, when the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator: When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a third indicator.
[0304] The video picture decoding method in the second case is described from the decoding point of view, as shown in FIG. 11A.
[0305] S1101a: Parse the fourth indicator from the bitstream.
[0306] The fourth indicator is used to indicate whether merge mode is used for inter prediction of the current picture to be processed. 4 The fourth indicator is used to indicate whether a merge mode is allowed to be used for inter prediction of the current picture to be processed. For example, in standard text or code, the fourth indicator may be represented by a syntax element merge_flag[x0][y0]. For example, when merge_flag[x0][y0] == 1, it indicates that a merge mode is allowed to be used for inter prediction of the current picture to be processed, or when merge_flag[x0][y0] == 0, it indicates that a merge mode is not allowed to be used for inter prediction of the current picture to be processed.
[0307] S1102a: Analyzing a fifth indicator from the bitstream when the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed.。
[0308] The fifth indicator is used to indicate whether MMVD in merge mode is used for inter-prediction of the current picture to be processed. In other words, the fifth indicator is used to indicate whether MMVD is allowed to be used for inter-prediction of the current picture to be processed. For example, in standard text or code, the fifth indicator may be represented by a syntax element merge_mmvd_flag[x0][y0] or mmvd_flag[x0][y0]. For example, when merge_mmvd_flag[x0][y0] == 1, it indicates that MMVD is allowed to be used for inter-prediction of the current picture to be processed, or when merge_mmvd_flag[x0][y0] == 0, it indicates that MMVD is not allowed to be used for inter-prediction of the current picture to be processed.
[0309] S1103a: When the fifth indicator indicates that MMVD is not used in merge mode for inter prediction of the current picture block to be processed, analyze a sixth indicator from the bitstream.
[0310] The sixth indicator is used to indicate whether the triangle PU mode is allowed to be used for inter prediction of the current picture to be processed. In other words, the sixth indicator is used to indicate whether the triangle PU mode is allowed to be used for inter prediction of the current picture to be processed in merge mode.
[0311] When the sixth indicator is the third value, it indicates that the triangle PU mode is allowed to be used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that the triangle PU mode is not allowed to be used for inter prediction of the current picture block to be processed. For example, the third value is 1 and the fourth value is 0. In another example, the third value is 0 and the fourth value is 1.
[0312] For example, in standard text or code, the sixth indicator may be represented by a syntax element merge_triangle_flag[x0][y0] or triangle_flag[x0][y0]. For example, when merge_triangle_flag[x0][y0] == 1, it indicates that the triangle PU mode is allowed to be used for inter prediction of the current picture to be processed, or when merge_triangle_flag[x0][y0] == 0, it indicates that the triangle PU mode is not allowed to be used for inter prediction of the current picture to be processed.
[0313] S1104a: Perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of a fourth indicator, a fifth indicator, and a sixth indicator.
[0314] When the sixth indicator is the third value, inter prediction is performed on the current picture block to be processed by using the triangular prediction unit mode.
[0315] Alternatively, when the sixth indicator is the fourth value, inter prediction is performed on the current picture block to be processed by using the merge mode.
[0316] S1105a: When the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, perform inter prediction on the current picture block to be processed by using MMVD.
[0317] In one example, when it is determined that the triangle PU mode is not used in the merge mode for inter prediction of the current picture block to be processed, it may be determined that the merge mode is used for inter prediction. Naturally, another mode in the merge mode may be analyzed. In this case, another mode in the merge mode may alternatively be used for inter prediction of the current picture block to be processed.
[0318] In one possible example, when the sixth indicator should be parsed from the bitstream, and when it is determined that the current picture block to be processed satisfies the condition that the triangle PU mode is allowed to be used for inter prediction, the sixth indicator is parsed from the bitstream. In other words, when the fifth indicator indicates that the MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that the triangle PU mode is allowed to be used for inter prediction, the sixth indicator is parsed from the bitstream.
[0319] For the conditions, please refer to the relevant explanation in the embodiment corresponding to Figure 10A, and the details will not be described again here.
[0320] In one possible example, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the operation of decoding the sixth indicator is not performed. In other words, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, it can be directly determined or inferred that triangle PU mode is not used for inter prediction of the current picture block to be processed. Furthermore, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, inter prediction is performed on the current picture block to be processed by using MMVD in merge mode. In other words, when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed, the related indicator for triangle PU mode is not analyzed, and inter prediction is directly performed on the current picture block to be processed by using MMVD in merge mode.
[0321] In addition, in one possible implementation, the first indicator needs to be decoded before the fourth indicator is decoded from the bitstream, and the fourth indicator is decoded from the bitstream only when the first indicator indicates that skip mode is not used for inter-prediction of the current picture block to be processed. In other words, the video picture decoding procedure shown in Figure 11A is performed. When the first indicator indicates that skip mode is used for inter-prediction of the current picture block to be processed, the operation of decoding the fourth indicator is not performed. In other words, the video picture decoding procedure shown in Figure 11A is not performed, but the video picture decoding procedure shown in Figure 10A is performed.
[0322] It should be understood that the skip mode is one of the merge modes. Therefore, the second indicator and the fifth indicator in this specification may be named in the same manner. For example, both may be called mmvd_flag[x0][y0] or merge_mmvd_flag[x0][y0]. Similarly, the third indicator and the sixth indicator may be named in the same manner. For example, both may be called merge_triangle_flag[x0][y0] or triangle_flag[x0][y0].
[0323] It should be understood that when the fourth indicator is decoded as true, for example, merge_flag[x0][y0] = 1, in other words, when the merge mode can be used for inter prediction of the current block to be processed, the operation of decoding the fifth indicator is performed, and the MMVD is applied in the merge mode. Therefore, the fifth indicator is used to indicate whether the MMVD is used for inter prediction of the current picture to be processed. In other words, the fifth indicator is used to indicate whether the MMVD in the merge mode is used for inter prediction of the current picture to be processed. Similarly, the sixth indicator is used to indicate whether the triangle PU mode is used for inter prediction of the current picture to be processed. In other words, the sixth indicator is used to indicate whether the triangle PU mode is used for inter prediction of the current picture to be processed in the merge mode.
[0324] The following provides a detailed description from an encoding point of view: Figure 11B shows a schematic flowchart of an example of a video picture encoding method.
[0325] S1101b: Determine the prediction mode to be used for inter prediction of the current picture block to be processed.
[0326] S1102b: Encoding, in the bitstream, indicator information used to indicate the determined prediction mode, the indicator information including a fourth indicator, the indicator information further including a fifth indicator when the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, and the indicator information further including a sixth indicator when the fifth indicator indicates that a merge mode using motion vector differentials MMVD is not used for inter prediction of the current picture block to be processed.
[0327] When the sixth indicator is the third value, it indicates that the triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that the triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed.
[0328] For the explanation of the fourth indicator, the fifth indicator, and the sixth indicator, please refer to the explanation of the decoding side, and the details will not be explained again here.
[0329] In one possible implementation, when coded in the bitstream, the indicators may be coded one by one, and whether a later indicator is coded in the bitstream may be determined based on the value of the previous indicator or based on the meaning indicated by the previous indicator.
[0330] For example, E1: Encode the fourth indicator in the bitstream.
[0331] E2: When the fourth indicator indicates that merge mode is used for inter prediction of the current picture block to be processed, encode the fifth indicator in the bitstream.
[0332] E3: When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, encode the sixth indicator in the bitstream.
[0333] When the sixth indicator is the third value, it indicates that the triangular prediction unit mode is allowed to be used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that the triangular prediction unit mode is not allowed to be used for inter prediction of the current picture block to be processed.
[0334] In another possible implementation, the values of the indicators may be determined first, and then it is determined based on the values which indicators need to be coded in the bitstream.
[0335] For example, F1: Determine the value of the fourth indicator, the value of the fifth indicator, and the value of the sixth indicator, and then execute F21, F22, or F23.
[0336] F21: Encoding the fourth indicator, the fifth indicator, and the sixth indicator in the bitstream, wherein the value of the fourth indicator is used to indicate that a merge mode is used for inter-prediction of the current picture block to be processed, the value of the fifth indicator is used to indicate that a merge mode using motion vector differentials MMVD is not used for inter-prediction of the picture block to be processed, and the value of the sixth indicator is used to indicate that a triangular prediction unit mode is used for inter-prediction of the picture block to be processed.
[0337] F22: Encoding the fourth indicator, the fifth indicator, and the sixth indicator in the bitstream, where the value of the fourth indicator is used to indicate that merge mode is used for inter-prediction of the current picture block to be processed, the value of the fifth indicator is used to indicate that MMVD is not used for inter-prediction of the picture block to be processed, and the value of the sixth indicator is used to indicate that triangular prediction unit mode is not used for inter-prediction of the picture block to be processed.
[0338] F23: Encoding the fourth indicator and the fifth indicator in the bitstream, where the value of the fourth indicator is used to indicate that merge mode is used for inter prediction of the current picture block to be processed, and the value of the fifth indicator is used to indicate that MMVD is used for inter prediction of the picture block to be processed.
[0339] In one possible implementation, when the indicator information includes a fifth indicator (when the bitstream includes the fifth indicator), the fifth indicator is located after the fourth indicator in the bitstream, or when the indicator information includes a fifth indicator and a sixth indicator (when the bitstream includes the sixth indicator), the sixth indicator is located after the fifth indicator and the fifth indicator is located after the fourth indicator in the bitstream.
[0340] In one possible implementation form, when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator: When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a sixth indicator.
[0341] In one possible implementation form, the indicator information further includes a first indicator, where the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed.
[0342] In one possible design, the first indicator is located before the fourth indicator in the bitstream.
[0343] An embodiment of the present application further provides a video picture decoding method, including the following steps.
[0344] G1: Parse the seventh indicator (e.g., mh_intra_flag[x0][y0]) from the bitstream.
[0345] G2: When the seventh indicator indicates that combined inter and intra prediction (i.e., combined inter merge / intra prediction) is not used for the current picture block to be processed, analyze the eighth indicator (e.g., merge_triangle_flag[x0][y0]) from the bitstream.
[0346] When the eighth indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0347] G3: Perform inter prediction on the current picture block to be processed by using the inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0348] It should be understood that cases where other indicator information may be further analyzed before the eighth indicator is analyzed are not excluded. Cases where another condition needs to be considered to determine whether to analyze the eighth indicator are also not excluded. Another condition in this specification is, for example, sps_triangle_enabled_flag && slice_type (slice type) == B && cbWidth (width of current block) * cbHeight (height of current block) >= 16. In one example, sps_triangle_enabled_flag indicates whether a triangular prediction unit mode is allowed to be used for a sequence including the current picture block to be processed. In another example, conditions indicating that triangular prediction unit mode is allowed to be used for a picture including the current picture block to be processed may include the seventh indicator indicating that combined inter prediction and intra prediction is not used for the current picture block to be processed, sps_triangle_enabled_flag && slice_type (slice type) == B && cbWidth (width of current block) * cbHeight (height of current block) >= 16, etc.
[0349] An embodiment of the present application further provides another video picture decoding method, including the following steps.
[0350] H1: Parse the seventh indicator from the bitstream (e.g., mh_intra_flag[x0][y0]).
[0351] H2. When the current picture block to be processed satisfies the condition that a triangular prediction unit mode is allowed to be used for inter prediction, analyze an eighth indicator (merge_triangle_flag[x0][y0]) from the bitstream, and the condition that a triangular prediction unit mode is allowed to be used for inter prediction includes at least the seventh indicator indicating that a combined inter prediction and intra prediction mode is not used for the current picture block to be processed.
[0352] When the eighth indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0353] H3: Perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, wherein the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0354] For example, the conditions under which the triangular prediction unit mode is allowed to be used for inter prediction may include mh_intra_flag[x0][y0] (seventh indicator) == 0 && sps_triangle_enabled_flag && slice_type == B && cbWidth * cbHeight >= 16.
[0355] In one example, this specification describes example syntax structures of several inter prediction modes used to parse the current picture block, as shown in Table 4.
[0356] It should be understood that when the first indicator (cu_skip_flag[x0][y0]) is decoded as true, the fourth indicator (merge_flag[x0][y0]) is considered to be true by default.
[0357] [Table 4]
[0358] Based on the same inventive concept as the aforementioned method, an embodiment of the present application further provides a video picture decoding apparatus 1200, as shown in Figure 12. The apparatus 1200 includes: an entropy decoding unit 1201 and an inter prediction unit 1202.
[0359] In one possible implementation, the entropy decoding unit 1201 is configured to parse a first indicator from the bitstream; The entropy decoding unit 1201 is further configured to parse a second indicator from the bitstream when the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed; The entropy decoding unit 1201 is further configured to analyze a third indicator from the bitstream when the second indicator indicates that a merge mode MMVD using motion vector differentials is not used for inter prediction of the current picture block to be processed.
[0360] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0361] The inter prediction unit 1202 is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of a first indicator, a second indicator, and a third indicator.
[0362] For example, the inter prediction unit 1202 may be When the third indicator indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, performing inter prediction on the current picture block to be processed by using the triangular prediction unit mode; or When the third indicator indicates that the triangular prediction unit mode is not used for inter prediction of the current picture block to be processed, the inter prediction unit is particularly configured to perform inter prediction on the current picture block to be processed by using skip mode.
[0363] For example, the inter prediction unit 1202 is particularly configured to perform inter prediction on the current picture block to be processed by using MMVD when the second indicator indicates that MMVD is used for inter prediction of the current picture block to be processed.
[0364] For example, the entropy decoding unit 1201 may When the first indicator indicates that a skip mode is not used for inter prediction of the current picture block to be processed, analyze a fourth indicator from the bitstream; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, analyze a fifth indicator from the bitstream; The video coding unit is further configured to analyze a sixth indicator from the bitstream when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed.
[0365] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0366] Correspondingly, the inter prediction unit 1202 is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the first indicator, the fourth indicator, the fifth indicator, and the sixth indicator.
[0367] For example, when parsing the third indicator from the bitstream, the entropy decoding unit 1201 may: It is particularly configured to analyze a third indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0368] In one possible design, before parsing the third indicator from the bitstream, entropy decoding unit 1201 is further configured to parse a seventh indicator from the bitstream.
[0369] The conditions under which the triangular prediction unit mode is allowed to be used for inter prediction include the seventh indicator indicating that combined inter prediction and intra prediction is not used for the current picture block to be processed.
[0370] Correspondingly, the indicator information includes one or more of a first indicator, a second indicator, a third indicator, and a seventh indicator.
[0371] In one possible design, before parsing the third indicator from the bitstream, entropy decoding unit 1201 is further configured to parse a seventh indicator from the bitstream.
[0372] With regard to analyzing the third indicator from the bitstream, the entropy decoding unit is particularly configured to analyze the third indicator from the bitstream when the seventh indicator indicates that combined inter prediction and intra prediction is not used for the current picture block to be processed.
[0373] Correspondingly, the indicator information includes one or more of a first indicator, a second indicator, a third indicator, and a seventh indicator.
[0374] In another possible implementation, the entropy decoding unit 1201 is configured to parse a fourth indicator from the bitstream, The entropy decoding unit 1201 is further configured to analyze a fifth indicator from the bitstream when the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, and to analyze a sixth indicator from the bitstream when the fifth indicator indicates that a merge mode using motion vector differentials MMVD is not used for inter prediction of the current picture block to be processed.
[0375] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0376] The inter prediction unit 1202 is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the fourth indicator, the fifth indicator, and the sixth indicator.
[0377] For example, the inter prediction unit 1202 is particularly configured to perform inter prediction on the current picture block to be processed by using MMVD when the fifth indicator indicates that MMVD is used for inter prediction of the current picture block to be processed.
[0378] For example, when parsing the sixth indicator from the bitstream, the entropy decoding unit 1201 may: It is particularly configured to analyze a sixth indicator from the bitstream when the current picture block to be processed satisfies the condition that the triangular prediction unit mode is allowed to be used for inter prediction.
[0379] For example, the entropy decoding unit 1201 is further configured to parse a first indicator from the bitstream.
[0380] When parsing the fourth indicator from the bitstream, the entropy decoding unit 1201 The information processing unit is particularly configured to analyze a fourth indicator from the bitstream when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed. In this case, the information processing unit may further include the first indicator.
[0381] In yet another possible implementation form, the entropy decoding unit 1201 is configured to analyze a seventh indicator from the bitstream, and when the seventh indicator indicates that combined inter prediction and intra prediction is not used for the current picture block to be processed, analyze an eighth indicator from the bitstream, and when the eighth indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0382] The inter prediction unit 1202 is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0383] In yet another possible implementation form, the entropy decoding unit 1201 is configured to analyze a seventh indicator from the bitstream and, when the current picture block to be processed satisfies the condition that a triangular prediction unit mode is allowed to be used for inter prediction, analyze an eighth indicator from the bitstream, where the condition that a triangular prediction unit mode is allowed to be used for inter prediction includes at least the seventh indicator indicating that combined inter prediction and intra prediction is not used for the current picture block to be processed.
[0384] When the eighth indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the eighth indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0385] The inter prediction unit 1202 is configured to perform inter prediction on the current picture block to be processed by using an inter prediction mode indicated by indicator information in the bitstream, where the indicator information includes one or more of the seventh indicator and the eighth indicator.
[0386] It is further noted that for the specific implementation process of the entropy decoding unit 1201 and the inter prediction unit 1202, reference can be made to the detailed description in the embodiment of Figure 10A or Figure 11A. For the sake of brevity of this specification, the details will not be described again here.
[0387] Based on the same inventive concept as the aforementioned method, an embodiment of the present application further provides a video picture encoding apparatus 1300, as shown in Figure 13. The apparatus 1300 includes: an inter prediction unit 1301 and an entropy encoding unit 1302.
[0388] In one possible implementation form, the inter prediction unit 1301 is configured to determine a prediction mode to be used for inter prediction of a current picture block to be processed; the entropy coding unit 1302 is configured to code, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a first indicator; When the first indicator indicates that a skip mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a second indicator; When the second indicator indicates that the merge mode using motion vector differential MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator.
[0389] When the third indicator is a first value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the third indicator is a second value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0390] For example, when the indicator information includes a second indicator, the second indicator is located after the first indicator in the bitstream, or when the indicator information further includes a third indicator, the third indicator is located after the second indicator in the bitstream.
[0391] For example, when the first indicator indicates that skip mode is not used for inter prediction of the current picture block to be processed, the indicator information further includes a fourth indicator: When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that the merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator.
[0392] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0393] For example, when the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a third indicator: When the second indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a third indicator.
[0394] In another possible implementation, the inter prediction unit 1301 is configured to determine a prediction mode to be used for inter prediction of a current picture block to be processed; the entropy coding unit 1302 is configured to code, in the bitstream, indicator information used to indicate the determined prediction mode; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for inter prediction of the current picture block to be processed, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that the merge mode MMVD using motion vector differential is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator.
[0395] When the sixth indicator is the third value, it indicates that a triangular prediction unit mode is used for inter prediction of the current picture block to be processed, or when the sixth indicator is the fourth value, it indicates that a triangular prediction unit mode is not used for inter prediction of the current picture block to be processed.
[0396] For example, when the indicator information includes a fifth indicator, the fifth indicator is located after the fourth indicator in the bitstream, or when the indicator information includes a fifth indicator and a sixth indicator, the sixth indicator is located after the fifth indicator and the fifth indicator is located after the fourth indicator in the bitstream.
[0397] For example, when the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, the indicator information further includes a sixth indicator: When the fifth indicator indicates that MMVD is not used for inter prediction of the current picture block to be processed, and when the current picture block to be processed satisfies the condition that triangular prediction unit mode is allowed to be used for inter prediction, the indicator information further includes a sixth indicator.
[0398] For example, the indicator information further includes a first indicator, where the first indicator indicates that a skip mode is not used for inter prediction of the current picture block to be processed.
[0399] For example, in the bitstream, the first indicator is located before the fourth indicator.
[0400] For example, on the decoder side, in Figure 12, the position of the entropy decoding unit 1201 corresponds to the position of the entropy decoding unit 304 in Figure 3. In other words, for specific implementation forms of the function of the entropy decoding unit 1201, please refer to specific details of the entropy decoding unit 304 in Figure 3. The position of the inter prediction unit 1202 corresponds to the position of the inter prediction unit 344 in Figure 3. In other words, for specific implementation forms of the function of the inter prediction unit 1202, please refer to specific details of the inter prediction unit 344 in Figure 3.
[0401] For example, on the encoder side, in Figure 13, the position of the entropy coding unit 1302 corresponds to the position of the entropy coding unit 270 in Figure 2. In other words, for specific implementation forms of the functionality of the entropy decoding unit 1201, please refer to the specific details of the entropy coding unit 270 in Figure 2. The position of the inter prediction unit 1301 corresponds to the position of the inter prediction unit 244 in Figure 2. In other words, for specific implementation forms of the functionality of the inter prediction unit 1301, please refer to the specific details of the inter prediction unit 244 in Figure 2.
[0402] It is further noted that for the specific implementation process of the inter prediction unit 1301 and the entropy coding unit 1302, reference can be made to the detailed description in the embodiment of Figure 10B or Figure 11B. For the sake of brevity of this specification, the details will not be described again here.
[0403] Those skilled in the art will understand that the functions described with reference to the various illustrative logical blocks, modules, and algorithm steps disclosed and described herein may be implemented by hardware, software, firmware, or any combination thereof. When implemented by software, the functions described with reference to the illustrative logical blocks, modules, and steps may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware processing unit. Computer-readable media may include computer-readable storage media corresponding to tangible media, such as data storage media, or any communication medium that facilitates the transmission of a computer program from one place to another (e.g., according to a communication protocol). In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) a communication medium, such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this application. A computer program product may include a computer-readable medium.
[0404] By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other compact disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Additionally, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or another remote source over coaxial cable, fiber optic, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, or microwave, the coaxial cable, fiber optic, twisted pair, DSL, or wireless technologies such as infrared, radio, or microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but actually refer to non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), and Blu-ray discs. Disks typically reproduce data magnetically, while discs reproduce data optically by using lasers. Combinations of the foregoing should also be included within the scope of computer-readable media.
[0405] The encoding and decoding may be performed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described with reference to the exemplary logic blocks, modules, and steps described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a synthesis codec. Additionally, the techniques may be implemented entirely in one or more circuits or logic elements.
[0406] The technology of the present application may be implemented in a variety of apparatuses or devices, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in the present application to highlight functional aspects of an apparatus configured to implement the disclosed technology, but are not necessarily implemented by different hardware. Indeed, as described above, the various units may be combined into a codec hardware unit in combination with appropriate software and / or firmware, or may be provided by interoperable hardware units (including one or more processors as described above).
[0407] In the above embodiments, the description of each embodiment has its own points of interest, and for the parts not described in detail in one embodiment, please refer to the relevant descriptions of other embodiments.
[0408] The above description is merely an example of a specific implementation form of the present application and is not intended to limit the protection scope of the present application. Any variations or replacements that are easily understood by those skilled in the art and fall within the technical scope disclosed in the present application shall fall within the protection scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims. [Explanation of symbols]
[0409] 10 Video Encoding and Decoding Systems 12 Source Devices 13 Links 14 Destination Device 16 Picture Source 17 Raw Picture Data 18 Picture Preprocessor 19 Preprocessed Picture Data 20 Encoder 21 Encoded Picture Data 22 Communication Interface 28 Communication Interface 30 Decoder 31 Decoded Picture Data 32 Picture Post Processor 33 Post-processed picture data 34 Display Devices 40 Video Coding System 41 Imaging Device 42 Antenna 43 processors 44 memory 45 Display Devices 46 Processing Unit 47 Logic Circuits 201 Pictures 202 Input 203 Picture Block 204 Residual Calculation Unit 205 Residual Blocks 206 Conversion Processing Unit 207 Conversion Factor 208 quantization units 209 Quantized Transform Coefficients 210 Inverse Quantization Unit 211 Dequantized Coefficients 212 Inverse Transformation Processing Unit 213 Reconstructed Residual Blocks 214 Reconstruction Unit 215 reconstructed blocks 216 buffers 217 Reference Sample 220 Loop Filter Unit 221 Filtered Reconstructed Blocks 230 Decoded Picture Buffer 231 Referenced Picture Data 244 Inter Prediction Units 245 Inter Prediction Blocks 254 intra prediction units 255 intra-prediction blocks 260 Block Prediction Processing Unit 262 Mode Selection Unit 265 predicted blocks 270 Entropy Coding Unit 272 output 304 Entropy Decoding Unit 309 Quantized Coefficients 310 Inverse Quantization Unit 311 Dequantized Coefficients 312 Inverse Transformation Processing Unit 313 Reconstructed Residual Blocks 314 Reconstruction Unit, Adder 315 reconstructed blocks 316 buffers 317 Reference Sample 320 Loop Filter Unit 321 Filtered Blocks 330 Decoded Picture Buffer 331 decoded pictures 332 Output 344 Inter Prediction Unit 354 intra prediction units 360 Prediction Processing Unit 362 Mode Selection Unit 365 predicted blocks 400 Video Coding Device 410 downstream port 420 receiver 430 processor 440 Transmitter 450 upstream ports 460 memory 470 Encoding / Decoding Module 500 Apparatus, coding device 510 processor 530 memory 531 Data 533 Operating Systems 535 Application Program 550 Bus System 570 Display 1200 Video Picture Decoder 1201 Entropy Decoding Unit 1202 Inter Prediction Unit 1300 Video Picture Encoder 1301 Inter Prediction Unit 1302 Entropy Coding Unit
Claims
1. 1. A method for transmitting an encoded bitstream of video data, comprising: encoding indicator information used to indicate a prediction mode used for inter prediction of a current picture block into a bitstream, and encoding a residual block of the current picture block into the bitstream, the coded bitstream includes data of a residual block of the picture block transformed and quantized in a transform domain and indicator information indicating a prediction mode for inter prediction of the picture block; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for the inter prediction of the picture block, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that a merge mode using motion vector differential (MMVD) is not used for the inter prediction of the picture block, the indicator information further includes a sixth indicator; the sixth indicator is a picture block level indicator and has a third value or a fourth value, the third value indicating that a triangular prediction unit mode is allowed to be used for the inter prediction of the current picture block, and the fourth value indicating that the triangular prediction unit mode is not allowed to be used for the inter prediction of the current picture block; transmitting the encoded bitstream; A method comprising:
2. The method of claim 1 , wherein the third value is 0 and the fourth value is 1.
3. The method of claim 1 , wherein the indicator information further includes a first indicator indicating that skip mode is not used for the inter prediction of the picture block.
4. The method of claim 3 , wherein the first indicator is located before the fourth indicator in the encoded bitstream.
5. Storing the encoded bitstream. The method of claim 1 further comprising:
6. A device, at least one processor; one or more memories coupled to said at least one processor; Equipped with The one or more memories store programming instructions that, when executed by the at least one processor, cause the device to: encoding indicator information used to indicate a prediction mode used for inter prediction of a current picture block into a bitstream, and encoding a residual block of the current picture block into the bitstream, the coded bitstream includes data of a residual block of the picture block transformed and quantized in a transform domain and indicator information indicating a prediction mode for inter prediction of the picture block; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for the inter prediction of the picture block, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that a merge mode using motion vector differential (MMVD) is not used for the inter prediction of the picture block, the indicator information further includes a sixth indicator; the sixth indicator is a picture block level indicator and has a third value or a fourth value, the third value indicating that a triangular prediction unit mode is allowed to be used for the inter prediction of the current picture block, and the fourth value indicating that the triangular prediction unit mode is not allowed to be used for the inter prediction of the current picture block; and transmitting the encoded bitstream; A device that causes
7. The device of claim 6 , wherein the third value is 0 and the fourth value is 1.
8. The device of claim 6 , wherein the indicator information further includes a first indicator indicating that skip mode is not used for the inter prediction of the picture block.
9. The device of claim 8 , wherein the first indicator is located before the fourth indicator in the encoded bitstream.
10. The programming instructions, when executed by the at least one processor, cause the device to: storing the encoded bitstream; The device of claim 6, further comprising:
11. A non-transitory computer-readable storage medium having one or more instructions stored thereon, The one or more instructions, when executed on a computer, cause the computer to perform operations, including: encoding indicator information used to indicate a prediction mode used for inter prediction of a current picture block into a bitstream, and encoding a residual block of the current picture block into the bitstream, the coded bitstream includes data of a residual block of the picture block transformed and quantized in a transform domain and indicator information indicating a prediction mode for inter prediction of the picture block; the indicator information includes a fourth indicator; When the fourth indicator indicates that a merge mode is used for the inter prediction of the picture block, the indicator information further includes a fifth indicator; and When the fifth indicator indicates that a merge mode using motion vector differential (MMVD) is not used for the inter prediction of the picture block, the indicator information further includes a sixth indicator; the sixth indicator is a picture block level indicator and has a third value or a fourth value, the third value indicating that a triangular prediction unit mode is allowed to be used for the inter prediction of the current picture block, and the fourth value indicating that the triangular prediction unit mode is not allowed to be used for the inter prediction of the current picture block; and transmitting the encoded bitstream; 1. A non-transitory computer-readable storage medium comprising:
12. 12. The non-transitory computer-readable storage medium of claim 11, wherein the third value is 0 and the fourth value is 1.
13. 12. The non-transitory computer-readable storage medium of claim 11, wherein the indicator information further comprises a first indicator indicating that skip mode is not used for the inter prediction of the picture block.
14. 14. The non-transitory computer-readable storage medium of claim 13, wherein in the encoded bitstream, the first indicator is located before the fourth indicator.
15. The operation is storing the encoded bitstream; 12. The non-transitory computer-readable storage medium of claim 11, further comprising:
Citation Information
Patent Citations
Side information signaling for inter prediction with geometric partitioning
WO2020094052A1
Method and apparatus for video coding
WO2020117619A1