Image and video encoding and decoding
By dynamically adjusting partitioning depth and tree types in image data encoding, the method addresses inefficiencies in existing video coding standards, enhancing compression performance and reducing encoder complexity for complex video content.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- CANON KK
- Filing Date
- 2024-04-02
- Publication Date
- 2026-04-14
AI Technical Summary
Existing video coding standards like HEVC face challenges in achieving high compression efficiency for ultra-high definition and high dynamic range videos, particularly in handling complex video content such as 360-degree videos, with limitations in partitioning strategies that affect encoding efficiency and encoder complexity.
The method involves partitioning image data into blocks using an encoding tree with adjustable maximum partitioning depth based on parameters like quadtree depth and baseline values, allowing for dynamic adjustment of binary and ternary tree partitions to optimize encoding efficiency and reduce encoder complexity.
This approach enhances encoding efficiency and reduces encoder runtime by optimizing partitioning strategies, leading to improved compression performance and reduced computational demands.
Smart Images

Figure 2026511393000001_ABST
Abstract
Description
Technical Field
[0001] Technical field to which the invention belongs The present invention relates to the encoding and decoding of image and video data, and particularly, but not limited to, to image and video partitioning data.
Background Art
[0002] background The JVET (Joint Video Experts), formed by a joint team of MPEG and ITU-T Study Group 16’VCEG, announced a new video coding standard called VVC (Versatile video Coding). The goal of VVC is to provide a significant improvement in compression performance that exceeds the existing HEVC standard (i.e., typically twice that of the previous one). The main target applications and services include, but are not limited to, 360-degree and high dynamic range (HDR) videos. It has shown particular effectiveness for ultra-high definition (UHD) video test materials. Therefore, an improvement in compression efficiency far exceeding the 50% target of the final standard can be expected. Since the completion of the standardization of VVC v1, the JVET has started the exploration phase by establishing an exploration software (ECM). This collects additional tools and improvements to existing tools in addition to the VVC standard in order to target better encoding efficiency.
Summary of the Invention
[0003] According to one aspect of the present invention, a method is provided for encoding or decoding image data into or from a bitstream, wherein the bitstream includes data indicating that the image data should be partitioned into a plurality of blocks according to an encoding tree, the blocks in the encoding tree may be partitioned according to one or more types of splits, and the method comprises obtaining, for the current block to be decoded, a parameter used to partition the current block of image data based on at least one other parameter for partitioning the image data.
[0004] A further aspect of the present invention provides a method for encoding or decoding image data into or from a bitstream, wherein the bitstream includes data indicating that the image data is to be partitioned into a plurality of blocks according to an encoding tree, the blocks in the encoding tree may be partitioned according to one or more types of partitioning, and the method comprises obtaining a parameter indicating the maximum partitioning depth of at least one partitioning type for the current block to be decoded, using at least one other parameter associated with the image data. The advantages include increased encoding efficiency and, in some cases, reduced encoder runtime, as a result of reduced encoder complexity. The maximum partitioning depth may be the maximum multi-tree partitioning depth, which represents the maximum partitioning depth for multiple partitioning types. At least one other parameter is optionally obtained based on another parameter of the current block. The maximum partitioning depth can represent the maximum multi-tree partitioning depth, which is the maximum partitioning depth for binary tree partitioning and ternary tree partitioning. At least one other parameter is based on the quadtree depth or block size of the current block.
[0005] The maximum multitree partitioning depth obtained is optionally further based on a comparison between a parameter and a baseline value. The baseline value may be signaled in the bitstream header. The baseline value can be based on a depth other than the quadtree depth of the current block. The baseline value may relate to the quadtree depth value associated with at least one region of another frame. The baseline value may be based on the mean quadtree depth determined from at least one region of another frame. The baseline value may be based on the minimum quadtree depth determined from at least one region of another frame. The baseline value may be based on the maximum or average multitree depth determined from at least one region of another frame.
[0006] The method may include increasing the current maximum multitree depth to obtain the maximum multitree depth of the current block, according to one or more rules or conditions based on the quadtree depth value and the baseline depth value. For example, when the quadtree depth value matches the baseline quadtree depth value, the current maximum multitree depth is increased to obtain the current block's maximum multitree depth. Alternatively, or additionally, when the quadtree depth value matches the base value minus 1, the current maximum multitree depth is incremented to obtain the maximum multitree depth of the current block. Optionally, the baseline quadtree value is further required to match the minimum quadtree value associated with a region of one or more reference frames in order to increase the current maximum multitree depth. Optionally, the reference quadtree value may further be required to match the current frame's maximum quadtree depth in order to increase the current maximum multitree depth. In addition, or alternatively, this method may include decreasing the current maximum multitree depth to obtain the current block's maximum multitree depth according to one or more rules or conditions based on the quadtree depth value and the reference depth value. For example, if the quadtree depth value does not match the baseline quadtree depth value, the current maximum multitree depth is reduced to obtain the maximum multitree depth for the current block. Alternatively or additionally, if the quadtree depth value does not match the base quadtree depth value minus 1, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.
[0007] Optionally, if the quadtree depth value is greater than the baseline depth value, the current maximum multitree depth is reduced for the current block. Optionally, when the quadtree depth value is greater than the baseline depth value, the reduction of the current maximum multitree depth of the current block is only applied when the baseline depth value is obtained from a region of another frame code that has a higher quality than the current frame. Optionally, if the quadtree depth value is less than the base depth value minus the offset, the current maximum multitree depth of the current block is reduced. The offset may be 1. Optionally, when the quadtree depth value is less than the base depth value minus the offset, reducing the current maximum multitree depth of the current block is only applied if the base depth value is obtained from a region of another frame code that has a lower quality than the current frame. Optionally, if the reference depth value is less than the quadtree depth value, the current maximum multitree depth of the current block is reduced. The quadtree depth value can be the quadtree depth value of the current frame.
[0008] If the maximum multi-tree depth is reduced by an optional setting, the maximum multi-tree depth will be set to zero. Obtaining the maximum multitree depth for the current block may involve using the functions of the quadtree depth value and the base quadtree depth value. For example, the above function may be any of the following: MaxMttDepth = 2 * QTDepth - QTDepth + 1, MaxMttDepth = min(2 * QTDepthTempo - QTDepth + 1, MaxMttDepth), and MaxMttDepth = min(QTDepth(QTDepthTempo - 2) + 1, MaxMttDepth + 1), where MaxMttDepth is the maximum multitree depth, QTDepth is the quadtree depth of the current block, and QTDepthTempo is the baseline quadtree depth value. The maximum multitree depth value associated with one or more regions in another frame may be used to obtain the maximum multitree depth of the current block. The conditions for adjusting (modifying) the current maximum multitree depth to obtain the maximum multitree depth for the current block may be based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth values associated with one or more regions in another frame. The current maximum multitree depth for the current block may be incremented when the maximum multitree depth signaled in the bitstream is less than the maximum multitree depth values associated with one or more regions in another frame. The current maximum multitree depth increase of the current block may depend on the average multitree depth value associated with one or more regions of another frame. The increase may be based on a comparison between the average multitree depth value associated with one or more regions of another frame and the maximum multitree depth signaled in the bitstream. For example, if the average multitree depth value associated with one or more regions in another frame is more than half of the current frame's maximum multitree depth, the current maximum multitree depth of the current block will increase.
[0009] Optionally, if the average multitree depth value associated with one or more regions in another frame is greater than half the maximum multitree depth of the current frame, the current maximum multitree depth of the current block is increased. The increase may be based on a comparison between the average multitree depth value associated with one or more regions in another frame and the maximum multitree depth in another frame. For example, the current maximum multitree depth of the current block may be increased if the average multitree depth value associated with one or more regions of another frame is more than half of the maximum multitree depth of that frame.
[0010] Optionally, if the average multitree depth value associated with one or more regions in another frame is greater than half the maximum multitree depth of that other frame, the current maximum multitree depth of the current block can be increased. If the average multitree depth value associated with one or more regions of another frame is equal to the maximum multitree depth signaled in the bitstream, the current maximum multitree depth of the current block may not be increased.
[0011] Optionally, if the average multitree depth value associated with one or more regions in another frame is equal to the maximum multitree depth of that frame, the current maximum multitree depth of the current block may not be increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value, the current maximum multitree depth of the current block is increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is equal to half the current frame's maximum multitree depth, the current maximum multitree depth of the current block is increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is less than or equal to half the current frame's maximum multitree depth, the current maximum multitree depth of the current block is increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is less than half the current frame's maximum multitree depth, the current maximum multitree depth of the current block is increased. The maximum multitree depth of the current frame can be halved by dividing by 2, or by shifting it one bit to the right. The offset can be added to the maximum multitree depth of the current frame before the right bit shift.
[0012] Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is equal to half the maximum multitree depth of that frame, the current maximum multitree depth of the current block is increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is less than or equal to half the maximum multitree depth of that frame, the current maximum multitree depth of the current block is increased. Optionally, when the quadtree depth value matches the baseline quadtree depth value minus 1, and the average multitree depth value associated with one or more regions in another frame is less than half the maximum multitree depth of that frame, increase the current maximum multitree depth of the current block. The maximum multitree depth of another frame can be halved by dividing it by 2, or by shifting it one bit to the right. The offset can be added to the maximum multitree depth of the other frame before the right bit shift.
[0013] The current maximum multitree depth of the current block may be reduced when the maximum multitree depth signaled in the bitstream is greater than the maximum multitree depth value associated with one or more regions of another frame. The current maximum multi-tree depth of the current block can be reduced when the maximum multi-tree depth signaled in the bitstream is greater than the maximum multi-tree depth value associated with one or more regions of another frame, and the current quantization parameter associated with the current block is greater than or equal to (or greater than) the current quantization parameter associated with one or more regions of another frame. The current maximum multi-tree depth of the current block can be reduced when the maximum multi-tree depth of the current frame matches the maximum multi-tree depth value associated with one or more regions of another frame. Additional conditions for decrementing the current maximum multi-tree depth of the current block may include that the maximum multi-tree depth of the current frame matches the maximum multi-tree depth of another frame.
[0014] Additional criteria for decrementing the current maximum multi-tree depth to be executed are one or more of: i) the sequence containing the current frame has a resolution higher than a predetermined resolution, ii) the CTU size of the current block is greater than or equal to a predetermined value, iii) the maximum multi-tree depth of the current frame is less than the maximum quadtree depth of the current frame, and iv) the maximum quadtree depth of the current frame is greater than a predetermined value. If the current maximum multi-tree depth is greater than the maximum multi-tree depth value associated with one or more regions of another frame, the current maximum multi-tree depth of the current block can be further reduced. The current maximum multi-tree depth of the current block can be decreased when the current maximum multi-tree depth is set equal to the maximum multi-tree depth value associated with one or more regions of another frame. The current maximum multi-tree depth of the current block can be increased when the maximum multi-tree depth signaled in the bitstream is equal to the maximum multi-tree depth value associated with one or more regions of another frame. A first condition may be for adjusting the current maximum multitree depth to obtain the maximum multitree depth for the current block based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth values associated with one or more regions in another frame; a second condition may be for adjusting the current maximum multitree depth based on a comparison between the quadtree depth value and a reference value; optionally, the adjustment of the current maximum multitree depth is applied when at least both of the first and second conditions are met (for example, otherwise it is not applied).
[0015] A third condition may be that the maximum multitree depth signaled at a higher level from another frame is less than the maximum multitree depth signaled at a higher level for the current block's frame, and adjustment of the maximum multitree depth is not optionally performed if the third condition is not met. A third condition may be that the maximum multitree depth signaled at a higher level from another frame is less than or equal to the maximum multitree depth signaled at a higher level for the frame of the current block. Optionally, the third condition is considered only when the coding tree unit size of the current block is 256. Higher levels can be slice, picture, or sequence levels, and are optionally signaled in the header. The ability to change the maximum multi-tree depth can be disabled if the image data includes screen content. Image data is considered to contain screen content if several blocks within the current frame's region are encoded using palette mode, or if one or more regions of another frame exceed a threshold (greater than or less than a predetermined value), and / or if palette mode is enabled in the bitstream.
[0016] A region of another frame, or one of them, may be a region juxtaposed with the current block. Another frame region, or one of them, may contain multiple blocks at different locations. Another region of a frame, or one of them, may be a region that is larger in size than the current block. A region of another frame, or one of them, that is larger in size than the current block may be a coding tree unit (CTU). The current block's center position can be used to determine the area or part of another frame. A region or a single region may encompass the entire region of the reference frame. Another frame may have the same temporal ID as the current frame, which contains the current block. Frames with the same temporal ID can be the closest frames with the same temporal ID.
[0017] Another frame may have the same quantization parameters as the current frame, which contains the current block. Another frame may be used for predicting the temporal motion vector. Another frame may be the reference frame that is closest to the current frame containing the current block. One or more regions may include a first region from a first frame and a second region from a second frame. Other frames may be frames corresponding to intraframes.
[0018] The method may include modifying the current maximum multitree depth to obtain the maximum multitree depth for the current block, based on the quadtree depth value associated with the intraframe and the baseline (quadtree) depth value, according to one or more rules or conditions. For example, when the quadtree depth value matches the baseline quadtree depth value associated with the intraframe, the current maximum multitree depth is incremented to obtain the maximum multitree depth for the current block. Optionally, when the quadtree depth value matches the base quadtree depth value minus 1, the current maximum multitree depth is not increased in order to obtain the maximum multitree depth of the current block. Optionally, when the quadtree depth value matches the base quadtree depth value minus 1, the current maximum multitree depth is decreased to obtain the current block's maximum multitree depth.
[0019] This method may have further conditions for modifying the current maximum multitree depth to obtain the current maximum multitree depth, which may be based on a comparison between the maximum multitree depth signaled in the bitstream and a reference maximum multitree depth value associated with one or more regions of the intraframe. For example, if the maximum multitree depth signaled in the bitstream is less than the reference maximum multitree depth value associated with one or more regions of the intraframe, the current maximum multitree depth of the current block is reduced. This method may have further conditions for modifying the current maximum multitree depth to obtain the current maximum multitree depth of the block, based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth of the intraframe. For example, if the maximum multitree depth signaled in the bitstream is less than the maximum multitree depth of the intraframe, the current maximum multitree depth of the current block is reduced.
[0020] The method may further comprise modifying the current maximum multitree depth to obtain the maximum multitree depth of the current block based on a comparison between a reference mean multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth of the intraframe. For example, the current maximum multitree depth of the current block may be reduced if the baseline average multitree depth value associated with one or more regions of the intraframe is greater than or equal to the maximum multitree depth of the intraframe. Optionally, the current maximum multitree depth of the current block may be reduced if the baseline average multitree depth value associated with one or more regions of the intraframe is equal to the maximum multitree depth of the intraframe.
[0021] This method may further comprise modifying the current maximum multitree depth to obtain the maximum multitree depth of the current block based on a comparison between a reference average multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth value associated with one or more regions of the intraframe. For example, the current maximum multitree depth of the current block may be reduced if the baseline average multitree depth value associated with one or more regions of the intraframe is greater than or equal to the maximum multitree depth value associated with one or more regions of the intraframe. Optionally, the current maximum multitree depth of the current block may be reduced if the baseline average multitree depth value associated with one or more regions of the intraframe is equal to the maximum multitree depth value associated with one or more regions of the intraframe. Optionally, when the quadtree depth value matches the base quadtree depth value minus 1, the current maximum multitree depth is incremented to obtain the maximum multitree depth of the current block, based on a comparison of the maximum multitree depth signaled in the bitstream with the maximum multitree depth of the intraframe, and the base maximum multitree depth value associated with one or more regions of the intraframe. For example, the current maximum multitree depth is increased when the maximum multitree depth signaled in the bitstream is equal to the maximum multitree depth of the intraframe, and the maximum multitree depth signaled in the bitstream is less than the reference maximum multitree depth value associated with one or more regions of the intraframe.
[0022] Optionally, when the quadtree depth value matches the base quadtree depth value minus 1, the current maximum multitree depth is incremented to obtain the maximum multitree depth of the current block, based on a comparison between the base average multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth of the intraframe. For example, the current maximum multitree depth is increased when the baseline average multitree depth value associated with one or more regions of the intraframe equals the maximum multitree depth of the intraframe. Optionally, the current maximum multitree depth is increased when the baseline average multitree depth value associated with one or more regions of the intraframe is less than or equal to the maximum multitree depth of the intraframe. Optionally, when the quadtree depth value matches the base quadtree depth value minus 1, the current maximum multitree depth is incremented to obtain the maximum multitree depth of the current block, based on a comparison between the base average multitree depth value associated with one or more regions of the intraframe and the base maximum multitree depth value associated with one or more regions of the intraframe. For example, the current maximum multitree depth is increased when the baseline average multitree depth value associated with one or more regions of the intraframe equals the baseline maximum multitree depth value associated with one or more regions of the intraframe.
[0023] Optionally, the current maximum multitree depth is increased when the baseline average multitree depth value associated with one or more regions of the intraframe is less than or equal to the baseline maximum multitree depth value associated with one or more regions of the intraframe. The current maximum multitree depth can be increased when all interframes in the sequence containing the current frame have the same maximum multitree depth. When another frame corresponds to an intraframe according to one or more rules or conditions, the current maximum multitree depth may not increase. For example, the current maximum multitree depth is not increased when an intraframe has a different temporal ID than the current frame containing the current block. Alternatively, or additionally, the current maximum multitree depth is not increased when the picture order count (POC) difference between the current frame and the intra-frame is less than a threshold. The threshold may correspond to a POC difference between the current frame and the intra-frame being equal to 2 or 3. Optionally, when another frame is used for temporal motion vector prediction, the current maximum multitree depth is modified according to one or more rules or conditions. For example, the current maximum multitree depth is increased when the picture order count (POC) difference between the current frame and the frame used for temporal motion vector prediction is 2 or less.
[0024] Optionally, the current maximum multitree depth is increased when the frame used for temporal motion vector prediction is a frame with a different temporal ID than the current frame containing the current block. Optionally, the current maximum multitree depth is not increased when the quantization parameter of the sequence containing the current frame is 22 or greater. Multiple maximum multitree depth values may be signaled in the bitstream, and obtaining the maximum multitree depth for the current block comprises determining one of the signaled values as the maximum multitree depth for the current block. Multiple maximum multitree depth values may be signaled in one or more of the sequence parameter set, picture parameter set, picture header, and slice header. Multiple maximum multitree depth values can be associated with quadtree depth or block size. At least one of several maximum multitree depth values can be obtained by predicting its value from another of the several maximum multitree depth values. The maximum multi-tree depth value is determined using a value signaled in the header or parameter set. At least one of several maximum multitree depth values can be obtained by applying a predetermined offset to the default value. The default (predetermined) value can be signaled in the bitstream.
[0025] In some embodiments, the inventors refer to a binary partition. Such a binary partition may include a horizontal binary partition and / or a vertical binary partition. In some embodiments, the inventors refer to a ternary partition. Such a ternary partition may include a horizontal ternary partition and / or a vertical ternary partition. Furthermore, while the above embodiments refer to binary trees (horizontal and vertical), ternary trees (horizontal and vertical), and quad trees, and partitioning of coding units or CTUs is not possible, it should be understood that the present invention is not limited in this way and other modes may be considered. For example, other geometric partitions may be considered in terms of a different number of blocks and may be limited according to one or more criteria mentioned in the above embodiments and aspects. In further embodiments, the methods described above may be disabled for screen content encoded image or video data for low-latency configurations using at least one flag (e.g., transmitted in the header). Whether image or video data to be encoded or decoded is screen content encoded image data may be determined based on whether several blocks within a region of the frame containing the current block are intrablock encoded, or whether a region of another frame (e.g., juxtaposed or temporal) is palette-mode encoded, and whether it exceeds a threshold (above or below a predetermined value). Alternatively, whether image or video data is screen content encoded may be indicated by whether palette mode is enabled for the image or video data (e.g., by setting a flag in the header).
[0026] Another aspect of the present invention relates to an encoding device, a decoding device, and a computer program capable of performing the decoding and / or encoding method of the present invention. A further aspect of the present invention provides an apparatus for encoding image data into a bitstream, the apparatus being configured to perform the method according to any of the above-described aspects and embodiments. Another aspect of the present invention provides an apparatus for decoding image data from a bitstream, which is configured to perform any of the methods of the embodiments and aspects described above. In a further embodiment, a computer program is provided that is configured to perform any of the methods of the embodiment at runtime. Computer programs may be provided on their own, or they may be carried on, by, or within a carrier medium. The carrier medium may be non-temporary, for example, a storage medium, in particular a computer-readable storage medium. The carrier medium may also be temporary, for example, a signal or other transmission medium. Signals may be transmitted over any suitable network, including the Internet. Further features of the present invention are characterized by the independent and dependent claims.
[0027] Any feature in one aspect of the present invention may be applied to other aspects of the present invention in any suitable combination. In particular, aspects of a method may be applied to aspects of an apparatus, and vice versa. Furthermore, features implemented in hardware may also be implemented in software, and vice versa. Any criteria for software and hardware features in this specification should be interpreted accordingly. Any apparatus feature described herein may also be provided as a method feature, and vice versa. Where used herein, means and functional features may be expressed alternatively with respect to their corresponding structures, such as a appropriately programmed processor and associated memory. Furthermore, it should be understood that specific combinations of the various features described and defined in any aspect of the present invention may be independently implemented and / or supplied and / or used. [Brief explanation of the drawing]
[0028] For example, please refer to the attached drawing. [Figure 1] Figure 1 shows the coding structure used in HEVC. [Figure 2] Figure 2 is a schematic block diagram showing a data communication system in which one or more embodiments of the present invention may be implemented. [Figure 3] Figure 3 is a block diagram showing the components of a processing apparatus in which one or more embodiments of the present invention may be implemented. [Figure 4] Figure 4 is a schematic diagram showing the functional elements of an encoder according to an embodiment of the present invention. [Figure 5] Figure 5 is a schematic diagram showing the functional elements of a decoder according to an embodiment of the present invention. [Figure 6] Figure 6 shows the blocks placed relative to the current block, including the juxtaposed blocks. [Figure 7] Figure 7 illustrates the temporal random access GOP structure for 33 frames with associated temporal IDs and POCs. [Figure 8] Figure 8 shows the six possible splitting modes of VVC. [Figure 9] Figure 9 shows MaxBTSize and MaxMttDepth. [Figure 10] Figure 10 shows an example of the MinQTSize variable. [Figure 11] Figure 11 shows some of the partitioning constraints. [Figure 12] Figure 12 shows an incomplete CTU within the frame boundary. [Figure 13] Figure 13 shows encoding based on the MaxMttDepth setting, which is derived from the temporal ID. [Figure 14] Figure 14 illustrates an embodiment of the present invention. [Figure 15] Figure 15 shows several time points. [Figure 16] Figure 16 shows a system comprising an encoder or decoder and a communication network according to an embodiment. [Figure 17] Figure 17 is a schematic block diagram of a computing device for the implementation of one or more embodiments. [Figure 18] Figure 18 shows a network camera system. [Figure 19] Figure 19 shows a smartphone. [Modes for carrying out the invention]
[0029] Detailed explanation Figure 1 illustrates the encoding structure used in HEVC (High Efficiency Video Coding) and VVC (Versatile Video Coding) standards. Video sequence 1 consists of a series of digital images i. Each such digital image is represented by one or more matrices. The matrix coefficients represent pixels.
[0030] Image 2 of the sequence can be divided into slice 3. A slice may constitute an entire image in some examples. These slices are divided into non-overlapping Coding Tree Units (CTUs). A Coding Tree Unit (CTU) is a fundamental processing unit in the High Efficiency Video Coding (HEVC) and Versatile Video Coding (VVC) video standards, and conceptually, structurally corresponds to the macroblock units used in some earlier video standards. A CTU is sometimes called a Largest Coding Unit (LCU). A CTU has a luminous component portion and a chroma component portion, and each component portion is called a Coding Tree Block (CTB). These different color components are not shown in Figure 1. A CTU is generally 64 pixels x 64 pixels in the case of HEVC, but in the case of VVC, this size can be 128 pixels x 128 pixels. Each CTU can be iteratively divided into smaller variable-size coding units (CUs) using quadtree (QT) decomposition.
[0031] The coding unit is the basic coding element and consists of two types of subunits called PU (Prediction Unit) and TU (Transform Unit). The maximum size of a PU or TU is equal to the size of the CU. The prediction unit corresponds to a partition of the CU for predicting pixel values. As shown in 6, various different partitions of the CU into PUs can include partitions into four square PUs and two different partitions into two rectangular PUs. The transformation unit is the basic unit that undergoes a spatial transformation using DCT. The CU can be partitioned into TUs based on the quadtree representation 7.
[0032] Each slice is embedded in a single Network Abstraction Layer (NAL) unit. Furthermore, the encoding parameters of a video sequence are stored in a dedicated NAL unit called a parameter set. HEVC and H.264 / AVC use two types of parameter set NAL units: firstly, the Sequence Parameter Set (SPS) NAL unit, which collects all parameters that do not change throughout the entire video sequence. Typically, it handles the encoding profile, video frame size, and other parameters. Secondly, the Picture Parameter Set (PPS) NAL unit contains parameters that may change from one image (or frame) to another in the sequence. HEVC also includes a Video Parameter Set (VPS) NAL unit, which contains parameters describing the overall structure of the bitstream. VPS is a type of parameter set defined in HEVC and applies to all layers of a bitstream. A layer can contain multiple time sublayers, while all version 1 bitstreams are limited to a single layer. HEVC has specific layered extensions for scalability and multiview, which allow for multiple layers with backward-compatible version 1 base layers. Another method for dividing an image is introduced in VVCs, which include subpictures, which are independently encoded groups of one or more slices.
[0033] Figure 2 shows a data communication system in which one or more embodiments of the present invention may be implemented. The data communication system comprises a transmitting device, in this case a server 201, capable of operating to transmit data packets of a data stream to a receiving device, in this case a client terminal 202, via a data communication network 200. The data communication network 200 may be a Wide Area Network (WAN) or a Local Area Network (LAN). Such a network may be, for example, a wireless network (Wifi / 802.11a or b or g), an Ethernet® network, an Internet network, or a mixed network consisting of several different networks. In a particular embodiment of the present invention, the data communication system may be a digital television broadcasting system in which the server 201 transmits the same data content to multiple clients.
[0034] The data stream 204 provided by server 201 may consist of multimedia data representing video and audio data. The audio and video data streams may be captured by server 201 using a microphone and a camera, respectively, in some embodiments of the present invention. In some embodiments, the data streams may be stored in server 201, received by server 201 from another data provider, or generated in server 201. Server 201 is provided in particular to encoders for encoding the video and audio streams in order to provide compressed bitstreams for transmission in a more compact representation of the data presented as input to the encoder.
[0035] To obtain a better ratio between the quality and quantity of transmitted data, video data compression follows, for example, the HEVC format, H.264 / AVC format, VVC format, or the format of data generated by ECM. Client 202 receives the transmitted bitstream, decodes the reconstructed bitstream, and plays the video image on the display device and the audio data through the loudspeaker.
[0036] While the example in Figure 2 considers a streaming scenario, it will be understood that in some embodiments of the present invention, data communication between the encoder and decoder may be performed using a storage medium such as an optical disc. In one or more embodiments of the present invention, a video image is transmitted along with data representing a compensation offset to be applied to reconstructed pixels of the image to provide filtered pixels in the final image.
[0037] Figure 3 schematically shows a processing apparatus 300 configured to carry out at least one embodiment of the present invention. The processing apparatus 300 may be a device such as a microcomputer, a workstation, or a lightweight portable device. The device 300 is - A central processing unit 311 such as a microprocessor, labeled as CPU. - A read-only memory 306, indicated by ROM, for storing a computer program for carrying out the present invention. - The random access memory 312, indicated as RAM, is for storing registers adapted to record the executable code of the method of the embodiment of the present invention, and the variables and parameters necessary to carry out the method of encoding a sequence of digital images and / or decoding a bitstream according to the embodiment of the present invention. - It includes a communication bus 313 connected to a communication interface 302 which is connected to a communication network 303 through which digital data to be processed is transmitted and received.
[0038] Optionally, the apparatus 300 may also include the following components: - A computer program for carrying out one or more embodiments of the present invention, and data storage means such as a hard disk for storing data used or generated during the implementation of one or more embodiments of the present invention 304, - A disk drive 305 for disk 306, wherein the disk drive is adapted to read data from disk 306 or write data to the disk. -A screen 309 that serves as a graphical interface with the user and / or displays data, via means of a keyboard 310 or any other pointing means.
[0039] The device 300 can be connected to various peripheral devices, such as a digital camera 320 or a microphone 308, each of which is connected to an input / output card (not shown) to supply multimedia data to the device 300. The communication bus provides communication and interoperability between various elements included in or connected to the device 300. The representation of the bus is not limited, and in particular, the central processing unit can be operated to communicate instructions directly to any element of the device 300 or by means of another element of the device 300. The disk 306 can be replaced with any information medium, such as a compact disc (CD-ROM), rewritable or non-rewritable, ZIP disc, or memory card, and can generally be replaced with any information storage means that can be read by a microcomputer or microprocessor, and may be incorporated into a device, which is adapted to store one or more programs, and which, by execution, enables a method for encoding a series of digital images and / or a method for decoding the bitstream implemented herein. The executable code may be stored in read-only memory 306, hard disk 304, or a removable digital medium such as disk 306 as described above. In a modified example, the executable code of the program may be received by means of the communication network 303 via interface 302 in order to be stored in one of the storage means of the device 300, such as hard disk 304, before execution.
[0040] The central processing unit 311 is adapted to control and direct the execution of a program or a portion of program instructions or software code according to the present invention using instructions stored in one of the above-described storage means. When power is turned on, a program or a set of programs stored in a non-volatile memory, such as a hard disk 304 or a read-only memory 306, is transferred to a random access memory 312, which includes registers for storing the executable code of the program or a set of programs, as well as variables and parameters necessary to carry out the present invention.
[0041] In this embodiment, the device is a programmable device that uses software to carry out the present invention. However, the present invention may also be implemented in hardware (e.g., by forming an application-specific integrated circuit or ASIC).
[0042] Figure 4 shows a block diagram of an encoder according to at least one embodiment of the present invention. The encoder is represented by connected modules, each module adapted to be implemented in the form of program instructions executed, for example, by the CPU 311 of the device 300, and at least one corresponding step of the method implements at least one embodiment of encoding a series of images according to one or more embodiments of the present invention. In 401, the original sequence of digital images i0~ is received as input by encoder 400. Each digital image is represented by a set of samples, also called pixels (hereinafter sometimes referred to as pixels). The bitstream 410 is output by the encoder 400 after the encoding process has been implemented. The bitstream 410 comprises multiple encoding units or slices, each slice comprising a slice header for transmitting encoded values of encoding parameters used to encode the slice, and the slice body comprising encoded video data. Input digital images i0~i n 401 is divided into blocks of pixels by module 402. The blocks correspond to parts of the image and can be of variable size (for example, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 pixels, and several rectangular block sizes may also be considered). An encoding mode is selected for each input block. Two families of encoding modes are provided: encoding modes based on spatial prediction coding (intra-predict) and encoding modes based on temporal prediction (inter-coding, merge, SKIP). Possible encoding modes are tested.
[0043] Module 403 implements an intra-prediction process in which a given block to be encoded is predicted by predictors calculated from pixels adjacent to the block to be encoded. If intra-coding is selected, the selected intra-predictors and the indication of the difference between a given block and its predictors are encoded to provide a residual. Time prediction is implemented by motion estimation module 404 and motion compensation module 405. First, a reference image is selected from the set of reference images 416, and the motion estimation module 404 selects the portion of the reference image, also called the reference region or image portion, that is closest to the block to be encoded (closest in terms of pixel value similarity). Next, the motion compensation module 405 predicts the block to be encoded using the selected region. The difference between the selected reference region and a given block, also called the residual block, is calculated by the motion compensation module 405. The selected reference region is represented using a motion vector. Therefore, in both cases (spatial and temporal prediction), the residual is calculated by subtracting the predictor from the original block.
[0044] In the INTRA prediction performed by module 403, the prediction direction is encoded. In the interpretations implemented by modules 404, 405, 416, 418, and 417, at least one motion vector or data is encoded for time prediction to identify such motion vectors. If interpretation is selected, information related to the motion vector and residual block is encoded. To further reduce the bitrate, assuming uniform motion, the motion vector is encoded by the difference with respect to the motion vector predictor. The motion vector predictor from the set of motion information predictor candidates is obtained from the motion vector field 418 by the motion vector prediction coding module 417.
[0045] The encoder 400 further includes a selection module 406 for selecting an encoding mode by applying an encoding cost criterion such as a rate-distortion criterion. To further reduce redundancy, a transformation module 407 applies a transformation (such as DCT) to the residual block, and the resulting transformed data is then quantized by a quantization module 408 and entropy encoded by an entropy encoding module 409. Finally, the encoded residual block of the currently encoded block is inserted into the bitstream 410. The encoder 400 also decodes the encoded image to generate a reference image (e.g., a reference image in reference image / picture 416) for motion estimation of subsequent images. This allows the encoder and the decoder receiving the bitstream to have the same reference frame (a reconstructed image or a portion of the image is used). The dequantization module 411 performs dequantization of the quantized data, followed by inverse transformation by the inverse transformation module 412. The intra-prediction module 413 uses the prediction information to determine which predictor should be used for a given block, and the motion compensation module 414 actually adds the residuals obtained by module 412 to the reference region obtained from the set of reference images 416.
[0046] Next, post-filtering is applied by module 415 to filter the reconstructed frame (image or portion of the image) of pixels. In embodiments of the present invention, an SAO loop filter is used, and a compensation offset is added to the pixel values of the reconstructed pixels in the reconstructed image. It is understood that post-filtering is not necessarily required. In addition to or instead of SAO loop filtering, any other type of post-filtering may be performed.
[0047] Figure 5 shows a block diagram of a decoder 60 that may be used to receive data from an encoder, according to one embodiment of the present invention. The decoder is represented by connected modules, each module adapted to implement a corresponding step of the method implemented by the decoder 60, for example, in the formation of program instructions executed by the CPU 311 of the device 300.
[0048] Decoder 60 receives a bitstream 61 containing encoded units (e.g., data corresponding to blocks or encoded units), each unit consisting of a header containing information about encoding parameters and a body containing encoded video data. As described with reference to Figure 4, the encoded video data is entropy encoded, and the indices of the motion vector predictors are encoded for a given block with a predetermined number of bits. The received encoded video data is entropy decoded by module 62. The residual data is then inversely quantized by module 63, and the inverse transform is then applied by module 64 to obtain pixel values. Mode data indicating the encoding mode is also entropy-decoded, and based on that mode, intra-type or inter-type decoding is performed on the encoded blocks (units / sets / groups) of the image data.
[0049] In intra mode, the intra predictor is determined by the intra prediction module 65 based on the intra prediction mode specified in the bitstream. In intermode mode, motion prediction information is extracted from the bitstream to find (identify) the reference region used by the encoder. The motion prediction information includes a reference frame index and motion vector residuals. The motion vector predictor is added to the motion vector residuals by the motion vector decoding module 70 to obtain the motion vector. The various motion prediction tools used in VVC are described in more detail below with reference to Figures 6-10.
[0050] The motion vector decoding module 70 applies motion vector decoding to each current block encoded by motion prediction. Once the index of the motion vector predictor for the current block is obtained, the actual value of the motion vector associated with the current block is decoded and can be used by module 66 to apply motion compensation. The reference image portion indicated by the decoded motion vector is extracted from the reference image 68 and motion compensation 66 is applied. The motion vector field data 71 is updated with the decoded motion vector for use in predicting subsequent decoded motion vectors. Finally, the decoded block is obtained. Where appropriate, post-filtering is applied by the post-filtering module 67. The decoded video signal 69 is finally obtained and supplied by the decoder 60.
[0051] Random access configuration Figure 7 shows the temporal random access GOP structure for 33 consecutive frames 0-32. The length of the vertical line representing each frame corresponds to its temporal ID (for example, the longest length corresponds to the shortest length of temporal ID 0 and temporal ID 5). A frame with temporal ID 0 is the highest in the temporal hierarchy because it can be decoded independently of all other frames with higher temporal ID values. Similarly, a frame with temporal ID 1 is second in the temporal hierarchy and can be decoded independently of all other frames with higher temporal IDs, etc. In other words, a frame with a particular temporal ID can be decoded independently of frames with higher temporal IDs, but may depend on frames with lower temporal IDs. This is known as temporal scalability. This parameter is similar to the hierarchy depth, but hierarchy depth does not imply independent decoding for all other frames with higher depths.
[0052] VVC Partitioning VVC partitioning has a specific block partitioning structure. For a single tree node, six possible partitions are possible, as shown in Figure 8. -4 division QT,801 divides the block into four equal-sized square blocks. - The binary partition BT has two possible subdivisions 802 and 803. -Vertical binary split, 802, SPLIT_BT_VER -Horizontal binary split, 803, SPLIT_BT_HOR - The ternary TT has two possible subdivisions 804 and 805, where the block is divided into three blocks with a larger bandwidth in the middle. -Vertical ternary split, 804, SPLIT_TT_VER -Horizontal ternary split, 805, SPLIT_TT_HOR -No Split,806 terminates the tree node so that no split occurs.
[0053] VVC partition control variables For the current block, not all possible partitions are always allowed. The available partitions depend on several conditions. These conditions depend on several defined partition control variables. The first set of variables defines the maximum and minimum block / node sizes. • CTU size: Corresponds to the root node size of a quadtree (e.g., 256x256, 128x128, 64x64, 32x32, 16x16 sample). • MaxBTSize: The maximum allowable binary tree root node size, i.e., the maximum size of a leaf quadtree node that can be partitioned by a binary partition. If both the height and width of the current block are less than or equal to MaxBTSize, the current block can be partitioned by a BT partition. Figure 9 illustrates the concept of MaxBTSize, where MaxBTSize is the size of the quadtree leaf node 902 of CTU 901. • MinBTSize: The minimum allowable size of a binary tree leaf node, i.e., the minimum width or height of a binary leaf node. Therefore, the current block can be partitioned by a horizontal BT partition if its height is greater than MinBTSize. Also, the current block can be partitioned by a vertical BT partition if its width is greater than MinBTSize. • MaxTTSize: This is the maximum allowed ternary root node size, i.e., the maximum size of a leaf quadtree node that can be partitioned by a ternary partition. If both the height and width of the current block are less than or equal to MaxTTSize, the current block can be partitioned by a TT partition. • MinTTSize: Represents the minimum allowable ternary tree (TT) leaf node size, i.e., the minimum width or height of a binary leaf node. However, in contrast to BT partitioning, a minimum TT partition size is considered allowable. Therefore, the current block can be partitioned by horizontal TT partitioning if its height is greater than twice MinTTSize. Also, the current block can be partitioned by vertical TT partitioning if its width is strictly greater than twice MinTTSize. • MinQTSize: This is the minimum allowed quadtree (QT) leaf node size. Therefore, if the current block width is not greater than MinQTSize, no QT partitioning mode is allowed for the current block. Figure 10 shows an example of MinQTSize. By considering CTU 128, in the illustrated example, MinQTSize is equal to 16.
[0054] Since there is no definition for MaxQTSize, it corresponds to the CTU size. The minimum allowable block size for width and height is 4. A set of depths is also defined. • Depth: This is the depth within the tree. In the VVC specification, a leaf is the end node of a tree, which is the root node of a tree with a depth of 0. This means that this value is incremented (by 1) with each split. • MttDepth: This is the depth of the multitree. The multitree includes BT partitioning and TT partitioning. MaxMttDepth is defined in the VVC specification as the maximum allowable multitree depth. Therefore, MttDepth is greater than or equal to maxMttDepth.
[0055] Figure 14 illustrates the concept of maxMttDepth. In VVC, these variables are defined independently for Luma and Chroma. VTM and ECM software have several other variables that correspond to depth. The variable `currBtDepth` is the current number of BT partitions used to reach the current tree node (or current block). The variable `currMttDepth` is the current number of BT and TT partitions used to reach the current tree node (or current block). The variable `MaxBtDepth` corresponds to the variable `MaxMttDepth` in the VVC statement. `currQtDepth` is the current number of QT partitions used to reach the current tree node (or current block). MaxBtDepth: This is the maximum allowable binary tree depth; that is, the minimum level at which a binary partition can occur, where a quadtree leaf node is the root (e.g., 3).
[0056] VVC partition control syntax elements To set the values of these different variables, several high-level syntax elements are sent in SPS, as described in the table of SPS syntax elements below. JPEG2026511393000002.jpg152169
[0057] When sps_partition_constraints_override_enabled_flag is enabled in SPS, several picture header syntax elements are sent to update partitioning variables, as shown in the table of PH syntax elements below. JPEG2026511393000003.jpg185170
[0058] VVC coding division mode In VVC, the coding partitioning mode is sent in the coding_tree as shown in the syntax table below, where the conditionally syntax-parsed flags, split_cu_flag, split_qt_flag, mtt_split_cu_vertical_flag, and mtt_split_cu_binary flags define the CU partitioning. JPEG2026511393000004.jpg202169
[0059] VVC partitioning limits VVC partitioning has several limitations. These limitations are primarily intended to avoid the same partitioning after several consecutive partitions. Figure 11 illustrates some of these constraints. The idea is to avoid the same partitioning as BT and TT. As shown in Figure 11(a), two consecutive vertical BT partitions are allowed, but as shown in Figure 11(b), a vertical TT and a subsequent vertical BT partition in the central block are not allowed. Similarly, as shown in Figure 11(c), two consecutive horizontal BT divisions are permitted, but as shown in Figure 11(d), a horizontal TT following a horizontal BT division in the central block is not permitted.
[0060] VVC has additional constraints on the minimum chroma block size, as well as the inter-block sizes TT and BT (maximum block size). These constraints are removed in ECM software.
[0061] Chroma partitioning In VVC, chroma partitioning can be inferred based on luma partitioning, but this can be disabled. Enabling dual-tree mode makes the chroma partitioning tree independent of the luma tree. However, some limitations exist. The tree can partially rely on Luma's partitioning for CCLM mode, or it can be independent otherwise.
[0062] Picture Boundary Frame resolution is not necessarily equal to an integer multiple of the CTU size. As a result, as shown in Figure 12, incomplete CTUs may exist at the frame boundaries, with CTUs 1201-1206 being incomplete due to the lower boundary 1207 and right boundary 1208 of the frame. In VVC, in contrast to previous standards, partition signaling is permitted at picture boundaries. The partitioning process at boundaries is applied until the encoded tree node represents a CU that is fully located within the picture. However, some partitions are inferred (not transmitted). Consequently, different variables such as MaxMttDepth, MinQtDepth, and MinQTsize are increased or decreased according to partitions that may not be at the boundary.
[0063] QT BT TT coding selection VTM and ECM software employ several encoder-side optimizations for QT BT TT coding selection. One such optimization involves determining whether the QT partition is tested before the BT partition. The conditions are that at least one CU to the left or above the current code tree node has a QT depth greater than the current code tree node's QT depth, and the CU width represented by the current code tree node is greater than MinQTSize * 2. If this condition is true, QT precedes BT, and the partition is treated as follows: - No splitting -QT -BT Horizontal -BT Vertical -TT horizontal -TT vertical Otherwise, the order is as follows: - No splitting -BT Horizontal -BT Vertical -TT horizontal -TT vertical -QT
[0064] According to some optimizations, this order is important because some partitions are not tested depending on the results of the first test mode. Therefore, when QT is tested last, there are many opportunities that it will not be evaluated.
[0065] MaxMttDepth The maximum MTT depth significantly impacts the complexity of the encoder. The common test conditions for ECM have been updated to reduce encoding by using different MaxMttDepth settings, as shown in Figure 13. In this setting, MaxMttDepth is lower for some temporal IDs in high-resolution or low-QP settings.
[0066] Adaptability MaxBTSize VTM and ECM have a frame-level coding select that sets MaxBTSize according to the average block size of previous coded frames having the same depth (=> the same temporal ID within a CTC RA case). The average block size is compared to a threshold as the following pseudocode: if(dBlkSize < AMAXBT_TH32 ) { newMaxBtSize = 32; } else if(dBlkSize < AMAXBT_TH64 ) { new MaxBtSize = 64; } else if( dBlkSize < AMAXBT_TH128 ) { newMaxBtSize = 128; } else { new MaxBtSize = 256; }
[0067] If AMAXBT_TH32 is equal to 15, then AMAXBT_TH64 is equal to 30, and AMAXBT_TH128 is equal to 60. This method decreases the maximum BT size when the average block size is small and increases it when it is large.
[0068] Embodiment One partitioning parameter is set according to at least one other parameter. In embodiments, there is a process for partitioning image or video data, wherein one first partitioning parameter (for controlling or determining the partitioning of image data) is set or determined according to at least another second parameter. The image or video data is partitioned so that each frame or image is into coding tree units (CTUs), which can then be further partitioned by applying one or more of a plurality of allowed partitions, in a manner similar to that described above for VVC or ECM. For example, partitions may include no partition (no further partitioning is performed), binary tree partitioning (wherein a block or unit of code tree is subdivided into two further blocks or units), ternary tree partitioning (wherein a block or unit of code tree is subdivided into three blocks or units), and quadary tree partitioning (wherein a block or unit of code tree is subdivided into four units or blocks of equal size). Binary and ternary partitions can be performed horizontally or vertically, and the resulting blocks after partitioning may have different sizes. In this context, the partitioning parameter can refer to a variable or syntax element that determines, for example, the maximum or minimum depth of a particular partition type, in the circumstances under which the aforementioned partitions can be used. In this embodiment, the value of the first parameter depends in some way on the value of the second parameter. In this embodiment, the second parameter can be any variable or syntax element and is not limited to other partitioning parameters. The main advantage of this embodiment is that coding efficiency is improved by the adapted setting of the first parameter in accordance with the value of the second parameter. A second advantage may be a reduction in coding time by reducing the number of possible partitionings (e.g., partitioning modes).
[0069] One partitioning parameter, representing the maximum partitioning depth, is set according to at least one other parameter. In one embodiment, a first partitioning parameter represents the maximum partitioning depth (i.e., one or more of the available partitions). This first parameter is set or determined according to at least another (second) parameter. In this embodiment, the value of the first parameter depends on the value of the second parameter. In this embodiment, the second parameter can be a variable or a syntax element.
[0070] One partitioning parameter for the current block is set according to at least one other parameter for the current block. In one embodiment, one first partitioning parameter for the current block is set or determined according to at least another second parameter of this current block. The advantage of this is that the encoding efficiency is improved compared to the first embodiment by applying a set of values for the first parameter block by block (i.e., at a higher level such as the slice level, picture level, or sequence level of the image data encoded in the bitstream, rather than at the CTU). In one embodiment, a first partitioning parameter represents the maximum partitioning depth of the current block, which is set or determined according to at least another second parameter of the current block. For example, the second parameter represents another partitioning depth. In another example, the second parameter is the block size.
[0071] The maximum multitree depth of the current block is determined based on at least the current block's QT depth or block size. In one embodiment, the maximum multitree depth of the current block is determined based on the current block's QT depth or the current block's block size. The advantages of this approach are increased encoding efficiency, potentially reduced encoder execution time, and reduced encoder complexity. In fact, as described in the prior art section, MaxMttDepth is set to a fixed value transmitted in the high-level header. However, the inventors have found that the efficiency of MaxMttDepth is closely related to the QT depth value of the current block and the encoding execution time. Setting MaxMttDepth by the QT depth value maintains encoding efficiency compared to using a higher MaxMttDepth. Indeed, the bitrate overhead for BT and TT signaling is reduced when unnecessary.
[0072] Solution 1 The MaxMttDepth value depends on QTDepth and the baseline value. In one embodiment, the maximum multitree depth value MaxMttDepth depends on the current block's QT depth and a reference value. For example, the reference value may correspond to another QTDepth. For example, another QTDepth may be associated with another block or may be a predetermined QT depth reference value. The value MaxMttDepth for the current block is set based on the current block's QT depth value according to the reference value.
[0073] QTDepth and QTDepthTempo The MaxMttDepth value depends on QTDepth and QtdepthTempo from the temporal region. In one embodiment, the maximum multitree depth value MaxMttDepth depends on the current block's QTDepth and the QT depth from the time domain QTDepthTempo. Compared to the previous embodiment, the reference value is the QT depth from the time domain. For example, the value of MaxMttDepth for the current block is set based on the current block's QT depth value, which is derived from the QT depth from the time block. The advantage of this approach is an improvement in optimal coding efficiency, as the QT depth from the time domain is a reference value that best reflects the behavior of the current block and its region when selected.
[0074] Increase MaxMttDepth according to one or more rules or conditions. In one embodiment, the current maximum multitree depth MaxMttDepth(from the header) is increased according to at least one rule or condition based on the current block's QT depth and the QT depth from the time domain. The advantage of this is an improvement in coding efficiency that has little impact on the increase in coding time.
[0075] Increase the value of MaxMttDepth. QTDepth == QTDepthTempo In one embodiment, the current maximum multitree depth MaxMttDepth (from the header) is incremented (for example, by 1) when the condition is met that the QT depth of the current block is equal to the QT depth from the time domain. The following pseudocode illustrates one possible implementation of this embodiment. If (QTDepth == QTDepthTempo) { MaxMttDepth++ } The advantage of this example is that, with only a 10% increase in encoder execution time, it saves approximately 80% of the gain of increasing MaxMttDepth (from the header) for all QT depths. Therefore, this is particularly efficient. Increasing the MaxMttDepth value (QTDepth == QTDepthTempo) or (QTDepth == QTDepthTempo-1)
[0076] In an alternative embodiment, the current maximum multitree depth MaxMttDepth(from the header) is incremented when the current block's QT depth is equal to the QT depth from the time domain, or when the current block's QT depth is equal to the QT depth from the time domain minus 1. The following pseudocode illustrates an example of this embodiment. If ((QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1)) { MaxMttDetph++ } Alternatively, the current maximum multitree depth MaxMttDepth (from the header) is incremented as follows, only when the current block's QT depth is equal to the time domain's QT depth minus 1: If ( QTDepth == QTDepthTempo - 1 ) { MaxMttDetph++ }
[0077] Compared to the previous embodiment, this embodiment is more complex but provides greater encoding efficiency. More precisely, the encoding efficiency is greater as encoder runtime when QTDepth is equal to QTDeptTempo minus 1. However, this also depends on the frame from which the time domain originates.
[0078] Reduce the MaxMttDepth value according to several rules. In one embodiment, the current maximum multitree depth MaxMttDepth is reduced according to at least one rule based on the current block's QT depth and the QT depth from the time domain. The advantage is a reduction in coding time, which can have a positive impact on coding efficiency because some of the rate dedicated to signaling for BT and TT partitioning may be saved.
[0079] Decrease in the case of NOT ((QTDepth == QTDepthTempo) OR (QTDepthTempo-1)) In one embodiment, the current maximum multitree depth MaxMttDepth (from the header) is reduced when the current block's QT depth is not equal to the QT depth from the time domain, or when the current block's QT depth is not equal to the QT depth from the time domain minus 1. The following pseudocode illustrates an example of this embodiment. If (NOT(QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1)) { MaxMttDepth-- } The advantage of this is that the lower the encoding efficiency, the shorter the encoding time.
[0080] Decrease in the case of NOT(QTDepth == QTDepthTempo) In one additional embodiment, the current maximum multitree depth MaxMttDepth is reduced when the QT depth of the current block is not equal to the QT depth from the time domain. The following pseudocode illustrates an example of this embodiment. If (NOT(QTDepth == QTDepthTempo)) { MaxMttDepth-- } The advantage is that the reduction in coding time is greater compared to the previous embodiment, but this affects coding efficiency.
[0081] If QTDepth > QTDepthTempo, it decreases. In one embodiment, the current maximum multitree depth MaxMttDepth is reduced when the QT depth of the current block is greater than the QT depth from the time domain. The following pseudocode illustrates an example of this embodiment. If (QTDepth > QTDepthTempo) { MaxMttDepth--; } This embodiment offers less complexity than the previous embodiment, while providing better coding efficiency. Furthermore, this reduction can only be applied when the maximum multitree depth of the current frame is equal to the maximum multitree depth in the time domain (PH_MaxMttDepth == MaxMttDepthTempo).
[0082] The time frame is better than the current frame. In additional embodiments, the previous embodiments apply or are enabled only when the time domain comes from a time frame having better quality coding than the current frame. For example, better quality coding may mean that the QP of the time frame is lower than that of the current frame. The advantage lies in optimal coding efficiency; in fact, if a time frame has better coding, its average block size must be smaller than that of the current frame, and therefore it is better to reduce the maximum multitree depth when the current QT depth is greater than the QT depth from the time domain.
[0083] When QTDepth < QTDepthTempo-1, it decreases. In one embodiment, the current maximum multitree depth MaxMttDepth is reduced when the current block's QT depth is less than the time domain minus 1. The following pseudocode shows one exemplary implementation of this embodiment. If (QTDepth < QTDepthTempo - 1) { MaxMttDepth--; } This embodiment also provides reduced complexity and improved coding efficiency, similar to the previous embodiment. Furthermore, this reduction of MaxMttDepth can only be applied when the maximum multitree depth of the current frame is equal to the maximum multitree depth in the time domain (PH_MaxMttDepth == MaxMttDepthTempo).
[0084] Only when the current frame is better than the time frame In additional embodiments, the previous embodiment is enabled only when the current frame has better encoding quality than the time frame in the time domain. For example, better encoding quality may be a lower QP for the time frame than for the current frame. The advantage of this is optimal encoding efficiency, and indeed, if the current frame has better quality encoding, its average block size should be smaller than that of the temporal frame, and therefore, if the current QT depth is smaller than the QT depth obtained by subtracting 1 from the time domain, and alternatively, if it is less than or equal to the QT depth from the time domain alone, then it is better to reduce the maximum multitree depth. This may depend, for example, on the difference between QPs.
[0085] Decreases only when QTDepthTempo < PH_QTDepth In one embodiment, the current maximum multitree depth MaxMttDepth is reduced when the temporal maximum QT depth of the current block is less than the QT depth of the current frame. The following pseudocode shows one exemplary implementation of this embodiment. If (QTDepthTempo < PH_QTDepth) { MaxMttDepth--; } This embodiment can be combined with other embodiments that implement a conditional reduction of MaxMttDepth. Note that the QT depth of the current frame (as referred to in the described embodiment) can be calculated based on the minimum QT size, since this value is not available, for example, in the VVC specification. This value is set to log2(CTUSize() / (minQtSize << 1)). The advantage is improved coding efficiency. In fact, when the temporal QT depth reaches the current QT depth, there is little reason to reduce the maximum multitree depth, and if it is reduced, it is better because reducing the maximum multitree depth to reduce coding time can be compensated for by a higher QT depth for the current block.
[0086] A combination of embodiments for conditionally increasing or decreasing MaxMttDepth In one embodiment, different embodiments for increasing and decreasing MaxMttDepth are combined. For example, Figure 14 shows one such combination. In this figure, PH_MaxMttDepth is the MaxMttDepth of the current picture. In this example, the current maximum multitree depth MaxMttDepth (from the header) is increased when the QT depth of the current block is equal to the QT depth from the time domain, and is decreased when the QT depth of the current block is not equal to the QT depth from the time domain, or when the QT depth of the current block is not equal to the QT depth from the time domain minus 1. The following pseudocode illustrates an example of this embodiment. If(QTDepth == QTDepthTempo) { MaxMttDepth++ } If (NOT(QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1)) { MaxMttDepth-- } The advantages of this are better encoding efficiency and increased reduction in encoding time. Based on the formula In one embodiment, the value of the maximum multitree depth MaxMttDepth is determined for each block by an expression. For example, this expression includes QTdepth and QTDepthTempo. For example, the expression is: MaxMttDepth = 2 * QTDepthTempo - QTDepth +1 Or alternatively: MaxMttDepth = min(2 * QTDepthTempo-QTDepth +1,MaxMttDepth) Or alternatively: MaxMttDepth = min(QTDepth(QTDepthTempo-2)+ 1,MaxMttDepth+1)
[0087] The reference value is encoded using HLS (High Level Syntax). The reference value is sent in the header. In one embodiment, the maximum multitree depth value MaxMttDepth depends on the current block's QTDepth and a reference value, which is sent in the header. For example, this value may be sent in the SPS, PPS, picture header, or slice header as an addition or replacement. Compared to embodiments based on QT depth time, this embodiment does not require access to frames containing time QT depth. This simplifies the process.
[0088] All previous embodiments can be applied. All previous embodiments using QT depth determined based on the time domain can be applied. For example, as in Figure 14, the QT depth of the current block is compared to the picture header QT depth "PH_QTDeph" to derive the current MaxMttDepth. In this example, the current maximum multitree depth MaxMttDepth is increased when the current block's QT depth is equal to PH_QTDeph, and decreased when the current block's QT depth is not equal to PH_QTDeph, or when the current block's QT depth is not equal to PH_QTDeph minus 1. The following pseudocode illustrates an example of this embodiment. If(QTDepth == PH_QTDeph) { MaxMttDepth++} If (NOT(QTDepth == PH_QTDeph)OR (QTDepth == PH_QTDeph-1)) { MaxMttDepth-- }
[0089] Consider MaxMTTDepthTempo MaxMTTDepthTempo is considered when determining the current MaxMTTDepthTempo. In one embodiment, the maximum multitree depth from the time domain "MaxMTTDepthTempo" is taken into consideration to determine the value of MaxMttDepth for the current block. If PH_MaxMttDepth < MaxMttDepthTempo, increase MaxMttDepth. In one embodiment, the value of MaxMttDepth is increased when the high-level maximum multitree depth "PH_MaxMttDepth" is less than MaxMttDepthTempo. The following pseudocode illustrates an example of this embodiment. If (PH_MaxMttDepth < MaxMttDepthTempo) { MaxMttDepth++ } The advantage of this is an improvement in coding efficiency, such as when the maximum multitree depth in the time domain is greater than MaxMttDepth or PH_MaxMttDepth, and the value of MaxMttDepth is often increased to reach the maximum usefulness of this parameter from the perspective of coding efficiency.
[0090] PH_MaxMttDepth < MaxMttDepthTempo In one embodiment, the value of MaxMttDepth is increased by combining a criterion based on the high-level maximum multitree depth "PH_MaxMttDepth" and the maximum multitree depth time "MaxMttDepthTempo", with a criterion based on the current QT depth and the QT depth from the time domain. For example, the value of MaxMttDepth increases when the high-level maximum multitree depth "PH_MaxMttDepth" is less than MaxMttDepthTempo, and when the QT depth of the current block is equal to the QT depth from the time domain. The following pseudocode illustrates an example of this embodiment. If (PH_MaxMttDepth < MaxMttDepthTempo) { If(QTDepth == QTDepthTempo) { MaxMttDepth++ } } The advantage of this is improved coding efficiency, with minimal impact on coding execution time compared to the uncombined embodiment.
[0091] - Limit the increase based on the average MTT Temporal (mttDepthTempo). In one embodiment, the increase in MaxMttDepth is limited based on the average MTT time (mttDepthTempo). The advantages of this are improved coding efficiency and reduced complexity. In fact, if the maximum MTT depth (MaxMttDepth) is increased when it is not needed, this increases the rate dedicated to partitioning. Compared to the previous embodiment, the reduction in coding time is given by fewer MTT partitioning possibilities being evaluated. Limitations compared to PH_MaxMttDepth
[0092] In one embodiment, the average of the temporal MTT values mttDepthTempo is compared to the maximum MTT depth value PH_MaxMttDepth to determine whether the current maximum MTT depth MaxMttDepth needs to be increased. In an additional embodiment, if the average of the temporal MTT values is more than half of the picture header maximum MTT depth PH_MaxMttDepth, MaxMttDepth is increased. The picture header maximum MTT depth, PH_MaxMttDepth, is halved by dividing by 2 or by shifting it one bit to the right. The following pseudocode shows one exemplary implementation of this embodiment. If (PH_MaxMttDepth < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo) { If (mttDepthTempo >=(PH_MaxMTTDepth >> 1)) { MaxMttDepth++ } } } Alternative embodiments may be considered for pseudocode. For example, pseudocode can be used that is greater than the inequality, as follows: If (mttDepthTempo >(PH_MaxMTTDepth >> 1)) The offset can also be added for a right shift, as follows: If (mttDepthTempo >=((PH_MaxMTTDepth + 1)>> 1)) The advantages are the same as in the previous embodiment (i.e., improved coding efficiency and reduced complexity).
[0093] Limitations compared to PH_MaxMttDepthTempo In one embodiment, the average of the temporal MTT values mttDepttTempo is compared to the maximum MTT depth value PH_MaxMttDepthTempo of the reference frame to determine whether the current maximum MTT depth MaxMttDepth needs to be increased. In an additional embodiment, MaxMttDepth is increased if the average of the temporal MTT values is greater than or equal to half the maximum MTT depth of the picture header of the reference frame, PH_MaxMttDepthTempo. The maximum MTT depth of the picture header PH_MaxMttDepth is halved by dividing by 2 or by shifting it one bit to the right. The following pseudocode shows one exemplary implementation of this embodiment. If (PH_MaxMttDepth < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo) { If (mttDepthTempo >=(PH_ MaxMTTDepthTempo >> 1)) { MaxMttDepth++ } } } Alternative embodiments may be considered for pseudocode. For example, pseudocode can be used that is greater than the inequality, as follows: If (mttDepthTempo >(PH_ MaxMTTDepthTempo >> 1)) The offset can also be added for a right shift, as follows: If (mttDepthTempo >=((PH_ MaxMTTDepthTempo + 1)>> 1)) The advantages are the same as in the previous embodiment, namely, improved coding efficiency and reduced complexity.
[0094] If mttDepthTempo == PH_MaxMttDepth or PH_MaxMttDepthTempo, it will not increase. In one embodiment, the maximum MTT depth value MaxMttDepth is not increased when the average of the time MTT values mttDepthTempo is equal to the picture header maximum MTT depth PH_MaxMttDepthTempo of the reference frame, or alternatively, when it is equal to the time maximum MTT depth MaxMttDepthTempo. Indeed, when mttDepthTempo reaches this value, it is certainly useful to increase the maximum MTT depth of the current block, but this also increases the encoder execution time. Similarly, when the average of the time MTT values mttDepthTempo is equal to the picture header maximum MTT depth PH_MaxMttDepth, the maximum MTT depth value MaxMttDepth is not increased. The advantage is a further reduction in coding execution time, accompanied by a slight decrease in coding efficiency compared to the previous embodiment. This provides a good trade-off between gain and complexity.
[0095] Restrictions apply only when (QTDepth == QTDepthTempo). In one embodiment, the previous embodiment applies only when the current QT depth and QTDepth are equal to the temporal QT depth. The advantage is an improvement in coding efficiency compared to the relative previous embodiments.
[0096] Specific restrictions on (QTDepth == QTDepthTempo - 1) In one embodiment, the previous embodiment applies when the current QT depth, QTDepth, is equal to the temporal QT depth minus 1. However, the maximum MTT depth does not increase in the same way as when QTDepth is equal to QTDepthTempo. Instead, when the current QT depth QTDepth is equal to the temporal QT depth minus 1, the maximum MTT depth MaxMttDepth is increased only when the average of the MTT depth temporal values mttDepthTempo is equal to PH_MaxMTTDepthTempo or equal to the PH_MaxMTTDepth or MaxMttDepthTempo of the current frame. The following pseudocode shows one exemplary implementation of this. If (PH_MaxMttDepthTempo < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo-1) { If (mttDepthTempo ==(PH_ MaxMTTDepthTempo >> 1)) { MaxMttDepth++ } } } Alternatively, the average MTT depth time, mttDepthTempo, may be less than or equal to PH_MaxMTTDepthTempo. In another example, the average MTT depth time, mttDepthTempo, may be less than or equal to PH_MaxMTTDepth or MaxMttDepthTempo of the current frame. The following pseudocode shows one exemplary implementation of this. If (PH_MaxMttDepthTempo < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo-1) { If (mttDepthTempo <=(PH_ MaxMTTDepthTempo >> 1)) { MaxMttDepth++ } } } An alternative embodiment can be considered for pseudocode. For example, pseudocode can use inequalities less than the following: If (mttDepthTempo <(PH_ MaxMTTDepthTempo >> 1)) The offset can also be added for a right shift, as follows: If (mttDepthTempo <=((PH_ MaxMTTDepthTempo + 1)>> 1)) The advantage is that coding efficiency is improved compared to the previous embodiment. In fact, when the current QT depth is equal to the temporal QT depth - 1, it is more efficient to increase the maximum MTT, MaxMttDepth, for the current block only for low values of the average mttDepthTempo of the temporal MTT value.
[0097] If PH_MaxMttDepth > MaxMttDepthTempo, reduce MaxMttDepth. In one embodiment, the value of MaxMttDepth is reduced when the high-level maximum multi-tree depth "PH_MaxMttDepth" is greater than MaxMttDepthTempo. The following pseudocode illustrates an example of this embodiment. If (PH_MaxMttDepth > MaxMttDepthTempo) { MaxMttDepth-- } The advantage of this is that the encoder runtime decreases as encoding efficiency improves. Similar to the case where MaxMttDepthTempo is smaller than MaxMttDepth or PH_MaxMttDepth, there are many possibilities that, from the perspective of encoding efficiency, the value of MaxMttDepth should be reduced so that this parameter reaches its maximum usefulness.
[0098] If PH_MaxMttDepth > MaxMttDepthTempo, and the QP of the current slice / frame is greater than or equal to the QP of the time-domain frame, then decrement MaxMttDepth. In one embodiment, MaxMttDepth is reduced when the high-level maximum multitree depth "PH_MaxMttDepth" is greater than MaxMttDepthTempo, and when the QP of the current slice / frame "currentQP" is greater than or equal to the QP of the slice / frame in the time domain "tempoQP". The following pseudocode illustrates an example of this embodiment. If (PH_MaxMttDepth > MaxMttDepthTempo) { If (currentQP >= tempoQP) { MaxMttDepth- } } Compared to the previous version, the advantage of this embodiment is the improvement in coding efficiency. In fact, when the current QP is better than or equal to the QP of a time-domain slice / frame, the maximum multitree depth of the current block is generally higher. Only when PH_MaxMttDepth == MaxMttDepthTempo does it decrease according to the previous rule.
[0099] In one embodiment, the requirement for reducing the maximum multitree depth is that the maximum multitree depth of the current frame is equal to the maximum multitree depth in the time domain (PH_MaxMttDepth == MaxMttDepthTempo). For example, as described in some previous embodiments, the reduction may be applied to all QT depths other than the temporal QT depth and the temporal QT depth minus 1. The following pseudocode illustrates this embodiment. if (PH_MaxMttDepth == MaxMttDepthTempo) { if (NOT((QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1))) { MaxMttDepth-- } } This improves encoding efficiency. In fact, when the maximum multitree depth is equal to the time-domain maximum multitree depth, there is a high probability that the QT depth selected for the current block is equal to the time-domain QT depth or the time-domain QT depth minus 1, and therefore, for other QT depth values, the maximum multitree depth can be reduced. In addition, this criterion can only be applied when the time frame has better encoding quality than the current frame (equivalent to a lower QP).
[0100] It decreases only if PH_MaxMttDepth is equal to PH_MaxMttDepthTempo. In one embodiment, an additional requirement is that the maximum multitree depth of the current frame is equal to the maximum multitree depth of the time frame (PH_MaxMttDepth == PH_MaxMttDepthTempo) in order to reduce the maximum multitree depth. For example, when applied to the example of the previous embodiment, the following formula illustrates this embodiment. if ((PH_MaxMttDepth == PH_MaxMttDepthTempo)&&(PH_MaxMttDepth == MaxMttDepthTempo)) { if (NOT((QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1))) { MaxMttDepth-- } } This provides an improvement in coding efficiency, especially when combined with the previous embodiment.
[0101] Further decrease in MaxMttDepth In one embodiment, in addition to the above embodiment, if MaxMttDepth has not reached MaxMttDepthTempo, two reductions of MaxMttDepth are applied. The following pseudocode shows one exemplary implementation of this embodiment. If (PH_MaxMttDepth > MaxMttDepthTempo) { MaxMttDepth = MaxMttDepthTempo If (MaxMttDepth > MaxMttDepthTempo) { MaxMttDepth- } } As described above, this pseudocode can be adapted according to various embodiments. The advantages of this embodiment are improved coding efficiency and further reduction of coding complexity.
[0102] MaxMttDepth is equal to MaxMttDepthTempo. In addition to the embodiments described above, in one embodiment, when PH_MaxMttDepth > MaxMttDepthTempo, MaxMttDepth is set to equal MaxMttDepthTempo. The following pseudocode shows one exemplary implementation of this. If (PH_MaxMttDepth > MaxMttDepthTempo) { MaxMttDepth = MaxMttDepthTempo } An advantage of this embodiment is the further reduction in coding time complexity compared to the previous embodiment.
[0103] A decrease limited to certain rules. In some embodiments, the reduction in maximum multitree depth may be limited based on one or more parameters. For example, these may be parameters indicating image quality or content for Class A video. Embodiments relating to specific parameters are shown below.
[0104] (For resolutions > 1920*1080) In one embodiment, the reduction of the maximum multitree depth is applied only to sequences having a resolution higher than a predetermined resolution. In one embodiment, the predetermined resolution is HD (1920*1080). This is particularly efficient when the maximum multitree depth of the current frame is equal to the maximum multitree depth in the time domain (PH_MaxMttDepth == MaxMttDepthTempo).
[0105] (CTUSize >= 256) In one embodiment, the reduction of the maximum multitree depth is applied only when the CTU size is greater than or equal to a predetermined value relative to the current frame. In one embodiment, the predetermined value is 256. This is particularly efficient when the maximum multitree depth of the current frame is equal to the maximum multitree depth in the time domain (PH_MaxMttDepth == MaxMttDepthTempo).
[0106] (If PH_MaxMttDepth < PH_MaxQTDepth) In one embodiment, the reduction of the maximum multitree depth applies only when the frame-level maximum multitree depth (PH_MaxMttDepth) of the current frame is less than the maximum possible QT depth of the current frame. This is particularly efficient when the maximum multitree depth of the current frame is equal to the time-domain maximum multitree depth (PH_MaxMttDepth == MaxMttDepthTempo).
[0107] (PH_MaxQTDepth>3) In one embodiment, the reduction of the maximum multitree depth is applied only when the frame-level maximum QT depth of the current frame is greater than a predetermined value. In one embodiment, the predetermined value is 3. This is particularly efficient when the maximum multitree depth of the current frame is equal to the time-domain maximum multitree depth (PH_MaxMttDepth == MaxMttDepthTempo).
[0108] MaxMttDepth decreased based on the combined criteria. In one embodiment, the value of MaxMttDepth is reduced by combining a criterion based on the high-level maximum multitree depth "PH_MaxMttDepth" and the maximum multitree depth time "MaxMttDepthTempo" with a criterion based on the current QT depth and the QT depth from the time domain. For example, the value of MaxMttDepth decreases when the high-level maximum multitree depth "PH_MaxMttDepth" is greater than MaxMttDepthTempo, and when the current block's QT depth is not equal to the QT depth from the time domain or the QT depth from the time domain minus 1. The following pseudocode illustrates an example of this embodiment. If (PH_MaxMttDepth > MaxMttDepthTempo) { If (NOT(QTDepth == QTDepthTempo)OR (QTDepth == QTDepthTempo-1)) { MaxMttDepth-- } } The advantage of this is that, along with the improvement in encoding efficiency, the encoder runtime is reduced compared to embodiments without the combination.
[0109] If PH_MaxMttDepth == MaxMttDepthTempo, increase MaxMttDepth. In one embodiment, the value of MaxMttDepth is increased when the high-level maximum multitree depth "PH_MaxMttDepth" is equal to MaxMttDepthTempo. This embodiment provides significant improvements in coding efficiency.
[0110] Only if QTDepth == QTDepthCol In one embodiment, when the high-level maximum multitree depth "PH_MaxMttDepth" is equal to MaxMttDepthTempo and the current QT depth is equal to the temporal QT depth, the value of MaxMttDepth increases. This embodiment also provides a significant coding gain with less impact on coding execution time compared to the previous embodiment.
[0111] (QTDepth == QTDepthCol) or (QTDepth == QTDepthTempo-1) In one alternative embodiment, the value of MaxMttDepth increases when the high-level maximum multitree depth "PH_MaxMttDepth" is equal to MaxMttDepthTempo, and when the current QT depth is equal to the temporal QT depth, or equal to the temporal QT depth minus 1. QTDepth == QTDepthCol and QTDepthCol == minQTDepthCol
[0112] In one embodiment, in order to increase the value of MaxMttDepth, the current QT depth must be equal to the temporal QT depth (QTDepth == QTDepthCol), and the temporal QT depth must be equal to the minimum temporal QT depth (QTDepthCol == minQTDepthCol). This is because the temporal QT depth partitioning appears to be the same for all blocks in the time domain, so the only way to increase encoding efficiency and therefore obtain further partitioning for the current block is to increase the maximum multitree depth. Furthermore, this applies only if the maximum multitree depth of the current frame is equal to the time-maximum multitree depth (PH_MaxMttDepth == MaxMttDepthTempo), ensuring that the maximum possible partition is reached in the time domain. When QTDepth == QTDepthtempo and QTDepthTempo == PH_MaxQTDepth
[0113] In one embodiment, the value of MaxMttDepth increases when the current QT depth is equal to the temporal QT depth (QTDepth == QTDepthTempo), and when this temporal QT depth is equal to the QT depth of the current frame (QTDepthTempo == PH_MaxQTDepth). Since the QT depth typically reaches its maximum for the current block, one way to increase coding efficiency and thus obtain further subdivisions for the current block is to increase the maximum multitree depth. Furthermore, this applies only when the maximum multitree depth of the current frame is equal to the time-maximum multitree depth (PH_MaxMttDepth == MaxMttDepthTempo), ensuring that the maximum possible partitioning is reached in the time domain.
[0114] Based on the formula In one embodiment, the value of MaxMttDepth is determined based on an expression that depends on "PH_MaxMttDepth" and MaxMttDepthTempo.
[0115] In QTDepth In one embodiment, the value of MaxMttDepth depends on PH_MaxMttDepth and / or MaxMttDepthTempo and is determined based on an expression that depends on the current block's QT depth and / or the time-domain QT depth. For example, the formula is: MaxMttDepth = MaxMttDepth - 2 *(QTDepth-MaxMttDepthTempo); Or alternatively: If (MaxMttDepth >= MaxMttDepth - 2 *(QTDepth-MaxMttDepthTempo)) MaxMttDepth = MaxMttDepth - 2 *(QTDepth-MaxMttDepthTempo); Else MaxMttDepth = 0
[0116] PH_MaxMTTDepth of the time frame Same embodiment as MaxMttDTempo In one embodiment, the value of MaxMttDepth is determined based on the high-level maximum multitree depth of the time frame "PH_MaxMttDepthTempo". For example, the frame may be a reference frame or a frame with the same temporal ID. All embodiments defined above for the maximum multitree depth from the time domain "MaxMttDTempo" can be applied using PH_MaxMttDepthTempo instead. The advantage of using MaxMttDepthTempo instead of MaxMttDTempo is that you don't need to derive MaxMttDTempo from the time domain. This embodiment can also be combined with all the other aforementioned embodiments for a better compromise between encoding efficiency and encoding runtime.
[0117] The criteria are applied only if PH_MaxMttDeptTempo is greater than PH_MaxMttDept. In a particular embodiment, the high-level maximum multitree depth of the time frame "PH_MaxMttDepthTempo" is compared to the high-level maximum multitree depth of the current frame "PH_MaxMttDept" to determine whether at least one of the above criteria applies. For example, if PH_MaxMttDeptTempo is greater than PH_MaxMttDept, an increase in MaxMttDepth is permitted by, for example, one of the criteria listed above. For example, when PH_MaxMttDepth is less than PH_MaxMttDeptTempo, and PH_MaxMttDepth is also less than MaxMttDepthTempo, and QTDepth is equal to QTDepthTempo, MaxMttDepth increases. The following pseudocode illustrates this example of this embodiment. If (PH_MaxMttDepth < PH_MaxMttDeptTempo) { If (PH_MaxMttDepth < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo) { MaxMttDepth++ } } } This advantage is a good compromise between the encoding execution time and the encoding efficiency. In fact, the proposed criterion gives a higher gain when the current high-level maximum multi-tree depth is smaller than the high-level maximum multi-tree depth of the time frame (especially when having one reference frame). Current high-level maximum multi-tree <= high-level maximum multi-tree depth Alternatively, the formula can take into account that the current high-level maximum multi-tree depth is smaller or equal instead of being smaller than the high-level maximum multi-tree depth for high gain.
[0118] Only CTU 256 In a further embodiment, the restriction based on when PH_MaxMttDeptTempo is greater than PH_MaxMttDept is only applied when the CTU size is large. For example, when the CTU size is 256.
[0119] If PH_MaxMTTDeptTempo is inf to PH_MaxMTTDept, it does not decrease. In one embodiment, when PH_MaxMTTDeptTempo is smaller than PH_MaxMTTDept, a decrease in MaxMttDepth is not allowed. The following pseudo-code illustrates an example of this embodiment. If (PH_MaxMttDepth <= PH_MaxMttDeptTempo) { If (PH_MaxMttDepth > MaxMttDepthTempo) { MaxMttDepth-- } }
[0120] Specific decrease in MAXMttDepth Decreasing MaxMttDetph allows you to set it to 0. In one embodiment, when MaxMttDetph is decreased, its value is set to equal to 0, or instead, it is decremented or simply reduced. The primary advantage is the reduction in rates associated with BT or TT signaling. The second is the reduction in further complexity. In particular, this embodiment applies when BT and TT partitioning is often not required. For example, it can be applied when the maximum multitree depth from the time domain MaxMttDepthTempo is particularly low. It can also be applied when the current QTDepth is set to the minimum value of QTDepth (CTU size). It can also be applied when QTDepth is equal to the maximum possible value (minimum QT size). In another example, this embodiment applies when the current QT depth is greater than the temporal QT depth (QT Depth > QTDepthTempo). In another example, this embodiment applies when the current QT depth is less than the temporal QT depth - 1 (QT Depth < QTDepthTempo-1).
[0121] In certain cases of intra-reference frames Intraframes and interframes have different partitioning. Intraframe partitioning follows spatial correlation, compared to interframe partitioning which follows temporal correlation. However, as described herein, there are several parameters, particularly the MaxMttDepth of the current block, that can be used to predict the MaxMttDepth.
[0122] QTDepthTempo -1 does not increase MaxMttDepth. In one embodiment, when the reference frame is an intraframe, the increment of MaxMttDepth is applied only when the current QT depth, QTDepth, is equal to QTDepthTempo, and not when QTDepth is equal to QTDepthTempo - 1. The advantage of this is the reduction of complexity, which has little impact on coding efficiency.
[0123] If there are other interframes with different PH_MaxMttDepth In one embodiment, when the reference frame is an intraframe, the increment of MaxMttDepth applies only if the current QT depth, QTDepth is equal to QTDepthTempo, and all interframes in the sequence or GOP have the same maximum MTT depth (PH_MaxMttDepth). When QTDepth is equal to QTDepthTempo - 1, the maximum MTT depth for the current block may also be increased. The advantage of this is an improvement in coding efficiency with a small increase in coding time. In fact, when all interframes have the same PH_MaxMttDepth, the gain is greater when QTDepth is equal to QTDepthTempo-1 for frames that have an intraframe as a reference. Of course, in these embodiments, the increase in the maximum MTT depth of the current block is subject to the other conditions defined earlier.
[0124] This does not apply when referencing the intranet. In one embodiment, when the reference frame is an intraframe, the maximum MTT depth of the current block is not increased according to certain conditions. The advantages of this approach are improved coding efficiency and reduced coding execution time, or a compromise in complexity for better coding efficiency.
[0125] This does not apply to the same time ID. In one embodiment, when the reference frame is an intra-frame and this reference frame does not have the same temporal ID (or alternatively the same hierarchical depth), the maximum MTT depth of the current block is not increased. In one example, when the reference frame is an intra-frame having the same temporal ID, the maximum MTT depth for the current block is increased. This advantage is a trade-off in complexity for better coding efficiency.
[0126] When Intra Ref is too close In one embodiment, when the reference frame is an intra-frame and the absolute POC difference between the current frame and the reference frame is less than a threshold, the maximum MTT depth MaxMttDepth of the current block is not increased. In one example, this threshold is equal to 2 or 3. The advantage is that the trade-off in complexity for coding efficiency is better.
[0127] Decrease of QTDepthTempo -1 In one embodiment, when the reference frame is an intra-frame and the current QT depth, QTDepth is equal to the temporal QT depth minus 1, QTDepthTempo -1, the maximum MTT depth MaxMttDepth of the current block decreases. This advantage is an improvement in coding efficiency and a reduction in coding time.
[0128] Decrease when PH_MaxMttDepth < MaxMttDepthTempo In one embodiment, when the reference frame is an intra-frame and the current QT depth, QTDepth is equal to the temporal QT depth minus 1, QTDepthTempo -1 and the maximum MTT depth PH_MaxMttDepth of the current picture is less than the temporal maximum MTT depth MaxMttDepthTempo, the maximum MTT depth MaxMttDepth of the current block decreases. Alternatively, MaxMttDepthTempo can be replaced by the maximum MTT depth PH_MaxMttDepthTempo for the reference picture. The advantages of this approach are improved coding efficiency and reduced coding time.
[0129] If mttDepthCol is greater than or equal to PH_MaxMttDeptTempo, it will decrease. In one embodiment, when the reference frame is an intraframe, and the current QT depth, QTDepth, is equal to the temporal QT depth minus 1 (QTDepthTempo - 1), and the average of the temporal MTT depth values mttDepthCol is greater than or equal to the reference frame's maximum MTT depth PH_MaxMttDeptTempo, then the current block's maximum MTT depth MaxMttDepth decreases. Alternatively, the equality may be greater than or equal to the inequality, i.e., the average of the temporal MTT depth values may be considered, and mttDepthCol is equal to the reference frame's maximum MTT depth PH_MaxMttDeptTempo. Alternatively, PH_MaxMttDeptTempo may be replaced with MaxMttDepthTempo, which is the maximum temporal value of the MTT depth. The advantages of this approach are improved coding efficiency and reduced coding time.
[0130] If PH_MaxMttDepth < MaxMttDepthTempo and mttDepthCol is greater than or equal to PH_MaxMttDepthTempo, then decrement MaxMttDepth. In one embodiment, both of the aforementioned embodiments are combined. In this embodiment, the current block's maximum MTT depth MaxMttDepth is reduced when the reference frame is an intraframe, the current QT depth QTDepth is equal to the temporal QT depth minus 1, QTDepthTempo - 1, the maximum MTT depth PH_MaxMttDepth of the current picture is less than the temporal maximum MTT depth MaxMttDepthTempo, and the average of the temporal MTT depth values mttDepthCol is greater than or equal to the reference frame's maximum MTT depth PH_MaxMttDeptTempo. The alternative forms described above also apply to this embodiment. The following pseudocode provides an exemplary implementation of this embodiment. If(ReferenceFrame_is_Intra?) { If (QtDepth == QTDepthTempo -1) { If (PH_MaxMttDepth < MaxMttDepthTempo) { If (mttDepthTempo >= PH_MaxMttDeptTempo) { MaxMttDepth- } } } } The advantage of this is improved coding efficiency, accompanied by reduced coding time. In fact, when the maximum MTT depth detected in an intraframe reaches its maximum value, the probability that the current block will not be selected at a QT depth equal to the temporal QT depth minus 1 increases.
[0131] Specific case: The following frame Increase MaxMttDepth of QTDepthTempo -1 (only in the following cases) PH_MaxMttDepth == PH_MaxMttDepthTEmpo and PH_MaxMttDepth < MaxMttDepthTempo In one embodiment, the maximum MTT depth MaxMttDepth for the current block is increased only when the maximum MTT depth for both the current frame and the reference is the same (PH_MaxMttDepth == PH_MaxMttDepthTempo), and the time-maximum MTT depth is greater than this value (PH_MaxMttDepth < MaxMttDepthTempo), and the current QT depth is equal to the average time QT depth minus 1 (QTDepthTempo - 1). In fact, when the maximum MTT depth is the same for both the current frame and the reference frame, but the maximum temporal MTT depth is greater than this value, it means that the maximum MTT depth has been increased for at least one block in the time domain, and that this was beneficial. However, instead of propagating this increase in MTT depth over all subsequent frames, the increase is applied to the QT depth - 1. The advantage is reduced complexity. In fact, increasing the maximum MTT depth increases the encoding execution time. And for a sequence, if the frame-level maximum MTT depth is set too low, the method increases the encoding time. Therefore, if the goal is to maintain encoding, it is preferable to propagate this increase at a lower level of QT depth in order to reduce encoding time.
[0132] Specific restrictions on (QTDepth == QTDepthTempo - 1) As mentioned above, the same limitation on QTDepth is equal to QTDepthTempo-1 and can be combined with the previous embodiment. Thus, in an additional embodiment to the previous embodiment, the maximum MTT depth, MaxMttDepth is the average of the MTT depth time values, and mttDepthTempo is increased only when it is equal to PH_MaxMTTDepthTempo or equal to PH_MaxMTTDepth or MaxMttDepthTempo of the current frame. Alternatively, the average MTT depth time, mttDepthTempo is less than or equal to PH_MaxMTTDepthTempo, or equal to PH_MaxMTTDepth of the current frame, or equal to MaxMttDepthTempo in the time domain. The above describes reference frames corresponding to intraframes, but the present invention is not limited to these embodiments. Embodiments can be adapted so that the reference frames correspond to interframes.
[0133] Time-domain values From the time domain In one embodiment, for one or more conditions or the aforementioned rules, the QT depth of the current block is compared to a value determined from the time domain.
[0134] QT depth time is the average QT depth value from the time domain. In one embodiment, the QT depth of the current block is compared with the average of the QT depth values determined from the time domain. For example, the QT depth value at the time position in Figure 15 can be used to calculate the average value QTDepthTempo, which can be used as a reference. One alternative example allows us to consider a larger time domain.
[0135] The other value is the minimum QT depth value from the time domain. In one alternative embodiment, the QT depth of the current block is compared to the minimum QT depth value determined from the time domain.
[0136] The MaxMttDepthTempo value is calculated from the maximum MTT depth or average MTT depth in the time domain. In one embodiment, a value compared to the current block's QT depth against a defined criterion is calculated according to the maximum MTT depth from the time domain "MaxMttDepthTempo". Alternatively, the average MTT depth can be considered.
[0137] QT Depth is the average QT Depth from the time domain, and MaxMttDepthTempo is the maximum MttDepth from the time domain. In one particularly advantageous embodiment, the QT depth from the time domain is the average QT depth, and MaxMttDepthTempo is the maximum MttDepth from the time domain. For example, by considering that the time domain contains 10 positions, this can be achieved using the following pseudocode described above. If (PH_MaxMttDepth < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo) { MaxMttDepth++ } } MaxMttDepthTempo is the maximum value of 10 MttDepth_i from the time domain, where i is between 0 and 9. QTDepthTempo is the average of 10 QTDepth_i from the time domain for i between 0 and 9. Furthermore, a weighted average is used to account for the block size of each block in the time domain. This is particularly efficient. In fact, the average QT depth from the time domain gives an accurate representation of the QT depth that should be selected for the current block. And thankfully, increasing the maximum depth of the multitree in this case favors that selection. To avoid a significant increase in encoding time and to prevent an increase in rate due to increased signaling, the MaxMttDepth of the current block is increased only when MaxMttDepthTempo is greater than the MaxMttDepth of the current frame. This recognizes that if MaxMttDepthTempo is large, the MaxMttDepth of the current block is likely to be higher. This gives the best compromise in terms of encoding efficiency and encoding execution time.
[0138] The time domains used to obtain the average QT depth and maximum MttDepth may be the same or different. For example, they may be the same size (and / or location) or different size (and / or location) or different size (and / or location) even if they are from different reference frames. Different time domains may be as described in the “Time Domain” embodiments described below. This embodiment can be combined with any embodiment that reduces (or decrements) MaxMttDepth when PH_MaxMttDepth > MaxMttDepthTempo. For example, one advantageous embodiment may be as described in the following pseudocode. If (PH_MaxMttDepth < PH_MttDepthTempo) { If (PH_MaxMttDepth < MaxMttDepthTempo) { If (QTDepth == QTDepthTempo) { MaxMttDepth++ } } } If (PH_MaxMttDepth > MaxMttDepthTempo) { If (currentQP >= tempoQP) { MaxMttDepth- } } Therefore, MaxMttDepth can be optimally adjusted both upward and downward to adapt to MaxMttDepthTempo, i.e., the maximum multi-tree ternary depth from the time domain (the domain of another frame, such as a reference frame).
[0139] time domain Parallel In one embodiment, the block that is thought to determine the time value of the QT depth or block size is, for example, the QT depth value, or the block size of a temporally juxtaposed block, or a temporal block shifted by the motion vector value obtained from an adjacent block. Similarly, MaxMttDepth may be, for example, the MttDepth of a temporally juxtaposed block or a temporal block shifted by the motion vector value obtained from an adjacent block.
[0140] Reference frame is an intraframe. In one embodiment, this corresponds to a reference frame whose time domain is an intraframe.
[0141] Multiple locations In one embodiment, several positions of a block are considered to determine the QT depth, block size, or time value of MttDepth. For example, positions C, TL, TR, BL, and BR in Figure 15 can be considered. In this figure, position C is the center of the block when it is juxtaposed in time. Positions TL, TR, BL, and BR are the upper left, upper right, lower left, and lower right positions around the block when it is juxtaposed in time, respectively. Compared to previous embodiments, the current embodiment provides greater coding time reduction and increased coding efficiency because the temporal QT depth is determined or the temporal block size or temporal MttDepth is more frequently reliable.
[0142] higher domain In one embodiment, the time value of QT depth, block size, or MttDepth is determined based on the time domain. For example, the time domain is a juxtaposed CTU. Compared to the previous two embodiments, more blocks can be considered, and therefore a better compromise is reached between reduced coding time and coding efficiency.
[0143] The center of the current block is used to determine its temporal position. In one embodiment, the center of the current block is considered in order to determine juxtaposed blocks or several time blocks or time regions. The advantage of this is that the center is the best position to represent the current block, resulting in a better composition. Alternatively, when the center of the block is outside the current frame, the top-left position is considered.
[0144] Entire frame In one embodiment, the time value of QT depth, block size, or MttDepth is determined based on all blocks in the time frame. The advantage of this embodiment is the simplification of the process for determining the temporal QT depth, block size, or MttDepth value, but it is less efficient compared to the previous embodiment because it is not adapted to the content.
[0145] Frames with the same temporal ID In one embodiment, juxtaposed blocks or several temporal blocks or temporal regions come from frames that have the same temporal ID. In the random access example, in the configuration shown in Figure 11, if the current frame has a temporal ID equal to 4, another encoded / decoded frame with the same temporal ID equal to 4 is used to determine the value of the proposed method. Frames with the same temporal ID often have the same coding parameters, and in particular, they have the same or similar QP and the same spatial distance to their reference frame. Therefore, these are of great interest for predicting QT depth or MttDepth, as this data correlates with QP and spatial distance between frames.
[0146] The nearest frame with the same time ID In one embodiment, juxtaposed blocks or several temporal blocks or temporal regions come from the nearest frame having the same temporal ID. As shown in Figure 11, in the example of a random access configuration, the nearest frame with the same temporal ID is (generally) more correlated than other frames. Therefore, the results are better.
[0147] Frames or reference frames that share the same QP In one embodiment, juxtaposed blocks or several temporal blocks or temporal domains originate from a frame or reference frame having the same QP. Ideally, this is a reference frame having the same QP. As mentioned above, QP has a significant impact on block partitioning. Therefore, for frames with the same QP, temporal QT depth, block size, or MttDepth are better predictors.
[0148] The same reference frame used for time motion vector prediction. In one embodiment, juxtaposed blocks or several temporal blocks or temporal regions come from a reference frame used for temporal motion vector prediction. This could be the first reference in reference list 0 or the first reference frame in list 1, according to flags sent in the picture header or slice header. Surprisingly, this embodiment provides the best compromise between encoder time reduction and encoding efficiency, even when this reference frame has a lower QP. However, it is closer to the current frame compared to all frames with the same temporal ID.
[0149] Nearest reference frame In one embodiment, juxtaposed blocks or several time blocks or time regions come from the nearest reference frame. As described in the previous embodiment, even when frames with the same QP have a statistically greater correlation between their QP depth and Mttdepth, the distance to the current frame appears to be more interesting for the compromise between encoder time reduction and coding efficiency.
[0150] Multiple reference frames In one embodiment, two reference frames are considered, and two time domains, or two sets of some blocks, or two juxtaposed blocks are used to determine two time QT depths or two block sizes. These are then used to determine one QT depth, one block size, or one MttDepth. For example, the minimum QT depth from two time domains can be considered. It is also possible to consider three or more reference frames. The advantage of this approach is that the QT depth or MttDepth value is calculated from more data, representing a better compromise between reduced encoder time and encoding efficiency. This is particularly efficient when both reference frames have the same temporal distance, but it increases the amount of memory access.
[0151] Second solution In this set of embodiments, the maximum multitree depth value MaxMttDepth depends on the QTDepth of the current block and a reference value sent in the header to be determined instead. All previous embodiments relating to QTDepthTempo can be applied using the transmitted value.
[0152] Some values of MaxMttDepth are sent at a high level. In one embodiment, several values of MaxMttDepth are sent at a high level and applied according to QTdepth or block size. For example, the high-level header may be one or more SPS, PPS, picture headers, or slice headers. The advantage compared to time-domain-based solutions is that the analysis is independent of time frames. Therefore, the process is simpler, and the encoder implementation is more flexible. However, some data needs to be transmitted.
[0153] Related to possible QT depth In one embodiment, several values correspond to several QT depths. For example, a table representing these values is sent in the picture header. The table size depends on the CTU size and MinQtSize. For example, if the CTU size is equal to 128 and MinQtSize is equal to 8, then four values are possible: one QT depth equals 1, corresponding to a block size of 64x64; one QT depth equals 2, corresponding to a block size of 32x32; and one QT depth equals 3, corresponding to a block size of 16x16. For example, the table is PH_MaxMTTDepth[], and the corresponding values are given below. PH_MaxMTTDepth[0] = 1 PH_MaxMTTDepth[1] = 2 PH_MaxMTTDepth[2] = 3 PH_MaxMTTDepth[3]= 1 Therefore, in this embodiment, the maxMttDepth of the current block is equal to PH_maxMttDepth[QTDepth]. This table replaces PH_MaxMTTDepth, so these syntax elements can be encoded in the same way as ue(v). Syntax elements encoded as ue(v) or se(v) are Exp-Golomb encoded in VVC with an order k equal to 0.
[0154] Associated with block size (log2) In one embodiment, instead of QT depth, the block size is considered for setting maxMttDepth. For example, in that case PH_MaxMTTDepth is replaced by the table PH_MaxMTTDepth_Log2size_minus2. Then, in the same configuration where the CTU size is equal to 128 and MinQtSize is equal to 8, PH_MaxMTTDepth_Log2size_minus2 is set as follows: PH_MaxMTTDepth_Log2size_minus2[5]= 1 / / For a 128x128 block PH_MaxMTTDepth_Log2size_minus2[4] = 2 / / For a 16x16 block PH_MaxMTTDepth_Log2size_minus2[3] = 3 / / For a 32x32 block PH_MaxMTTDepth_Log2size_minus2[2] = 1 / / For a 16x16 block
[0155] The values in this list are predicted to fall between them. In one embodiment, the values are predicted to be between them in order to reduce the signaling-only rate. For example, PH_MaxMTTDepth[N] = PH_MaxMTTDepthResidual + PH_MaxMTTDepth[N-1]. Here is an example. PH_MaxMTTDepth[0] = 1 PH_MaxMTTDepth[1]= 1+ PH_MaxMTTDepth[0]= 2 PH_MaxMTTDepth[2]= 1+ PH_MaxMTTDepth[1]= 3 PH_MaxMTTDepth[3]= -2+ PH_MaxMTTDepth[2]= 1 In this example, the values sent to MaxMTTDepthResidual are 1, 1, 1, and -2.
[0156] Predicted from other headers In one embodiment, the value is predicted by a similar value sent in a separate header. Therefore, only the updated value needs to be sent. For example, PH_MaxMTTDepth[N] = PH_MaxMTTDepthResidual[N] + SPS_MaxMTTDepth[N] Furthermore, overhead flags can signal whether a value is being updated.
[0157] Predict from default value, send only the offset. In one embodiment, the value is predicted by whether or not a default value has been sent. For example, if regular maxMttDepth is sent, the table PH_maxMttDepth[] is set to equal as follows: PH_MaxMTTDepth = 2 PH_MaxMTTDepth[0]= -1 + PH_MaxMTTDepth = 1 PH_MaxMTTDepth[1]= 0+ PH_MaxMTTDepth = 2 PH_MaxMTTDepth[2]= 1+ PH_MaxMTTDepth = 3 PH_MaxMTTDepth[3]= -1+ PH_MaxMTTDepth = 1
[0158] Disable screen content encoding. In one embodiment, the proposed method is adapted to screen content code. In particular, this method is disabled for screen content. The inventors found that predicting partitioning parameters appears to be more difficult when the content of a sequence includes screen content. Alternatively, the number of IBC blocks (intra-block coded blocks – blocks coded or coded by referencing a region of samples within the same frame as the block being coded or coded) is calculated in the time domain, and the method is invalidated for the current block depending on whether the number of IBC blocks is above or below a threshold. Alternatively, the number of blocks encoded using palette mode in the time domain is determined, and the method is disabled for the current block depending on whether the number of blocks encoded in palette mode is above or below a threshold. For example, if the number of palette mode encoded blocks is greater than the threshold, this may represent screen content, and therefore the method is disabled. If palette mode is enabled for a video sequence, this method can be disabled. Alternatively, if palette mode is enabled for a video sequence, certain predetermined criteria can be disabled in particular. For example, in one embodiment, the criterion that determines whether there is a decrease in MaxMttDepth (maximum multitree depth) can be disabled.
[0159] Disabled in low-latency configurations In one embodiment, the proposed method is adapted to a low-latency configuration. In particular, this method is invalid for such a configuration.
[0160] If the POC distance is too large (between reference frames) In one embodiment, the maximum MTT depth is increased when the reference frame is an interframe and the absolute POC difference between the current frame and the reference frame is 2 or less; otherwise, the maximum MTT depth is not increased when the absolute POC difference between the current frame and the reference frame is greater than 2. Other limitations, as described in other embodiments, may also be considered. The advantage of this is a significant reduction in coding time with little impact on coding efficiency. In fact, when the temporal distance between frames is too large, temporal correlation decreases. Therefore, increasing the maximum MTT depth generates additional coding time complexity for blocks that do not require such an increase.
[0161] If the reference frame is an interreference frame In one embodiment, the maximum MTT depth is increased when the reference frame is an interframe and has a different temporal ID from the current frame; otherwise, the maximum MTT depth is not increased when the reference frame has the same temporal ID. Other limitations, as described in other embodiments, may also be considered. The advantage of this is a significant reduction in coding time with little impact on coding efficiency.
[0162] In the case of high bitrate In one embodiment, the maximum MTT depth does not increase when the target bitrate is high or the QP is low. In a preferred embodiment, the maximum MTT depth does not increase when the QP of the sequence or GOP is 22 or greater. The advantage of this is a significant reduction in coding time with little impact on coding efficiency.
[0163] Disable the use of the flag In one embodiment, the proposed method is enabled or disabled by at least one flag sent in at least one header.
[0164] Increase MaxMttDepth enable / disable In one embodiment, all possible increases to the current block's maximum MTT value MaxMttDepth can be enabled or disabled using a flag sent in at least one header. One or more headers may be SPS, PPS, picture headers, or slice headers. The advantage of this embodiment is the flexibility of the encoder implementation.
[0165] Enable / disable MaxMttDepth in QTDepthTempo In one embodiment, when the current QT depth (QTDepth) is equal to the time-averaged QT depth (QTDepthTempo), all possible increases in the current block's maximum MTT value (MaxMttDepth) can be enabled or disabled using flags sent in at least one header. One or more headers may be an SPS, PPS, picture header, or slice header. The advantage of this embodiment is the flexibility of the encoder implementation.
[0166] Increase the MaxMttDepth enable / disable of QTDepthTempo -1 In one embodiment, when the current QT depth (QTDepth) is equal to the time average of QT depth minus 1 (QTDepthTempo-1), all possible increases in the current block's maximum MTT value (MaxMttDepth) can be enabled or disabled using flags sent in at least one header. One or more headers may be an SPS, PPS, picture header, or slice header. The advantage of this embodiment is the flexibility of the encoder implementation.
[0167] Combinations of the three embodiments described above In one embodiment, the three embodiments described above are combined. In this embodiment, a first flag enables or disables the increment of MaxMttDepth. For example, the first flag enables the increment of MaxMttDepth, the second flag enables or disables the increment when the current QT depth (QTDepth) is equal to the time average of the QT depth (QTDepthTempo), and the third flag enables or disables the increment when the current QT depth (QTDepth) is equal to the time average of the QT depth minus 1 (QTDepthTempo-1). The advantage of this embodiment is the increased flexibility of the encoder implementation.
[0168] Disable / Enable reduction of MaxMttDepth In one embodiment, all possible reductions of the current block's maximum MTT value MaxMttDepth can be enabled or disabled using a flag sent in at least one header. One or more headers may be SPS, PPS, picture headers, or slice headers. The advantage of this embodiment is the flexibility of the encoder implementation.
[0169] Disabling / enabling MaxMttDepth in QTDepthTempo In one embodiment, when the current QT depth (QTDepth) is equal to the time-averaged QT depth (QTDepthTempo), all possible reductions of the current block's maximum MTT value (MaxMttDepth) can be enabled or disabled using flags sent in at least one header. One or more headers may be an SPS, PPS, picture header, or slice header. The advantage of this embodiment is the flexibility of the encoder implementation.
[0170] Disabling / enabling MaxMttDepth for QTDepthTempo -1 In one embodiment, when the current QT depth (QTDepth) is equal to the time average of QT depth minus 1 (QTDepthTempo-1), all possible reductions of the current block's maximum MTT value (MaxMttDepth) can be enabled or disabled using flags sent in at least one header. One or more headers may be an SPS, PPS, picture header, or slice header. The advantage of this embodiment is the flexibility of the encoder implementation.
[0171] Combinations of the three embodiments described above In one embodiment, the three embodiments described above are combined. In this embodiment, a first flag enables or disables the reduction of MaxMttDepth. In one example, the first flag enables the reduction, the second flag enables or disables the reduction when the current QT depth (QTDepth) is equal to the time average of the QT depth (QTDepthTempo), and the third flag enables or disables the reduction when the current QT depth (QTDepth) is equal to the time average of the QT depth minus 1 (QTDepthTempo-1). The advantage of this embodiment is the increased flexibility of the encoder implementation.
[0172] This method can also be applied to other split modes. In one embodiment, other partitioning modes can be applied, and the method can be adapted.
[0173] All embodiments can be combined. Unless otherwise specified, all embodiments described can be combined. In fact, many combinations are synergistic and can result in greater efficiency improvements than the sum of their parts. In one embodiment, all previous embodiments relating to QT depth can be expressed alternatively in terms of block size. Specifically, QT depth can be expressed as block size. For example, for a CTU equal to 128, QT depth 0 corresponds to a 128x128 block, QT depth 1 corresponds to a 64x64 block, and so on.
[0174] Further embodiments The maximum multi-tree (MTT) depth is predicted over time for each block. This value can be increased, decreased, or left unchanged according to the following rules: The maximum MTT depth may be incremented for a block of the current frame when the reference frame is an interframe and has a different temporal ID, and the POC distance to this reference frame is 2 or less. The maximum MTT depth may also be incremented when the reference is an intraframe with the same temporal ID. For the relevant "current" frame, the maximum MTT depth for each node may or may not be incremented according to the following conditions:
[0175] The current QT depth is equal to the average temporal QT depth minus 1, the maximum temporal MTT depth is better than the maximum MTT depth of the current frame, the temporal average of the maximum MTT depth is equal to half the maximum MTT depth of the reference frame's picture header, and is the same as when the reference frame is not an intra-reference frame. Alternatively, the current QT depth is equal to the average temporal QT depth, the maximum temporal MTT depth is better than the maximum MTT depth of the current frame, and the temporal average of the MTT depth is greater than half of the maximum MTT depth of the picture header of the reference frame. The maximum MTT depth may be decremented for the current frame's block if palette mode is disabled or if the current QP is strictly inferior to the reference frame's QP. For the relevant frame, the maximum MTT depth for each block may or may not be decremented according to the following conditions: When the current frame's maximum QT depth is greater than its maximum MTT depth, and the maximum time MTT depth is equal to the current frame's maximum MTT depth, and the average time QT depth is less than the current frame's QT depth. • When the maximum time MTT depth is strictly less than the current node's maximum multitree depth.
[0176] In addition, the maximum MTT depth is decremented if the reference frame is intra, the current QT depth is equal to the mean temporal QT depth minus 1, the maximum temporal MTT depth is better than the maximum MTT depth, and the mean temporal MTT depth is better than or equal to the maximum MTT depth of the reference frame's picture header.
[0177] Implementation of the invention Figure 16 shows systems 191, 195 according to embodiments of the present invention, comprising at least one of an encoder 150 or decoder 100 and a communication network 199. According to one embodiment, system 195 is for processing and providing content (e.g., video and audio content for displaying / outputting or streaming video / audio content) to a user having access to decoder 100 via a user interface of a user terminal comprising decoder 100 or a user terminal capable of communicating with decoder 100. Such a user terminal may be a computer, mobile phone, tablet, or any other type of device capable of providing / displaying (provided / streamed) content to the user. System 195 acquires / receives bitstream 101 (e.g., in the form of a continuous stream or signal while previous video / audio is being displayed / outputted) via communication network 199. According to one embodiment, system 191 is for processing content and storing the processed content, e.g., processed video and audio content for later display / output / streaming. System 191 receives content including the original sequence 151 of image 151, which is processed by encoder 150 (including filtering by a deblocking filter according to the present invention). Encoder 150 generates a bitstream 101 which is communicated to decoder 100 via communication network 191. The bitstream 101 is then communicated to decoder 100 in several ways, for example, it may be pre-generated by encoder 150 and stored as data in a storage device (e.g., on a server or cloud storage) within communication network 199 until a user requests the content (i.e., bitstream data) from the storage device, at which point the data is communicated / streamed from the storage device to decoder 100.System 191 may also include a content provider for receiving and processing user requests for content so that the requested content can be delivered / streamed from the storage device to the user (for example, by communicating data for a user interface displayed on the user terminal), and for receiving user requests for content so that the requested content can be delivered / streamed from the storage device to the user terminal. Alternatively, encoder 150 generates a bitstream 101 and communicates / streams it directly to decoder 100 when the user requests content. Decoder 100 then receives the bitstream 101 (or signal) and performs filtering using a deblocking filter according to the present invention to obtain / generate a video signal 109 and / or an audio signal, the video signal then being used by the user terminal to provide the requested content to the user. Any step of the method / process according to the present invention or any function described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the step / function may be stored as one or more instructions or code or programs, or as computer-readable media, and executed by one or more hardware-based processing units, such as a programmable computing machine ("personal computer"), a DSP ("digital signal processor"), a circuit, a processor and memory, a general-purpose microprocessor or central processing unit, a microcontroller, an ASIC ("application-specific integrated circuit"), a field-programmable logic array (FPGA), or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein.
[0178] Embodiments of the present invention can also be implemented by a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of JCs (e.g., chipsets). While various components, modules, or units are described herein to illustrate functional aspects of devices / apparatus configured to perform their embodiments, implementation by different hardware units is not necessarily required. Rather, the various modules / units may be combined in a codec hardware unit, or provided by a collection of interoperable hardware units including one or more processors in conjunction with appropriate software / firmware. Embodiments of the present invention can be realized by a computer in a system or device that includes one or more processing units or circuits for reading and executing computer-executable instructions (e.g., one or more programs) recorded on a storage medium, executing one or more modules / units / functions of the above embodiments, and / or for executing the functions of one or more of the above embodiments, and by controlling, for example, one or more processing units or circuits for executing the functions of one or more of the above embodiments. The computer may include a separate computer or a network of separate processing units for reading and executing computer-executable instructions. Computer-executable instructions may be provided to the computer from a computer-readable medium such as a communication medium via a network or tangible storage medium. The communication medium may be a signal / bitstream / carrier wave. Tangible storage media are “non-temporary computer-readable storage media” which may include one or more of the following: hard disks, random access memory (RAM), read-only memory (ROM), storage devices for distributed computing systems, optical discs (e.g., Compact Disc (CD), Digital Use Disc (DVD), or Blu-ray Disc (BD) (trademark)), flash memory devices, and memory cards. At least some of the steps / functions may also be implemented in hardware by mechanical or dedicated components such as FPGAs (“Field-Programmable Gate Arrays”) or ASICs (“Application-Specific Integrated Circuits”).
[0179] Figure 17 is a schematic block diagram of a computing device 3600 for implementing one or more embodiments of the present invention. The computing device 3600 may be a device such as a microcomputer, workstation, or light portable device. The computing device 3600 comprises a communication bus connected to: - a central processing unit (CPU) 3601 such as a microprocessor; - random access memory (RAM) 3602 for storing executable code of the methods of embodiments of the present invention, and a register adapted to store variables and parameters necessary to implement the method for encoding or decoding at least a portion of an image according to embodiments of the present invention, the memory capacity of which may be expanded, for example, by optional RAM connected to an expansion port; - read-only memory (ROM) 3603 for storing computer programs for implementing embodiments of the present invention; - a network interface (NET) 3604 which is typically connected to a communication network through which digital data to be processed is transmitted or received. The network interface (NET) 3604 may be a single network interface or may consist of a set of different network interfaces (e.g., wired and wireless interfaces, or different types of wired or wireless interfaces). Data packets are written to the network interface for transmission or read from the network interface for reception under the control of a software application running on the CPU 3601; a user interface (UI) 3605 is used to receive input from the user or to display information to the user; a hard disk (HD) 3606 is provided as mass storage; and an input / output module (IO) 3607 may be used to receive / transmit data to and from external devices such as a video source or display. Executable code may be stored in ROM 3603, HD 3606, or any removable digital medium such as a disk.In a modified version, the executable code of a program may be received via NET3604 by means of a communication network and stored in one of the storage means of a communication device 3600, such as HD3606, before execution. The CPU 3601 is adapted to control and direct the execution of program instructions or parts of the program's software code according to embodiments of the present invention, the instructions of which are stored in one of the aforementioned storage means. After power-up, the CPU 3601 can execute instructions from the main RAM memory 3602 relating to a software application loaded, for example, from the program ROM 3603 or HD3606. When such a software application is executed by the CPU 3601, it causes the steps of the method according to the present invention to be performed.
[0180] Furthermore, according to another embodiment of the present invention, it is understood that the decoder according to the above embodiment is provided in a user terminal such as a computer, a mobile phone, a table, or any other type of device (e.g., a display device) that can provide / display content to a user. According to yet another embodiment, the encoder according to the above embodiment is provided in an imaging device that also includes a camera, video camera, or network camera (e.g., closed-circuit television or video surveillance camera) that captures and provides content for the encoder to encode. Two such examples are provided below with reference to Figures 18 and 19.
[0181] Figure 18 shows a network camera system 3700, which includes a network camera 3702 and a client device 202. The network camera 3702 comprises an imaging unit 3706, an encoding unit 3708, a communication unit 3710, and a control unit 3712. The network camera 3702 and the client device 202 are interconnected via the network 200 so that they can communicate with each other. The imaging unit 3706 includes a lens and an image sensor (e.g., a CCD (charge coupled device) or a CMOS (complementary metal oxide semiconductor)) to capture an image of a subject and generate image data based on the image. This image can be a still image or a video image. The encoding unit 3708 encodes the image data using the encoding method described above, or a combination of the encoding methods described above. The communication unit 3710 of the network camera 3702 transmits the encoded image data encoded by the encoding unit 3708 to the client device 202. Furthermore, the communication unit 3710 receives commands from the client device 202. These commands include commands for setting the encoding parameters of the encoding unit 3708. The control unit 3712 controls other parts of the network camera 3702 according to the commands received by the communication unit 3712.
[0182] The client device 202 comprises a communication unit 3714, a decoding unit 3716, and a control unit 3718. The communication unit 3714 of the client device 202 sends a command to the network camera 3702. Furthermore, the communication unit 3714 of the client device 202 receives encoded image data from the network camera 3712. The decoding unit 3716 decodes the encoded image data using the decoding method described above, or a combination of the decoding methods described above. The control unit 3718 of the client device 202 controls other parts within the client device 202 in response to user operations and commands received by the communication unit 3714. The control unit 3718 of the client device 202 controls the display device 2120 to display the image decoded by the decoding unit 3716. Furthermore, the control unit 3718 of the client device 202 controls the display device 2120 to display a GUI (Graphical User Interface) and specifies the parameter values of the network camera 3702, including the encoding parameters of the encoding unit 3708. Furthermore, the control unit 3718 of the client device 202 controls other parts within the client device 202 in response to user input on the GUI displayed by the display device 2120. The control unit 3718 of the client device 202 controls the communication unit 3714 of the client device 202 to send a command to the network camera 3702 that specifies the value of the network camera's parameters, in response to user input to the GUI displayed on the display device 2120.
[0183] Figure 19 shows the smartphone 3800. The smartphone 3800 comprises a communication unit 3802, a decoding unit 3804, a control unit 3806, and a display unit 3808. The communication unit 3802 receives encoded image data via the network 200. The decoding unit 3804 decodes the encoded image data received by the communication unit 3802. The decoding and encoding unit 3804 decodes and encodes the encoded image data using the decoding method described above. The control unit 3806 controls other parts of the smartphone 3800 according to user operations or commands received by the communication unit 3806. For example, the control unit 3806 controls the display unit 3808 to display the image decoded by the decoding unit 3804. The smartphone 3800 may also include a sensor 3812 and an image recording device 3810. In this way, the smartphone 3800 can record images and encode them (using the method described above). The smartphone 3800 can then decode the encoded images (using the method described above) and display them via the display unit 3808, or transmit the encoded images to another device via the communication unit 3802 and the network 200.
[0184] Alternatives and modifications Although the present invention has been described above using embodiments, the present invention is not limited to these embodiments. It will be understood by those skilled in the art that various changes and modifications can be made without departing from the scope of the invention, as defined in the appended claims. All features disclosed in the specification (including any appended claims, abstract, and drawings) and / or all steps of any method or process disclosed so herein can be combined in any combination, except for combinations in which at least some of such features and / or steps are mutually exclusive. Each feature disclosed in the specification (including any appended claims, abstract, and drawings) may be replaced by an alternative feature that serves the same, equivalent, or similar purpose unless otherwise expressly stated. Thus, unless specifically stated otherwise, each disclosed feature is merely an example of a general set of equivalent or similar functions.
[0185] Furthermore, any result of the above comparison, decision, evaluation, selection, execution, or consideration, such as a selection made during an encoding or filtering process, may be indicated in data within the bitstream, such as a flag or data indicating the result, or may be decidable / inferable from there, and it is understood that the indicated or determined / inferred result may be used in the process, for example during a decoding process, instead of actually performing the comparison, decision, evaluation, selection, execution, or consideration. In the claims, the word “comprising” does not exclude other elements or steps, and the indefinite article “a” or “an” does not exclude the plural. The mere fact that different features are described in different dependent claims does not imply that combinations of these features cannot be used advantageously. The reference numerals appearing in the claims are for illustrative purposes only and do not have any limiting effect on the claims.
Claims
1. A method for encoding image data into a bitstream or decoding from a bitstream, wherein the bitstream includes data indicating that the image data is partitioned into a plurality of blocks according to an encoding tree, and the blocks in the encoding tree may be partitioned according to one or more types of partitioning. A method comprising obtaining a parameter indicating the maximum partitioning depth of at least one partitioning type for the current block to be decoded, using at least one other parameter associated with the image data.
2. The method according to claim 1, wherein the maximum partitioning depth is a maximum multi-tree partitioning depth indicating the maximum partitioning depth for multiple partitioning types.
3. The method according to any one of claims 1 to 3, wherein the at least one other parameter is obtained based on another parameter for the current block.
4. The method according to claim 4, wherein the maximum partitioning depth refers to the maximum multitree partitioning depth, which is the maximum partitioning depth for binary tree partitioning and ternary tree partitioning.
5. The method according to claim 3, wherein the at least one other parameter is based on the quadtree depth of the current block or the block size of the current block.
6. The method according to claim 5, wherein the obtained maximum multi-tree partitioning depth is further based on a comparison of the parameter with a reference value.
7. The method according to claim 6, wherein the reference value is signaled in the header of the bitstream.
8. The method according to claim 6 or 7, wherein the reference value is based on a depth other than the quadtree depth of the current block.
9. The method according to claim 8, wherein the reference value is associated with a quadtree depth value associated with at least one region of another frame.
10. The method according to claim 9, wherein the reference value is based on the mean quadtree depth determined from at least one region of another frame.
11. The method according to claim 9, wherein the reference value is based on the minimum quadtree depth determined from the at least one region of another frame.
12. The method according to claim 9, wherein the reference value is based on the maximum multitree depth or average multitree depth determined from at least one region of another frame.
13. The method according to any one of claims 9 to 12, comprising increasing the current maximum multitree depth and obtaining the maximum multitree depth for the current block according to one or more rules or conditions based on the quadtree depth value and the reference depth value.
14. The method according to claim 13, further comprising increasing the current maximum multitree depth to obtain the maximum multitree depth for the current block when the quadtree depth value matches the reference quadtree depth value.
15. The method according to claim 13 or 14, further comprising increasing the current maximum multitree depth to obtain the current maximum multitree depth for the current block when the quadtree depth value matches the value obtained by subtracting 1 from the reference value.
16. The method according to claim 14 or 15, wherein the reference quadtree value is further required to match the minimum quadtree value associated with a region of one or more reference frames for increasing the current maximum multitree depth.
17. The method according to claims 14 to 16, wherein the reference quadtree value is further required to match the maximum quadtree depth of the current frame in order to increase the current maximum multitree depth.
18. The method according to any one of claims 9 to 15, comprising reducing the current maximum multitree depth to obtain the maximum multitree depth for the current block according to one or more rules or conditions based on the quadtree depth value and the reference depth value.
19. The method according to claim 16, further comprising: when the quadtree depth value does not match the reference quadtree depth value, reducing the current maximum multitree depth to obtain the current maximum multitree depth for the current block.
20. The method according to claim 16 or claim 17, further comprising: when the quadtree depth value does not match the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth is reduced to obtain the current maximum multitree depth for the current block.
21. The method according to claim 16, further comprising reducing the current maximum multitree depth for the current block when the quadtree depth value is greater than the reference depth value.
22. The method according to claim 19, wherein when the quadtree depth value is greater than the reference depth value, the reduction of the current maximum multitree depth for the current block is applied only when the reference depth value is obtained from a region of another frame code having a higher quality than the current frame.
23. The method according to claim 16, further comprising reducing the current maximum multitree depth of the current block when the quadtree depth value is smaller than the value obtained by subtracting the offset from the reference depth value.
24. The method according to claim 23, wherein the offset is 1.
25. The method according to claim 23 or 24, wherein the reduction of the current maximum multitree depth for the current block when the quadtree depth value is smaller than the reference depth value minus the offset is applied only when the reference depth value is obtained from a region of another frame code of lower quality than the current frame.
26. The method according to any one of claims 16 to 25, further comprising reducing the current maximum multitree depth for the current block when the reference depth value is smaller than the quadtree depth value.
27. The method according to claim 26, wherein the quadtree depth value is the quadtree depth value of the current frame.
28. The method according to any one of claims 16 to 27, wherein if the maximum multitree depth decreases, the maximum multitree depth is set to zero.
29. The method according to any one of claims 9 to 12, comprising using the functions of the quadtree depth value and the reference quadtree depth value to obtain the maximum multitree depth for the current block.
30. The aforementioned function is, MaxMttDepth = 2 * QTDepth - QTDepth +1, MaxMttDepth = min(2 * QTDepthTempo-QTDepth +1,MaxMttDepth), and, MaxMttDepth = min(QTDepth(QTDepthTempo-2)+1,MaxMttDepth+1) is one of the following: The method according to claim 29, wherein MaxMtDepth is the maximum multitree depth, QTDepth is the quadtree depth of the current block, and QTDepthTempo is the reference quadtree value.
31. The method according to any one of claims 1 to 30, wherein a maximum multitree depth value associated with one or more regions of another frame is used to obtain the maximum multitree depth for the current block.
32. The method according to claim 31, wherein the conditions for modifying the current maximum multitree depth in order to obtain the maximum multitree depth for the current block are based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth value associated with one or more regions of another frame.
33. The method of claim 32, comprising increasing the current maximum multitree depth of the current block based on the maximum multitree depth signaled in the bitstream which is smaller than the maximum multitree depth value associated with one or more regions of another frame.
34. The method according to claim 33, wherein increasing the current maximum multitree depth of the current block depends on the average multitree depth value associated with one or more regions of another frame.
35. The method according to claim 34, wherein the increase is based on a comparison between the average multitree depth value associated with one or more regions of another frame and the maximum multitree depth signaled in the bitstream.
36. The method according to claim 35, wherein the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is half or more of the maximum multitree depth of the current frame.
37. The method according to claim 35, wherein if the average multitree depth value associated with one or more regions of another frame is greater than half the maximum multitree depth of the current frame, the current maximum multitree depth of the current block is increased.
38. The method according to claim 36 or 37, wherein the maximum multitree depth of the current frame is halved by dividing by 2.
39. The method according to claim 36 or 37, wherein the maximum multitree depth of the current frame is halved by shifting it one bit to the right.
40. The method according to claim 39, wherein an offset is added to the maximum multitree depth of the current frame before the bit shift to the right.
41. The method according to claim 34, wherein the increase is based on a comparison between the average multitree depth value associated with one or more regions of another frame and the maximum multitree depth of another frame.
42. The method according to claim 41, wherein the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is half or more of the maximum multitree depth of the other frame.
43. The method according to claim 41, wherein the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is greater than half the maximum multitree depth of the other frame.
44. The method according to any one of claims 42 to 43, wherein the maximum multitree depth of another frame is halved by dividing it by 2.
45. The method according to any one of claims 42 to 43, wherein the maximum multitree depth of another frame is halved by shifting it one bit to the right.
46. The method according to claim 45, wherein the offset is added to the maximum multitree depth of another frame before the bit shift to the right.
47. The method of claim 34, wherein if the average multitree depth value associated with one or more regions of another frame is equal to the maximum multitree depth signaled in the bitstream, the current maximum multitree depth of the current block is not increased.
48. The method according to claim 34, wherein if the average multitree depth value associated with one or more regions of another frame is equal to the maximum multitree depth of another frame, the current maximum multitree depth of the current block is not increased.
49. The method according to any one of claims 34 to 46, wherein when the quadtree depth value matches the reference quadtree depth value, the current maximum multitree depth of the current block is increased.
50. The method according to claim 35, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is equal to half of the maximum multitree depth of the current frame.
51. The method according to claim 35, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is less than or equal to half the maximum multitree depth of the current frame.
52. The method according to claim 35, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is less than half of the maximum multitree depth of the current frame.
53. The method according to any one of claims 50 to 52, wherein the maximum multitree depth of the current frame is halved by dividing by 2.
54. The method according to any one of claims 50 to 52, wherein the maximum multitree depth of the current frame is halved by shifting it one bit to the right.
55. The method according to claim 54, wherein an offset is added to the maximum multitree depth of the current frame before the bit shift to the right.
56. The method according to claim 41, further comprising increasing the current maximum multitree depth of the current block when the quadtree depth value matches the reference quadtree depth value minus 1, and the average multitree depth value associated with one or more regions of another frame is equal to half the maximum multitree depth of another frame.
57. The method according to claim 41, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is less than or equal to half the maximum multitree depth of another frame.
58. The method according to claim 41, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth of the current block is increased if the average multitree depth value associated with one or more regions of another frame is less than half of the maximum multitree depth of another frame.
59. The method according to any one of claims 56 to 58, wherein the maximum multitree depth of another frame is halved by dividing it by 2.
60. The method according to any one of claims 56 to 58, wherein the maximum multitree depth of another frame is halved by shifting it one bit to the right.
61. The method according to claim 60, wherein the offset is added to the maximum multitree depth of another frame before the bit shift to the right.
62. The method of claim 32, comprising reducing the current maximum multitree depth of the current block based on the maximum multitree depth signaled in the bitstream which is greater than the maximum multitree depth value associated with one or more regions of another frame.
63. The method according to claim 32, further comprising reducing the current maximum multitree depth of the current block when the maximum multitree depth signaled in the bitstream is greater than the maximum multitree depth value associated with one or more regions of another frame, and when the current quantization parameter associated with the current block is greater than or equal to the current quantization parameter associated with one or more regions of another frame.
64. The method according to claim 32, further comprising reducing the current maximum multitree depth of the current block when the maximum multitree depth for the current frame matches the maximum multitree depth value associated with one or more regions of another frame.
65. The method according to claim 64, wherein an additional condition for the decrement of the current maximum multitree depth of the current block is that the maximum multitree depth of the current frame matches the maximum multitree depth of another frame.
66. The additional conditions for the decrement of the current maximum multitree depth that is performed are: i) The sequence including the current frame has a resolution higher than a predetermined resolution, ii) The CTU size of the current block is greater than or equal to a predetermined value, iii) The maximum multitree depth of the current frame is less than the maximum quadtree depth of the current frame, and iv) The maximum quadtree depth of the current frame is greater than a predetermined value, The method according to any one of claims 62 to 65, comprising one or more of the above.
67. The method according to claim 62, wherein if the current maximum multitree depth is greater than the maximum multitree depth value associated with one or more regions of another frame, the current maximum multitree depth of the current block is further reduced.
68. The method according to any one of claims 62 to 66, comprising reducing the current maximum multitree depth of the current block when the current maximum multitree depth is set to be equal to the maximum multitree depth value associated with one or more regions of another frame.
69. The method according to claim 32, further comprising increasing the current maximum multitree depth of the current block when the maximum multitree depth signaled in the bitstream is equal to the maximum multitree depth value associated with one or more regions of another frame.
70. The conditions for adjusting the current maximum multitree depth to obtain the maximum multitree depth for the current block, based on a comparison of the maximum multitree depth signaled in the bitstream with the maximum multitree depth value associated with one or more regions of another frame as described in any one of claims 33 to 39, are: The condition based on the comparison between the reference value described in any one of claims 8 to 30 and the quadtree depth value is the second condition, The method according to claim 32, wherein the adjustment of the current maximum multitree depth is applied when at least both of the first and second conditions are met.
71. The method according to claim 70, wherein the third condition is that the maximum multitree depth signaled at a higher level from another frame is less than the maximum multitree depth signaled at a higher level for the frame of the current block, and if the third condition is not met, the adjustment of the maximum multitree depth is not performed.
72. The method according to claim 71, wherein the third condition is that the maximum multitree depth signaled at a higher level from another frame is less than or equal to the maximum multitree depth signaled at a higher level for the frame of the current block.
73. The method according to claim 71 or 72, wherein the third condition is considered only when the coding tree unit size of the current block is 256.
74. The method according to any one of claims 71 to 73, wherein the higher level is one of slice, picture, or sequence levels, which is signaled in the header.
75. The method according to any one of claims 32 to 74, wherein the modification of the maximum multitree depth is disabled if the image data includes screen content.
76. The method according to claim 75, wherein the image data includes screen content depending on whether some blocks are encoded using the palette mode in the region of the current frame, or whether one or more regions of another frame exceed a predetermined value, and / or whether the palette mode is enabled in the bitstream.
77. The method according to any one of claims 9 to 76, wherein the region of another frame or one region is a region juxtaposed with the current block.
78. The method according to claim 77, wherein the region of another frame or one region includes a plurality of blocks located in different positions.
79. The method according to claim 77 or 78, wherein the region of another frame or one region is a region having a larger size than the current block.
80. The method according to claim 77, wherein the region or one region of another frame having a larger size than the current block is an encoding tree unit CTU.
81. The method according to any one of claims 77 to 80, wherein the center position of the current block is used to determine the region or one region within another frame.
82. The method according to claim 77, wherein the region or one region encompasses the entire region of the reference frame.
83. The method according to any one of claims 77 to 82, wherein another frame is a frame having the same temporal ID as the current frame which includes the current block.
84. The method according to claim 83, wherein the frame having the same temporal ID is the closest frame having the same temporal ID.
85. The method according to any one of claims 77 to 84, wherein another frame is a frame having the same quantization parameters as the current frame, which includes the current block.
86. The method according to any one of claims 77 to 84, wherein another frame is a frame used for predicting temporal motion vectors.
87. The method according to any one of claims 77 to 84, wherein another frame is the reference frame closest to the current frame containing the current block.
88. The method according to any one of claims 77 to 87, wherein the one or more regions include a first region from another first frame and a second region from another second frame.
89. The method according to claim 9, wherein another frame corresponds to an intraframe.
90. The method according to claim 89, further comprising obtaining the maximum multitree depth of the current block by modifying the current maximum multitree depth according to one or more rules or conditions based on the quadtree depth value and the reference depth value associated with the intraframe.
91. The method according to claim 90, further comprising increasing the current maximum multitree depth to obtain the maximum multitree depth for the current block when the quadtree depth value matches the reference quadtree depth value associated with the intraframe.
92. The method according to claim 90, further comprising obtaining the maximum multitree depth for the current block without increasing the current maximum multitree depth when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value.
93. The method according to claim 90, further comprising: when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth is reduced to obtain the current maximum multitree depth for the current block.
94. The method according to claim 93, wherein further conditions for modifying the current maximum multitree depth to obtain the maximum multitree depth for the current block are based on a comparison between the maximum multitree depth signaled in the bitstream and a reference maximum multitree depth value associated with one or more regions of the intraframe.
95. The method according to claim 94, comprising reducing the current maximum multitree depth of the current block based on the fact that the maximum multitree depth signaled in the bitstream is less than the reference maximum multitree depth value associated with one or more regions of the intraframe.
96. The method of claim 93, wherein further conditions for modifying the current maximum multitree depth to obtain the maximum multitree depth for the current block are based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth of the intraframe.
97. The method according to claim 96, further comprising reducing the current maximum multitree depth of the current block based on the fact that the maximum multitree depth signaled in the bitstream is less than the maximum multitree depth of the intraframe.
98. The method according to any one of claims 89 to 97, wherein modifying the current maximum multitree depth to obtain the maximum multitree depth of the current block is based on a comparison between a reference mean multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth of the intraframe.
99. The method according to claim 98, wherein the current maximum multitree depth of the current block is reduced if the reference average multitree depth value associated with one or more regions of the intraframe is greater than or equal to the maximum multitree depth of the intraframe.
100. The method of claim 98, wherein the current maximum multitree depth of the current block is reduced if the reference average multitree depth value associated with one or more regions of the intraframe is equal to the maximum multitree depth of the intraframe.
101. The method according to any one of claims 89 to 97, wherein modifying the current maximum multitree depth to obtain the maximum multitree depth of the current block is based on a comparison between a reference average multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth value associated with one or more regions of the intraframe.
102. The method according to claim 101, wherein the current maximum multitree depth of the current block is reduced if the reference average multitree depth value associated with one or more regions of the intraframe is greater than or equal to the maximum multitree depth value associated with one or more regions of the intraframe.
103. The method according to claim 101, wherein the current maximum multitree depth of the current block is reduced if the reference average multitree depth value associated with one or more regions of the intraframe is equal to the maximum multitree depth value associated with one or more regions of the intraframe.
104. The method according to claim 90, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth is increased based on a comparison between the maximum multitree depth signaled in the bitstream and the maximum multitree depth of the intraframe, and a reference maximum multitree depth value associated with one or more regions of the intraframe, thereby obtaining the maximum multitree depth for the current block.
105. The method according to claim 104, wherein the current maximum multitree depth is increased when the maximum multitree depth signaled in the bitstream is equal to the maximum multitree depth of the intraframe, and the maximum multitree depth signaled in the bitstream is less than the reference maximum multitree depth value associated with one or more regions of the intraframe.
106. The method according to claim 90, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth is increased based on a comparison between the reference average multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth of the intraframe to obtain the maximum multitree depth for the current block.
107. The method according to claim 106, wherein the current maximum multitree depth is increased when the reference average multitree depth value associated with one or more regions of the intraframe is equal to the maximum multitree depth of the intraframe.
108. The method according to claim 106, wherein the current maximum multitree depth is increased when the reference average multitree depth value associated with one or more regions of the intraframe is less than or equal to the maximum multitree depth of the intraframe.
109. The method according to claim 90, wherein when the quadtree depth value matches the value obtained by subtracting 1 from the reference quadtree depth value, the current maximum multitree depth is increased based on a comparison between a reference average multitree depth value associated with one or more regions of the intraframe and a reference maximum multitree depth value associated with one or more regions of the intraframe to obtain the current maximum multitree depth of the current block.
110. The method according to claim 109, wherein the current maximum multitree depth is increased when the reference average multitree depth value associated with one or more regions of the intraframe is equal to the reference maximum multitree depth value associated with one or more regions of the intraframe.
111. The method according to claim 109, wherein the current maximum multitree depth is increased when the reference average multitree depth value associated with one or more regions of the intraframe is less than or equal to the reference maximum multitree depth value associated with one or more regions of the intraframe.
112. The method according to claim 91, wherein the current maximum multitree depth is increased when all interframes in the sequence including the current frame have the same maximum multitree depth.
113. The method according to claim 89, wherein the current maximum multitree depth is not increased when another frame corresponds to an intraframe according to one or more rules or conditions.
114. The method according to claim 113, wherein the current maximum multitree depth is not increased when the intraframe has a different temporal ID from the current frame which includes the current block.
115. The method according to claim 113 or claim 114, wherein the current maximum multitree depth is not increased when the picture order count (POC) difference between the current frame and the intra frame is less than a threshold.
116. The method according to claim 115, wherein the threshold corresponds to the POC difference between the current frame and the intra frame being equal to 2 or equal to 3.
117. The method according to claim 86, wherein when another frame is a frame used for temporal motion vector prediction, the current maximum multitree depth is modified according to one or more rules or conditions.
118. The method according to claim 117, wherein the current maximum multitree depth is increased when the picture order count (POC) difference between the current frame and the frame used for temporal motion vector prediction is 2 or less.
119. The method according to claim 117 or claim 118, wherein the current maximum multitree depth is increased when the frame used for predicting temporal motion vectors is a frame having a different temporal ID from the current frame containing the current block.
120. The method according to any one of claims 117 to 119, wherein the current maximum multitree depth is not increased when the quantization parameter for the sequence including the current frame is 2 or more.
121. The method according to claims 5 to 12, wherein a plurality of maximum multitree depth values are signaled in the bitstream, and obtaining the maximum multitree depth for the current block is determined to be one of the signaled values as the maximum multitree depth for the current block.
122. The method according to claim 121, wherein the plurality of maximum multitree depth values are signaled in one or more of the sequence parameter set, picture parameter set, picture header, and slice header.
123. The method according to claim 121 or claim 122, wherein multiple maximum multitree depth values are associated with quadtree depth or block size.
124. The method according to claims 121 to 122, wherein at least one of the plurality of maximum multitree depth values is obtained by predicting its value from another of the plurality of maximum multitree depth values.
125. The method according to claims 121 to 122, wherein the maximum multitree depth value is determined using a value signaled in the header or parameter set.
126. The method according to claims 121 to 122, wherein at least one of the plurality of maximum multitree depth values is obtained by applying a predetermined offset to a default value.
127. The method according to claim 126, wherein the default value is signaled in the bitstream.
128. An apparatus for encoding image data into a bitstream, the apparatus configured to perform the method described in any one of claims 1 to 127.
129. An apparatus for decoding image data from a bitstream, configured to perform the method described in any one of claims 1 to 127.
130. A computer program configured to perform the method described in any one of claims 1 to 127 during execution.