Method and device for geometric split mode with split mode rearrangement - Patents.com
By improving video decoding and encoding methods, and optimizing video block segmentation using geometric segmentation mode and template matching technology, the need to improve coding efficiency of existing video encoding technologies is solved, and more efficient video encoding and quality maintenance is achieved.
Patent Information
- Application Number
- JP2024543342
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-01-21
- Filing Date
- 2023-01-23
- Publication Date
- 2025-01-30
AI Technical Summary
There is room for improvement in coding efficiency of existing video encoding technologies, especially after the high-efficiency video encoding standard VVC, encoding tools that still have potential to explore can further improve coding efficiency.
By improving video decoding and encoding methods, geometric segmentation mode (GPM) is adopted and template matching (TM) technology is combined to optimize the segmentation and prediction methods of video blocks, and dynamically adjust the segmentation mode to improve coding efficiency.
It improves the encoding efficiency of video encoding, reduces the bit rate requirement, and maintains or improves the video quality, adapts to the local characteristics of different video content, and enhances the applicability and flexibility of encoding tools.
Smart Images

Figure 2025503091000001_ABST
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is based on and claims priority to U.S. Provisional Patent Application No. 63 / 302,008, entitled "Methods and Devices for Geometric Partitioning Mode with Split Modes Reordering," filed on January 21, 2022, the entire contents of which are incorporated by reference into this specification for all purposes.
[0002]
[0002] This disclosure relates to video coding and compression, and in particular, but not exclusively, to a method and apparatus for improving coding efficiency for geometric partitioning mode (GPM). [Background technology]
[0003]
[0003] Various video coding techniques may be used to compress video data. Video coding is performed according to one or more video coding standards. For example, today, well-known video coding standards include Versatile Video Coding (VVC, also called H.266 or MPEG-I Part3), High Efficiency Video Coding (HEVC, also called H.265 or MPEG-H Part2), and Advanced Video Coding (AVC, also called H.264 or MPEG-4 Part10), which are jointly developed by ISO / IEC MPEG and ITU-T VECG. Most of the existing video coding standards are built based on the well-known hybrid video coding framework, i.e., using block-based prediction methods (e.g., inter-prediction, intra-prediction) to reduce redundancy present in a video image or sequence, and using transform coding to compact the energy of prediction errors. An important goal of video coding techniques is to compress video data into a format that uses a lower bit rate while avoiding or minimizing degradation of video quality.
[0004]
[0004] The first version of the VVC standard was finalized in July 2020 and achieves approximately 50% bitrate savings or equivalent perceptual quality compared to the previous generation video coding standard, HEVC. While the VVC standard offers significant coding improvements over its predecessor, there is evidence that better coding efficiency can be achieved with additional coding tools. Recently, the Joint Video Exploration Team (JVET), a collaboration between ITU-T VECG and ISO / IEC MPEG, began exploring advanced technologies that could enable substantial improvements in coding efficiency compared to VVC. In April 2021, one software code base, called the Enhanced Compression Model (ECM), was established for future video coding exploration work. The ECM reference software is based on the VVC Test Model (VTM) developed for VVC by JVET, with several existing modules (e.g., intra / inter prediction, transform, in-loop filter, etc.) further extended and / or improved. In the future, any new coding tools that go beyond the VVC standard will need to be integrated into the ECM platform and tested using the JVET Common Test Conditions (CTC). Summary of the Invention
[0005]
[0005] This disclosure provides example techniques related to improving the coding efficiency of the GPM mode in the process of encoding or decoding a video.
[0006]
[0006] According to a first aspect of the present disclosure, a video decoding method is provided. In the video decoding method, a decoder may obtain a first geometric partition mode (GPM) portion and a second GPM portion for a coding unit (CU). Furthermore, the decoder may disable template matching (TM)-based GPM partition mode rearrangement for the multiple GPM partition modes applied to the CU in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction. Furthermore, the decoder may enable TM-based GPM partition rearrangement for the multiple GPM partition modes in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction.
[0007]
[0007] According to a second aspect of the present disclosure, a video encoding method is provided. In the video encoding method, an encoder may obtain a first GPM portion and a second GPM portion for a CU. Furthermore, the encoder may disable rearrangement of TM-based GPM partition modes for the multiple GPM partition modes applied to the CU in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction. Furthermore, the encoder may enable rearrangement of TM-based GPM partition modes for the multiple GPM partition modes in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction.
[0008]
[0008] According to a third aspect of the present disclosure, a video decoding method is provided. In the video decoding method, a decoder may obtain a first GPM portion and a second GPM portion for a CU. Furthermore, in response to determining that the first GPM portion is encoded by inter prediction, the decoder may obtain an inter prediction sample of the reconstructed neighboring samples of the CU based on a motion vector associated with the first GPM portion. Furthermore, in response to determining that the second GPM portion is encoded by intra prediction, the decoder may configure an intra prediction mode (IPM) list for the second GPM portion, obtain a candidate intra mode for the second GPM portion based on the IPM list, and obtain an intra prediction sample of the reconstructed neighboring samples of the CU based on the candidate intra mode. Furthermore, the decoder may rearrange a plurality of GPM partition modes based on the inter prediction sample and the intra prediction sample of the reconstructed neighboring samples of the CU, select one GPM partition mode from the rearranged plurality of GPM partition modes, and obtain a prediction sample of the CU based on the selected GPM partition mode.
[0009]
[0009] According to a fourth aspect of the present disclosure, a video encoding method is provided. In the video encoding method, an encoder may obtain a first GPM portion and a second GPM portion for a CU. Furthermore, in response to determining that the first GPM portion is encoded by inter prediction, the encoder may obtain an inter-predicted sample of the reconstructed neighboring samples of the CU based on a motion vector associated with the first GPM portion. Furthermore, in response to determining that the second GPM portion is encoded by intra prediction, the encoder may configure an intra prediction mode (IPM) list for the second GPM portion, obtain a candidate intra mode for the second GPM portion based on the IPM list, and obtain an intra-predicted sample of the reconstructed neighboring samples of the CU based on the candidate intra mode. Furthermore, the encoder may rearrange a plurality of GPM partition modes based on the inter-predicted sample and the intra-predicted sample of the reconstructed neighboring samples of the CU, select one GPM partition mode from the rearranged plurality of GPM partition modes, and obtain a predicted sample of the CU based on the selected GPM partition mode.
[0010]
[0010] A more particular description of the examples of the present disclosure will be given by reference to specific examples that are illustrated in the accompanying drawings. Considering that these drawings illustrate only some examples and therefore should not be considered limiting in scope, these examples will be described and explained with additional specificity and detail through the use of the accompanying drawings. [Brief description of the drawings]
[0011] [Figure 1A]
[0011] FIG. 1 is a block diagram illustrating a system for encoding and decoding video blocks in accordance with some examples of this disclosure. [Figure 1B]
[0012] 1 is a block diagram of an encoder in accordance with some examples of the present disclosure. [Figure 1C]
[0013] 1 is a block diagram illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes, in accordance with some examples of this disclosure. [Figure 1D] 1 is a block diagram illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes, in accordance with some examples of this disclosure. [Figure 1E] 1 is a block diagram illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes, in accordance with some examples of this disclosure. [Figure 1F] 1 is a block diagram illustrating how a frame is recursively divided into multiple video blocks of different sizes and shapes, in accordance with some examples of this disclosure. [Figure 1G]
[0014] 1 is a block diagram illustrating an example video encoder, in accordance with some examples of this disclosure. [Figure 2A]
[0015] 1 is a block diagram of a decoder in accordance with some examples of the present disclosure. [Figure 2B]
[0016] 1 is a block diagram illustrating an example video decoder, in accordance with some examples of this disclosure. [Figure 3A]
[0017] FIG. 2 illustrates block partitioning in a multi-type tree structure in accordance with some examples of the present disclosure. [Figure 3B]
[0018] FIG. 2 illustrates block partitioning in a multi-type tree structure in accordance with some examples of the present disclosure. [Figure 3C]
[0019] FIG. 2 illustrates block partitioning in a multi-type tree structure in accordance with some examples of the present disclosure. [Figure 3D]
[0020] FIG. 2 illustrates block partitioning in a multi-type tree structure in accordance with some examples of the present disclosure. [Figure 3E]
[0021] FIG. 2 illustrates block partitioning in a multi-type tree structure in accordance with some examples of the present disclosure. [Figure 4]
[0022] FIG. 1 illustrates allowable GPM splits, according to some examples of the present disclosure. [Diagram 5]
[0023] A diagram illustrating unidirectional predictive motion vector selection from motion vectors in a merge candidate list for a GPM, in accordance with some examples of the present disclosure. [Figure 6]
[0024] FIG. 2 illustrates a template matching algorithm, according to some examples of the present disclosure. [Figure 7]
[0025] FIG. 2 illustrates a set of selected pixels on which gradient analysis is performed, according to some examples of the present disclosure. [Figure 8]
[0026] FIG. 1 illustrates a convolution of a 3×3 Sobel gradient filter with a template, in accordance with certain examples of the present disclosure. [Figure 9]
[0027] FIG. 1 illustrates predictive fusion by weighted average of two HoG modes and a planar mode, in accordance with some examples of the present disclosure. [Figure 10]
[0028] FIG. 2 is a diagram illustrating a template and its reference sample used in template-based intra mode derivation (TIMD), in accordance with some examples of the present disclosure. [Figure 11]
[0029] FIG. 13 illustrates a mixture of templates used for rearrangement of GPM partition modes, in accordance with some examples of the present disclosure. [Figure 12]
[0030] 12A to 12C are diagrams showing available intra prediction mode (IPM) candidates for GPM with inter and intra prediction according to some examples of the present disclosure, and FIG. 12D is a diagram showing a combination of disabling where there are two intra predictions according to some examples of the present disclosure. [Figure 13]
[0032] FIG. 1 illustrates a computing environment coupled with a user interface according to some examples of the present disclosure. [Figure 14]
[0033] FIG. 1 is a flowchart illustrating a method for video decoding, according to some examples of this disclosure. [Figure 15] 15 is a flowchart illustrating a method for video encoding corresponding to the method for video decoding shown in FIG. 14, in accordance with some examples of this disclosure. [Figure 16]
[0035] FIG. 1 is a flowchart illustrating a method for video decoding, according to some examples of this disclosure. [Figure 17] 17 is a flowchart illustrating a method for video encoding corresponding to the method for video decoding shown in FIG. 16, in accordance with some examples of this disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012]
[0037] Reference will now be made in detail to specific implementations, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to aid in understanding the subject matter presented herein. However, it will be apparent to one skilled in the art that various alternatives may be used. For example, it will be apparent to one skilled in the art that the subject matter presented herein may be implemented in many types of electronic devices having digital video capabilities.
[0013]
[0038] The terms used in this disclosure are adopted only for the purpose of describing specific embodiments, and are not intended to limit the disclosure. In this disclosure and the appended claims, the singular forms "a / an", "said" and "the" are intended to include the plural forms, unless otherwise clearly indicated throughout this disclosure. The term "and / or" used in this disclosure refers to and should be understood to include one or any or all possible combinations of the associated listed items.
[0014]
[0039] Throughout this specification, references to "one embodiment," "an embodiment," "an example," "some embodiments," "some examples," or similar language mean that a particular feature, structure, or characteristic described is included in at least one embodiment or example. A feature, structure, element, or characteristic described in connection with one or some embodiments may also be applicable to other embodiments, unless expressly specified otherwise.
[0015]
[0040] Throughout this disclosure, all terms such as "first," "second," "third," etc., unless expressly specified otherwise, are used only as labels to reference associated elements, e.g., devices, components, compositions, steps, etc., and do not imply any spatial or temporal order. For example, a "first device" and a "second device" may refer to two separately formed devices, or may refer to two portions, components, or operational states of the same device, and may be arbitrarily named.
[0016]
[0041] The terms "module," "sub-module," "circuit," "sub-circuit," "circuitry," "sub-circuitry," "unit," or "sub-unit" may include memory (shared, dedicated, or group) that stores code or instructions that can be executed by one or more processors. A module may include one or more circuits with or without stored code or instructions. A module or circuit may include one or more components that are directly or indirectly connected. These components may or may not be physically attached to each other or located adjacent to each other.
[0017]
[0042] As used herein, the terms "if" or "when" will be understood to mean "upon" or "in response to," depending on the context. These terms, when recited in the claims, may not indicate that the associated limitation or feature is conditional or optional. For example, a method may include steps: i) function or operation X' is performed when or if condition X exists; ii) function or operation Y' is performed when or if condition Y exists. The method may be implemented to have both the ability to perform function or operation X' and the ability to perform function or operation Y'. Thus, both functions X' and Y' may be performed at different times during multiple executions of the method.
[0018]
[0043] A unit or module may be implemented purely by software, purely by hardware, or by a combination of hardware and software. For example, in a purely software implementation, a unit or module may include functionally related code blocks or software components that are directly or indirectly linked together to perform a specific function.
[0019]
[0044] 1A is a block diagram illustrating an example system 10 for encoding and decoding video blocks in parallel, according to some implementations of the present disclosure. As shown in FIG. 1A, system 10 includes a source device 12 that generates and encodes video data that is subsequently decoded by a destination device 14. Source device 12 and destination device 14 may include any of a wide variety of electronic devices, including desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, and the like. In some implementations, source device 12 and destination device 14 are equipped with wireless communication capabilities.
[0020]
[0045] In some implementations, the destination device 14 may receive the encoded video data to be decoded via a link 16. The link 16 may include any type of communication medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 16 may include a communication medium that allows the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the destination device 14. The communication medium may include any wireless or wired communication medium, such as the radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 12 to the destination device 14.
[0021]
[0046] In some other implementations, the encoded video data may be transmitted from output interface 22 to storage device 32. The encoded video data in storage device 32 may then be accessed by destination device 14 via input interface 28. Storage device 32 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray® disc, digital versatile disc (DVD), compact disc read only memory (CD-ROM), flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In a further example, storage device 32 may correspond to a file server or another intermediate storage device capable of holding the encoded video data generated by source device 12. Destination device 14 may access the stored video data from storage device 32 via streaming or download. The file server may be any type of computer capable of storing encoded video data and transmitting the encoded video data to destination device 14. Exemplary file servers include web servers (e.g., for websites), File Transfer Protocol (FTP) servers, Network Attached Storage (NAS) devices, or local disk drives. Destination device 14 may access the encoded video data through any standard data connection, including a wireless channel (e.g., a Wireless Fidelity (Wi-Fi) connection), a wired connection (e.g., a Digital Subscriber Line (DSL), a cable modem, etc.), or a combination of both suitable for accessing encoded video data stored in a file server. The transmission of the encoded video data from storage device 32 may be a streaming transmission, a download transmission, or a combination of both.
[0022]
[0047] As shown in FIG. 1A, source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 may include sources such as a video imaging device, e.g., a video camera, a video archive containing previously captured video, a video supply interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as the source video, or a combination of such sources. As an example, if video source 18 is a video camera of a security surveillance system, source device 12 and destination device 14 may form a camera phone or a video phone. However, implementations described in this application may be applicable to video coding generally and may be applicable to wireless and / or wired applications.
[0023]
[0048] The captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data may be transmitted directly to destination device 14 via output interface 22 of source device 12. The encoded video data may also (or alternatively) be stored in storage device 32 for later access by destination device 14 or other devices for decoding and / or playback. Output interface 22 may further include a modem and / or a transmitter.
[0024]
[0049] Destination device 14 includes an input interface 28, a video decoder 30, and a display device 34. Input interface 28 may include a receiver and / or modem and receive encoded video data via link 16. The encoded video data communicated via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use by video decoder 30 in decoding the video data. Such syntax elements may be included within the encoded video data transmitted over a communication medium, stored on a storage medium, or stored on a file server.
[0025]
[0050] In some implementations, destination device 14 may include a display device 34, which may be an embedded display device or an external display device configured to communicate with destination device 14. Display device 34 displays the decoded video data to a user and may include any of a variety of display devices, such as a Liquid Crystal Display (LCD), a plasma display, an Organic Light Emitting Diode (OLED) display, or another type of display device.
[0026]
[0051] Video encoder 20 and video decoder 30 may operate according to a proprietary or de facto standard, such as VVC, HEVC, MPEG-4, Part 10, AVC, or an extension of such a standard. It should be understood that the present application is not limited to a particular video encoding / decoding standard, but is applicable to other video encoding / decoding standards. It is generally contemplated that video encoder 20 of source device 12 may be configured to encode video data according to any of these current or future standards. Similarly, it is generally contemplated that video decoder 30 of destination device 14 may be configured to decode video data according to any of these current or future standards.
[0027]
[0052] Each of the video encoder 20 and the video decoder 30 may be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. If implemented partially in software, the electronic device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the video encoding / decoding operations disclosed in this disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) within the respective device.
[0028]
[0053] Similar to HEVC, VVC is built on a block-based hybrid video coding framework. FIG. 1B is a block diagram illustrating a block-based video encoder according to some implementations of the present disclosure. In the encoder 100, the input video signal is processed by blocks called coding units (CUs). The encoder 100 may be the video encoder 20 illustrated in FIG. 1A. In VTM-1.0, a CU can be up to 128×128 pixels. However, unlike HEVC, which divides blocks based on quad-tree only, in VVC, one coding tree unit (CTU) is divided into CUs based on quad-tree / bin-tree / ternary tree to adapt to various local characteristics. Furthermore, the concept of multi-split unit types in HEVC is removed, i.e., there is no separation of CUs, prediction units (PUs), and transform units (TUs) in VVC, instead each CU is always used as a basic unit for both prediction and transformation without further splitting. In the multi-type tree structure, one CTU is first split by a quad-tree structure. Each quadtree leaf node can then be further split by binary and ternary tree structures.
[0029]
[0054] 3A-3E are schematic diagrams illustrating a multi-type tree division mode according to some implementations of the present disclosure. Each of the diagrams illustrates five division types, including 4-way division (FIG. 3A), vertical 2-way division (FIG. 3B), horizontal 2-way division (FIG. 3C), vertical 3-way division (FIG. 3D), and horizontal 3-way division (FIG. 3E).
[0030]
[0055] For each given video block, spatial prediction and / or temporal prediction may be performed. Spatial prediction (or "intra prediction") predicts the current video block using pixels from samples of already coded neighboring blocks (called reference samples) in the same video picture / slice. Spatial prediction reduces spatial redundancy inherent in video signals. Temporal prediction (also called "inter prediction" or "motion compensated prediction") predicts the current video block using reconstructed pixels from already coded video pictures. Temporal prediction reduces temporal redundancy inherent in video signals. Typically, the temporal prediction signal for a given CU is signaled by one or more motion vectors (MVs) that indicate the amount and direction of motion between the current CU and its temporal references. Also, if multiple reference pictures are supported, one reference picture index is further transmitted and used to identify which reference picture store in the reference picture the temporal prediction signal comes from.
[0031]
[0056] After spatial and / or temporal prediction, an intra / inter mode decision circuit 121 in the encoder 100 chooses the best prediction mode, for example based on a rate-distortion optimization method. The block predictor 120 is then subtracted from the current video block, and the resulting prediction residual is decorrelated using the transform circuit 102 and the quantization circuit 104. The resulting quantized residual coefficients are inverse quantized by the inverse quantization circuit 116 and inverse transformed by the inverse transform circuit 118 to form a reconstructed residual, which is then added back to the prediction block to form a reconstructed signal for the CU. Furthermore, an in-loop filter 115, such as a deblocking filter, a sample adaptive offset (SAO), and / or an adaptive in-loop filter (ALF), may be applied to the reconstructed CU, which is then put into a reference picture store in the picture buffer 117 to be used to encode future video blocks. To form the output video bitstream 114, the coding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all sent to the entropy coding unit 106, which further compresses and packs them to form the bitstream.
[0032]
[0057] For example, deblocking filters are available in AVC, HEVC, as well as the current version of VVC. In HEVC, an additional in-loop filter called SAO is defined to further improve coding efficiency. In the current version of the VVC standard, yet another in-loop filter called ALF is also being actively investigated and may well be included in the final standard.
[0033]
[0058] These in-loop filter operations are optional. Implementing these operations helps improve coding efficiency and visual quality. These operations may also be turned off as a decision provided by the encoder 100 to reduce computational complexity.
[0034]
[0059] Note that intra prediction is typically based on unfiltered reconstructed pixels, whereas inter prediction is based on filtered reconstructed pixels if these filter options are turned on by the encoder 100.
[0035]
[0060] FIG. 2A is a block diagram illustrating a block-based video decoder 200 that may be used with many video coding standards. This decoder 200 is similar to the reconstruction-related section residing in the encoder 100 of FIG. 1B. The block-based video decoder 200 may be the video decoder 30 shown in FIG. 1A. In the decoder 200, an incoming video bitstream 201 is first decoded by entropy decoding 202 to derive quantized coefficient levels and prediction-related information. The quantized coefficient levels are then processed by inverse quantization 204 and inverse transform 206 to obtain a reconstructed prediction residual. A block prediction mechanism implemented in an intra / inter mode selector 212 is configured to perform intra prediction 208 or motion compensation 210 based on the decoded prediction information. A set of unfiltered reconstructed pixels is obtained by adding the reconstructed prediction residual from the inverse transform 206 and the prediction output generated by the block prediction mechanism using an adder 214.
[0036]
[0061] The reconstructed blocks may proceed further through the in-loop filter 209 and then stored in a picture buffer 213, which serves as a reference picture store. The reconstructed video in the picture buffer 213 may be transmitted to drive a display device, as well as used to predict future video blocks. In situations where the in-loop filter 209 is turned on, a filtering operation on these reconstructed pixels is performed to derive the final reconstructed video output 222.
[0037]
[0062] 1G is a block diagram illustrating another example video encoder 20 according to some implementations described in this application. The video encoder 20 may perform intra-predictive and inter-predictive coding of video blocks within a video frame. Intra-predictive coding relies on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame or picture. Inter-predictive coding relies on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or pictures of a video sequence. It should be noted that the term "frame" is sometimes used synonymously with the terms "image" or "picture" in the field of video coding.
[0038]
[0063] 1G, the video encoder 20 includes a video data memory 40, a prediction processor 41, a decoded picture buffer (DPB) 64, an adder 50, a transform processor 52, a quantizer 54, and an entropy encoder 56. The prediction processor 41 further includes a motion estimator 42, a motion compensation unit 44, a partitioner 45, an intra prediction processor 46, and an intra block copy (BC) unit 48. In some implementations, the video encoder 20 also includes an inverse quantizer 58 for video block reconstruction, an inverse transform processor 60, and an adder 62. An in-loop filter 63, such as a deblocking filter, may be disposed between the adder 62 and the DPB 64 to filter block boundaries to remove blocky artifacts from the reconstructed video. In addition to the deblocking filter, another in-loop filter, such as a Sample Adaptive Offset (SAO) filter and / or an Adaptive in-Loop Filter (ALF), may also be used to filter the output of summer 62. In some examples, the in-loop filter may be omitted and the decoded video block may be provided directly to DPB 64 by summer 62. Video encoder 20 may take the form of a fixed or programmable hardware unit, or may be divided into one or more of the illustrated fixed or programmable hardware units.
[0039]
[0064] Video data memory 40 may store video data to be encoded by components of video encoder 20. The video data in video data memory 40 may be obtained, for example, from video source 18 shown in FIG. 1A. DPB 64 is a buffer that stores reference video data (e.g., reference frames or pictures) for use in encoding video data by video encoder 20 (e.g., in an intra-predictive or inter-predictive coding mode). Video data memory 40 and DPB 64 may be formed by any of a variety of memory devices. In various examples, video data memory 40 may be on-chip with other components of video encoder 20 or may be off-chip relative to those components.
[0040]
[0065] As shown in FIG. 1G, after receiving the video data, the partitioning unit 45 in the prediction processing unit 41 partitions the video data into video blocks. This partitioning may also include partitioning the video frame into slices, tiles (e.g., a set of video blocks), or other larger coding units (CUs) according to a predetermined partitioning structure, such as a Quad-Tree (QT) structure associated with the video data. A video frame may be or be considered as a two-dimensional array or matrix of samples having sample values. The samples in the array may also be referred to as pixels or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the video frame. The video frame may be partitioned into multiple video blocks, for example, by using QT partitioning. The video blocks may also be or be considered as a two-dimensional array or matrix of samples having sample values, although with smaller dimensions than the video frame. The number of samples in the horizontal and vertical directions (or axes) of the video block defines the size of the video block. A video block may be further divided into one or more block divisions or sub-blocks (which may again form blocks), e.g., by repeatedly using QT, Binary-Tree (BT) or Triple-Tree (TT) divisions, or any combination thereof. Note that the term "block" or "video block" as used herein may be a portion of a frame or picture, in particular a rectangular (square or non-square) portion. For example, with reference to HEVC and VVC, a block or video block may be or correspond to a coding tree unit (CTU), CU, prediction unit (PU), or transform unit (TU), and / or a corresponding block, e.g., a coding tree block (CTB), coding block (CB), prediction block (PB), or transform block (TB), and / or a sub-block.
[0041]
[0066] Prediction processor 41 may select one of a number of possible predictive coding modes, such as one of a number of intra-predictive coding modes or one of a number of inter-predictive coding modes, for the current video block based on the error result (e.g., coding rate and level of distortion). Prediction processor 41 may provide the resulting intra-predictive or inter-predictive coded block to summer 50 to generate a residual block and to summer 62 to reconstruct the coded block for later use as part of a reference frame. Prediction processor 41 also provides syntax elements, such as motion vectors, intra-mode indicators, partitioning information, and other such syntax information to entropy coding unit 56.
[0042]
[0067] To select an appropriate intra-prediction coding mode for a current video block, intra prediction unit 46 within prediction unit 41 may perform intra-prediction coding of the current video block relative to one or more neighboring blocks in the same frame as the current block to be coded to provide spatial prediction. Motion estimation unit 42 and motion compensation unit 44 within prediction unit 41 may perform inter-prediction coding of the current video block relative to one or more predictive blocks in one or more reference frames to provide temporal prediction. Video encoder 20 may perform multiple coding passes to select an appropriate coding mode for each block of video data, for example.
[0043]
[0068] In some implementations, motion estimator 42 determines the inter prediction mode for the current video frame by generating motion vectors that indicate the displacement of video blocks in the current video frame relative to a predictive block in a reference video frame according to a predetermined pattern in the sequence of video frames. Motion estimation performed by motion estimator 42 is the process of generating motion vectors that estimate the motion of video blocks. The motion vectors may indicate, for example, the displacement of video blocks in a current video frame or picture relative to a predictive block in a reference frame relative to a current block being coded in the current frame. The predetermined pattern may designate a video frame in the sequence as a P frame or a B frame. Intra BC unit 48 may determine vectors, e.g., block vectors, for intra BC coding in a manner similar to the determination of motion vectors by motion estimator 42 for inter prediction, or may utilize motion estimator 42 to determine block vectors.
[0044]
[0069] A prediction block of a video block may be or correspond to a block of a reference frame or reference block that is deemed to closely match the video block to be encoded in terms of pixel differences, which may be determined by sum of absolute difference (SAD), sum of square difference (SSD), or other difference metric. In some implementations, video encoder 20 may calculate values for sub-integer pixel locations of the reference frame stored in DPB 64. For example, video encoder 20 may interpolate values for quarter-pixel, eighth-pixel, or other fractional pixel locations of the reference frame. Thus, motion estimation unit 42 may perform motion search for whole pixel locations and fractional pixel locations and output motion vectors with fractional pixel precision.
[0045]
[0070] Motion estimation unit 42 calculates a motion vector for a video block in an inter-predictively coded frame by comparing the position of the video block to the position of a predictive block of a reference frame selected from a first reference frame list (List 0) or a second reference frame list (List 1), each of which identifies one or more reference frames stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to motion compensation unit 44 and then to entropy coding unit 56.
[0046]
[0071] The motion compensation performed by motion compensation unit 44 may include fetching or generating a predictive block based on the motion vector determined by motion estimation unit 42. Upon receiving the motion vector for the current video block, motion compensation unit 44 may locate the predictive block to which the motion vector points in one of the reference frame lists, obtain the predictive block from DPB 64, and forward the predictive block to summer 50. Summer 50 then forms a residual video block of pixel difference values by subtracting pixel values of the predictive block provided by motion compensation unit 44 from pixel values of the current video block being coded. The pixel difference values forming the residual video block may include luma or chroma component differences, or both. Motion compensation unit 44 may also generate syntax elements associated with the video blocks of the video frames for use by video decoder 30 in decoding the video blocks of the video frames. The syntax elements may include, for example, syntax elements defining the motion vector used to identify the predictive block, any flags indicating a prediction mode, or any other syntax information described herein. It should be noted that motion estimator 42 and motion compensator 44 may be highly integrated, but are illustrated separately for conceptual purposes.
[0047]
[0072] In some implementations, intra BC unit 48 may generate vectors and fetch predictive blocks in a manner similar to that described above in connection with motion estimation unit 42 and motion compensation unit 44, except that the predictive block is in the same frame as the current block being coded, and the vectors are referred to as block vectors rather than motion vectors. Specifically, intra BC unit 48 may determine an intra prediction mode to use to code the current block. In some examples, intra BC unit 48 may code the current block using various intra prediction modes, e.g., during separate coding passes, and test their performance through rate-distortion analysis. Intra BC unit 48 may then select an appropriate intra prediction mode to use from among the various tested intra prediction modes and generate an intra mode indicator accordingly. For example, intra BC unit 48 may calculate rate-distortion values using the rate-distortion analysis for the various tested intra prediction modes, and select the intra prediction mode with the best rate-distortion characteristics from among the tested modes as the appropriate intra prediction mode to use. The rate-distortion analysis generally determines the amount of distortion (or error) between a coded block and the original uncoded block that was coded to create the coded block, and the bitrate (i.e., number of bits) used to create the coded block. Intra BC unit 48 may calculate ratios from the distortions and rates of the various coded blocks to determine which intra prediction mode exhibits the best rate-distortion value for the block.
[0048]
[0073] In other examples, intra BC unit 48 may use, in whole or in part, motion estimation unit 42 and motion compensation unit 44 to perform such functions for intra BC prediction according to implementations described herein. In either case, for intra block copying, the predictive block may be a block that is deemed to closely match the block to be coded in terms of pixel differences, which may be determined by SAD, SSD, or other difference metrics, and identification of the predictive block may include calculation of values of sub-integer pixel positions.
[0049]
[0074] Regardless of whether the predictive block is a block from the same frame via intra prediction or a block from a different frame via inter prediction, video encoder 20 may form a residual video block by subtracting pixel values of the predictive block from pixel values of the current video block being coded to form pixel difference values. The pixel difference values that form the residual video block may include both luma and chroma component differences.
[0050]
[0075] The intra prediction processor 46 may intra predict the current video block as an alternative to the inter prediction performed by the motion estimation unit 42 and the motion compensation unit 44, or the intra block copy prediction performed by the intra BC unit 48, as described above. Specifically, the intra prediction processor 46 may determine an intra prediction mode to use to encode the current block. To do so, the intra prediction processor 46 may encode the current block using various intra prediction modes, e.g., during separate encoding passes, and the intra prediction processor 46 (or, in some examples, a mode selector) may select an appropriate intra prediction mode to use from the tested intra prediction modes. The intra prediction processor 46 may provide information to the entropy coding unit 56 indicating the selected intra prediction mode for the block. The entropy coding unit 56 may encode the information indicating the selected intra prediction mode into the bitstream.
[0051]
[0076] After prediction processor 41 determines a predictive block for the current video block by inter- or intra-prediction, adder 50 forms a residual video block by subtracting the predictive block from the current video block. The residual video data in the residual block, which may be included in one or more TUs, is provided to transform processor 52. Transform processor 52 converts the residual video data into residual transform coefficients using a transform, such as a Discrete Cosine Transform (DCT) or a conceptually similar transform.
[0052]
[0077] The transform processor 52 may send the resulting transform coefficients to a quantizer 54, which quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, the quantizer 54 may then perform a scan of a matrix containing the quantized transform coefficients. Alternatively, the entropy coding unit 56 may perform the scan.
[0053]
[0078] Following quantization, entropy encoding unit 56 entropy encodes the quantized transform coefficients into a video bitstream, using, for example, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy encoding methodology or technique. The encoded bitstream may then be transmitted to video decoder 30 as shown in FIG. 1A or archived to storage device 32 as shown in FIG. 1A for later transmission to or retrieval by video decoder 30. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements of the current video frame being encoded.
[0054]
[0079] Inverse quantization unit 58 and inverse transform unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual video block in the pixel domain to generate reference blocks for prediction of other video blocks. As described above, motion compensation unit 44 may generate a motion compensated prediction block from one or more reference blocks of a frame stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values for use in motion estimation.
[0055]
[0080] Summer 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to create a reference block for storage in DPB 64. The reference block may then be used by intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 as a prediction block to inter predict another video block in a subsequent video frame.
[0056]
[0081] 2B is a block diagram illustrating another exemplary video decoder 30 according to some implementations of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding section 80, a prediction processing section 81, an inverse quantization section 86, an inverse transform processing section 88, an adder 90, and a DPB 92. The prediction processing section 81 further includes a motion compensation section 82, an intra prediction unit 84, and an intra BC section 85. The video decoder 30 may perform a decoding process that is approximately the reverse of the encoding process described above for the video encoder 20 in connection with FIG. 1G. For example, the motion compensation section 82 may generate prediction data based on a motion vector received from the entropy decoding section 80, while the intra prediction unit 84 may generate prediction data based on an intra prediction mode indicator received from the entropy decoding section 80.
[0057]
[0082] In some examples, each section of the video decoder 30 may be tasked with performing implementations of the present application. Also, in some examples, implementations of the present disclosure may be split among one or more of the sections of the video decoder 30. For example, the intra BC section 85 may perform implementations of the present application alone or in combination with other sections of the video decoder 30, such as the motion compensation section 82, the intra prediction unit 84, and the entropy decoding section 80. In some examples, the video decoder 30 may not include the intra BC section 85, and the functions of the intra BC section 85 may be performed by other components of the prediction processing section 81, such as the motion compensation section 82.
[0058]
[0083] Video data memory 79 may store video data, such as an encoded video bitstream, that is decoded by other components of video decoder 30. The video data stored in video data memory 79 may be obtained, for example, from storage device 32, from a local video source such as a camera, via wired or wireless network communication of video data, or by accessing a physical data storage medium (e.g., a flash drive or hard disk). Video data memory 79 may include a coded picture buffer (CPB) that stores coded video data from the coded video bitstream. DPB 92 of video decoder 30 stores reference video data for use in decoding video data by video decoder 30 (e.g., in an intra-predictive coding mode or an inter-predictive coding mode). Video data memory 79 and DPB 92 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For purposes of illustration, video data memory 79 and DPB 92 are shown in FIG. 2B as two separate components of video decoder 30. However, it will be apparent to one skilled in the art that video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, video data memory 79 may be on-chip with other components of video decoder 30 or may be off-chip with respect to those components.
[0059]
[0084] During the decoding process, video decoder 30 receives an encoded video bitstream representing video blocks of encoded video frames and associated syntax elements. Video decoder 30 may receive the syntax elements at the video frame level and / or the video block level. An entropy decoding unit 80 of video decoder 30 entropy decodes the bitstream to generate quantized coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. Entropy decoding unit 80 then forwards the motion vectors or intra-prediction mode indicators and other syntax elements to a prediction processor 81.
[0060]
[0085] When a video frame is coded as an intra-predictive coded (I) frame or for intra-coded predictive blocks in other types of frames, intra prediction unit 84 of prediction processing section 81 may generate predictive data for video blocks of the current video frame based on a signaled intra-prediction mode and reference data from previously decoded blocks of the current frame.
[0061]
[0086] When a video frame is coded as an inter-predictive (i.e., B or P) frame, motion compensation unit 82 of prediction unit 81 creates one or more prediction blocks for video blocks of the current video frame based on the motion vectors and other syntax elements received from entropy decoding unit 80. Each of the prediction blocks may be created from a reference frame in one of the reference frame lists. Video decoder 30 may construct the reference frame lists, List 0 and List 1, using a default construction technique based on the reference frames stored in DPB 92.
[0062]
[0087] In some examples, when a video block is encoded according to the intra BC mode described herein, intra BC unit 85 of prediction processor 81 creates a predictive block of the current video block based on the block vectors and other syntax elements received from entropy decoding unit 80. The predictive block may be within the same reconstructed region of the picture as the current video block defined by video encoder 20.
[0063]
[0088] Motion compensation unit 82 and / or intra BC unit 85 determine prediction information for video blocks of the current video frame by analyzing the motion vectors and other syntax elements, and then use the prediction information to create a predictive block for the current video block being decoded. For example, motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g., intra prediction or inter prediction) used to encode the video blocks of the video frame, the inter prediction frame type (e.g., B or P), configuration information regarding one or more of the reference frame lists of the frame, the motion vectors of each inter predictive coded video block of the frame, the inter prediction status of each inter predictive coded video block of the frame, and other information for decoding video blocks in the current video frame.
[0064]
[0089] Similarly, intra BC unit 85 may use some of the received syntax elements, such as flags, to determine that the current video block was predicted using intra BC mode, configuration information regarding which video blocks of the frame are within the reconstruction domain and should be stored in DPB 92, block vectors for each intra BC predicted video block of the frame, the intra BC prediction status for each intra BC predicted video block of the frame, and other information for decoding video blocks in the current video frame.
[0065]
[0090] Motion compensation unit 82 may also perform interpolation using an interpolation filter used by video encoder 20 during encoding of the video block to calculate sub-integer pixel interpolated values of the reference block. In this case, motion compensation unit 82 may determine the interpolation filter used by video encoder 20 from the received syntax elements and use that interpolation filter to create the prediction block.
[0066]
[0091] An inverse quantizer 86 uses the same quantization parameters calculated by video encoder 20 for each video block in a video frame to inverse quantize the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoding unit 80 to determine the degree of quantization. An inverse transform processor 88 applies an inverse transform, e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients in order to reconstruct the residual block in the pixel domain.
[0067]
[0092] After the motion compensation unit 82 or the intra BC unit 85 generates a predictive block for the current video block based on the vectors and other syntax elements, the adder 90 reconstructs a decoded video block for the current video block by adding the residual block from the inverse transform processor 88 and the corresponding predictive block generated by the motion compensation unit 82 and the intra BC unit 85. To further process the decoded video block, an in-loop filter 91, such as a deblocking filter, an SAO filter, and / or an ALF, may be disposed between the adder 90 and the DPB. In some examples, the in-loop filter 91 may be omitted and the decoded video block may be provided directly to the DPB 92 by the adder 90. The decoded video block in a given frame is then stored in the DPB 92, which stores reference frames used for subsequent motion compensation of the next video block. The DPB 92 or a memory device separate from the DPB 92 may store the decoded video for later presentation on a display device, such as the display device 34 of FIG. 1A.
[0068]
[0093] In the current VVC and AVS3 standards, the motion information of the current coding block is copied from a spatial or temporal neighboring block designated by a merge candidate index, or obtained by explicit signaling of motion estimation. The focus of this disclosure is to improve the accuracy of motion vectors for affine merge modes by improving the derivation method of affine merge candidates. To facilitate the description of this disclosure, the existing affine merge mode design in the VVC standard is used as an example to explain the proposed concept. Throughout this disclosure, the existing affine mode design in the VVC standard is used as an example, but it should be noted by those skilled in the art of modern video coding technology that the proposed technology can also be applied to different designs of affine motion prediction modes, or other coding tools with the same or similar design spirit.
[0069]
[0094] In a typical video coding process, a video sequence typically includes an ordered set of frames or pictures. Each frame may include three sample arrays, denoted SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of Cb chroma samples. SCr is a two-dimensional array of Cr chroma samples. In another example, a frame may be monochromatic and thus include only one two-dimensional array of luma samples.
[0070]
[0095] As shown in FIG. 1C, the video encoder 20 (or more specifically, a partitioning unit in a prediction processing unit of the video encoder 20) generates an encoded representation of a frame by first partitioning the frame into a set of CTUs. A video frame may include an integer number of CTUs ordered consecutively from left to right and top to bottom in raster scan order. Each CTU is the largest logical coding unit, and the width and height of the CTUs are signaled by the video encoder 20 in a sequence parameter set such that all CTUs in a video sequence have the same size, which is one of 128×128, 64×64, 32×32, and 16×16. However, it should be noted that the present application is not necessarily limited to a particular size. As shown in FIG. 1D, each CTU may include one CTB of luma samples, two corresponding coding tree blocks of chroma samples, and syntax elements used to code the samples of the coding tree blocks. The syntax elements describe how a video sequence may be reconstructed in video decoder 30, including characteristics of different types of units of coded blocks of pixels, as well as inter or intra prediction, intra prediction modes, motion vectors, and other parameters. For a monochromatic picture or a picture with three separate color planes, a CTU may include a single coding tree block and syntax elements used to code samples of the coding tree block. A coding tree block may be an N×N block of samples.
[0071]
[0096] To achieve better performance, the video encoder 20 may recursively perform tree partitioning, such as binary tree partitioning, ternary tree partitioning, quad tree partitioning, or a combination thereof, on the coding tree blocks of the CTU to partition the CTU into smaller CUs. As shown in FIG. 1E, the 64×64 CTU 400 is first partitioned into four smaller CUs, each with a block size of 32×32. Of the four smaller CUs, the CU 410 and the CU 420 are each partitioned into four 16×16 CUs by block size. The two 16×16 CUs 430 and the CU 440 are each further partitioned into four 8×8 CUs by block size. FIG. 1F illustrates a quad tree data structure illustrating the final result of the partitioning process of the CTU 400 illustrated in FIG. 1E, where each leaf node of the quad tree corresponds to one CU of a respective size ranging from 32×32 to 8×8. Similar to the CTU shown in FIG. 1D, each CU may include a CB of luma samples, two corresponding coding blocks of chroma samples of the same size frame, and syntax elements used to code the samples of the coding blocks. In a monochromatic picture or a picture with three separate color planes, a CU may include a single coding block and syntax structures used to code the samples of the coding blocks. It should be noted that the quadtree partitioning shown in FIG. 1E and FIG. 1F is for illustration purposes only, and one CTU may be partitioned into CUs based on quadtree / ternary tree / binary tree partitioning to accommodate various local characteristics. In a multi-type tree structure, one CTU is partitioned by a quadtree structure, and each quadtree leaf CU may be further partitioned by a binary tree structure and a ternary tree structure. As shown in FIG. 3A-FIG. 3E, there are five possible partition types of a coding block with width W and height H, namely, 4-partition, horizontal 2-partition, vertical 2-partition, horizontal 3-partition, and vertical 3-partition.
[0072]
[0097] In some implementations, video encoder 20 may further divide the coding blocks of a CU into one or more M×N PBs. A PB is a rectangular (square or non-square) block of samples to which the same prediction, inter or intra prediction, is applied. A PU of a CU may include a PB of luma samples, two corresponding PBs of chroma samples, and syntax elements used to predict the PBs. In a monochromatic picture or a picture with three separate color planes, a PU may include a single PB and syntax structures used to predict the PBs. Video encoder 20 may generate a predictive luma block, a predictive Cb block, and a predictive Cr block for the luma, Cb, and Cr PBs of each PU of a CU.
[0073]
[0098] Video encoder 20 may generate the predictive blocks of a PU using intra prediction or inter prediction. If video encoder 20 generates the predictive blocks of a PU using intra prediction, video encoder 20 may generate the predictive blocks of the PU based on decoded samples of a frame associated with the PU. If video encoder 20 generates the predictive blocks of a PU using inter prediction, video encoder 20 may generate the predictive blocks of the PU based on decoded samples of one or more frames other than the frame associated with the PU.
[0074]
[0099] After video encoder 20 generates the predicted luma block, the predicted Cb block, and the predicted Cr block for one or more PUs of a CU, video encoder 20 may generate a luma residual block of the CU by subtracting the predicted luma block of the CU from its original luma coding block, such that each sample in the luma residual block of the CU indicates a difference between a luma sample in one of the predicted luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. Similarly, video encoder 20 may generate a Cb residual block and a Cr residual block of the CU, such that each sample in the Cb residual block of the CU indicates a difference between a Cb sample in one of the predicted Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU, and such that each sample in the Cr residual block of the CU indicates a difference between a Cr sample in one of the predicted Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.
[0075]
[0100] Further, as shown in FIG. 1E, video encoder 20 may use quadtree partitioning to decompose the luma residual block, Cb residual block, and Cr residual block of a CU into one or more luma transform blocks, Cb transform blocks, and Cr transform blocks, respectively. A transform block is a rectangular (square or non-square) block of samples to which the same transform is applied. A TU of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax elements used to transform the transform block samples. Thus, each TU of a CU may be associated with a luma transform block, a Cb transform block, and a Cr transform block. In some examples, the luma transform block associated with a TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome picture or a picture with three separate color planes, a TU may include a single transform block and syntax structures used to transform samples of the transform block.
[0076]
[0101] Video encoder 20 may apply one or more transforms to a luma transform block of the TU to generate a luma coefficient block of the TU. The coefficient block may be a two-dimensional array of transform coefficients. The transform coefficients may be scalar quantities. Video encoder 20 may apply one or more transforms to a Cb transform block of the TU to generate a Cb coefficient block of the TU. Video encoder 20 may apply one or more transforms to a Cr transform block of the TU to generate a Cr coefficient block of the TU.
[0077]
[0102] After the video encoder 20 generates a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), it may quantize the coefficient block. Quantization generally refers to a process in which transform coefficients are quantized to potentially reduce the amount of data used to represent the transform coefficients to achieve further compression. After the video encoder 20 quantizes the coefficient block, the video encoder 20 may entropy code syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform CABAC on the syntax elements indicating the quantized transform coefficients. Finally, the video encoder 20 may output a bitstream including a sequence of bits forming a representation of the encoded frame and associated data, which may be stored in the storage device 32 or transmitted to the destination device 14.
[0078]
[0103] After receiving the bitstream generated by video encoder 20, video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. Video decoder 30 may reconstruct a frame of video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing video data is approximately the reverse of the encoding process performed by video encoder 20. For example, video decoder 30 may perform an inverse transform on coefficient blocks associated with TUs of the current CU to reconstruct residual blocks associated with TUs of the current CU. Video decoder 30 also reconstructs coding blocks of the current CU by adding samples of the predictive blocks of the PUs of the current CU to corresponding samples of the transform blocks of the TUs of the current CU. Video decoder 30 may reconstruct the frame after reconstructing the coding blocks for each CU of the frame.
[0079]
[0104] As mentioned above, video coding mainly uses two modes, intraframe prediction (or intra prediction) and interframe prediction (or inter prediction), to achieve video compression. It should be noted that IBC can be considered as intraframe prediction or a third mode. Of the two modes, interframe prediction contributes more to coding efficiency than intraframe prediction because it uses motion vectors to predict a current video block from a reference video block.
[0080]
[0105] However, as the imaging technology of video data is constantly improving and the video block size is becoming finer to preserve the details of the video data, the amount of data required to represent the motion vector of the current frame is also increasing significantly. One way to overcome this challenge is to benefit from the fact that a group of adjacent CUs in both spatial and temporal domains not only have similar video data for prediction purposes, but also the motion vectors between these adjacent CUs are similar. Therefore, the motion information of spatially adjacent CUs and / or temporally co-located CUs can be used as an approximation of the motion information (e.g., motion vector) of the current CU by investigating their spatial and temporal correlations, which is also called the "Motion Vector Predictor (MVP)" of the current CU.
[0081]
[0106] Instead of encoding the actual motion vector of the current CU determined by the motion estimator into the video bitstream as described above in connection with Figure 1B, the motion vector predictor of the current CU is subtracted from the actual motion vector of the current CU to create a Motion Vector Difference (MVD) for the current CU. By doing so, the motion vector determined by the motion estimator for each CU of a frame does not need to be encoded into the video bitstream, and the amount of data used to represent motion information in the video bitstream may be significantly reduced.
[0082]
[0107] Similar to the process of choosing a predictive block in a reference frame during inter-frame prediction of a codeblock, a set of rules needs to be adopted by both the video encoder 20 and the video decoder 30 to construct a motion vector candidate list (also called a "merge list") for the current CU using potential candidate motion vectors associated with spatially neighboring CUs and / or temporally co-located CUs of the current CU, and then select one element from the motion vector candidate list as the motion vector predictor for the current CU. By doing so, the motion vector candidate list itself does not need to be transmitted from the video encoder 20 to the video decoder 30, and the index of the selected motion vector predictor in the motion vector candidate list is sufficient for the video encoder 20 and the video decoder 30 to use the same motion vector predictor in the motion vector candidate list to encode and decode the current CU.
[0083] Geometric partitioning mode (GPM)
[0084]
[0108] VVC supports geometric partitioning modes for inter prediction, which are signaled by a CU level flag as one special merge mode. In the current GPM design, a total of 64 partitions are supported by GPM modes for each possible CU size where both width and height are 8 to 64, excluding 8x64 and 64x8.
[0085]
[0109] When this mode is used, a CU is divided into two parts by a geometrically arranged straight line as shown in FIG. 4. The location of the division line is mathematically derived from the angle and offset parameters of the particular division. Each part of the geometric division in a CU is inter-predicted using its own motion, and only uni-prediction is allowed for each division part, i.e., each part has one motion vector and one reference index. Similar to traditional bi-prediction, a uni-prediction motion constraint is applied to ensure that only two motion compensation predictions are required for each CU. If a geometric division mode is used for the current CU, a geometric division index (angle and offset) and two merge indices (one for each division part) indicating the division mode of the geometric division are further signaled. The number of maximum GPM candidate sizes is explicitly signaled at the sequence level.
[0086] Uni-prediction candidate list structure
[0087]
[0110] To derive a unidirectional predictive motion vector for one geometric partition, first, one unidirectional predictive candidate list is derived directly from the normal merge candidate list generation process. Denote n as the index of the unidirectional predictive motion in the geometric unidirectional predictive candidate list. The LX motion vector of the nth merge candidate is used as the nth unidirectional predictive motion vector for the geometric partition mode, with X being equal to the parity of n. These motion vectors are denoted by "x" in FIG. 5. If there is no corresponding LX motion vector of the nth extended merge candidate, the L(1-X) motion vector of the same candidate is used instead of the unidirectional predictive motion vector for the geometric partition mode.
[0088] Mixing along geometric dividing edges
[0089]
[0111] After each geometric partition is obtained using its own motion, blending is applied to the two unidirectional prediction signals to derive samples around the edges of the geometric partition. The blending weights for each position of the CU are derived based on the distance from the individual sample position to the corresponding partition edge.
[0090] GPM Signal Transmission Design
[0091]
[0112] In some examples of GPM designs, the use of GPM is indicated by signaling one flag at the CU level. The flag is signaled only if the current CU is coded by merge mode or skip mode. Specifically, if the flag is equal to 1, the flag indicates that the current CU is predicted by GPM. Otherwise (if the flag is equal to zero), the CU is coded by another merge mode, such as normal merge mode, merge mode with motion vector differential, combined inter-prediction and intra-prediction, etc. If GPM is enabled for the current CU, one syntax element, namely merge_gpm_partition_idx, is further signaled to indicate the geometric partition mode to be applied (specifying the direction and offset of the line from the CU center that divides the CU into two partition parts, as shown in FIG. 4). Then, two syntax elements, merge_gpm_idx0 and merge_gpm_idx1, are signaled to indicate the indexes of the unidirectional prediction merge candidates used for the first GPM partition and the second GPM partition. More specifically, these two syntax elements are used to determine the unidirectional MVs of the two GPM splits from the unidirectional predictive merge list, as described in section "Constructing a Unidirectional Predictive Merge List."
[0092]
[0113] In some examples of GPM design, in order to make the two unidirectional MVs more different, the two indexes cannot be the same. Based on such prior knowledge, first, the unidirectional prediction merge index of the first GPM split is signaled and used as a predictor to reduce the signaling overhead of the unidirectional prediction merge index of the second GPM split. In detail, if the second unidirectional prediction merge index is smaller than the first unidirectional prediction merge index, its original value is directly signaled. Otherwise (if the second unidirectional prediction merge index is larger than the first unidirectional prediction merge index), its value is subtracted by 1 before being signaled to the bitstream. On the decoder side, first, the first unidirectional prediction merge index is a decoder. Then, for decoding the second unidirectional prediction merge index, if the parsed value is less than the first unidirectional prediction merge index, the second unidirectional prediction merge index is set equal to the parsed value, otherwise (if the parsed value is greater than or equal to the first unidirectional prediction merge index), the second unidirectional prediction merge index is set equal to the parsed value plus 1. Table 1 shows the existing syntax elements used for GPM mode in the current VVC specification.
[0093] [Table 1]
[0094]
[0114] In some examples of GPM design, a truncated unary code is used for binarization of two unidirectional prediction merge indexes, i.e., merge_gpm_idx0 and merge_gpm_idx1. Furthermore, since two unidirectional prediction merge indexes cannot be the same, different maximum values are used for truncating the codewords of the two unidirectional prediction merge indexes, and the maximum values are set to be equal to MaxGPMMergeCand-1 and MaxGPMMergeCand-2 for merge_gpm_idx0 and merge_gpm_idx1, respectively. MaxGPMMergeCand is the number of candidates in the unidirectional prediction merge list. At the decoder side, when the received value of merge_gpm_idx1 is equal to or greater than the value of merge_gpm_idx0, its value is increased by 1 since the values of merge_gpm_idx0 and merge_gpm_idx1 cannot be the same. When the GPM mode is applied, two different binarization methods are applied to convert the syntax element merge_gpm_partition_idx into a string of binary bits. Specifically, the syntax element is binarized by the fixed-length code and the truncated binary code in VVC.
[0095] Motion signaling for normal intermodes
[0096]
[0115] Similar to the HEVC standard, in addition to merge / skip modes, both VVC and AVS3 allow one inter CU to explicitly specify its motion information in the bitstream. Overall, the signaling of motion information in both VVC and AVS3 is maintained similar to the HEVC standard. Specifically, first, one inter prediction syntax, namely inter_pred_idc, is signaled to indicate prediction signals from lists L0, L1, or both. For each reference list used, the corresponding reference picture is identified by signaling one reference picture index ref_idx_lx(x=0,1) for the corresponding reference list, and the corresponding MV is represented by one MVP index mvp_lx_flag(x=0,1) used to select an MV predictor (MVP), followed by its motion vector difference (MVD) between the target MV and the selected MVP. Additionally, in the VVC standard, one control flag mvd_l1_zero_flag is signaled at the slice level. When mvd_l1_zero_flag is equal to 0, the L1 MVD is signaled in the bitstream; otherwise (when the mvd_l1_zero_flag flag is equal to 1), the L1 MVD is not signaled and its value is always inferred to be 0 at the encoder and decoder.
[0097] Bidirectional prediction with CU-level weights
[0098]
[0116] In standards prior to VVC and AVS3, when weighted prediction (WP) is not applied, bidirectional prediction signals are generated by averaging unidirectional prediction signals obtained from two reference pictures. In VVC, one tool coding, namely bidirectional prediction with CU-level weighting (BCW), is introduced to improve the efficiency of bidirectional prediction. Specifically, instead of simple averaging, bidirectional prediction in BCW is extended by allowing weighted averaging of two prediction signals, as shown in the following equation:
[0099]
number
[0100]
[0117] In VVC, when the current picture is a low-delay picture, the weight of one BCW coding block is allowed to be selected from a set of predefined weight values w∈{-2,3,4,5,10}, with a weight of 4 representing the case of traditional bi-prediction where two uni-directional prediction signals are weighted equally. For low-delay, only three weights w∈{3,4,5} are allowed. In general, there are some design similarities between WP and BCW, but the two coding tools target to solve the problem of illumination changes at different granularities. However, the interaction between WP and BCW may complicate VVC design in some cases, so the two tools are not allowed to be enabled at the same time. Specifically, when WP is enabled for one slice, the BCW weights for all bi-prediction CUs in this slice are not signaled and are inferred to be 4 (i.e., equal weights are applied).
[0101] Template Matching
[0102]
[0118] Template Matching (TM) is a decoder-side MV derivation method to improve the motion information of the current CU by finding the best match between one template consisting of reconstructed neighboring samples above and to the left of the current CU and a reference block (i.e., the same size as the template) in the reference picture. As shown in Fig. 6, one MV is searched around the initial motion of the current CU within a search range of [-8, +8] pels. The best match may be defined as the MV that achieves the lowest matching cost between the current template and the reference template, e.g., sum of absolute difference (SAD), sum of absolute transformed difference (SATD), etc. There are two different ways to apply the TM mode for inter-coding.
[0103]
[0119] In AMVP mode, the MVP candidate is determined to choose the one that reaches the minimum difference between the current block template and the reference block template based on the template matching difference, and then TM is performed only for this particular MVP candidate for MV improvement. TM improves this MVP candidate from full-pel MVD accuracy (or 4-pel for 4-pel AMVR mode) in the [-8, +8] pel search range by using an iterative diamond search. The AMVP candidate may be further improved by using a mutual search of full-pel MVD accuracy (or 4-pel for 4-pel AMVR mode), followed by a mutual search of sequential half-pel accuracy and quarter-pel accuracy, depending on the AMVR mode specified in Table 2 below. This search process ensures that the MVP candidate still maintains the same MV accuracy as that indicated by the AMVR mode after the TM process.
[0104] [Table 2]
[0105]
[0120] In merge mode, a similar search method is applied to the merge candidates indicated by the merge index. As shown in the table above, the TM may go all the way up to 1 / 8-pel MVD precision, or skip beyond half-pel MVD precision, depending on whether an alternative interpolation filter (used when AMVR is in half-pel mode) is used according to the merge motion information.
[0106] Decoder-side Intra Mode Derivation (DIMD)
[0107]
[0121] DIMD is an intra-coding tool in which the luma intra-prediction mode (IPM) is not transmitted through the bitstream. Instead, the IPM is derived using previously coded / decoded pixels in the same manner at the encoder and decoder. The DIMD method performs texture gradient processing to derive two optimal modes. These two modes and the planar mode are then applied to the block and their predictors are weighted averaged. The DIMD selection result is signaled in the bitstream of the intra-coded block using a flag. At the decoder, if the DIMD flag is true, the same previously coded neighboring pixels are used to derive the intra-prediction mode in the reconstruction process. If not true, the intra-prediction mode is parsed from the bitstream in the same way as the classical intra-coding modes.
[0108]
[0122] To derive the intra prediction mode of a block, first a set of neighboring pixels must be selected on which a gradient analysis will be performed. For normative purposes, these pixels should be within the pool of decoded / reconstructed pixels. A template may be selected that surrounds the current block by T pixels to the left and T pixels above, as shown in FIG. 7. A gradient analysis may then be performed on the pixels of the template. This allows determining the dominant angular orientation for the template, assuming that it is likely to be identical to the one of the current block. Furthermore, a simple 3×3 Sobel gradient filter may be used, defined by the following matrix that is convolved with the template:
[0109]
number
[0110]
[0123] For each pixel of the template, each of these two matrices may be multiplied point-wise by a 3×3 window centered on the current pixel and consisting of its eight direct neighbors, and the results may be summed. Thus, two values Gx (from multiplication with Mx) and Gy (from multiplication with My) may be obtained that correspond to the horizontal and vertical gradients at the current pixel, respectively.
[0111]
[0124] FIG. 8 illustrates the convolution process. Pixel 801 is the current pixel. Pixel 803 and pixel 801 are pixels for which gradient analysis is possible. Pixel 802 is a pixel for which gradient analysis is not possible due to lack of neighborhood. Pixel 804 is an available (reconstructed) pixel outside the considered template and is used for the gradient analysis of pixel 803. If pixel 804 is not available (e.g. because the block is too close to the picture border), gradient analysis of all pixels 803 that use this pixel 804 is not performed. For each pixel 803, the gradient magnitude (G) and orientation (O) may be calculated using Gx and Gy as follows:
[0112]
number
[0113]
[0125] The orientation of the gradient is then converted to an intra-angle prediction mode and used to index into the histogram (initialized to zero). The histogram value for that intra-angle mode is increased by G. Once all pixels 803 in the template have been processed, the histogram will contain the cumulative values of the gradient strength for each intra-angle mode. For the current block, the IPM corresponding to the two highest histogram bars is selected. If the maximum value in the histogram is 0 (meaning that no gradient analysis could be performed or the area that constitutes the template is flat), DC mode is selected as the intra-prediction mode for the current block.
[0114]
[0126] The two IPMs corresponding to the two highest histograms of the Oriented Gradient (HoG) bars are combined with the planar mode. Predictive fusion is applied as a weighted average of the three predictors mentioned above. For this purpose, the weight of the planar is fixed at 21 / 64 (approximately 1 / 3). The remaining weight of 43 / 64 (approximately 2 / 3) is then shared between the two HoG IPMs in proportion to the amplitude of the HoG bars. Figure 9 visualizes this process.
[0115]
[0127] The derived intra modes are included in the primary list of intra most probable modes (MPMs), and therefore the DIMD process is performed before the MPM list is constructed. The primary derived intra modes of a DIMD block are stored with the block and are used for MPM list construction of neighboring blocks.
[0116] Template-based intra mode derivation (TIMD)
[0117]
[0128] For each intra mode in MPM, the sum of absolute transformed difference (SATD) between the predicted samples and the reconstructed samples of the template region shown in FIG. 10 is calculated, and the intra mode with the first two modes with the smallest SATD cost is selected, and then they are fused with weights, and such weighted intra prediction is used to code the current CU.
[0118]
[0129] The costs of the two selected modes are compared to a threshold and a cost factor of 2 is applied in the test:
[0119]
number
[0120]
[0130] If this condition is true, fusion is applied, otherwise only mode1 is used.
[0121]
[0131] The weights of the modes are calculated from their SATD costs as follows:
[0122]
number
[0123] Geometric segmentation mode by template matching (TM)
[0124]
[0132] In ECM, template matching (TM) is applied on the geometric partition mode. When GPM is enabled for the current CU, two sets of unidirectional motion information of the GPM are derived from the GPM merge candidate list for each part of the GPM, respectively. The GPM merge candidate list is constructed as follows:
[0125]
[0133] In one example, interleaved List-0MV and List-1MV candidates are derived directly from the normal merge candidate list, with List-0MV candidates having a higher priority than List-1MV candidates. A pruning method with an adaptive threshold based on the current CU size is applied to remove redundant MV candidates.
[0126]
[0134] In another example, interleaved List-1MV candidates and List-0MV candidates are further derived directly from the normal merge candidate list, and List-1MV candidates have a higher priority than List-0MV candidates. The same pruning method with adaptive thresholds is also applied to remove redundant MV candidates.
[0127]
[0135] In another example, the MV candidates are zero-padded until the GPM candidate list is full.
[0128]
[0136] A CU level flag may be further signaled to indicate that TM is enabled for the GPM, i.e. both motion vectors of the GPM are further refined using template matching. During this template matching, one of the following template types is used for the refinement: Top (A), Left (L), Top-Left (A+L) of the current block. In the current solution ECM3.1 (adopted from JVET W0065), the template type is selected based on the angle parameters of the GPM, as shown in Table 3 below.
[0129] [Table 3]
[0130]
[0137] Then, using the same search pattern in merge mode with the half-pel interpolation filter disabled, the motion is refined by minimizing the difference between the current template and the template in the reference picture.
[0131] Template matching based reordering for GPM decomposition mode
[0132]
[0138] In VVC and ECM-3.1, there are 64 GPM partition modes, and the use of the partition mode for each GPM coding unit (CU) is signaled using a fixed-length binary code. This coding method may imply that all GPM partition modes are treated as equally probable events, and therefore fixed-length codes may be used for signaling accordingly.
[0133]
[0139] The template matching based GPM decomposition mode rearrangement method was first proposed in JVET literature JVET-Y0135. The cost of template matching for each GPM decomposition mode is calculated, and the decomposition modes are rearranged based on both the encoder-side and decoder-side costs. Only the best N candidates are available, with N less than or equal to 64. Instead of a fixed-length binary code, a variable-length code such as Golomb-Rice code is used to signal the GPM mode index.
[0134]
[0140] The reordering method for the GPM partition mode is a two-step process after the reference templates for each of the two GPM partitions in a coding unit are generated, as follows:
[0135]
[0141] First, we mix the reference templates of the two GPM splits using the respective weights of the split modes (i.e., to obtain 64 mixed reference templates) and calculate the TM cost of each of these mixed reference templates.
[0136]
[0142] Second, we reorder the TM costs in ascending order and mark the best N candidates as available splitting modes.
[0137]
[0143] As shown in Figure 11, the edges of the template are extended from the edges of the current CU. The corresponding weights used in the template mixing process are calculated similarly to the GPM weight derivation process. The only difference is:
[0138]
[0144] First, the sample positions on the template (relative to the origin of the CU) are used to derive the weights.
[0139]
[0145] Furthermore, for computational simplicity in the template blending process, the weights are mapped to 0 and 8 depending on which is closer before use, thus making the edges of the template clearer.
[0140] GPM with inter and intra prediction
[0141]
[0146] In one example of a GPM design, two unidirectionally predicted inter predictions are used to generate the final prediction. Methods of combining inter and intra predictions for GPM were introduced by JVET-X0166 and JVET-Y0065.
[0142]
[0147] In GPM with inter and intra prediction, the final prediction sample is generated by weighting the inter prediction sample and the intra prediction sample for each GPM separation region. Each part includes a flag to indicate that inter or intra prediction was used. The inter prediction sample is derived by the same scheme of the current GPM, and the intra prediction sample is derived by an intra prediction mode (IPM) candidate list and an index signaled from the encoder. The size of the IPM candidate list is predefined as 3. The available IPM candidates are a parallel angle mode (parallel mode) to the GPM block boundary, an orthogonal angle mode (orthogonal mode) to the GPM block boundary, and a planar mode, respectively, as shown in Figures 12A-12C. Furthermore, in the proposed method, the GPM with intra and intra prediction, as shown in Figure 12D, is limited to reduce the signaling overhead for the IPM and avoid increasing the size of the intra prediction circuit on the hardware decoder. Furthermore, direct motion vectors and IPM storage on the GPM mixed area are introduced to further improve the coding performance.
[0143]
[0148] Furthermore, the IPM list of GPM Intra may be further improved by DIMD, TIMD, and angle mode from neighboring blocks. More specifically, parallel mode is used in the first place of the IPM list, then TIMD, DIMD, and angle mode IPM candidates from the neighborhood are used, and pruning between the candidates is performed.
[0144]
[0149] For neighborhood mode derivation, there are at most five positions for the neighborhood blocks available, limited by the angles of the GPM block boundaries as shown in Table 4 below.
[0145] [Table 4]
[0146]
[0150] The current GPM with partition mode rearrangement is designed only for two inter prediction cases, i.e., two parts of the GPM must be predicted by inter prediction. First, templates for both parts are generated from reference pictures based on the parsed MV from the signaled merge index. These two templates are mixed using a mixing mask, which is similar to the normal GPM mixing mask and depends on the partition mode to generate the final template used in template matching based GPM partition mode rearrangement.
[0147]
[0151] However, the latest GPM design allows a combination of inter-prediction and intra-prediction, i.e., one part of the GPM may be predicted by inter-prediction as described above, and the other part by intra-prediction. The intra-prediction modes are derived from an intra-prediction mode (IPM) list with a size of 3, and the best intra-mode is pointed to by an index parsed from the bitstream.
[0148]
[0152] In the current design, the template matching based GPM decomposition mode rearrangement is not directly used on GPMs with inter and intra combined modes, because the intra prediction modes do not have corresponding templates that are used in the blending process to generate the final template.
[0149]
[0153] In this disclosure, a solution is provided that is used to combine the template matching based GPM decomposition mode rearrangement method and the GPM inter and intra combination method.
[0150]
[0154] In some examples, the intra-prediction and inter-prediction parts of the GPM may behave differently. Typically, inter-prediction is used for moving objects to reduce temporal redundancy in the video signal, and intra-prediction is likely to be used for predicting stationary backgrounds to reduce spatial redundancy. When a final template for a partition mode is generated between an inter-prediction template and an intra-prediction template using GPM mixing, this template may not be equivalent to the template (reconstructed sample) of the current block. Using this template to calculate the cost and rearrange the partition modes of the GPM may produce undesirable results and cause coding loss.
[0151]
[0155] In some examples, if one part of the GPM is predicted intra, the template matching-based GPM partition mode rearrangement is disabled and the GPM mode index is coded using an equal length code without context coding bins. Otherwise (if both parts of the GPM are predicted inter), the template matching-based GPM partition mode rearrangement is applied as the current design to rearrange the GPM partition modes at both the encoder and decoder sides, and the GPM mode index with the lowest template cost from the N best candidates is coded using a Golomb-Rice code with context coding bins. Table 5 shows the GPM-related syntax of VVC from the VVC specification (JVET-T2001-v2).
[0152] [Table 5]
[0153]
[0156] Table 6 is one example syntax table for the combinations provided in this disclosure.
[0154] [Table 6]
[0155]
[0157] The italicized syntax elements in Table 6 (both bold and non-bold) indicate the solutions provided in this disclosure. The syntax elements gpm_part0_intra_flag and gpm_part1_intra_flag indicate that part 0 and part 1 of the GPM are intra predicted. If one part of the GPM partition mode uses intra prediction, the normal partition index syntax element gpm_partition_idx is signaled, otherwise (when both parts use inter prediction), the partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode is signaled. The normal partition index (gpm_partition_idx) has a value of 0 to the maximum number of possible values of the GPM partition mode minus 1 (e.g., 63) and is encoded by a fixed-length code. The partition index (gpm_partition_sig_idx) for the reordered GPM partition mode has a value from 0 to the best possible value of N minus 1 (e.g., 15 if N is equal to 16). Table 6 shows only one example of these syntax elements. The names of the syntax elements and the coding structure between them are not limited to the example in Table 6.
[0156]
[0158] In some examples, assuming that the intra-prediction part of the GPM has a similar structure to the inter-prediction part, the GPM partition mode rearrangement method may also be applied to a combination of GPM inter- and intra-prediction. In this case, a template based on intra-prediction used in the template mixing process of the GPM partition mode rearrangement needs to be generated.
[0157]
[0159] In some examples, at the decoder side, an intra mode index of the GPM intra prediction part is analyzed, an IPM list for the GPM intra prediction part is constructed, and the best intra mode for the GPM intra prediction is obtained based on the intra mode index and the constructed IPM list.
[0158]
[0160] During the generation of the same intra-predicted block as shown in Fig. 10, an additional L1 line above the current block and an additional L2 line to the left are extended, and the sizes of L1 and L2 are equal to the template size used in the rearrangement of the GPM partitioning modes, e.g., L1 is equal to 1 and L2 is equal to 1. Based on the analyzed best intra-prediction mode for the already reconstructed samples and the GPM intra-prediction, the intra-predictor of the GPM and its template are generated.
[0159]
[0161] The same inter-template is generated as in the current design in the reordering method of GPM partition mode, i.e., based on the analyzed MV, the corresponding template is interpolated from the samples of the reference picture.
[0160]
[0162] Using the template mixing mask in the current design of the GPM decomposition mode rearrangement method, the inter-template and intra-template are mixed to generate a final template, which is compared with the template of the current block for each GPM decomposition mode by the distortion cost (e.g., SAD). The GPM decomposition modes are rearranged accordingly.
[0161]
[0163] In some examples, only the partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode needs to be signaled for both normal GPM (i.e., two parts are predicted by inter) and GPM with inter and intra combination (i.e., one part of the GPM is predicted by intra and the other part of the GPM is predicted by inter), as shown in Table 7. The partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode may use the existing syntax element (gpm_partition_idx), i.e., the partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode is a replacement for the existing syntax element (gpm_partition_idx). The partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode has a value from 0 to the best possible value of N minus 1 (e.g., 15 if N is equal to 16). Table 7 shows only an example of these syntax elements. The names of the syntax elements and the coding structure between them are not limited to the example in Table 7.
[0162] [Table 7]
[0163]
[0164] 13 illustrates a computing environment (or computing device) 1310 coupled with a user interface 1360. The computing environment 1310 may be part of a data processing server. In some embodiments, the computing device 1310 may implement any of the various methods or processes (e.g., encoding / decoding methods or processes) previously described herein according to various examples of the disclosure. The computing environment 1310 may include a processor 1320, a memory 1340, and an I / O interface 1350.
[0164]
[0165] The processor 1320 typically controls the overall operation of the computing environment 1310, such as operations related to display, data acquisition, data communication, and image processing. The processor 1320 may include one or more processors for executing instructions called for performing all or a portion of the steps in the methods described above. Additionally, the processor 1320 may include one or more modules that facilitate interaction between the processor 1320 and other components. The processor may be a central processing unit (CPU), a microprocessor, a single chip machine, a GPU, or the like.
[0165]
[0166] The memory 1340 is configured to store various types of data to support the operation of the computing environment 1310. The memory 1340 may include predefined software 1342. Examples of such data include instructions for any application or method operated on the computing environment 1310, video data sets, image data, etc. The memory 1340 may be implemented by using any type of volatile or non-volatile memory device, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic or optical disk, or a combination thereof.
[0166]
[0167] The I / O interface 1350 provides an interface between the processor 1320 and a peripheral interface module such as a keyboard, a click wheel, buttons, etc. The buttons may include, but are not limited to, a home button, a start scan button, and a stop scan button. The I / O interface 1350 may be coupled to an encoder and a decoder.
[0167]
[0168] In some embodiments, a non-transitory computer readable storage medium is also provided that includes a number of programs, such as those for performing the methods described above, that are included in memory 1340 and executable by processor 1320 in computing environment 1310. The non-transitory computer readable storage medium may be, for example, a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like.
[0168]
[0169] A non-transitory computer-readable storage medium stores a plurality of programs for execution by a computing device having one or more processors, the plurality of programs, when executed by the one or more processors, causing the computing device to perform the method for motion prediction described above.
[0169]
[0170] In some embodiments, the computing environment 1310 may be implemented using one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), graphical processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components to perform the methods described above.
[0170]
[0171] FIG. 14 is a flowchart illustrating a method for video decoding according to an example of this disclosure.
[0171]
[0172] In step 1401, the processor 1320 may obtain a first GPM portion and a second GPM portion for a CU at the decoder side.
[0172]
[0173] In step 1402, the processor 1320 may disable multiple GPM partition modes applied to the CU, i.e., rearrangement of TM-based GPM partition modes for multiple GPM modes, in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction.
[0173]
[0174] In some examples, multiple GPM split modes, i.e., multiple GPM modes, may be applied to the CU, which may include the GPM modes shown in Figure 4. Figure 4 shows multiple GPM modes, in which the CU is split into two parts using a split line corresponding to different angle and offset parameters.
[0174]
[0175] In some examples, in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction, the processor 1320 may decode a GPM mode index indicating a first GPM partition mode selected from a plurality of GPM partition modes using an equal length code without context coding bins.
[0175]
[0176] In step 1403, the processor 1320 may enable TM-based GPM partition mode rearrangement for multiple GPM partition modes in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction.
[0176]
[0177] In some examples, the processor 1320 may decode, in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction, a GPM mode index indicating a second GPM partition mode selected from the one or more rearranged GPM partition modes based on the reference templates of the first and second GPM portions using a variable length code with context coding bins. The one or more rearranged GPM partition modes may be selected from the multiple GPM partition modes and rearranged based on the TM cost. For example, the one or more rearranged GPM partition modes may include some or all GPM partition modes from the multiple partition modes, and the ordering of the one or more rearranged GPM partition modes may be different from the corresponding ordering in the multiple GPM partition modes. In some examples, the one or more rearranged GPM partition modes may be N-1 GPM partition modes (e.g., N is equal to 16) selected as the best 15 GPM partition modes after rearrangement. It should be noted that N may be any number less than or equal to the total number of GPM partition modes.
[0177]
[0178] In some examples, the processor 1320 may determine whether the first GPM portion is predicted by intra prediction based on the first GPM intra syntax element. Similarly, the processor 1320 may determine whether the second GPM portion is predicted by intra prediction based on the second GPM intra syntax element. As shown in Table 6, the first GPM intra syntax element and the second GPM intra syntax element may be gpm_part0_intra_flag and gpm_part1_intra_flag, respectively.
[0178]
[0179] In some examples, the processor 1320 may obtain a first partition index syntax element to indicate the first GPM partition mode in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction. In some examples, the first partition index syntax element is encoded using a fixed length code. As shown in Table 6, the first partition index syntax element may be a normal partition index (gpm_partition_idx).
[0179]
[0180] In some examples, the processor 1320 may obtain a second partition index syntax element to indicate the second GPM partition mode in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction. In some examples, the second partition index syntax element is encoded using a variable length code. As shown in Table 6, the second partition index syntax element may be a partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode.
[0180]
[0181] FIG. 15 is a flow chart illustrating a method for video encoding that corresponds to the method for video decoding shown in FIG.
[0181]
[0182] In step 1501, the processor 1320 may obtain a first GPM portion and a second GPM portion for a CU at the encoder side.
[0182]
[0183] In step 1502, the processor 1320 may disable rearrangement of TM-based GPM partition modes for multiple GPM partition modes applied to the CU in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction.
[0183]
[0184] In some examples, multiple GPM split modes, i.e., multiple GPM modes, may be applied to the CU, which may include the GPM modes shown in Figure 4. Figure 4 shows multiple GPM modes, in which the CU is split into two parts using a split line corresponding to different angle and offset parameters.
[0184]
[0185] In some examples, in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction, the processor 1320 may encode a GPM mode index indicating a first GPM partition mode selected from the multiple GPM partition modes using an equal length code without context coding bins.
[0185]
[0186] In step 1503, the processor 1320 may enable TM-based GPM partition mode rearrangement for multiple GPM partition modes in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction.
[0186]
[0187] In some examples, the processor 1320 may, in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction, encode a GPM mode index indicating a second GPM partition mode selected from the one or more rearranged GPM partition modes based on the reference templates of the first and second GPM portions using a variable length code with context coding bins. The one or more rearranged GPM partition modes may be selected from the multiple GPM partition modes and may be rearranged based on the TM cost. For example, the one or more rearranged GPM partition modes may include some or all GPM partition modes from the multiple partition modes, and the ordering of the one or more rearranged GPM partition modes may be different from the corresponding ordering in the multiple GPM partition modes. In some examples, the one or more rearranged GPM partition modes may be N-1 GPM partition modes (e.g., N is equal to 16) selected as the best 15 GPM partition modes after rearrangement. It should be noted that N may be any number less than or equal to the total number of GPM partition modes.
[0187]
[0188] In some examples, the processor 1320 may signal a first GPM intra syntax element to indicate whether the first GPM portion is predicted by intra prediction. Similarly, the processor 1320 may signal a second GPM intra syntax element to indicate whether the second GPM portion is predicted by intra prediction. As shown in Table 6, the first GPM intra syntax element and the second GPM intra syntax element may be gpm_part0_intra_flag and gpm_part1_intra_flag, respectively.
[0188]
[0189] In some examples, the processor 1320 may signal a first partition index syntax element to indicate the first GPM partition mode in response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction. In some examples, the first partition index syntax element is encoded using a fixed length code. As shown in Table 6, the first partition index syntax element may be a normal partition index (gpm_partition_idx).
[0189]
[0190] In some examples, the processor 1320 may signal a second partition index syntax element to indicate the second GPM partition mode in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction. In some examples, the second partition index syntax element is encoded using a variable length code. As shown in Table 6, the second partition index syntax element may be a partition index (gpm_partition_sig_idx) for the rearranged GPM partition mode.
[0190]
[0191] FIG. 16 is a flowchart illustrating a method for video decoding according to an example of this disclosure.
[0191]
[0192] In step 1601, the processor 1320 may obtain a first GPM portion and a second GPM portion for a CU at the decoder side.
[0192]
[0193] The processor 1320 may determine in step 1602-1 that the first GPM portion is coded by inter prediction. After determining that the first GPM portion is coded by inter prediction, the processor 1320 may obtain an inter predicted sample of the reconstructed neighboring samples of the CU based on the motion vector associated with the first GPM portion in step 1602-2. As discussed above, the reconstructed neighboring samples of the CU may include reconstructed neighboring samples above or to the left of the CU, as shown in any of FIG. 6, FIG. 11, and FIG. 12A-FIG. 12C.
[0193]
[0194] The processor 1320 may determine that the second GPM portion is encoded by intra prediction in step 1603-1. After determining that the second GPM portion is encoded by intra prediction, the processor 1320 may configure an IPM list for the second GPM portion in step 1603-2. The processor 1320 may further obtain a candidate intra mode for the second GPM portion based on the IPM list in step 1603-3, and may obtain an intra predicted sample of the reconstructed neighboring samples of the CU based on the candidate intra mode in step 1603-4.
[0194]
[0195] In some examples, as discussed above, the candidate intra mode may be the best intra mode indicated by an index parsed from the bitstream received from the encoder.
[0195]
[0196] In step 1604, the processor 1320 may rearrange the multiple GPM partition modes, i.e., multiple GPM modes, based on the inter-predicted samples and intra-predicted samples of the reconstructed neighboring samples of the CU.
[0196]
[0197] In some examples, multiple GPM split modes, i.e., multiple GPM modes, may be applied to the CU, which may include the GPM modes shown in Figure 4. Figure 4 shows multiple GPM modes, in which the CU is split into two parts using a split line corresponding to different angle and offset parameters.
[0197]
[0198] In step 1605, the processor 1320 may select one GPM partition mode from the rearranged GPM partition modes.
[0198]
[0199] In some examples, the processor 1320 may further obtain a third partitioning syntax element indicating an index of a selected GPM partitioning mode, obtain a distortion cost for each GPM partitioning mode from the multiple GPM partitioning modes applied to the CU based on inter-predicted samples and intra-predicted samples of the reconstructed neighboring samples of the CU, and rearrange the multiple GPM partitioning modes based on the distortion costs of the multiple GPM partitioning modes. As shown in Table 7, the third partitioning syntax element may be a syntax element gpm_partition_sig_idx.
[0199]
[0200] In some examples, the processor 1320 may select a GPM partition mode from the rearranged plurality of GPM partition modes based on the third partition syntax element.
[0200]
[0201] In step 1606, the processor 1320 may obtain a predicted sample for the CU based on the selected GPM partitioning mode.
[0201]
[0202] In some examples, the processor 1320 may parse a first GPM syntax element indicating whether the first GPM portion is predicted by inter prediction or intra prediction, and in response to determining that the first GPM syntax element is equal to a first value, determine that the first GPM portion is encoded by inter prediction. For example, when the first GPM syntax element is equal to a first value, the first GPM portion is encoded by inter prediction, and when the first GPM syntax element is equal to a second value, the first GPM portion is encoded by intra prediction.
[0202]
[0203] Similarly, the processor 1320 may parse a second GPM syntax element indicating whether the second GPM portion is predicted by inter prediction or intra prediction, and in response to determining that the second GPM syntax element is equal to a second value, determine that the second GPM portion is encoded by intra prediction. For example, when the second GPM syntax element is equal to a first value, the second GPM portion is encoded by inter prediction, and when the second GPM syntax element is equal to the second value, the first GPM portion is encoded by intra prediction.
[0203]
[0204] FIG. 17 is a flow chart illustrating a method for video encoding that corresponds to the method for video decoding shown in FIG.
[0204]
[0205] In step 1701, the processor 1320 may obtain a first GPM portion and a second GPM portion for a CU at the encoder side.
[0205]
[0206] The processor 1320 may determine in step 1702-1 that the first GPM portion is coded by inter prediction. After determining that the first GPM portion is coded by inter prediction, the processor 1320 may obtain an inter predicted sample of the reconstructed neighboring samples of the CU based on the motion vector associated with the first GPM portion in step 1702-2. As discussed above, the reconstructed neighboring samples of the CU may include reconstructed neighboring samples above or to the left of the CU, as shown in any of FIG. 6, FIG. 11, and FIG. 12A-FIG. 12C.
[0206]
[0207] The processor 1320 may determine that the second GPM portion is encoded by intra prediction in step 1703-1. After determining that the second GPM portion is encoded by intra prediction, the processor 1320 may construct an IPM list for the second GPM portion in step 1703-2. The processor 1320 may further obtain a candidate intra mode for the second GPM portion based on the IPM list in step 1703-3, and may obtain an intra predicted sample of the reconstructed neighboring samples of the CU based on the candidate intra mode in step 1703-4.
[0207]
[0208] In some examples, as discussed above, the candidate intra mode may be the best intra mode indicated by an index parsed from the bitstream received from the encoder.
[0208]
[0209] In step 1704, the processor 1320 may rearrange the multiple GPM partition modes, i.e., multiple GPM modes, based on the inter-predicted samples and intra-predicted samples of the reconstructed neighboring samples of the CU.
[0209]
[0210] In some examples, multiple GPM split modes, i.e., multiple GPM modes, may be applied to the CU, which may include the GPM modes shown in Figure 4. Figure 4 shows multiple GPM modes, in which the CU is split into two parts using a split line corresponding to different angle and offset parameters.
[0210]
[0211] In step 1705, the processor 1320 may select one GPM partition mode from the rearranged GPM partition modes.
[0211]
[0212] In some examples, the processor 1320 may further obtain a third partitioning syntax element indicating an index of the selected GPM partitioning mode, obtain a distortion cost based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU for each GPM partitioning mode from the multiple GPM partitioning modes applied to the CU, and rearrange the multiple GPM partitioning modes based on the distortion costs of the multiple GPM partitioning modes. As shown in Table 7, the third partitioning syntax element may be a syntax element gpm_partition_sig_idx.
[0212]
[0213] In some examples, the processor 1320 may select a GPM partition mode from the rearranged plurality of GPM partition modes based on the third partition syntax element.
[0213]
[0214] In step 1706, the processor 1320 may obtain a predicted sample for the CU based on the selected GPM partitioning mode.
[0214]
[0215] In some examples, the processor 1320 may signal a first GPM syntax element indicating whether the first GPM portion is predicted by inter-prediction or intra-prediction. Similarly, the processor 1320 may signal a second GPM syntax element indicating whether the second GPM portion is predicted by inter-prediction or intra-prediction.
[0215]
[0216] In some examples, an apparatus for video decoding is provided. The apparatus includes a processor 1320 and a memory 1340 configured to store instructions executable by the processor, the processor configured to, upon execution of the instructions, perform any of the methods shown in FIG. 14 or FIG.
[0216]
[0217] In some examples, an apparatus for video encoding is provided. The apparatus includes a processor 1320 and a memory 1340 configured to store instructions executable by the processor, the processor being configured to, upon execution of the instructions, perform any of the methods shown in FIG. 15 or FIG. 17.
[0217]
[0218] In some other examples, a non-transitory computer-readable storage medium having instructions stored thereon is provided. When executed by the processor 1320, the instructions cause the processor to perform any of the methods illustrated in Figures 14-17. In one example, a number of programs may be executed by the processor 1320 in the computing environment 1310 to receive (e.g., from the video encoder 20 of Figure 1G) a bitstream or datastream including encoded video information (e.g., video blocks representing encoded video frames, and / or one or more associated syntax elements, etc.), and may be executed by the processor 1320 in the computing environment 1310 to perform the decoding method described above according to the received bitstream or datastream. In another example, the programs may be executed by the processor 1320 in the computing environment 1310 to perform the encoding method described above to encode video information (e.g., video blocks representing encoded video frames, and / or one or more associated syntax elements, etc.) into a bitstream or data stream, and may also be executed by the processor 1320 in the computing environment 1310 to transmit the bitstream or data stream (e.g., to the video decoder 30 of FIG. 2B). Alternatively, the non-transitory computer-readable storage medium may store a bitstream or data stream including encoded video information (e.g., video blocks representing encoded video frames, and / or one or more associated syntax elements, etc.) generated by an encoder (e.g., the video encoder 20 of FIG. 1G) using the encoding method described above, for use by the decoder (e.g., the video decoder 30 of FIG. 2B) in decoding the video data. The non-transitory computer-readable storage medium may be, for example, a ROM, a random access memory (RAM), a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, etc.
[0218]
[0219] Other examples of the present disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the disclosure disclosed above. This application is intended to cover any variations, uses, or adaptations of the present disclosure in accordance with its general principles, including departures from the present disclosure within known or customary practice in the art. It is intended that the specification and examples be considered as illustrative only.
[0219]
[0220] It will be understood that the present disclosure is not limited to the precise examples described above and illustrated in the accompanying drawings, and that various modifications and changes can be made without departing from the scope of the present disclosure.
Claims
1. 1. A method for video decoding, comprising: A decoder obtains a first geometric partition mode (GPM) portion and a second GPM portion for a coding unit (CU); In response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction, the decoder disables template matching (TM)-based GPM partition mode rearrangement for a plurality of GPM partition modes applied to the CU; enabling, by the decoder, a rearrangement of the TM-based GPM partition modes for the plurality of GPM partition modes in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction; The method includes:
2. in response to determining that the first GPM portion or the second GPM portion is predicted by the intra prediction, the decoder decodes, using an equal length code without context coding bins, a GPM mode index indicating a first GPM partition mode selected from the plurality of GPM partition modes; in response to determining that both the first GPM portion and the second GPM portion are predicted by the inter prediction, the decoder decodes, using a variable length code having context coding bins, the GPM mode index indicating a second GPM partition mode selected from one or more rearranged GPM partition modes based on a reference template of the first and second GPM portions; Further comprising: The method of claim 1 , wherein the one or more rearranged GPM partition modes are from the plurality of GPM partition modes and are rearranged based on TM cost.
3. determining, by the decoder, whether the first GPM portion is predicted by the intra prediction based on a first GPM intra syntax element; determining, by the decoder, whether the second GPM portion is predicted by the intra prediction based on a second GPM intra syntax element; The method of claim 1 further comprising:
4. In response to determining that the first GPM portion or the second GPM portion is predicted by the intra prediction, the decoder further includes obtaining a first partition index syntax element to indicate the first GPM partition mode; The method of claim 2 , wherein the first partition index syntax element is encoded using a fixed length code.
5. In response to determining that both the first GPM portion and the second GPM portion are predicted by the inter prediction, the decoder further includes obtaining a second partition index syntax element to indicate the second GPM partition mode; The method of claim 2 , wherein the second partition index syntax element is encoded using a variable length code.
6. 1. A method for video encoding, comprising: An encoder obtaining a first geometric partition mode (GPM) portion and a second GPM portion for a coding unit (CU); In response to determining that the first GPM portion or the second GPM portion is predicted by intra prediction, the encoder disables template matching (TM)-based GPM partition mode rearrangement for a plurality of GPM partition modes applied to the CU; in response to determining that both the first GPM portion and the second GPM portion are predicted by inter prediction, the encoder enables a rearrangement of the TM-based GPM partition modes for the plurality of GPM partition modes; The method includes:
7. In response to determining that the first GPM portion or the second GPM portion is predicted by the intra prediction, the encoder encodes a GPM mode index indicating a first GPM partition mode selected from the plurality of GPM partition modes using an equal length code without context coding bins; in response to determining that both the first GPM portion and the second GPM portion are predicted by the inter prediction, the encoder uses a variable length code having context coding bins to encode the GPM mode index indicating a second GPM partition mode selected from one or more rearranged GPM partition modes based on a reference template of the first and second GPM portions; Further comprising: The method of claim 6 , wherein the one or more rearranged GPM partition modes are from the plurality of GPM partition modes and are rearranged based on TM cost.
8. the encoder signaling a first GPM intra syntax element to indicate whether the first GPM portion is predicted by the intra prediction; the encoder signaling a second GPM intra syntax element to indicate whether the second GPM portion is predicted by the intra prediction; The method of claim 6 further comprising:
9. In response to determining that the first GPM portion or the second GPM portion is predicted by the intra prediction, the encoder further includes signaling a first partition index syntax element to indicate the first GPM partition mode; The method of claim 7 , wherein the first partition index syntax element is encoded using a fixed length code.
10. In response to determining that both the first GPM portion and the second GPM portion are predicted by the inter prediction, the encoder further includes signaling a second partition index syntax element to indicate the second GPM partition mode; The method of claim 7 , wherein the second partition index syntax element is encoded using a variable length code.
11. 1. A method for video decoding, comprising: A decoder obtains a first geometric partition mode (GPM) portion and a second GPM portion for a coding unit (CU); in response to determining that the first GPM portion is coded by inter prediction, the decoder obtains an inter predicted sample of the reconstructed neighboring samples of the CU based on a motion vector associated with the first GPM portion; in response to determining that the second GPM portion was encoded using intra prediction, the decoder constructs an intra-prediction mode (IPM) list for the second GPM portion; the decoder obtains candidate intra modes for the second GPM portion based on the IPM list; the decoder obtaining intra prediction samples of the reconstructed neighboring samples of the CU based on the candidate intra modes; the decoder rearranges a plurality of GPM partition modes based on the inter-predicted samples and intra-predicted samples of the reconstructed neighboring samples of the CU; the decoder selecting a GPM partition mode from the rearranged GPM partition modes; obtaining a predicted sample for the CU based on the selected GPM partitioning mode; The method includes:
12. the decoder parses a first GPM syntax element indicating whether the first GPM portion is predicted by inter prediction or intra prediction; determining, by the decoder, in response to determining that the first GPM syntax element is equal to a first value, that the first GPM portion was encoded using inter prediction; The method of claim 11 further comprising:
13. the decoder parses a second GPM syntax element indicating whether the second GPM portion is predicted by inter prediction or intra prediction; determining, by the decoder, in response to determining that the second GPM syntax element is equal to a second value, that the second GPM portion was encoded using intra prediction; The method of claim 11 further comprising:
14. The step of rearranging the plurality of GPM partition modes based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU includes: obtaining, by the decoder, a third partitioning syntax element indicating an index of the selected GPM partitioning mode; The decoder obtains, for each GPM partition mode from a plurality of GPM partition modes applied to the CU, a distortion cost based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU; the decoder reordering the plurality of GPM partitioning modes based on distortion costs of the plurality of GPM partitioning modes; Further comprising: The step of the decoder selecting the one GPM partition mode from the rearranged plurality of GPM partition modes comprises:
12. The method of claim 11, comprising the decoder selecting the GPM partition mode from the rearranged plurality of GPM partition modes based on the third partition syntax element.
15. 1. A method for video encoding, comprising: An encoder obtaining a first geometric partition mode (GPM) portion and a second GPM portion for a coding unit (CU); in response to determining that the first GPM portion is coded by inter prediction, the encoder obtains an inter predicted sample of the reconstructed neighboring samples of the CU based on a motion vector associated with the first GPM portion; in response to determining that the second GPM portion was encoded using intra prediction, the encoder constructing an intra-prediction mode (IPM) list for the second GPM portion; the encoder obtains candidate intra modes for the second GPM portion based on the IPM list; the encoder obtaining an intra-predicted sample from among the reconstructed neighboring samples of the CU based on the candidate intra-mode; the encoder rearranges a plurality of GPM partition modes based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU; the encoder selecting a GPM partition mode from the rearranged GPM partition modes; the encoder obtaining a predicted sample for the CU based on the selected GPM partitioning mode; The method includes:
16. the encoder signaling a first GPM syntax element indicating whether the first GPM portion is predicted by inter-prediction or intra-prediction. The method of claim 15 further comprising:
17. the encoder signaling a second GPM syntax element indicating whether the second GPM portion is predicted by inter-prediction or intra-prediction. The method of claim 15 further comprising:
18. The step of rearranging the plurality of GPM partition modes based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU includes: the encoder obtaining a third partitioning syntax element indicating an index of the selected GPM partitioning mode; The encoder obtains, for each GPM partition mode from a plurality of GPM partition modes applied to the CU, a distortion cost based on the inter-predicted samples and the intra-predicted samples of the reconstructed neighboring samples of the CU; the encoder rearranging the plurality of GPM partition modes based on distortion costs of the plurality of GPM partition modes; Further comprising: The step of the encoder selecting the one GPM partition mode from the rearranged plurality of GPM partition modes comprises:
16. The method of claim 15, further comprising the encoder selecting the GPM partition mode from the rearranged plurality of GPM partition modes based on the third partition syntax element.
19. 1. An apparatus for video decoding, comprising: one or more processors; a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors; 15. An apparatus, wherein the one or more processors are configured, upon execution of the instructions, to perform a method according to any one of claims 1 to 5 and 11 to 14.
20. 1. An apparatus for video encoding, comprising: one or more processors; a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors; 20. An apparatus, wherein the one or more processors are configured, upon execution of the instructions, to perform a method according to any one of claims 6 to 10 and 15 to 18.
21. A non-transitory computer-readable storage medium for storing computer-executable instructions that, when executed by one or more computer processors, cause the one or more computer processors to receive a bitstream and perform a method according to any one of claims 1 to 5 and 11 to 14 based on the bitstream.
22. A non-transitory computer-readable storage medium for storing computer-executable instructions, which, when executed by one or more computer processors, cause the one or more computer processors to perform a method according to any one of claims 6 to 10 and 15 to 18, to encode the CU into a bitstream, and to transmit the bitstream.
Citation Information
Cited By
Partitioning Pattern Derivation Based on Template Matching
JP2025530286A
Derivation of partitioning patterns based on template matching
JP7842943B2