Image and video encoding and decoding

By introducing a multi-tree partition depth adjustment mechanism in image data encoding, the maximum multi-tree partition depth of image blocks is dynamically adjusted, which solves the problem of low encoding efficiency of existing video coding standards when compressing ultra-high-definition and high dynamic range videos, and achieves more efficient encoder performance and lower complexity.

CN121058232APending Publication Date: 2025-12-02CANON KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480023099.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-01-09
Filing Date
2024-04-02
Publication Date
2025-12-02

AI Technical Summary

Technical Problem

Existing video coding standards have not yet been able to significantly improve coding efficiency when compressing ultra-high definition and high dynamic range video, especially in the area of ​​image data partitioning.

Method used

By introducing a multi-tree partitioning depth adjustment mechanism in image data encoding, and utilizing the comparison rules between quadtree depth and reference depth values, the maximum multi-tree partitioning depth of image blocks is dynamically adjusted to optimize the partitioning method of the encoding tree, supporting multiple splitting types of binary, ternary, and quadtrees.

Benefits of technology

It improves encoding efficiency, reduces encoder complexity and runtime, and adapts to different types of video content, especially screen content encoding, thus improving encoder flexibility and compression performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121058232A_ABST
    Figure CN121058232A_ABST
Patent Text Reader

Abstract

Improvements in processing of partitioned data of image and video data are described. Image data is encoded in or decoded from a bitstream. The bitstream includes data for indicating that the image data is partitioned into a plurality of blocks according to a coding tree, wherein the blocks in the coding tree may be partitioned according to one or more types of splitting. For a current block to be decoded, at least one other parameter associated with the image data is used to obtain a parameter indicating a maximum partition depth of at least one splitting type.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the encoding and decoding of image and video data, and particularly, but not exclusively, to image and video partition data. Background Technology

[0002] The Joint Video Experts Group (JVET) (a collaborative team comprised of MPEG and ITU-T Study Group 16's VCEG) has released a new video coding standard called Multifunctional Video Coding (VVC). VVC aims to provide a significant improvement in compression performance (i.e., typically twice as much) over the existing HEVC standard. Key target applications and services include, but are not limited to, 360-degree and High Dynamic Range (HDR) video. Specific effects have been demonstrated on Ultra High Definition (UHD) video test material. Therefore, for the final standard, we can expect an improvement in compression efficiency well beyond the target of 50%.

[0003] Since the end of the VVC v1 standard, JVET has initiated the exploration phase by establishing Explorer Software (ECM). JVET has collected additional tools and improved existing tools based on the VVC standard to achieve better coding efficiency. Summary of the Invention

[0004] According to one aspect of the present invention, a method is provided for encoding image data into or decoding image data from a bit stream, the bit stream including data for instructing the partitioning of the image data into a plurality of blocks according to a coding tree, wherein the blocks in the coding tree can be partitioned according to one or more types of splitting, the method comprising: for a current block to be decoded, obtaining parameters for partitioning the current block of the image data based on at least one other parameter for partitioning the image data.

[0005] According to a further aspect of the invention, a method is provided for encoding image data into or decoding image data from a bitstream, the bitstream including data for indicating partitioning the image data into multiple blocks according to a coding tree, wherein the blocks in the coding tree can be partitioned according to one or more types of splits, the method comprising: for the current block to be decoded, using at least one other parameter associated with the image data to obtain a parameter for indicating a maximum partition depth of at least one split type.

[0006] Advantages include increased coding efficiency and, possibly, reduced encoder runtime as a result of reduced encoder complexity.

[0007] The maximum partition depth can be the maximum multi-tree partition depth used to indicate the maximum partition depth of multiple split types.

[0008] The at least one other parameter is optionally obtained based on another parameter of the current block.

[0009] The maximum partition depth can indicate the maximum multi-tree partition depth used to indicate the maximum partition depth of binary tree splits and ternary tree splits.

[0010] The at least one other parameter is based on the quadtree depth of the current block or the block size of the current block.

[0011] The obtained maximum multi-tree partition depth can optionally be further based on a comparison of the parameter with a reference value. The reference value can be signaled in the header of the bitstream. The reference value can be based on a depth other than the quadtree depth of the current block.

[0012] The reference value may involve a quadtree depth value associated with at least one region of another frame.

[0013] The reference value may be based on the average quadtree depth determined from the at least one region in another frame.

[0014] The reference value may be based on the minimum quadtree depth determined from at least one region of another frame.

[0015] The reference value may be based on the maximum or average multi-tree depth determined from the at least one region in another frame.

[0016] 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 reference depth value.

[0017] For example, when the quadtree depth value matches the reference quadtree depth value, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

[0018] Alternatively or additionally, when the quadtree depth value matches a reference value minus 1, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

[0019] Optionally, it is additionally required that the reference quadtree value match the minimum quadtree value associated with the region of the same or more reference frames, in order to increase the current maximum multitree depth.

[0020] Optionally, the reference quadtree value is additionally required to match the maximum quadtree depth of the current frame to increase the current maximum multitree depth. The method may additionally or alternatively include: reducing the current maximum multitree depth to obtain the maximum multitree depth of the current block based on one or more rules or conditions based on the quadtree depth value and the reference depth value.

[0021] For example, when the quadtree depth value does not match the reference quadtree depth value, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

[0022] Alternatively or additionally, if the quadtree depth value does not match the reference quadtree depth value minus 1, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

[0023] Optionally, when the quadtree depth value is greater than the reference depth value, the current maximum multitree depth is reduced for the current block.

[0024] Optionally, the reduction of the current maximum multitree depth of the current block when the quadtree depth value is greater than the reference depth value is applied only when the reference depth value is obtained from a region of another frame code with higher quality compared to the current frame.

[0025] Optionally, when the quadtree depth value is less than the reference depth value minus the offset, the current maximum multitree depth of the current block is reduced. The offset can be 1.

[0026] Optionally, the reduction of the current maximum multitree depth of the current block when the quadtree depth value is less than the reference depth value minus the offset is only applied when the reference depth value is obtained from a region of another frame code with lower quality compared to the current frame.

[0027] Optionally, when the reference depth value is less than the quadtree depth value, the current maximum multitree depth of the current block is reduced.

[0028] The quadtree depth value can be the quadtree depth value of the current frame.

[0029] Optionally, when reducing the maximum multi-tree depth, the maximum multi-tree depth is set to zero.

[0030] Obtaining the maximum multitree depth of the current block may include a function that uses the quadtree depth value and a reference quadtree depth value.

[0031] For example, the function can be any of the following:

[0032] MaxMttDepth=2*QTDepthTempo-QTDepth+1,

[0033] MaxMttDepth=min(2*QTDepthTempo-QTDepth+1,MaxMttDepth), and

[0034] MaxMttDepth=min(QTDepth-(QTDepthTempo-2)+1,MaxMttDepth+1),

[0035] Where MaxMttDepth is the maximum multitree depth, QTDepth is the quadtree depth of the current block, and QTDepthTempo is the reference quadtree depth value.

[0036] The maximum multi-tree depth of the current block can be obtained using the maximum multi-tree depth value associated with one or more regions of another frame.

[0037] The conditions for adjusting (modifying) the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block can be based on a comparison between the maximum multi-tree depth signaled in the bitstream and the maximum multi-tree depth value associated with one or more regions in another frame. When the maximum multi-tree depth signaled in the bitstream is less than the maximum multi-tree depth value associated with one or more regions in another frame, the current maximum multi-tree depth of the current block can be incremented.

[0038] The increase in the current maximum multi-tree depth of the current block may depend on the average multi-tree depth value associated with one or more regions of another frame. The increase may be based on a comparison between the average multi-tree depth value associated with one or more regions of another frame and the maximum multi-tree depth signaled in the bitstream.

[0039] For example, if the average multi-tree depth value associated with one or more regions of another frame is greater than or equal to half of the maximum multi-tree depth of the current frame, the current maximum multi-tree depth of the current block is increased.

[0040] Optionally, if the average multi-tree depth value associated with one or more regions of another frame is greater than half of the maximum multi-tree depth of the current frame, the current maximum multi-tree depth of the current block is increased.

[0041] The increase can 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 of another frame.

[0042] For example, if the average multi-tree depth value associated with one or more regions of another frame is greater than or equal to half of the maximum multi-tree depth of the other frame, the current maximum multi-tree depth of the current block can be increased.

[0043] Optionally, if the average multi-tree depth value associated with one or more regions of another frame is greater than half of the maximum multi-tree depth of the other frame, the current maximum multi-tree depth of the current block can be increased.

[0044] 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.

[0045] Optionally, if the average multi-tree depth value associated with one or more regions of another frame is equal to the maximum multi-tree depth of the other frame, the current maximum multi-tree depth of the current block may not be increased.

[0046] Optionally, when the quadtree depth value matches the reference quadtree depth value, the current maximum multitree depth of the current block is increased.

[0047] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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.

[0048] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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 of the maximum multitree depth of the current frame.

[0049] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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.

[0050] The maximum multi-tree depth of the current frame can be halved by dividing by 2 or shifting right by 1 bit. Before shifting right, an offset can be added to the maximum multi-tree depth of the current frame.

[0051] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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 the maximum multitree depth of the other frame.

[0052] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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 of the maximum multitree depth of the other frame.

[0053] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, 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 other frame.

[0054] The maximum multi-tree depth of another frame can be halved by dividing by 2 or shifting right by 1 bit. Before shifting right, an offset can be added to the maximum multi-tree depth of the other frame.

[0055] 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 (based on the maximum multi-tree depth signaled in the bitstream being 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 reduced.

[0056] 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 when the current quantization parameter associated with the current block is greater than or equal to (or alternatively, greater than) the current quantization parameter associated with one or more regions of another frame.

[0057] 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 in another frame.

[0058] The additional condition for decreasing the current maximum multitree depth of the current block may include: the maximum multitree depth of the current frame matches the maximum multitree depth of another frame.

[0059] Additional criteria for decreasing the current maximum multitree depth include one or more of the following: 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.

[0060] If the current maximum multi-tree depth of the current block is greater than the maximum multi-tree depth value associated with one or more regions of another frame, the current maximum multi-tree depth may be further reduced.

[0061] The current maximum multi-tree depth can be reduced when the current maximum multi-tree depth of the current block is set to be equal to the maximum multi-tree depth value associated with one or more regions of another frame.

[0062] 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.

[0063] The condition for adjusting the current maximum multitree depth to obtain the maximum multitree depth of the current block 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 in another frame can be a first condition, and the condition based on a comparison of the quadtree depth value with a reference value can be a second condition, and optionally, the adjustment of the current maximum multitree depth is applied when at least both the first condition and the second condition are satisfied (e.g., and not applied in other cases).

[0064] The third condition may be that the maximum multi-tree depth signaled by another frame at a higher level is less than the maximum multi-tree depth signaled by the frame for the current block at a higher level, and if the third condition is not met, the maximum multi-tree depth may optionally not be adjusted.

[0065] The third condition may be that the maximum multi-tree depth signaled by another frame at a higher level is less than or equal to the maximum multi-tree depth signaled by the frame at a higher level for the current block.

[0066] Optionally, the third condition is considered only when the coding tree unit size of the current block is 256.

[0067] The higher level can be any of the strip, image, and sequence levels, and can optionally be signaled in the header.

[0068] If the image data contains screen content, the modification of the maximum multi-tree depth can be disabled.

[0069] The image data is considered to contain screen content if the number of blocks encoded using palette mode in the current frame region or in one or more regions of another frame intersects with a threshold (greater than or less than a predetermined value), and / or if palette mode is enabled in the bitstream.

[0070] The region or a region in another frame can be a region parallel to the current block.

[0071] The region in another frame, or a region, may include multiple blocks at different locations.

[0072] The region or a region in another frame may be a region that is larger in size compared to the current block.

[0073] The region or region in another frame that is larger in size than the current block can be a coding tree unit, i.e., a CTU.

[0074] The center position of the current block can be used to determine the region or a region in another frame.

[0075] The region or a region may encompass the entire region of the reference frame.

[0076] The other frame may be a frame with the same temporal ID as the current frame that includes the current block.

[0077] Frames with the same time domain ID can be the closest frames with the same time domain ID.

[0078] The other frame can be a frame with the same quantization parameters as the current frame that includes the current block.

[0079] The other frame can be a frame used for temporal motion vector prediction.

[0080] Another frame can be the frame that is closest to the current frame that includes the current block.

[0081] The one or more regions may include a first region from a first other frame and a second region from a second other frame.

[0082] The other frame can be a frame corresponding to an intraframe.

[0083] The method may include: modifying 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 a quadtree depth value associated with the intra-frame and a reference (quadtree) depth value.

[0084] For example, when the quadtree depth value matches a reference quadtree depth value associated with the intraframe, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

[0085] Optionally, when the quadtree depth value matches the reference quadtree depth value minus 1, the current maximum multitree depth is not increased to obtain the maximum multitree depth of the current block.

[0086] Optionally, when the quadtree depth value matches the reference quadtree depth value minus 1, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

[0087] The method may include: further conditions for modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block may be based on a comparison between the maximum multi-tree depth signaled in the bitstream and a reference maximum multi-tree depth value associated with one or more regions of the intraframe.

[0088] For example, when the maximum multi-tree depth signaled in the bitstream is less than a reference maximum multi-tree depth value associated with one or more regions of the intraframe (based on the maximum multi-tree depth signaled in the bitstream being less than a reference maximum multi-tree depth value associated with one or more regions of the intraframe), the current maximum multi-tree depth of the current block is reduced.

[0089] The method may include: further conditions for modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block based on a comparison between the maximum multi-tree depth signaled in the bitstream and the maximum multi-tree depth of the intraframe.

[0090] For example, when the maximum multi-tree depth signaled in the bit stream is less than the maximum multi-tree depth of the intra-frame (based on the maximum multi-tree depth signaled in the bit stream being less than the maximum multi-tree depth of the intra-frame), the current maximum multi-tree depth of the current block is reduced.

[0091] The method may further include: modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block based on a comparison between a reference average multi-tree depth value associated with one or more regions of the intra-frame and the maximum multi-tree depth of the intra-frame.

[0092] For example, 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, the current maximum multitree depth of the current block can be reduced.

[0093] Optionally, 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, the current maximum multitree depth of the current block can be reduced.

[0094] The method may further include: modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block based on a comparison between a reference average multi-tree depth value associated with one or more regions of the intra-frame and a maximum multi-tree depth value associated with one or more regions of the intra-frame.

[0095] For example, 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, the current maximum multitree depth of the current block can be reduced.

[0096] Optionally, 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, the current maximum multitree depth of the current block may be reduced.

[0097] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block based on a comparison between the maximum multitree depth signaled in the bitstream, the maximum multitree depth of the intraframe, and a reference maximum multitree depth value associated with one or more regions of the intraframe.

[0098] For example, the current maximum multi-tree depth is increased when the maximum multi-tree depth signaled in the bit stream is equal to the maximum multi-tree depth of the intraframe, and the maximum multi-tree depth signaled in the bit stream is less than a reference maximum multi-tree depth value associated with one or more regions of the intraframe.

[0099] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased 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 of the intraframe.

[0100] For example, when the reference average multi-tree depth value associated with one or more regions of the intraframe is equal to the maximum multi-tree depth of the intraframe, the current maximum multi-tree depth is increased.

[0101] Optionally, the current maximum multi-tree depth is increased when the reference average multi-tree depth value associated with one or more regions of the intra-frame is less than or equal to the maximum multi-tree depth of the intra-frame.

[0102] Optionally, when the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased 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 a reference maximum multitree depth value associated with one or more regions of the intraframe.

[0103] For example, when the reference average multi-tree depth value associated with one or more regions of the intra-frame is equal to the reference maximum multi-tree depth value associated with one or more regions of the intra-frame, the current maximum multi-tree depth is increased.

[0104] Optionally, the current maximum multi-tree depth is increased when the reference average multi-tree depth value associated with one or more regions of the intra-frame is less than or equal to the reference maximum multi-tree depth value associated with one or more regions of the intra-frame.

[0105] The current maximum multi-tree depth can be increased when all inter-frames in the sequence including the current frame have the same maximum multi-tree depth.

[0106] Based on one or more rules or conditions, when another frame corresponds to an intra-frame, the current maximum multi-tree depth may not be increased.

[0107] For example, the current maximum multi-tree depth is not increased when the intraframe has a different temporal ID than the current frame that includes the current block.

[0108] Alternatively or additionally, the current maximum multi-tree depth is not increased when the difference in picture order counts (POC) 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.

[0109] Optionally, when another frame is used for temporal motion vector prediction, the current maximum multi-tree depth is modified according to one or more rules or conditions.

[0110] For example, if the difference in picture order count (POC) between the current frame and the frame used for temporal motion vector prediction is less than or equal to 2, the current maximum multi-tree depth is increased.

[0111] Optionally, when the frame used for temporal motion vector prediction is a frame with a different temporal ID than the current frame that includes the current block, the current maximum multi-tree depth is increased.

[0112] Optionally, when the quantization parameter of the sequence including the current frame is greater than or equal to 2, the current maximum multi-tree depth is not increased.

[0113] Multiple maximum multi-tree depth values ​​can be signaled in the bit stream, and obtaining the maximum multi-tree depth of the current block includes determining one of the signaled values ​​as the maximum multi-tree depth of the current block.

[0114] The multiple maximum multi-tree depth values ​​can be signaled in one or more of the sequence parameter set, image parameter set, image header, and strip header.

[0115] Multiple maximum multitree depth values ​​can be associated with quadtree depth or block size.

[0116] At least one of the plurality of maximum multi-tree depth values ​​can be obtained by predicting the value of the at least one maximum multi-tree depth value from another of the plurality of maximum multi-tree depth values.

[0117] The maximum multi-tree depth value is determined using a value signaled in the header or parameter set.

[0118] At least one of the plurality of maximum multi-tree depth values ​​can be obtained by applying a predetermined offset to a default value. The default (predetermined) value can be signaled in the bit stream.

[0119] In these aspects and embodiments, reference is made to binary splitting. Such binary splitting may include horizontal binary splitting and / or vertical binary splitting. In these aspects and embodiments, ternary splitting is also involved. Such ternary splitting may include horizontal ternary splitting and / or vertical ternary splitting.

[0120] Furthermore, although the above embodiments involve binary trees (horizontal and vertical), ternary trees (horizontal and vertical), quadtrees, and no splitting as possible splits of coding units or CTUs, it will be understood that the invention is not limited thereto, and other patterns can be considered. For example, other geometric splits can be considered as different numbers of blocks, and are limited according to one or more criteria mentioned in the above aspects and embodiments.

[0121] In a further embodiment, for screen content encoded image data or video data, for a low-latency configuration, at least one flag can be used (e.g., transmitted in the header) to disable the above-described method. Whether the image or video data to be encoded or decoded is screen content encoded image data can be determined based on whether the number of blocks in a frame including the current block or in another frame's intra-block encoded or palette-mode encoded (e.g., side-by-side or temporal domain) region crosses a threshold (above a predetermined value or alternatively below a predetermined value). Alternatively, whether the image or video data is screen content encoded can be indicated by whether palette mode is enabled for the image or video data (e.g., by setting a flag in the header).

[0122] Other aspects of the invention relate to corresponding encoding devices, decoding devices, and computer programs operable to perform the decoding and / or encoding methods of the invention.

[0123] In a further aspect of the invention, an apparatus is provided for encoding image data into a bitstream, the apparatus being configured to perform the method according to any of the foregoing aspects and embodiments.

[0124] In another aspect of the invention, an apparatus for decoding image data from a bitstream is provided, the apparatus being configured to perform the methods of any of the embodiments and aspects described above.

[0125] In another aspect, a computer program is provided that is configured to cause, when executed, the methods of any aspect and embodiment to be performed.

[0126] Computer programs may be provided independently, or may be carried on, by, or within a carrier medium. The carrier medium may be non-transitory, such as a storage medium, particularly a computer-readable storage medium. The carrier medium may also be transient, such as a signal or other transmission medium. Signals may be transmitted via any suitable network, including the Internet. Other features of the invention are characterized by the independent and dependent claims.

[0127] Any feature in one aspect of the invention may be applied to other aspects of the invention in any suitable combination. In particular, a method aspect may be applied to an apparatus aspect, and vice versa.

[0128] Furthermore, features implemented in hardware can be implemented in software, and vice versa. Any references to software and hardware features in this document should be appropriately interpreted.

[0129] Any device feature described herein can also be provided as a method feature, and vice versa. As used herein, component-plus-functional features can alternatively be expressed in terms of their respective structures, such as a properly programmed processor and associated memory.

[0130] It should also be understood that specific combinations of the various features described and defined in any aspect of the invention may be implemented and / or provided and / or used independently. Attached Figure Description

[0131] Now, let's refer to the attached diagram as an example, in which:

[0132] Figure 1 This is a diagram illustrating the coding structure used in HEVC;

[0133] Figure 2 This is a block diagram schematically illustrating a data communication system that can implement one or more embodiments of the present invention;

[0134] Figure 3 This is a block diagram illustrating components of a processing apparatus that can implement one or more embodiments of the present invention;

[0135] Figure 4 This is a schematic diagram illustrating the functional elements of an encoder according to an embodiment of the present invention;

[0136] Figure 5 This is a schematic diagram illustrating the functional elements of a decoder according to an embodiment of the present invention;

[0137] Figure 6 Shows the block positioned relative to the current block, which includes adjacent blocks;

[0138] Figure 7 This example illustrates a temporal random access GOP structure with associated temporal IDs and POCs for 33 frames.

[0139] Figure 8 Examples of six possible splitting patterns for VVC;

[0140] Figure 9 Examples of MaxBTSize and MaxMttDepth;

[0141] Figure 10 Example of the MinQTSize variable;

[0142] Figure 11 Examples of partition constraints are provided.

[0143] Figure 12 An example of an incomplete CTU within the frame border;

[0144] Figure 13 Example of encoding via setting MaxMttDepth based on time domain ID;

[0145] Figure 14 Examples of embodiments of the present invention are shown;

[0146] Figure 15 Examples of several time-domain locations;

[0147] Figure 16 This is a diagram illustrating a system including an encoder or decoder and a communication network according to an embodiment;

[0148] Figure 17 It is a schematic block diagram of a computing device for implementing one or more embodiments;

[0149] Figure 18 This is a diagram illustrating a webcam system; and

[0150] Figure 19 This is a diagram illustrating a smartphone. Detailed Implementation

[0151] Figure 1This relates to the coding structures used in the High Efficiency Video Coding (HEVC) and Variety Video Coding (VVC) 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.

[0152] The sequence of images 2 can be segmented into strips 3. In some cases, a strip can constitute the entire image. These strips are segmented into non-overlapping coding tree units (CTUs). A coding tree unit (CTU) is the basic processing unit in the High Efficiency Video Coding (HEVC) and Multi-Functional Video Coding (VVC) video standards, and conceptually corresponds structurally to the macroblock unit used in several previous video standards. A CTU is sometimes also called a maximum coding unit (LCU). A CTU has luma and chroma component parts, each component part being called a coding tree block (CTB). These different color components are not... Figure 1 As shown in the image.

[0153] For HEVC, the CTU is typically 64 pixels × 64 pixels, while for VVC, the size can be 128 pixels × 128 pixels. Quadtree (QT) decomposition can be used to iteratively divide each CTU into smaller variable-size coding units (CUs).

[0154] The coding unit is the basic coding element and consists of two seed units called the prediction unit (PU) and the transform unit (TU). The maximum size of the PU or TU is equal to the size of the CU. The prediction unit corresponds to the partition of the CU used for predicting pixel values. It is possible to partition the CU into various different partitions of the PU, as shown in Figure 6, including partitions divided into 4 square PUs and two different partitions divided into 2 rectangular PUs. The transform unit is the basic unit for spatial transformation using DCT. The CU can be based on a quadtree representation and partitioned into 7 TUs.

[0155] Each stripe is embedded in a Network Abstraction Layer (NAL) unit. Additionally, the encoding parameters of the video sequence are stored in dedicated NAL units called parameter sets. In HEVC and H.264 / AVC, two types of parameter set NAL units are used: First, the Sequence Parameter Set (SPS) NAL unit, which collects all parameters that remain unchanged throughout the entire video sequence. Typically, it handles the encoding profile, video frame size, and other parameters. Second, the Picture Parameter Set (PPS) NAL unit, which includes parameters that can be changed from one picture (or frame) in the sequence to another picture (or frame). HEVC also includes the 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 applied to all layers of the bitstream. A layer can contain multiple temporal sublayers, and all version 1 bitstreams are confined to a single layer. HEVC has certain layer extensions for scalability and multi-view functionality, and these extensions will allow multiple layers with a backward-compatible version 1 base layer.

[0156] In VVC that includes sub-images, other ways of splitting images have been introduced, where a sub-image is an independent coding group of one or more stripes.

[0157] Figure 2 An example is provided of a data communication system that can implement one or more embodiments of the present invention. The data communication system includes a transmission device (in this case, server 201) operable to transmit data packets of a data stream to a receiving device (in this case, client terminal 202) via a data communication network 200. The data communication network 200 can be a wide area network (WAN) or a local area network (LAN). Such a network can be, for example, a wireless network (Wifi / 802.11a or b or g), an Ethernet network, an Internet network, or a hybrid network consisting of several different networks. In a particular embodiment of the invention, the data communication system can be a digital television broadcasting system, wherein server 201 sends the same data content to multiple clients.

[0158] The data stream 204 provided by server 201 may consist of multimedia data representing video and audio data. In some embodiments of the invention, the audio and video data streams may be captured by server 201 using a microphone and a camera, respectively. In some embodiments, the data stream may be stored on server 201 or received by server 201 from other data providers, or generated at server 201. Server 201 is provided with encoders for encoding the video and audio streams, particularly for providing compressed bitstreams for transmission, which are more compact representations of the data presented as input to the encoder.

[0159] To achieve a better ratio of data quality to data volume, video data can be compressed, for example, according to HEVC, H.264 / AVC, VVC, or the format of data generated by ECM.

[0160] Client 202 receives the transmitted bit stream and decodes the reconstructed bit stream to reproduce video images on a display device and reproduce audio data using a speaker.

[0161] Despite Figure 2 The examples consider streaming scenarios, but it will be appreciated that in some embodiments of the invention, media storage devices such as optical discs can be used for data communication between the encoder and decoder.

[0162] In one or more embodiments of the invention, video images are transmitted together with data representing compensation offsets of reconstructed pixels to be applied to the image, so as to provide filtered pixels in the final image.

[0163] Figure 3 A processing device 300 configured to implement at least an embodiment of the present invention is illustrated schematically. The processing device 300 may be a device such as a microcomputer, workstation, or lightweight portable device. The device 300 includes a communication bus 313 connected to:

[0164] - This refers to the central processing unit 311 of the CPU, such as a microprocessor;

[0165] - Read-only memory 306, denoted as ROM, is used to store computer programs that implement the present invention;

[0166] - A random access memory 312, represented as RAM, for storing executable code of the methods according to embodiments of the present invention, and registers suitable for recording variables and parameters required to implement the methods for encoding digital image sequences and / or decoding bit streams according to embodiments of the present invention; and

[0167] - A communication interface 302 connected to the communication network 303, through which digital data to be processed is transmitted or received.

[0168] Optionally, the device 300 may also include the following components:

[0169] - A data storage component 304, such as a hard disk, is used to store a computer program for implementing one or more embodiments of the present invention, as well as data used or generated during the implementation of one or more embodiments of the present invention;

[0170] - A disk drive 305 for disk 306, the disk drive being adapted to read data from disk 306 or write data to said disk;

[0171] - Screen 309 is used to display data and / or serve as a graphical interface for user interaction via keyboard 310 or any other indicating device.

[0172] Device 300 can be connected to various peripheral devices such as digital camera 320 or microphone 308, each of which is connected to an input / output card (not shown) to provide multimedia data to device 300.

[0173] The communication bus provides communication and interoperability between various elements included in or connected to device 300. The representation of the bus is not limiting, and in particular, the central processing unit is operable to communicate instructions directly or by means of other elements of device 300 to any element of device 300.

[0174] Disk 306 may be replaced by any information medium such as a rewritable or non-rewritable compact disc (CD-ROM), ZIP disc, or memory card, and generally by an information storage component that can be read by a microcomputer or microprocessor. Disk 306 may be integrated into or not integrated into the device, may be portable, and is adapted to store one or more programs that execute to enable the implementation of the method for encoding digital image sequences and / or the method for decoding bit streams according to the present invention.

[0175] Executable code can be stored in read-only memory 306, hard disk 304, or removable digital media (such as, for example, disk 306 as described above). According to a variation, the executable code of the program can be received via interface 302 through communication network 303 to be stored in one of the storage components of device 300 (such as hard disk 304) before execution.

[0176] The central processing unit 311 is adapted to control and direct the execution of instructions or software code portions of one or more programs according to the invention, stored in one of the aforementioned storage components. Upon power-up, one or more programs stored in non-volatile memory (e.g., on hard disk 304 or in read-only memory 306) are transferred to random access memory 312 (which then contains executable code for one or more programs) and registers for storing variables and parameters necessary for implementing the invention.

[0177] In this embodiment, the device is a programmable device that implements the invention using software. However, alternatively, the invention can be implemented in hardware (e.g., in the form of an application-specific integrated circuit or ASIC).

[0178] Figure 4 A block diagram illustrating an encoder according to at least one embodiment of the present invention is shown. The encoder is represented by connected modules, each module being adapted to implement, for example, in the form of programming instructions executed by the CPU 311 of the device 300, at least one corresponding step of a method for encoding images in an image sequence according to one or more embodiments of the present invention.

[0179] The encoder 400 receives the raw sequence 401 of digital images i0 to in as input. Each digital image is represented by a set of samples (sometimes also called pixels) (hereinafter referred to as pixels).

[0180] After performing the encoding process, the encoder 400 outputs a bit stream 410. The bit stream 410 includes multiple encoding units or stripes, each strip including a strip header for transmitting the encoded values ​​of the encoding parameters used for strip encoding, and a strip body including encoded video data.

[0181] Module 402 will input digital images i0 to i n The image is divided into 401 pixel blocks. These blocks correspond to portions of the image and can have variable sizes (e.g., 4×4, 8×8, 16×16, 32×32, 64×64, 128×128 pixels, and several rectangular block sizes can also be considered). An encoding mode is selected for each input block. Two families of encoding modes are provided: a spatial prediction-based encoding mode (intra-frame prediction) and a temporal prediction-based encoding mode (inter-frame coding, merging, skipping). Possible encoding modes were tested.

[0182] Module 403 implements intra-frame prediction processing, wherein the block to be encoded is predicted by a predictor calculated based on the neighboring pixels of the given block. If intra-frame coding is selected, the selected intra-frame predictor and an indication of the difference between the given block and its predictor are encoded to provide a residual.

[0183] Temporal prediction is implemented by motion estimation module 404 and motion compensation module 405. First, a reference image from reference image set 416 is selected, and motion estimation module 404 selects a portion of the reference image (also referred to as a reference region or image portion) that is the closest region relative to the given block to be encoded (most similar in pixel values). Motion compensation module 405 then uses the selected region to predict the block to be encoded. The difference between the selected reference region and the given block (also referred to as the residual block) is calculated by motion compensation module 405. The selected reference region is indicated using motion vectors.

[0184] Therefore, in both cases (spatial and temporal predictions), the residuals are calculated by subtracting the predictor from the original block.

[0185] In intra-frame prediction implemented by module 403, the prediction direction is encoded. In inter-frame prediction implemented by modules 404, 405, 416, 418, and 417, at least one motion vector or data used to identify such a motion vector is encoded for temporal prediction.

[0186] If inter-frame prediction is selected, information related to motion vectors and residual blocks is encoded. To further reduce the bit rate, motion is assumed to be homogeneous, and motion vectors are encoded by the difference relative to the motion vector predictor. The motion vector predictor is obtained from the set of motion information predictor candidates by the motion vector prediction and encoding module 417 from the motion vector field 418.

[0187] The encoder 400 also includes a selection module 406, which selects the encoding mode by applying encoding cost criteria (such as rate-distortion criteria). To further reduce redundancy, a transform (such as DCT) is applied to the residual block by the transform module 407. The resulting transform data is then quantized by the quantization module 408 and entropy encoded by the entropy encoding module 409. Finally, the encoded residual block of the current block being encoded is inserted into the bit stream 410.

[0188] Encoder 400 also decodes the encoded image to produce a reference image for motion estimation of subsequent images (e.g., a reference image in reference image / picture 416). This allows the encoder and decoder receiving the bitstream to have the same reference frame (using the reconstructed image or a portion of the image). Inverse quantization (dequantization) module 411 performs inverse quantization (dequantization) of the quantized data, followed by an inverse transform by inverse transform module 412. Intra-frame prediction module 413 uses the prediction information to determine which predictor to use for a given block, and motion compensation module 414 actually adds the residual obtained by module 412 to the reference region obtained from reference image set 416.

[0189] Then, module 415 applies post-filtering to filter the reconstructed pixel frames (image or image portion). In embodiments of the invention, a SAO loop filter is used, wherein a compensation offset is added to the pixel values ​​of the reconstructed pixels in the reconstructed image. It should be understood that post-filtering is not always necessary. Furthermore, any other type of post-filtering may be performed instead of SAO loop filtering or in addition to SAO loop filtering.

[0190] Figure 5 A block diagram illustrating a decoder 60 according to an embodiment of the present invention is shown. The decoder 60 can be used to receive data from an encoder. The decoder is represented by connected modules, each module being adapted to implement corresponding steps of the method implemented by the decoder 60, for example, in the form of programming instructions to be executed by the CPU 311 of the device 300.

[0191] Decoder 60 receives bitstream 61 including encoding units (e.g., data corresponding to blocks or decoding units), each encoding unit consisting of a header containing information related to encoded parameters and a body containing encoded video data. (See also: Regarding...) Figure 4 As described, for a given block, entropy encoding is performed on the encoded video data at a predetermined number of bits, and the index of the motion vector predictor is also encoded. The received encoded video data is entropy decoded by module 62. The residual data is then dequantized by module 63, and subsequently, an inverse transform is applied by module 64 to obtain the pixel values.

[0192] The pattern data used to indicate the encoding mode is also entropy decoded, and based on this pattern, intra-frame type decoding or inter-frame type decoding is performed on the encoded blocks (units / sets / groups) of image data.

[0193] In intra-frame mode, intra-frame prediction module 65 determines the intra-frame predictor based on the intra-frame prediction mode specified in the bit stream.

[0194] If the mode is inter-frame, motion prediction information is extracted from the bitstream to locate (identify) the reference region used by the encoder. The motion prediction information includes the 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 vectors. See below for further details. Figures 6 to 10 This section discusses in more detail the various motion predictor tools used in VVC.

[0195] 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 has been obtained, the actual values ​​of the motion vectors associated with the current block can be decoded, and these actual values ​​are used to apply motion compensation via module 66. A portion of the reference image indicated by the decoded motion vectors is extracted from the reference image 68 to apply motion compensation 66. The motion vector field data 71 is updated using the decoded motion vectors for prediction of subsequent decoded motion vectors.

[0196] Finally, the decoded block is obtained. Post-filtering is applied by post-filtering module 67 where appropriate. Decoder 60 ultimately obtains and provides the decoded video signal 69.

[0197] Random access configuration

[0198] Figure 7The diagram illustrates the temporal random access GOP structure for 33 consecutive frames 0 to 32. The length of the vertical line representing each frame corresponds to its temporal ID. (For example, the longest length corresponds to temporal ID 0, and the shortest length corresponds to temporal ID 5). Frames with temporal ID 0 are at the highest level in the temporal hierarchy because they can be decoded independently of all other frames with higher temporal ID values. Similarly, frames with temporal ID 1 are second in the temporal hierarchy, and they can be decoded independently of all other frames with higher temporal IDs, and so on for the other temporal IDs. In other words, a frame with a particular temporal ID can be decoded independently of frames with higher temporal ID values, but can depend on frames with lower temporal IDs. This is known as temporal scalability.

[0199] This parameter is similar to layer depth, but layer depth does not imply independent decoding of all other frames with higher depths.

[0200] VVC partition

[0201] VVC partitions have specific block partitions. For a tree node, such as Figure 8 The six possible splits described are possible:

[0202] - Quad-splitter QT 801, which divides a block into four equal-sized square blocks;

[0203] -Binary splitting of BT, with its two possible subdivisions 802 and 803:

[0204] - Vertical binary split 802, Split_BT_VER

[0205] - Horizontal binary split 803, Split_BT_HOR

[0206] - Tri-branch split TT, with its two possible subdivisions 804 and 805, where the block is split into 3 blocks with a larger band in the middle:

[0207] - Vertical ternary split 804, Split_TT_VER

[0208] - Horizontal ternary split 805, SPLIT_TT_HOR

[0209] - No split 806, its terminating tree node, therefore there is no split.

[0210] VVC split control variables

[0211] For the current block, not all possible splits are always permitted. Which splits are available depends on several conditions. These conditions depend on several defined split control variables. The first set of variables defines the maximum and minimum block / node sizes:

[0212] • CTU size: It corresponds to the size of the root node of the quadtree (e.g., 256×256, 128×128, 64×64, 32×32, 16×16 luminance samples);

[0213] • MaxBTSize: This is the maximum allowed size of the root node of a binary tree, that is, the maximum size of a leaf quadtree node that can be partitioned by binary splitting. If the height and width of the current block are both less than or equal to MaxBTSize, then the current block can be split due to BT splitting. Figure 9 The concept of MaxBTSize is illustrated, where MaxBTSize is the size of the quadleaf leaf node 902 of CTU 901.

[0214] * **MinBTSize:** This is the minimum allowed size of a binary tree leaf node; that is, the minimum width or height of a binary tree leaf node. Therefore, if the height of the current block is greater than MinBTSize, the current block can be split due to horizontal BT splitting. And if the width of the current block is greater than MinBTSize, the current block can be split due to vertical BT splitting.

[0215] • MaxTTSize: This is the maximum allowed size of the root node of a ternary tree, that is, the maximum size of a leaf quadtree node that can be partitioned using ternary splitting. If both the height and width of the current block are less than or equal to MaxTTSize, then the current block can be split due to TT splitting.

[0216] * **MinTTSize:** Represents the minimum allowed leaf node size in a ternary tree (TT); that is, the minimum width or height of a leaf node in a binary tree. However, instead of allowing BT splits, consider the minimum TT partition size. Therefore, if the height of the current block is greater than twice MinTTSize, the current block can be split due to horizontal TT splits. And if the width of the current block is strictly greater than twice MinTTSize, the current block can be split due to vertical TT splits.

[0217] • MinQTSize: This is the minimum allowed size of a leaf node in a quadtree (QT); therefore, for the current block, QT splitting mode is not allowed if the width of the current block is not greater than MinQTSize. Figure 10 An example of MinQTSize is shown. By considering CTU128, in the example shown, MinQTsize equals 16.

[0218] There is no definition for MaxQTSize, therefore it corresponds to the CTU size.

[0219] The minimum allowed block size for both width and height is 4.

[0220] It also defines depth sets.

[0221] • Depth: This refers to the depth within the tree. In the VVC specification, a leaf is the terminal node of the tree, which is the root node of a tree with depth 0. This means that for each split, this value is incremented (by 1).

[0222] • MttDepth: This is the depth of the multi-tree. Multi-trees include BT splitting and TT splitting.

[0223] MaxMttDepth, defined in the VVC specification, is the maximum allowed depth of multiple trees. Therefore, MttDepth is greater than or equal to maxMttDepth. Figure 14 Example of the concept of maxMttDepth.

[0224] In VVC, these variables are defined independently for luminance and chrominance.

[0225] In VTM and ECM software, there are several other variables corresponding to depth.

[0226] The variable `currBtDepth` is the current number of BT splits used to reach the current tree node (or current block). The variable `currMttDepth` is the current number of BT and TT splits used to reach the current tree node (or current block). The variable `MaxBtDepth` corresponds to the variable `MaxMttDepth` in the VVC specification. `currQtDepth` is the current number of QT splits used to reach the current tree node (or current block). `MaxBtDepth`: is the maximum allowed binary tree depth, i.e., the lowest level at which binary splits can occur, where the leaf node of a quadtree is the root (e.g., 3).

[0227] VVC splits control syntax elements

[0228] To set the values ​​of these different variables, as depicted in the table below for SPS syntax elements, some high-level syntax elements are transmitted in SPS.

[0229]

[0230]

[0231]

[0232] When the sps_partition_constraints_override_enabled_flag is enabled in SPS, as depicted in the following table of PH syntax elements, some image header syntax elements are transferred to update the partition variables.

[0233]

[0234]

[0235]

[0236] VVC encoding splitting mode

[0237] In VVC, as depicted in the following syntax table, the encoding split pattern is transmitted in the coding_tree, where the conditional resolution flags split_cu_flag, split_qt_flag, mtt_split_cu_vertical_flag, and mtt_split_cu_binary_flag define the split of the CU.

[0238]

[0239]

[0240]

[0241] VVC splitting limitations

[0242] VVC partitioning has several limitations. These limitations are primarily designed to prevent the creation of identical partitions after several consecutive splits. Figure 11 Here are some examples of these constraints. The idea is to avoid using the same partitions for BT and TT. For example... Figure 11 As depicted in (a), two consecutive vertical BT splits are allowed, but as Figure 11 As depicted in (b), vertical BT splitting after vertical TT in the center block is not allowed.

[0243] In the same way, such as Figure 11 As described in (c), two consecutive horizontal BT splits are allowed, but as Figure 11 As depicted in (d), horizontal BT splitting after horizontal TT in the center block is not allowed.

[0244] In VVC, there are additional constraints regarding the minimum chroma block size for inter-frame block size and the maximum block sizes for TT and BT. These constraints have been eliminated for ECM software.

[0245] Color partitioning

[0246] In VVC, chroma partitioning can be inferred from luma partitioning, but this can be disabled. When dual-tree mode is enabled, the chroma partitioning tree is independent of the luma tree. However, some limitations exist.

[0247] The tree can also depend in part on the luminance partition of the CCLM mode, otherwise it is independent.

[0248] Image boundary

[0249] Frame resolution is not always an integer multiple of CTU size. Therefore, as Figure 12 The depicted scenario involves incomplete CTUs within the frame borders, with CTUs 1201 to 1206 being incomplete due to the bottom boundary 1207 and right boundary 1208 of the frame. In VVC, signaling for splits at picture boundaries is allowed, compared to previous standards. Split processing at boundaries is applied until the coded tree node represents a CU completely within the picture. However, some splits are inferred (not transmitted). Therefore, various variables such as MaxMttDepth, MinQtDepth, and MinQTsize increase or decrease based on possible splits not within the boundaries.

[0250] QT BT TT encoding selection

[0251] In the VTM and ECM software, several encoder-side optimizations are used for QT BT TT encoding selection.

[0252] One such optimization involves determining whether QT splitting is tested before BT splitting.

[0253] The conditions are: at least one CU to the left or above the current coding tree node has a QT depth greater than the QT depth of the current coding tree node; and the width of the CU represented by the current coding tree node is greater than MinQTSize*2.

[0254] If this condition is true, then QT comes before BT, and the split will be treated as follows.

[0255] - No splitting

[0256] -QT

[0257] -BT level

[0258] -BT Vertical

[0259] -TT level

[0260] -TT Vertical

[0261] Otherwise, the order would be as follows.

[0262] - No splitting

[0263] -BT level

[0264] -BT Vertical

[0265] -TT level

[0266] -TT Vertical

[0267] -QT

[0268] This order is important because, according to some optimizations, depending on the results of the first tested mode, several splits will not be tested. Therefore, when Qt is tested last, there are many cases that will not be evaluated.

[0269] MaxMttDepth

[0270] The maximum MTT depth has a significant impact on encoder complexity. For example... Figure 13 The described common test conditions for ECM have been updated to reduce encoding by setting different MaxMttDepth values. In this setting, MaxMttDepth is lower for a given time-domain ID at a large resolution or small QP setting.

[0271] Adaptive MaxBTSize

[0272] In VTM and ECM, there is a frame-level coding selection that sets MaxBTSize based on the average block size of previously encoded frames with the same depth (in the case of CTC RA => the same temporal ID). The average block size is compared to a threshold, as shown in the following pseudocode.

[0273] if(dBlkSize <AMAXBT_TH32)

[0274] {

[0275] newMaxBtSize = 32;

[0276] }

[0277] else if (dBlkSize) <AMAXBT_TH64)

[0278] {

[0279] newMaxBtSize = 64;

[0280] }

[0281] else if (dBlkSize) <AMAXBT_TH128)

[0282] {

[0283] newMaxBtSize = 128;

[0284] }

[0285] else

[0286] {

[0287] newMaxBtSize = 256;

[0288] }

[0289] Where AMAXBT_TH32 equals 15, AMAXBT_TH64 equals 30, and AMAXBT_TH128 equals 60. This method decreases the maximum BT size when the average block size is small and increases the maximum BT size when it is large.

[0290] Example

[0291] Set a partition parameter based on at least one other parameter.

[0292] In this embodiment, there is a process for partitioning image or video data, wherein a first partitioning parameter (used to control or determine the partitioning of the image data) is set or determined according to at least one other second parameter. The image or video data can be partitioned in a manner similar to that described above for VVC or ECM, where each frame or image is divided into Code Tree Units (CTUs), and these CTUs can then be further subdivided by applying one or more of a plurality of allowed splits. For example, splits can include no split (no further splitting is performed), binary split (whereby a block or unit of the code tree is subdivided into two other blocks or units), ternary split (whereby a block or unit of the code tree is subdivided into three blocks or units), and quadtree split (subdivided into four units or blocks of equal size). Binary and ternary splits can be performed horizontally or vertically, and the resulting blocks after splitting can have different sizes. In this context, the partitioning parameter can refer to a variable or syntactic element that determines under what circumstances the above-described splits can be used, for example, the maximum or minimum depth of a particular split type. In this embodiment, the value of the first parameter will depend in some way on the value of the second parameter. In this embodiment, the second parameter can be any variable or syntactic element, and is not limited to other partitioning parameters.

[0293] The main advantage of this embodiment is the improved encoding efficiency due to the adaptation setting of the first parameter according to the value of the second parameter. A second advantage is the reduced encoding time due to the decrease in possible partitions (e.g., splitting patterns).

[0294] Set a partition parameter that represents the maximum partition depth based on at least one other parameter.

[0295] In this embodiment, a first partitioning parameter represents the maximum partition depth (i.e., for one or more available splits). This first parameter is set or determined based on at least one other (second) parameter. In this embodiment, the value of the first parameter will depend on the value of the second parameter. In this embodiment, the second parameter can be a variable or a syntactic element.

[0296] Set a partition parameter for the current block based on at least one other parameter of the current block.

[0297] In an embodiment, a first partition parameter of the current block is set or determined based on at least one other second parameter of the current block.

[0298] By adapting the value of the first parameter block by block (i.e., not at the CTU or higher level (such as at the level of stripes, pictures or sequences of image data encoded in a bit stream)), the advantage compared to the first embodiment is improved coding efficiency.

[0299] In one embodiment, a first partitioning parameter represents the maximum partition depth of the current block, and this first partitioning parameter is set or determined based on at least one other second parameter of the current block. For example, the second parameter represents another partition depth. In another example, the second parameter is the block size.

[0300] The maximum multi-tree depth of the current block is determined based at least on the QT depth of the current block or on the block size.

[0301] In this embodiment, the maximum multi-tree depth of the current block is determined based on the QT depth of the current block or the block size of the current block.

[0302] The advantages are improved encoding efficiency and potentially reduced encoder runtime and complexity. In practice, as described in the prior art section, MaxMttDepth is set to a fixed value transmitted in the high-level header. However, the inventors have discovered that the efficiency of MaxMttDepth is closely related to the QT depth value of the current block and the impact of encoding runtime. By setting MaxMttDepth according to the QT depth value, encoding efficiency is maintained compared to using a higher MaxMttDetph. In effect, it reduces the bit rate overhead of BT and TT signaling when not needed.

[0303] Solution 1

[0304] The MaxMttDepth value depends on QTDepth and a reference value.

[0305] In this embodiment, the maximum multi-tree depth value MaxMttDepth depends on the QT depth (QTDepth) of the current block and a reference value. For example, the reference value may correspond to another QTDepth. This other QTDepth may be associated with another block or may be a predetermined QT depth reference value. The value MaxMttDepth of the current block is set based on the QT depth of the current block according to the reference value.

[0306] QTDepth and QTDepthTempo

[0307] The MaxMttDepth value depends on QTDepth and QtdepthTempo from the time domain region.

[0308] In this embodiment, the maximum multi-tree depth value MaxMttDepth depends on the QTDepth of the current block and the QT depth from the time-domain region QTDepthTempo. Compared to previous embodiments, the reference value is the QT depth from the time-domain region. For example, the value of MaxMttDepth for the current block is set based on the QT depth obtained from the time-domain block, using the value of the current block's QT depth.

[0309] The advantage is improved optimal coding efficiency because the QT depth from the time domain region is a reference value that optimally reflects the behavior of the current block and its selected regions.

[0310] Increase MaxMttDepth based on one or more rules or conditions.

[0311] In an embodiment, the current maximum multitree depth MaxMttDepth (from the head) is increased according to at least one rule or condition based on the QT depth of the current block and the QT depth from the time domain region.

[0312] The advantage is that it improves coding efficiency with minimal impact on coding time.

[0313] Increase the MaxMttDepth value to QTDepth==QTDepthTempo.

[0314] In this embodiment, when the QT depth of the current block is equal to the QT depth from the time domain region, the current maximum multitree depth MaxMttDepth (from the head) is increased (e.g., incremented by 1). The following pseudocode illustrates one possible implementation of this embodiment.

[0315] If (QTDepth == QTDepthTempo)

[0316] {

[0317] MaxMttDepth++

[0318] }

[0319] The advantage of this example is that, for all QT depths, it saves approximately 80% of the gains from increasing MaxMttDepth (from the head) by 1, with only a 10% increase in encoder runtime. Therefore, this is particularly efficient.

[0320] Increase the MaxMttDepth value by (QTDepth == QTDepthTempo) OR (QTDepth == QTDepthTempo - 1).

[0321] In an alternative embodiment, the current maximum multitree depth MaxMttDepth (from the head) is increased when the QT depth of the current block is equal to the QT depth from the time domain region or when the QT depth of the current block is equal to the QT depth from the time domain region minus 1. The following pseudocode illustrates an example of this embodiment.

[0322] If((QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1))

[0323] {

[0324] MaxMttDetph++

[0325] }

[0326] Alternatively, the current maximum multitree depth MaxMttDepth (from the head) is increased only when the QT depth of the current block is equal to the QT depth from the temporal region minus 1, as follows.

[0327] If(QTDepth==QTDepthTempo-1)

[0328] {

[0329] MaxMttDetph++

[0330] }

[0331] This is more complex than the previous implementation, but it offers greater coding efficiency. More precisely, when QTDepth equals QTDepthTempo minus 1, the coding efficiency increases with encoder runtime. However, this also depends on the frames from which the time-domain region originates.

[0332] The MaxMttDepth value is reduced according to certain rules.

[0333] In an embodiment, the current maximum multitree depth MaxMttDepth is reduced according to at least one rule based on the QT depth of the current block and the QT depth from the time domain region.

[0334] The advantage is reduced encoding time, which can sometimes have a positive impact on encoding efficiency because it can save the rate of signaling dedicated to BT and TT partitions.

[0335] It decreases when NOT((QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1)).

[0336] In this embodiment, the current maximum multitree depth MaxMttDepth (from the head) is reduced when the QT depth of the current block is not equal to the QT depth from the time domain region, or when the QT depth of the current block is not equal to the QT depth from the time domain region minus 1. The following pseudocode illustrates an example of this embodiment.

[0337] If(NOT(QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1))

[0338] {

[0339] MaxMttDepth--

[0340] }

[0341] The advantages are reduced encoding time and a slight increase in encoding efficiency.

[0342] Decrease when NOT(QTDepth==QTDepthTempo)).

[0343] In an additional embodiment, when the QT depth of the current block is not equal to the QT depth from the time-domain region, the current maximum multi-tree depth MaxMttDepth is decreased. The following pseudocode illustrates an example of this embodiment.

[0344] If(NOT(QTDepth==QTDepthTempo))

[0345] {

[0346] MaxMttDepth--

[0347] }

[0348] The advantage is that it reduces encoding time compared to the previous embodiment, but it affects encoding efficiency.

[0349] Decrease when QTDepth > QTDepthTempo.

[0350] In an embodiment, when the QT depth of the current block is greater than the QT depth from the temporal region, the current maximum multi-tree depth MaxMttDepth is decreased. The following pseudocode illustrates an example of this embodiment.

[0351] If(QTDepth>QTDepthTempo)

[0352] {

[0353] MaxMttDepth--;

[0354] }

[0355] This embodiment provides a small complexity compared to the previous embodiment, but it gives better coding efficiency.

[0356] In addition, this reduction can be applied only when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0357] Only when the temporal frame is better than the current frame

[0358] In an additional embodiment, the previous embodiment is applied or enabled only when the temporal region comes from a temporal frame with better quality coding compared to the current frame. Better coding quality can be, for example, a lower QP of the temporal frame compared to the current frame.

[0359] The advantage is optimal coding efficiency. In fact, if the temporal frame has better coding, its average block size should be lower than that of the current frame. Therefore, for the case where the current QT depth is greater than the QT depth from the temporal region, it is better to decrease the maximum multi-tree depth.

[0360] Decrease when QTDepth < QTDepthTempo – 1.

[0361] In an embodiment, when the QT depth of the current block is less than the QT depth from the temporal region minus 1, the current maximum multi-tree depth MaxMttDepth is decreased. The following pseudocode illustrates an example implementation of this embodiment.

[0362] If(QTDepth<QTDepthTempo-1)

[0363] {

[0364] MaxMttDepth--;

[0365] }

[0366] This embodiment also provides the same complexity reduction and coding efficiency increase as the previous embodiment.

[0367] In addition, this reduction of MaxMttDepth can be applied only when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0368] Only when the current frame is better than the temporal frame

[0369] In an additional embodiment, the previous embodiment is enabled only when the current frame has better coding quality compared to the temporal frame of the temporal region. Better coding quality can be, for example, a lower QP of the temporal frame compared to the current frame.

[0370] The advantage is optimal coding efficiency. In fact, if the current frame has better quality coding, its average block size should be lower than that of the temporal frame. Therefore, for the case where the current QT depth is less than the QT depth of the temporal region minus 1 and alternatively less than or equal to the QT depth only from the temporal region, it is best to reduce the maximum multi-tree depth. This can depend, for example, on the difference between the QPs.

[0371] Reduce only when QTDepthTempo < PH_QTDepth.

[0372] In an embodiment, when the temporal maximum QT depth of the current block is less than the QT depth of the current frame, the current maximum multi-tree depth MaxMttDepth is reduced. The following pseudocode illustrates an example implementation of this embodiment.

[0373] [[ID=第十九]]If(QTDepthTempo < PH_QTDepth)

[0374] {

[0375] MaxMttDepth--;

[0376] }

[0377] This embodiment can be combined with other embodiments that implement a conditional reduction of MaxMttDepth. Note that the QT depth of the current frame can be calculated based on the minimum QT size (as mentioned in the described embodiments), because this value is not available, for example, in the VVC specification. This value is set to be equal to log2(CTUSize() / (minQtSize << 1)).

[0378] The advantage is improved coding efficiency. In fact, when the temporal QT depth reaches the current QT depth, the probability of reducing the maximum multi-tree depth is very small, and if the temporal QT depth is smaller, it is best to reduce the maximum multi-tree depth to reduce the coding time, because it can be compensated by the higher QT depth of the current block.

[0379] A combination of embodiments that conditionally increase and decrease MaxMttDepth.

[0380] In the embodiments, different embodiments that increase and decrease MaxMttDepth are combined. For example, Figure 14 This example illustrates one of the combinations. In this diagram, PH_MaxMttDepth is the MaxMttDepth of the current image. In this example, when the QT depth of the current block is equal to the QT depth from the temporal region, the current maximum multi-tree depth MaxMttDepth (from the head) is increased; and when the QT depth of the current block is not equal to the QT depth from the temporal region, or when the QT depth of the current block is not equal to the QT depth from the temporal region minus 1, the current maximum multi-tree depth MaxMttDepth (from the head) is decreased. The following pseudocode illustrates an example of this embodiment.

[0381] If (QTDepth == QTDepthTempo)

[0382] {

[0383] MaxMttDepth++

[0384] }

[0385] If(NOT(QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1))

[0386] {

[0387] MaxMttDepth--

[0388] }

[0389] The advantages are better coding efficiency and increased reduction in coding time.

[0390] Based on

[0391] In an embodiment, the value of the maximum multi-tree depth MaxMttDepth is determined block by block according to the formula. For example, the formula includes QTdepth and additionally includes QTDepthTempo. For example, the formula may be as follows.

[0392] MaxMttDepth=2*QTDepthTempo-QTDepth+1

[0393] Or alternatively

[0394] MaxMttDepth=min(2*QTDepthTempo-QTDepth+1,MaxMttDepth)

[0395] Or alternatively

[0396] MaxMttDepth=min(QTDepth-(QTDepthTempo-2)+1,MaxMttDepth+1)

[0397] The reference value is HLS (High-Level Syntax) encoded.

[0398] Transmit reference values ​​in the header.

[0399] In this embodiment, the maximum multi-tree depth value MaxMttDepth depends on the QTDepth of the current block and a reference value. The reference value is transmitted in the header. For example, this value may be additionally or alternatively transmitted in the SPS, PPS, image header, or stripe header.

[0400] Compared to the QT depth-based temporal implementation, this implementation does not require access to frames containing temporal QT depth. This simplifies processing.

[0401] All previous embodiments can be applied.

[0402] All previous embodiments that used QT depth determined based on the time domain region can be applied. For example, similar to Figure 14 The current block's QT depth is compared with the image header's QT depth "PH_QTDeph" to derive the current MaxMttDepth. In this example, when the current block's QT depth and PH_QTDeph are equal, the current maximum multi-tree depth MaxMttDepth is increased; and when the current block's QT depth is not equal to PH_QTDeph or is not equal to PH_QTDeph minus 1, the current maximum multi-tree depth MaxMttDepth is decreased. The following pseudocode illustrates an example of this implementation.

[0403] If (QTDepth == PH_QTDeph)

[0404] {

[0405] MaxMttDepth++

[0406] }

[0407] If(NOT(QTDepth==PH_QTDeph)OR(QTDepth==PH_QTDeph-1))

[0408] {

[0409] MaxMttDepth--

[0410] }

[0411] Consider MaxMTTDepthTempo.

[0412] Consider MaxMTTDepthTempo to determine the current MaxMTTDepthTempo.

[0413] In an embodiment, consider the maximum multi-tree depth “MaxMTTDepthTempo” from the time domain region to determine the value of MaxMttDepth for the current block.

[0414] Increase MaxMttDepth when PH_MaxMttDepth < MaxMTTDepthTempo.

[0415] In an embodiment, when the high-level maximum multi-tree depth “PH_MaxMttDepth” is less than MaxMTTDepthTempo, increase the value of MaxMttDepth. The following pseudocode illustrates an example of this embodiment.

[0416] If(PH_MaxMttDepth < MaxMTTDepthTempo)

[0417] {

[0418] MaxMttDepth++

[0419] }

[0420] The advantage is that the coding efficiency is improved because if the maximum multi-tree depth of the time domain region is greater than MaxMttDepth or PH_MaxMttDepth, it is very likely that the value of MaxMttDepth should be increased to achieve the maximum usefulness of this parameter in terms of coding efficiency.

[0421] PH_MaxMttDepth < MaxMTTDepthTempo

[0422] In an embodiment, increase the value of MaxMttDepth by combining the criterion based on the high-level maximum multi-tree depth “PH_MaxMttDepth” and the maximum multi-tree depth in the time domain “MaxMTTDepthTempo” with the criterion based on the current QT depth and the QT depth from the time domain region.

[0423] For example, when the high-level maximum multi-tree depth “PH_MaxMttDepth” is less than MaxMTTDepthTempo and the QT depth of the current block is equal to the QT depth from the time domain region, increase the value of MaxMttDepth. The following pseudocode illustrates an example of this embodiment.

[0424] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0425] {

[0426] If (QTDepth == QTDepthTempo)

[0427] {

[0428] MaxMttDepth++

[0429] }

[0430] }

[0431] Compared to the implementation without combination, the advantage is improved coding efficiency with minimal impact on coding runtime.

[0432] - Limit the increase based on the average MTT time domain (mttDepthTempo).

[0433] In the embodiment, the increase of MaxMttDepth is limited based on the average MTT time domain (mttDepthTempo).

[0434] The advantages are improved coding efficiency and reduced complexity. In fact, this increases the rate dedicated to partitioning if the maximum MTT depth (MaxMttDepth) increases unnecessarily. The reduction in coding time compared to the previous embodiment is due to the smaller number of possible MTT splits evaluated.

[0435] Limitations compared to PH_MaxMttDepth

[0436] In one embodiment, the average temporal MTT value, mttDepthTempo, is compared with 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 temporal MTT value is greater than or equal to half of the maximum MTT depth PH_MaxMttDepth in the image header, then MaxMttDepth is increased. The maximum MTT depth PH_MaxMttDepth in the image header is halved by dividing by 2 or shifting one bit to the right. The following pseudocode illustrates an example implementation of this embodiment.

[0437] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0438] {

[0439] If (QTDepth == QTDepthTempo)

[0440] {

[0441] If(mttDepthTempo>=(PH_MaxMTTDepth>>1))

[0442] {

[0443] MaxMttDepth++

[0444] }

[0445] }

[0446] }

[0447] For pseudocode, alternative implementations can be considered. For example, the pseudocode could use the following greater than inequality.

[0448] If(mttDepthTempo>(PH_MaxMTTDepth>>1))

[0449] You can also add an offset for rightward movement as follows.

[0450] If(mttDepthTempo>=((PH_MaxMTTDepth+1)>>1))

[0451] The advantages are the same as those of the previous embodiments (i.e., improved coding efficiency and reduced complexity).

[0452] Limitations compared to PH_MaxMttDepthTempo

[0453] In one embodiment, the average temporal MTT value, mttDepthTempo, is compared with 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, if the average temporal MTT value is greater than or equal to half of the maximum MTT depth, PH_MaxMttDepthTempo, of the image header of the reference frame, then MaxMttDepth is increased. The maximum MTT depth, PH_MaxMttDepth, of the image header is halved by dividing by 2 or shifting one bit to the right. The following pseudocode illustrates an example implementation of this embodiment.

[0454] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0455] {

[0456] If (QTDepth == QTDepthTempo)

[0457] {

[0458] If(mttDepthTempo>=(PH_MaxMTTDepthTempo>>1))

[0459] {

[0460] MaxMttDepth++

[0461] }

[0462] }

[0463] }

[0464] For pseudocode, alternative implementations can be considered. For example, the pseudocode could use the following greater than inequality.

[0465] If(mttDepthTempo>(PH_MaxMTTDepthTempo>>1))

[0466] You can also add an offset for rightward movement as follows.

[0467] If(mttDepthTempo>=((PH_MaxMTTDepthTempo+1)>>1))

[0468] The advantages are the same as those of the previous embodiments (i.e., improved coding efficiency and reduced complexity).

[0469] It does not increase when mttDepthTempo == PH_MaxMttDepth or PH_MaxMttDepthTempo.

[0470] In this embodiment, the maximum MTT depth value MaxMttDepth is not increased when the average temporal MTT value mttDepthTempo equals the maximum temporal MTT depth PH_MaxMttDepthTempo of the image header of the reference frame, or alternatively, when the average temporal MTT value mttDepthTempo equals the maximum temporal MTT depth MaxMttDepthTempo. In practice, while increasing the maximum MTT depth of the current block is useful when mttDepthTempo reaches this value, it also increases the encoder runtime.

[0471] Similarly, when the average MTT value in the time domain, mttDepthTempo, is equal to the maximum MTT depth PH_MaxMttDepth of the image header, the maximum MTT depth value MaxMttDepth is not increased.

[0472] The advantage is that the coding runtime is further reduced compared to the previous embodiment, but the coding efficiency is slightly reduced. This provides a good trade-off between benefits and complexity.

[0473] Restrictions only for (QTDepth == QTDepthTempo)

[0474] In this embodiment, the previous embodiment is applied only when the current QT depth QTDepth is equal to the time-domain QT depth.

[0475] The advantage is that the coding efficiency is improved compared to the relevant previous embodiments.

[0476] Specific restrictions on (QTDepth == QTDepthTempo-1)

[0477] In this embodiment, the previous embodiment is applied when the current QT depth QTDepth is equal to the temporal QT depth minus 1. However, the maximum MTT depth is not increased in the same way as when QTDepth equals 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 value mttDepthTempo of the temporal MTT depth is equal to PH_MaxMTTDepthTempo or, alternatively, equal to PH_MaxMTTDepth or equal to MaxMttDepthTempo of the current frame.

[0478] The following pseudocode illustrates an example implementation of this situation.

[0479] If (PH_MaxMttDepthTempo <MaxMttDepthTempo)

[0480] {

[0481] If(QTDepth==QTDepthTempo-1)

[0482] {

[0483] If(mttDepthTempo==(PH_MaxMTTDepthTempo>>1))

[0484] {

[0485] MaxMttDepth++

[0486] }

[0487] }

[0488] }

[0489] Alternatively, the average MTT depth temporal domain mttDepthTempo can be less than or equal to PH_MaxMTTDepthTempo. In another example, the average MTT depth temporal domain mttDepthTempo can be less than or equal to PH_MaxMTTDepth or MaxMttDepthTempo of the current frame. The following pseudocode illustrates an example implementation of this case.

[0490] If (PH_MaxMttDepthTempo <MaxMttDepthTempo)

[0491] {

[0492] If(QTDepth==QTDepthTempo-1)

[0493] {

[0494] If(mttDepthTempo<=(PH_MaxMTTDepthTempo>>1))

[0495] {

[0496] MaxMttDepth++

[0497] }

[0498] }

[0499] }

[0500] For pseudocode, alternative implementations can be considered. For example, the pseudocode could use the following less-than inequality.

[0501] If(mttDepthTempo<(PH_MaxMTTDepthTempo>>1))

[0502] You can also add an offset for rightward movement as follows.

[0503] If(mttDepthTempo<=((PH_MaxMTTDepthTempo+1)>>1))

[0504] The advantage is improved coding efficiency compared to the previous embodiment. In fact, when the current QT depth is equal to the time-domain QT depth minus 1, it is more efficient to increase the maximum MTT (MaxMttDepth) of the current block only for the low value of the average value mttDepthTempo of the time-domain MTT value.

[0505] Decrease MaxMttDepth when PH_MaxMttDepth > MaxMttDepthTempo.

[0506] In this embodiment, when the maximum multi-tree depth "PH_MaxMttDepth" at the higher level is greater than MaxMttDepthTempo, the value of MaxMttDepth is decreased. The following pseudocode illustrates an example of this embodiment.

[0507] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0508] {

[0509] MaxMttDepth--

[0510] }

[0511] The advantages are reduced encoder runtime and improved coding efficiency. This is because if MaxMttDepthTempo is less than MaxMttDepth or PH_MaxMttDepth, then it is very likely that the value of MaxMttDepth should be reduced to achieve the maximum usefulness of this parameter in terms of coding efficiency.

[0512] Decrease MaxMttDepth when PH_MaxMttDepth > MaxMttDepthTempo and when the QP of the current stripe / frame is higher than or equal to the QP of the frame in the time domain region.

[0513] In this embodiment, the value of MaxMttDepth is decreased when the maximum multi-tree depth "PH_MaxMttDepth" at the higher level is greater than MaxMttDepthTempo, and when the QP "currentQP" of the current slice / frame is higher than or equal to the QP "tempoQP" of the slice / frame in the time domain region. The following pseudocode illustrates an example of this embodiment.

[0514] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0515] {

[0516] If (currentQP >= tempoQP)

[0517] {

[0518] MaxMttDepth—

[0519] }

[0520] }

[0521] Compared to the previous implementation, this embodiment offers the advantage of improved coding efficiency. In fact, when the current QP is higher than or equal to the QP of the stripe / frame in the temporal region, the maximum multi-tree depth of the current block is typically higher.

[0522] Decrease according to the previous rules only when PH_MaxMttDepth==MaxMttDepthTempo.

[0523] In this embodiment, the maximum multi-tree depth (the requirement for reducing the maximum multi-tree depth) is that the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region. (PH_MaxMttDepth == MaxMttDepthTempo).

[0524] For example, as described in some previous embodiments, this reduction can be applied to all QT depths that are different from the time-domain QT depth and the time-domain QT depth minus 1. The following pseudocode illustrates this embodiment.

[0525] if(PH_MaxMttDepth==MaxMttDepthTempo)

[0526] {

[0527] if(NOT((QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1)))

[0528] {

[0529] MaxMttDepth--

[0530] }

[0531] }

[0532] This leads to improved coding efficiency. In fact, when the maximum multi-tree depth is equal to the maximum multi-tree depth in the time domain, the selected QT depth for the current block will most likely be equal to the time domain QT depth or the time domain QT depth minus 1. Therefore, for other QT depth values, the maximum multi-tree depth can be reduced.

[0533] In addition, this criterion can only be applied if the temporal frame has better coding quality (e.g., lower QP) compared to the current frame.

[0534] It decreases only when PH_MaxMttDepth equals PH_MaxMttDepthTempo.

[0535] In this embodiment, for the maximum multi-tree depth to be reduced, an additional requirement is that the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal frame (PH_MaxMttDepth == PH_MaxMttDepthTempo).

[0536] For example, when applied to an example of a previous embodiment, the embodiment is illustrated by the following formula.

[0537] if((PH_MaxMttDepth==PH_MaxMttDepthTempo)&&(PH_MaxMttDepth==MaxMttDepthTempo))

[0538] {

[0539] if(NOT((QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1)))

[0540] {

[0541] MaxMttDepth--

[0542] }

[0543] }

[0544] This provides improved coding efficiency, especially when combined with previous embodiments.

[0545] Further reduction of MaxMttDepth

[0546] In this embodiment, in addition to the previous embodiment, if MaxMttDepth does not reach MaxMttDepthTempo, then two reductions of MaxMttDepth are applied. The following pseudocode illustrates an example implementation of this embodiment.

[0547] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0548] {

[0549] MaxMttDepth=MaxMttDepthTempo

[0550] If(MaxMttDepth>MaxMttDepthTempo)

[0551] {

[0552] MaxMttDepth—

[0553] }

[0554] }

[0555] The pseudocode can be adapted according to the different embodiments described above.

[0556] The advantages of this embodiment are increased coding efficiency and further reduced coding time complexity.

[0557] MaxMttDepth equals MaxMttDepthTempo.

[0558] In embodiments other than those described above, when PH_MaxMttDepth > MaxMttDepthTempo, MaxMttDepth is set to be equal to MaxMttDepthTempo. The following pseudocode illustrates an example implementation of this situation.

[0559] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0560] {

[0561] MaxMttDepth=MaxMttDepthTempo

[0562] }

[0563] Compared to the previous embodiment, the advantage of this embodiment is that the coding time complexity is further reduced.

[0564] Reduction is limited to certain rules.

[0565] In some embodiments, the reduction of the maximum multi-tree depth can be limited based on one or more parameters. For example, these could be parameters indicating image quality or content associated with Class A video. Embodiments related to specific parameters are described below.

[0566] If (Resolution > 1920 * 1080)

[0567] In this embodiment, the reduction in maximum multi-tree depth is applied only to sequences with a resolution higher than a predetermined resolution. In this embodiment, the predetermined resolution is HD (1920*1080). This is particularly efficient when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0568] If (CTUSize >= 256)

[0569] In this embodiment, the reduction in maximum multi-tree depth is applied only if the CTU size of the current frame is greater than or equal to a predetermined value. In this embodiment, the predetermined value is 256. This is particularly efficient when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0570] If (PH_MaxMttDepth) <PH_MaxQTDepth)

[0571] In this embodiment, the reduction of the maximum multi-tree depth is applied only when the frame-level maximum multi-tree 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 multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0572] If (PH_MaxQTDepth>3)

[0573] In one embodiment, the reduction in maximum multi-tree depth is applied only if the maximum QT depth at the frame level of the current frame is greater than a predetermined value. In this embodiment, the predetermined value is 3. This is particularly efficient when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth of the temporal region (PH_MaxMttDepth == MaxMttDepthTempo).

[0574] MaxMttDepth reduced based on the combination criterion

[0575] In this embodiment, the value of MaxMttDepth is reduced by combining the criteria based on the high-level maximum multi-tree depth "PH_MaxMttDepth" and the maximum multi-tree depth in the time domain "MaxMttDepthTempo" with the criteria based on the current QT depth and the QT depth from the time domain region.

[0576] For example, the value of MaxMttDepth is decreased when the maximum multitree depth "PH_MaxMttDepth" at the higher level is greater than MaxMttDepthTempo, and when the QT depth of the current block is not equal to the QT depth from the time domain region or the QT depth from the time domain region minus 1. The following pseudocode illustrates an example of this embodiment.

[0577] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0578] {

[0579] If(NOT(QTDepth==QTDepthTempo)OR(QTDepth==QTDepthTempo-1))

[0580] {

[0581] MaxMttDepth--

[0582] }

[0583] }

[0584] Compared to the uncombined implementation, the advantages are reduced encoder runtime and improved encoding efficiency.

[0585] MaxMttDepth is increased when PH_MaxMttDepth == MaxMttDepthTempo.

[0586] In the embodiment, when the maximum multi-tree depth "PH_MaxMttDepth" at the higher level is equal to MaxMttDepthTempo, the value of MaxMttDepth is increased.

[0587] This embodiment provides a significant improvement in coding efficiency.

[0588] Only for QTDepth == QTDepthCol

[0589] In the embodiment, the value of MaxMttDepth is increased when the maximum multi-tree depth "PH_MaxMttDepth" at the higher level is equal to MaxMttDepthTempo and when the current QT depth is equal to the time-domain QT depth.

[0590] Compared to the previous embodiments, this embodiment also provides significant coding benefits with a smaller impact on coding runtime.

[0591] For (QTDepth==QTDepthCol)OR(QTDepth==QTDepthTempo-1)

[0592] In an alternative embodiment, the value of MaxMttDepth is increased when the high-level maximum multitree depth "PH_MaxMttDepth" equals MaxMttDepthTempo and when the current QT depth equals the time-domain QT depth or when the current QT depth equals the time-domain QT depth minus 1.

[0593] For QTDepth == QTDepthCol and QTDepthCol == minQTDepthCol

[0594] In the embodiment, for the value of MaxMttDepth to be increased, the current QT depth must be equal to the time-domain QT depth (QTDepth == QTDepthCol), and the time-domain QT depth must be equal to the minimum time-domain QT depth (QTDepthCol == minQTDepthCol).

[0595] This improves coding efficiency because temporal QT depth splits look the same across all blocks in the temporal region, so the only way to get further splits of the current block is to increase the maximum multitree depth.

[0596] Additionally, this can be applied only if the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth in the temporal domain (PH_MaxMttDepth == MaxMttDepthTempo) to ensure the maximum possible split is achieved in the temporal domain region.

[0597] For QTDepth == QTDepthtempo and QTDepthTempo == PH_MaxQTDepth

[0598] In the embodiment, when the current QT depth is equal to the temporal QT depth (QTDepth == QTDepthTempo) and when the temporal QT depth is equal to the QT depth of the current frame (QTDepthTempo == PH_MaxQTDepth), the value of MaxMttDepth is increased.

[0599] This improves coding efficiency because the QT depth will typically reach the maximum value of its current block, so one way to get further splits of the current block is to increase the maximum multitree depth.

[0600] Additionally, this can be applied only when the maximum multi-tree depth of the current frame is equal to the maximum multi-tree depth in the temporal domain (PH_MaxMttDepth == MaxMttDepthTempo) to ensure that the maximum possible split is achieved in the temporal domain region.

[0601] Based on

[0602] In the embodiment, the value of MaxMttDepth is determined based on a formula that depends on "PH_MaxMttDepth" and MaxMttDepthTempo.

[0603] Using QTDepth

[0604] In the embodiment, the value of MaxMttDepth is determined based on the following formula, which depends on PH_MaxMttDepth and / or MaxMttDepthTempo, as well as the QT depth of the current block and / or the QT depth of the time domain region.

[0605] For example, the formula can be as follows.

[0606] MaxMttDepth=MaxMttDepth–2*(QTDepth-MaxMttDepthTempo);

[0607] Alternatively:

[0608] If(MaxMttDepth>=MaxMttDepth–2*(QTDepth-MaxMttDepthTempo))

[0609] MaxMttDepth=MaxMttDepth–2*(QTDepth-MaxMttDepthTempo);

[0610] Else

[0611] MaxMttDepth=0

[0612] PH_MaxMTTDepth of time-domain frames

[0613] Same implementation as MaxMttDTempo

[0614] In this embodiment, the value of MaxMttDepth is determined based on the high-level maximum multi-tree depth "PH_MaxMttDepthTempo" of the temporal frame. For example, the frame can be a reference frame or a frame with the same temporal ID. Alternatively, all embodiments defined above for the maximum multi-tree depth "MaxMttDTempo" from the temporal region can be applied using PH_MaxMttDepthTempo.

[0615] The advantage of using MaxMttDepthTempo instead of MaxMttDTempo is that it does not require deriving MaxMttDTempo from the time domain region.

[0616] This embodiment can also be combined with all other embodiments previously described to achieve a better trade-off between coding efficiency and coding runtime.

[0617] The criterion is applied only when PH_MaxMttDepthTempo is greater than PH_MaxMttDepth.

[0618] In one particular embodiment, the high-level maximum multi-tree depth "PH_MaxMttDepthTempo" of the temporal frame is compared with the high-level maximum multi-tree depth "PH_MaxMttDepth" of the current frame to determine whether at least one of the above criteria should be applied. For example, if PH_MaxMttDepthTempo is greater than PH_MaxMttDepth, then an increase in MaxMttDepth is permitted due to a criterion listed above, for example.

[0619] For example, when PH_MaxMttDepth is less than PH_MaxMttDepthTempo, and when PH_MaxMttDepth is also less than MaxMttDepthTempo, and when QTDepth is equal to QTDepthTempo, MaxMttDepth is increased. The following pseudocode illustrates this example of the embodiment.

[0620] If (PH_MaxMttDepth) <PH_MaxMttDepthTempo)

[0621] {

[0622] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0623] {

[0624] If (QTDepth == QTDepthTempo)

[0625] {

[0626] MaxMttDepth++

[0627] }

[0628] }

[0629] }

[0630] The advantage is a good trade-off between coding runtime and coding efficiency. In fact, the proposed criterion yields greater gains when the current maximum multitree depth at higher levels is less than the maximum multitree depth at higher levels of the temporal frame (especially in the case of a single reference frame).

[0631] Current maximum multi-tree depth <= maximum multi-tree depth at higher levels

[0632] Alternatively, the formula can consider that the current maximum multi-tree depth at the higher level is less than or equal to the maximum multi-tree depth at the higher level, rather than just less than the maximum multi-tree depth at the higher level, in order to obtain higher returns.

[0633] For CTU 256 only

[0634] In an additional embodiment, the constraint based on when PH_MaxMttDepthTempo is greater than PH_MaxMttDepth is applied only when the CTU size is large. For example, when the CTU size is 256.

[0635] If PH_MaxMTTDepthTempo is less than PH_MaxMTTDept, then it will not decrease.

[0636] In an embodiment, if PH_MaxMTTDepthTempo is less than PH_MaxMTTDepth, a decrease in MaxMttDepth is not allowed.

[0637] The following pseudocode illustrates an example of this embodiment.

[0638] If(PH_MaxMttDepth <= PH_MaxMttDepthTempo)

[0639] {

[0640] If(PH_MaxMttDepth > MaxMttDepthTempo)

[0641] {

[0642] MaxMttDepth--

[0643] }

[0644] }

[0645] Specific decrease of MAXMttDepth

[0646] When MaxMttDetph decreases, it can be set to equal 0.

[0647] In an embodiment, when MaxMttDetph decreases, its value is set to equal 0, rather than decrementing or just decreasing.

[0648] The main advantages are a reduced rate associated with BT or TT signaling. A second advantage is a further reduction in complexity.

[0649] Specifically, this embodiment is applied when it is very likely that BT and TT splitting are not needed. For example, this can be applied when the maximum multi-tree depth MaxMttDepthTempo from the time domain region is particularly low. This embodiment can also be applied when the current QTDepth is set to equal the minimum value of QTDepth (e.g., CTU size). And this embodiment can also be applied when QTDepth equals its maximum possible value (e.g., minimum QT size).

[0650] In another example, this embodiment is applied when the current QT depth is higher than the time domain QT depth (QTDepth > QTDepthTempo).

[0651] In another example, this embodiment is applied when the current QT depth is lower than the time domain QT depth minus 1 (QTDepth < QTDepthTempo - 1).

[0652] Specific situation of intra-frame reference frames

[0653] Intra-frames and inter-frames have different partitions. Intra-frame partitions follow spatial correlations compared to inter-frame partitions, which follow temporal correlations. However, as described in this paper, there are some correlations that can be used to predict some parameters, and in particular, the maximum MTT depth (MaxMttDepth) of the current block.

[0654] MaxMttDepth is not increased by QTDepthTempo-1.

[0655] In the embodiment, when the reference frame is an intra-frame, the increase of MaxMttDepth is applied only when the current QT depth QTDepth is equal to QTDepthTempo, and the increase of MaxMttDepth is not applied when QTDepth is equal to QTDepthTempo-1.

[0656] The advantage is that it reduces complexity with minimal impact on coding efficiency.

[0657] There exists another inter-frame with a different PH_MaxMttDepth.

[0658] In this embodiment, when the reference frame is an intra-frame, the increase in MaxMttDepth is applied only if the current QT depth QTDepth equals QTDepthTempo and all inter-frames in the sequence or GOP have the same maximum MTT depth (PH_MaxMttDepth). The maximum MTT depth of the current block can also be increased when QTDepth equals QTDepthTempo-1.

[0659] The advantage is improved coding efficiency with a small increase in coding time. In fact, when all inter-frames have the same PH_MaxMttDepth, the benefit is greater for frames that use intra-frames as references when QTDepth equals QTDepthTempo-1.

[0660] Of course, in these embodiments, the increase of the maximum MTT depth of the current block is conditional on other previously defined conditions.

[0661] This is not applied when using intra-frame reference.

[0662] In an embodiment, when the reference frame is an intra-frame, the maximum MTT depth of the current block is not increased based on certain conditions.

[0663] The advantages are improved coding efficiency and reduced coding runtime, or a better trade-off between coding efficiency and complexity.

[0664] It is not applied in the same time domain ID.

[0665] In an embodiment, when the reference frame is an intra-frame and when the 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 an example, when the reference frame is an intra-frame having the same temporal ID, the maximum MTT depth of the current block is increased.

[0666] The advantage is a better coding efficiency-complexity trade-off.

[0667] Not applied when the intra-frame reference is too close.

[0668] In an embodiment, when the reference frame is an intra-frame and when 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, the threshold is equal to 2 or 3.

[0669] The advantage is a better coding efficiency-complexity trade-off.

[0670] Decrease for QTDepthTempo - 1.

[0671] In an embodiment, when the reference frame is an intra-frame and when 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 is decreased. <00系列=1401>The advantage is improved coding efficiency and reduced coding time.

[0673] Decrease when PH_MaxMttDepth < MaxMttDepthTempo.

[0674] In an embodiment, when the reference frame is an intra-frame and when the current QT depth QTDepth is equal to the temporal QT depth minus 1 (QTDepthTempo - 1), and when 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 is decreased.

[0675] Alternatively, MaxMttDepthTempo can be replaced by the maximum MTT depth PH_MaxMttDepthTempo of the reference picture.

[0676] The advantage is improved coding efficiency and reduced coding time.

[0677] Decrease when mttDepthCol is greater than or equal to PH_MaxMttDepthTempo.

[0678] In an embodiment, when the reference frame is an intra-frame and when the current QT depth QTDepth is equal to the temporal QT depth minus 1 (QTDepthTempo - 1), and when the average value mttDepthCol of the temporal MTT depth values is greater than or equal to the maximum MTT depth PH_MaxMttDepthTempo of the reference frame, the maximum MTT depth MaxMttDepth of the current block is reduced. Alternatively, an equality instead of a greater than or equal to inequality can be considered, i.e., the average value mttDepthCol of the temporal MTT depth values is equal to the maximum MTT depth PH_MaxMttDepthTempo of the reference frame.

[0679] Alternatively, PH_MaxMttDepthTempo can be replaced by the temporal maximum value MaxMttDepthTempo of the MTT depth values.

[0680] The advantages are improved coding efficiency and reduced coding time.

[0681] Reduce MaxMttDepth when PH_MaxMttDepth < MaxMttDepthTempo and when mttDepthCol is greater than or equal to PH_MaxMttDepthTempo.

[0682] In an embodiment, two previous embodiments are combined. In this embodiment, when the reference frame is an intra-frame and when the current QT depth QTDepth is equal to the temporal QT depth minus 1 (QTDepthTempo - 1), and when the maximum MTT depth PH_MaxMttDepth of the current picture is less than the temporal maximum MTT depth MaxMttDepthTempo, and when the average value mttDepthCol of the temporal MTT depth values is greater than or equal to the maximum MTT depth PH_MaxMttDepthTempo of the reference frame, the maximum MTT depth MaxMttDepth of the current block is reduced. The above alternatives also apply to this embodiment. The following pseudocode gives an example implementation of this embodiment.

[0683] If(ReferenceFrame_is_Intra?)

[0684] {

[0685] If(QtDepth == QTDepthTempo - 1)

[0686] {

[0687] If(PH_MaxMttDepth < MaxMttDepthTempo)

[0688] {

[0689] If (mttDepthTempo >= PH_MaxMttDepthTempo)

[0690] {

[0691] MaxMttDepth—

[0692] }[[ID=***]] [[ID=***]]

[0693] }

[0694] }

[0695] }

[0696] The advantage is the improvement in coding efficiency with a reduction in coding time. In fact, as the maximum MTT depth detected in the intra-frame reaches the maximum, it is very likely that the current block will not be selected to have a QT depth equal to the temporal QT depth minus 1.

[0697] Specific situation: the following frames

[0698] The MaxMttDepth of QTDepthTempo - 1 is increased only in the following cases:

[0699] PH_MaxMttDepth == PH_MaxMttDepthTempo, and

[0700] PH_MaxMttDepth < MaxMttDepthTempo.

[0701] In an embodiment, when the maximum MTT depth of both the current frame and the reference frame is the same (PH_MaxMttDepth == PH_MaxMttDepthTempo) and when the maximum MTT depth in the temporal domain is greater than this value (PH_MaxMttDepth < MaxMttDepthTempo), the maximum MTT depth MaxMttDepth of the current block is increased only when the current QT depth is equal to the average temporal QT depth minus 1 (QTDepthTempo - 1). [[ID=3**]] [[ID=3**]]

[0702] In fact, when the maximum MTT depth of both the current frame and the reference frame is the same but the maximum MTT depth in the temporal domain is greater than this value, this means that the maximum MTT depth has increased and is useful for at least one block in the temporal region. Instead of propagating this increase in the MTT depth over all subsequent frames, this increase is applied to the QT depth minus 1.

[0703] It should be noted that there are some tags in the original text that seem to be incomplete or have incorrect formatting. I have translated the text as accurately as possible based on the existing content. If you can provide more accurate or complete information about these tags, it will be helpful for a more precise translation.The advantage is reduced complexity. However, increasing the maximum MTT depth actually increases encoding runtime. Furthermore, if the frame-level maximum MTT depth is set too low for a sequence, this method will increase encoding time. Therefore, if the goal is to maintain encoding, it is preferable to propagate this increase at a lower level of QT depth to reduce encoding time.

[0704] Specific restrictions on (QTDepth == QTDepthTempo-1)

[0705] As previously stated, the same constraint that QTDepth equals QTDepthTempo-1 can be combined with previous embodiments. Therefore, in an additional embodiment of the previous embodiments, the maximum MTT depth MaxMttDepth is increased only if the average MTT depth temporal value mttDepthTempo is equal to PH_MaxMTTDepthTempo or alternatively equal to PH_MaxMTTDepth or MaxMttDepthTempo of the current frame. Alternatively, the average MTT depth temporal mttDepthTempo can be less than or equal to PH_MaxMTTDepthTempo or alternatively equal to PH_MaxMTTDepth or MaxMttDepthTempo of the temporal region of the current frame.

[0706] Although the embodiments disclosed above have been described with respect to reference frames corresponding to intra-frame frames, the invention is not limited thereto. These embodiments can be adapted such that the reference frame corresponds to an inter-frame frame.

[0707] Values ​​from the time domain

[0708] From time domain region

[0709] In an embodiment, for one or more of the previously described conditions or rules, the QT depth of the current block is compared with a value determined from the time domain region.

[0710] The QT depth in the time domain is the average QT depth value from the time domain region.

[0711] In this embodiment, the QT depth of the current block is compared with the average of the QT depth values ​​determined from the time domain region.

[0712] For example, consider Figure 15 The QT depth value of the temporal location is used to calculate the average value QTDepthTempo that can be used as a criterion.

[0713] In an alternative approach, a larger time domain could be considered.

[0714] Other values ​​are the minimum QT depth values ​​from the time domain region.

[0715] In an alternative embodiment, the QT depth of the current block is compared with the minimum QT depth value determined from the time domain region.

[0716] The MaxMttDepthTempo value is calculated from the maximum or average MTT depth derived from the time domain region.

[0717] In an embodiment, the value compared to the QT depth of the current block is calculated based on the maximum MTT depth “MaxMttDepthTempo” from the time domain region, according to the defined criteria.

[0718] Alternatively, the average MTT depth can be considered.

[0719] The QT depth is the average of the QT depths from the time domain region, and MaxMttDepthTempo is the maximum value of MttDepth from the time domain region.

[0720] In a particularly advantageous embodiment, the QT depth from the time-domain region is the average of the QT depths, and MaxMttDepthTempo is the maximum value of MttDepth from the time-domain region. For example, this is considered by taking into account that the time-domain region contains 10 locations and as described above due to the following pseudocode.

[0721] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0722] {

[0723] If (QTDepth == QTDepthTempo)

[0724] {

[0725] MaxMttDepth++

[0726] }

[0727] }

[0728] MaxMttDepthTempo is the maximum value of the 10 MttDepth_i from the time domain region, where i ranges from 0 to 9. QTDepthTempo is the average of the 10 QTDepth_i from the time domain region, where i ranges from 0 to 9. Additionally, a weighted average is used to account for the block size of each block within the time domain region.

[0729] This is particularly efficient. In fact, the average QT depth from the temporal region gives the correct representation of the QT depth to be selected for the current block. Therefore, increasing the maximum multitree depth in this case is beneficial for its selection. To avoid significantly increasing coding time and rate of change due to increased signaling, the current block's MaxMttDepth is only increased if MaxMttDepthTempo is higher than the current frame's MaxMttDepth. This is based on the recognition that if MaxMttDepthTempo is better, then it is very likely that the current block's MaxMttDepth will be higher. This provides the optimal trade-off between coding efficiency and coding runtime.

[0730] The temporal regions used to obtain the average QT depth and maximum MttDepth can be the same or different. For example, they can come from different reference frames but have the same size (and / or location) or different sizes (and / or locations), or different sizes (and / or locations) and come from different reference frames. Different temporal regions can be illustrated in the embodiments of "temporal regions" described below.

[0731] This embodiment can be combined with any embodiment that involves decreasing (or decrementing) MaxMttDepth when PH_MaxMttDepth>MaxMttDepthTempo. For example, an advantageous implementation may be illustrated as shown in the following pseudocode.

[0732] If (PH_MaxMttDepth) <PH_MttDepthTempo)

[0733] {

[0734] If (PH_MaxMttDepth) <MaxMttDepthTempo)

[0735] {

[0736] If (QTDepth == QTDepthTempo)

[0737] {

[0738] MaxMttDepth++

[0739] }

[0740] }

[0741] }

[0742] If(PH_MaxMttDepth>MaxMttDepthTempo)

[0743] {

[0744] If (currentQP >= tempoQP)

[0745] {

[0746] MaxMttDepth—

[0747] }

[0748] }

[0749] Therefore, MaxMttDepth can be optimally adjusted up and down to adapt to MaxMttDepthTempo (i.e., the maximum multi-tree ternary depth from the temporal region (such as the region of another frame, like the reference frame).

[0750] Time Domain

[0751] Parallel

[0752] In an embodiment, the block whose temporal value is considered to determine the QT depth or block size is, for example, a temporal side-by-side block or a temporal block whose motion vector values ​​have been shifted from adjacent blocks. Similarly, MaxMttDepth can be, for example, the MttDepth of a temporal side-by-side block or a temporal block whose motion vector values ​​have been shifted from adjacent blocks.

[0753] Reference frame as an intra-frame

[0754] In this embodiment, the temporal region corresponds to the reference frame that serves as an intra-frame frame.

[0755] Multiple locations

[0756] In embodiments, several locations of the block are considered to determine temporal values ​​of the QT depth or block size, or for MttDepth. For example, one could consider... Figure 15 The positions are C, TL, TR, BL, and BR. In this diagram, position C is the center of the time-domain parallel block. Positions TL, TR, BL, and BR are the upper left, upper right, lower left, and lower right positions surrounding the time-domain parallel block, respectively.

[0757] Compared to previous embodiments, the current embodiments provide more coding time reduction and improve coding efficiency because the determined temporal QT depth, temporal block size, or temporal MttDepth is generally more reliable.

[0758] higher areas

[0759] In this embodiment, the temporal value of QT depth, block size, or MttDepth is determined based on a temporal region. For example, the temporal region is a parallel CTU.

[0760] Compared to the previous two embodiments, more blocks can be considered, thus achieving a better trade-off between reduced coding time and coding efficiency.

[0761] The center of the current block is used to determine its temporal location.

[0762] In an embodiment, the center of the current block is considered in order to determine a parallel block or several time-domain blocks or time-domain regions.

[0763] The advantage is a better trade-off, since the center is the optimal position to represent the current block. Alternatively, when the block's center is outside the current frame, the top-left position can be considered.

[0764] The entire frame

[0765] In this embodiment, the temporal value of QT depth, block size, or MttDepth is determined based on all blocks of the temporal frame.

[0766] 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 because it is less suitable for content compared to previous embodiments.

[0767] Frames with the same time domain ID

[0768] In an embodiment, the parallel blocks or several time-domain blocks or time-domain regions come from frames with the same time-domain ID.

[0769] For example Figure 11 The example of the random access configuration shown uses another encoded / decoded frame with the same time domain ID equal to 4 to determine the value of the proposed method if the current frame has a time domain ID equal to 4.

[0770] Frames with the same temporal ID typically have the same coding parameters, especially since they share the same or similar QP and spatial distance with their reference frames. Therefore, these frames are of great interest for predicting QT depth or MttDepth, as this data is related to both QP and the spatial distance between frames.

[0771] The closest frame with the same time domain ID

[0772] In an embodiment, the parallel blocks or several time-domain blocks or time-domain regions are derived from the closest frames with the same time-domain ID.

[0773] For an example of a random access configuration, such as Figure 11 As shown, the closest frame with the same temporal ID is (typically) more relevant than other frames. Therefore, the results are better.

[0774] Frames or reference frames with the same QP

[0775] In an embodiment, the parallel blocks or several time-domain blocks or time-domain regions originate from frames or reference frames that have the same QP. Ideally, the reference frames have the same QP.

[0776] 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.

[0777] The same reference frame used for temporal motion vector prediction

[0778] In an embodiment, the parallel blocks or several temporal blocks or temporal regions are derived from reference frames used for temporal motion vector prediction. These reference frames, depending on the flags transmitted in the image header or strip header, can be the first reference frame of reference list 0 or the first reference frame of list 1.

[0779] Surprisingly, even with a lower QP for the reference frame, this embodiment achieves an optimal trade-off between encoder time reduction and coding efficiency. However, the reference frame is closer to the current frame than all frames with the same temporal ID.

[0780] closest reference frame

[0781] In an embodiment, the parallel block or several time-domain blocks or time-domain regions are derived from the nearest reference frame.

[0782] As illustrated with respect to the previous embodiments, even though frames with the same QP have a statistically greater correlation between their QP depth and Mttdepth, the distance to the current frame seems to be of more interest in the trade-off between encoder time reduction and coding efficiency.

[0783] More than one reference frame

[0784] In this embodiment, two reference frames are considered, and two sets of two temporal regions or several blocks, or two parallel blocks, are used to determine two temporal QT depths or two block sizes. These are then used to determine a QT depth, a block size, or a MttDepth. For example, the minimum QT depth from the two temporal regions can be considered.

[0785] More than two reference frames can also be considered.

[0786] The advantage is a better trade-off between reduced encoder time and coding efficiency, because the QT depth value, or MttDepth value, is calculated from more data. This is particularly efficient when two reference frames have the same temporal distance, but it increases memory access.

[0787] Second Solution

[0788] In this set of embodiments, the maximum multi-tree depth value MaxMttDepth depends on the QTDepth of the current block and a reference value transmitted in the header rather than to be determined. All previous embodiments related to QTDepthTempo can be applied together with the transmitted value.

[0789] Several values ​​of MaxMttDepth are transmitted at a higher level.

[0790] In this embodiment, several values ​​of MaxMttDepth are transmitted at a higher level and applied based on QTdepth or block size. For example, the higher-level header can be one or more SPS, PPS, image headers, or stripe headers.

[0791] Compared to time-domain-based solutions, the advantage is that the parsing is independent of time-domain frames. Therefore, the process is simpler and the encoder implementation is more flexible. However, some data needs to be transmitted.

[0792] Associated with possible QT depth

[0793] In this embodiment, several values ​​correspond to some QT depth. For example, a table representing these values ​​is transmitted in the image header.

[0794] The table size depends on the CTU size and MinQtSize. For example, the CTU size is equal to 128 and the MinQtSize is equal to 8. Therefore, four values ​​are possible: one for a QT depth of 1 corresponds to a block size of 64×64, one for a QT depth of 2 corresponds to a block size of 32×32, and one for a QT depth of 3 corresponds to a block size of 16×16.

[0795] For example, the table is PH_MaxMTTDepth[], and the corresponding values ​​are given below.

[0796] PH_MaxMTTDepth[0]=1

[0797] PH_MaxMTTDepth[1]=2

[0798] PH_MaxMTTDepth[2]=3

[0799] PH_MaxMTTDepth[3]=1

[0800] Therefore, for this embodiment, the maxMttDepth of the current block is equal to PH_MaxMTTDepth[QTDepth].

[0801] This table replaces PH_MaxMTTDepth, so these syntactic elements can be encoded in the same way as ue(v). In VVC, syntactic elements encoded as ue(v) or se(v) are subjected to exponential Golomb coding of order k equal to 0.

[0802] Related to block size (log2)

[0803] In this embodiment, consider using the block size to set maxMttDepth instead of the QT depth. For example, in this case, PH_MaxMTTDepth is replaced by the table PH_MaxMTTDepth_Log2size_minus2. And for the same configuration with a CTU size of 128 and MinQtSize of 8, PH_MaxMTTDepth_Log2size_minus2 is set as follows.

[0804] PH_MaxMTTDepth_Log2size_minus2[5]=1 / / For block 128x128

[0805] PH_MaxMTTDepth_Log2size_minus2[4]=2 / / For block 16x16

[0806] PH_MaxMTTDepth_Log2size_minus2[3]=3 / / For block 32x32

[0807] PH_MaxMTTDepth_Log2size_minus2[2]=1 / / For block 16x16

[0808] Predict the value of the list among them.

[0809] In an embodiment, values ​​are predicted between them to reduce the rate dedicated to signaling. For example, PH_MaxMTTDepth[N] = PH_MaxMTTDepthResidual + PH_MaxMTTDepth[N-1].

[0810] For example:

[0811] PH_MaxMTTDepth[0]=1

[0812] PH_MaxMTTDepth[1]=1+PH_MaxMTTDepth[0]=2

[0813] PH_MaxMTTDepth[2]=1+PH_MaxMTTDepth[1]=3

[0814] PH_MaxMTTDepth[3]=-2+PH_MaxMTTDepth[2]=1

[0815] In this example, the values ​​transmitted for MaxMTTDepthResidual are 1, 1, 1, -2.

[0816] Predict from another head.

[0817] In this embodiment, the value is predicted because a similar value is transmitted in another header. Therefore, only the updated value needs to be transmitted. For example, PH_MaxMTTDepth[N] = PH_MaxMTTDepthResidual[N] + SPS_MaxMTTDepth[N].

[0818] Additionally, the overhead flag can be used to signal whether the value has been updated.

[0819] Based on the default prediction, only the offset is transmitted.

[0820] In this embodiment, the value is predicted based on whether or not a default value is transmitted. For example, the regular maxMttDepth is transmitted, and the table PH_MaxMTTDepth[] is set to equal the following.

[0821] PH_MaxMTTDepth = 2

[0822] PH_MaxMTTDepth[0]=-1+PH_MaxMTTDepth=1

[0823] PH_MaxMTTDepth[1]=0+PH_MaxMTTDepth=2

[0824] PH_MaxMTTDepth[2]=1+PH_MaxMTTDepth=3

[0825] PH_MaxMTTDepth[3]=-1+PH_MaxMTTDepth=1

[0826] Screen content encoding is disabled.

[0827] In the embodiments, the proposed method is adapted for screen content encoding. Specifically, the method is disabled for screen content. It has been found that when the content of a sequence contains screen content, it appears to be more difficult to predict partitioning parameters.

[0828] Alternatively, the number of IBC blocks (intra-block coded blocks - blocks that are decoded or encoded by referencing a sample region in the same frame as the block being decoded or encoded) can be calculated in the time domain region, and the method can be disabled for the current block depending on whether the number of IBC blocks is higher or lower than a threshold.

[0829] Alternatively, the number of blocks encoded using palette mode in the temporal region can be determined, and the method can be disabled for the current block depending on whether the number of palette-mode encoded blocks is higher or lower than a threshold. For example, if the number of palette-mode encoded blocks is higher than the threshold, this could indicate screen content, and thus the method is disabled. If palette mode is enabled for a video sequence, the method can be disabled. Alternatively, if palette mode is enabled for a video sequence, certain predetermined criteria can be specifically disabled. For example, in an embodiment, a criterion for determining whether a decrease in the maximum multitree depth MaxMttDepth exists can be disabled.

[0830] Disabled for low-latency configurations.

[0831] In this embodiment, the proposed method is adapted for a low-latency configuration. In particular, the method is disabled for such a configuration.

[0832] When the POC distance is too large (inter-frame reference frame)

[0833] In this embodiment, when the reference frame is an inter-frame frame, and the absolute POC difference between the current frame and the reference frame is less than or equal to 2, the maximum MTT depth is increased; otherwise, when the absolute POC difference between the current frame and the reference frame is greater than 2, the maximum MTT depth is not increased. Other limitations as described in other embodiments may also be considered.

[0834] The advantage is a significant reduction in coding time with minimal impact on coding efficiency. In fact, temporal correlation decreases when the temporal distance between frames is too large. Therefore, increasing the maximum MTT depth introduces additional coding time complexity for blocks where this increase is unnecessary.

[0835] When the reference frame is an inter-frame reference frame

[0836] In this embodiment, the maximum MTT depth is increased when the reference frame is an inter-frame frame and when the reference frame has a different temporal ID than the current frame; otherwise, the maximum MTT depth is not increased when the reference frames have the same temporal ID. Other limitations as described in other embodiments may also be considered.

[0837] The advantage is a significant reduction in coding time with minimal impact on coding efficiency.

[0838] For high rate

[0839] In this embodiment, the maximum MTT depth is not increased when the target bit rate is high or for a low QP. In a preferred embodiment, the maximum MTT depth is not increased when the QP of the sequence or GOP is greater than or equal to 22.

[0840] The advantage is a significant reduction in coding time with minimal impact on coding efficiency.

[0841] Use a flag to disable it.

[0842] In an embodiment, the proposed method is enabled or disabled due to at least one flag transmitted in at least one header.

[0843] Disable / enable the increase of MaxMttDepth.

[0844] In an embodiment, flags transmitted in at least one header can be used to enable or disable all possible increases in the maximum MTT value MaxMttDepth of the current block. One or more headers can be SPS, PPS, picture headers, or stripe headers.

[0845] The advantage of this embodiment is the flexibility in encoder implementation.

[0846] Disable / enable the increase of MaxMttDepth for QTDepthTempo.

[0847] In an embodiment, a flag transmitted in at least one header can be used to enable or disable all possible increases in the maximum MTT value MaxMttDepth of the current block when the current QT depth (QTDepth) is equal to the temporal average value (QTDepthTempo) of the QT depth. One or more headers can be SPS, PPS, image headers, or stripe headers.

[0848] The advantage of this embodiment is the flexibility in encoder implementation.

[0849] Disable / enable the increase of MaxMttDepth for QTDepthTempo-1.

[0850] In an embodiment, a flag transmitted in at least one header can be used to enable or disable all possible increases in the maximum MTT value MaxMttDepth of the current block when the current QT depth (QTDepth) is equal to the temporal average of the QT depth minus 1 (QTDepthTempo-1). One or more headers can be SPS, PPS, image headers, or stripe headers.

[0851] The advantage of this embodiment is the flexibility in encoder implementation.

[0852] Combination of the previous three embodiments

[0853] In this embodiment, three previous embodiments are combined. In this embodiment, a first flag enables or disables the increase of MaxMttDepth. In the example, the first flag enables the increase of MaxMttDepth, the second flag enables or disables the increase when the current QT depth (QTDepth) is equal to the time-domain average of the QT depth (QTDepthTempo), and the third flag enables or disables the increase when the current QT depth (QTDepth) is equal to the time-domain average of the QT depth minus 1 (QTDepthTempo-1).

[0854] The advantage of this embodiment is the additional flexibility in encoder implementation.

[0855] Disable / enable the reduction of MaxMttDepth.

[0856] In an embodiment, flags transmitted in at least one header can be used to enable or disable all possible reductions in the maximum MTT value MaxMttDepth of the current block. One or more headers can be SPS, PPS, picture headers, or stripe headers.

[0857] The advantage of this embodiment is the flexibility in encoder implementation.

[0858] Disable / enable the reduction of MaxMttDepth for QTDepthTempo.

[0859] In an embodiment, flags transmitted in at least one header can be used to enable or disable all possible reductions in the maximum MTT value MaxMttDepth of the current block when the current QT depth (QTDepth) is equal to the temporal average value (QTDepthTempo) of the QT depth. One or more headers can be SPS, PPS, image headers, or stripe headers.

[0860] The advantage of this embodiment is the flexibility in encoder implementation.

[0861] Disable / enable the reduction of MaxMttDepth for QTDepthTempo-1.

[0862] In an embodiment, a flag transmitted in at least one header can be used to enable or disable all possible reductions in the maximum MTT value MaxMttDepth of the current block when the current QT depth (QTDepth) is equal to the temporal average of the QT depth minus 1 (QTDepthTempo-1). One or more headers can be SPS, PPS, image headers, or stripe headers.

[0863] The advantage of this embodiment is the flexibility in encoder implementation.

[0864] Combination of the previous three embodiments

[0865] In this embodiment, three previous embodiments are combined. In this embodiment, a first flag enables or disables the reduction of MaxMttDepth. In the example, the first flag enables reduction, the second flag enables or disables reduction when the current QT depth (QTDepth) is equal to the time-domain average of the QT depth (QTDepthTempo), and the third flag enables or disables reduction when the current QT depth (QTDepth) is equal to the time-domain average of the QT depth minus 1 (QTDepthTempo-1).

[0866] The advantage of this embodiment is the additional flexibility in encoder implementation.

[0867] This method can be applied to other splitting patterns.

[0868] In one embodiment, other partitioning modes can be applied and adapted to this method.

[0869] All embodiments can be combined.

[0870] Unless otherwise explicitly stated, all described embodiments can be combined. In fact, many combinations are synergistic and can produce efficiency improvements greater than the sum of their parts.

[0871] In the embodiments, all previous embodiments relating to QT depth can alternatively be represented in terms of block size. Specifically, QT depth can be represented as block size. For example, for a CTU equal to 128, QT depth 0 corresponds to block 128×128, QT depth 1 corresponds to block 64×64, and so on.

[0872] Further (one or more) embodiments

[0873] For each block, predict the maximum multi-tree (MTT) depth in the time domain. Its value can be increased, decreased, or left unchanged according to the following rules.

[0874] When the reference frame is an inter-frame frame with a different temporal ID and the distance to the reference frame's Point of Concentration (POC) is less than or equal to 2, the maximum MTT depth can be incremented for blocks of the current frame. The maximum MTT depth can also be incremented when the reference frame is an intra-frame frame with the same temporal ID. For the relevant "current" frame, the maximum MTT depth of each node can be incremented or not incremented based on the following conditions:

[0875] • The current QT depth is equal to the average temporal QT depth minus 1, and the maximum temporal MTT depth is higher than the maximum MTT depth of the current frame, and the temporal average of the maximum MTT depth is equal to half of the maximum MTT depth of the image header of the reference frame, and if the reference frame is not an intra-frame reference frame.

[0876] • Alternatively, the current QT depth is equal to the average temporal QT depth, and the maximum temporal MTT depth is higher than the maximum MTT depth of the current frame, and the temporal average value of the MTT depth is higher than or equal to half of the maximum MTT depth of the image header of the reference frame.

[0877] If palette mode is disabled, or if the current QP is strictly lower than the QP of the reference frame, the maximum MTT depth can be decreased for blocks in the current frame. For related frames, the maximum MTT depth for each block can be decreased or not decreased based on the following conditions:

[0878] • When the maximum QT depth of the current frame is higher than the maximum MTT depth and the maximum temporal MTT depth is equal to the maximum MTT depth of the current frame, and when the average temporal QT depth is lower than the QT depth of the current frame.

[0879] • If the maximum time-domain MTT depth is strictly lower than the maximum multi-tree depth of the current node.

[0880] Additionally, when the reference frame is intra-frame and the current QT depth is equal to the average temporal QT depth minus 1 and the maximum temporal MTT depth is higher than the maximum MTT depth, and if the average temporal MTT depth is higher than or equal to the maximum MTT depth of the image header of the reference frame, the maximum MTT depth is reduced.

[0881] Realization of the invention

[0882] Figure 16Systems 191 and 195 according to embodiments of the present invention are illustrated, comprising at least one of an encoder 150 or a decoder 100 and a communication network 199. According to an embodiment, system 195 is used to process and provide content (e.g., video and audio content for display / output or streaming video / audio content) to a user, who accesses decoder 100, for example, through a user interface of a user terminal including decoder 100 or a user terminal capable of communicating with decoder 100. Such a user terminal may be a computer, mobile phone, tablet computer, or any other type of device capable of providing / displaying (provided / streamed) content to the user. System 195 receives / receives bitstream 101 (in the form of a continuous stream or signal (e.g., when displaying / outputting earlier video / audio)) via communication network 199. According to an embodiment, system 191 is used to process and store processed content, such as video and audio content processed for display / output / streaming at a later time. System 191 acquires / receives content comprising an original image sequence 151, which is received and processed by encoder 150 (including filtering using a deblocking filter according to the invention), and encoder 150 generates a bitstream 101 to be transmitted to decoder 100 via communication network 191. The bitstream 101 is then transmitted to decoder 100 in various ways, for example, it may be pre-generated by encoder 150 and stored as data in a storage device within communication network 199 (e.g., on a server or cloud storage device) until a user requests content (i.e., bitstream data) from the storage device, at which point the data is transferred / streamed from the storage device to decoder 100. System 191 may also include a content providing device for providing / streaming (e.g., by transmitting data of a user interface to be displayed on a user terminal) content information (e.g., a title of the content and other metadata / storage location data for identifying, selecting, and requesting the content) of the content stored in the storage device to the user, and for receiving and processing user requests for content such that the requested content can be transferred / streamed from the storage device to the user terminal. Alternatively, encoder 150 generates bitstream 101 and transmits / streams it directly to decoder 100 when the user requests content. Decoder 100 then receives bitstream 101 (or signal) and filters it using the deblocking filter according to the invention to obtain / generate video signal 109 and / or audio signal, which the user terminal then uses to provide the requested content to the user.

[0883] Any step of the method / process according to the invention or the function described herein can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the step / function can be stored on or transmitted via one or more hardware-based processing units as one or more instructions, code, programs, or computer-readable media, and executed by one or more hardware-based processing units, such as programmable computing machines, which can be PCs (“personal computers”), DSPs (“digital signal processors”), circuits, circuit systems, processors and memories, general-purpose microprocessors or central processing units, microcontrollers, ASICs (“application-specific integrated circuits”), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuit systems. Therefore, the term “processor” as used herein can refer to any of the foregoing structures or any other structures suitable for implementing the techniques described herein.

[0884] Embodiments of the present invention can also be implemented by various devices or apparatuses, including wireless mobile phones, integrated circuits (ICs), or JC sets (e.g., chipsets). Various components, modules, or units are described herein to illustrate functional aspects of the apparatus / apparatus configured to perform these embodiments, but they do not necessarily need to be implemented by different hardware units. Rather, 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 incorporating suitable software / firmware.

[0885] Embodiments of the present invention can be implemented by a computer of a system or device that reads and executes computer-executable instructions (e.g., one or more programs) recorded on a storage medium to perform one or more modules / units / functions in the above embodiments and / or includes one or more processing units or circuits for performing one or more functions in the above embodiments. Furthermore, the invention can be implemented by a method performed by the computer of the system or device, such as reading and executing computer-executable instructions from a storage medium to perform one or more functions in the above embodiments and / or controlling one or more processing units or circuits to perform one or more functions in the above embodiments. The computer may include a network of separate computers or separate processing units to read and execute the computer-executable instructions. The computer-executable instructions may be provided to the computer, for example, via a network or tangible storage medium from a computer-readable medium such as a communication medium. The communication medium may be a signal / bit stream / carrier. Tangible storage media are “non-transitory computer-readable storage media”, which may include, for example, hard disks, random access memory (RAM), read-only memory (ROM), storage devices for distributed computing systems, optical discs (e.g., compact discs (CDs), digital versatile optical discs (DVDs), or Blu-ray discs (BDs). TM One or more of the following: flash memory devices, memory cards, etc. At least some steps / functions may also be implemented in hardware by a machine or a dedicated component (such as an FPGA (“Field Programmable Gate Array”) or an ASIC (“Application-Specific Integrated Circuit”)).

[0886] Figure 17This 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 lightweight portable device. The computing device 3600 includes a communication bus connected to: - a central processing unit (CPU) 3601, such as a microprocessor; - a random access memory (RAM) 3602 for storing executable code of methods according to embodiments of the present invention and registers adapted to record variables and parameters required for implementing methods for encoding or decoding at least a portion of an image according to embodiments of the present invention, the storage capacity of which may be expanded, for example, by an optional RAM connected to an expansion port; - a read-only memory (ROM) 3603 for storing a computer program for implementing embodiments of the present invention; - a network interface (NET) 3604, 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 a set of different network interfaces (e.g., wired and wireless interfaces, or different types of wired or wireless interfaces). Under the control of a software application running on the CPU 3601, data packets are written to or read from the network interface for transmission or reception; a user interface (UI) 3605 can be used to receive input from a user or display information to a user; a hard disk (HD) 3606 can be configured as a mass storage device; and an input / output module (IO) 3607 can be used to receive / send data from / to external devices (such as video sources or displays). Executable code can be stored in ROM 3603, on HD 3606, or on a removable digital medium such as a disk. According to a variant, the executable code of the program can be received via NET 3604 through a communication network to be stored in one of the storage components (such as HD 3606) of the computing device 3600 before execution. The CPU 3601 is adapted to control and direct the execution of instructions or portions of software code of one or more programs according to embodiments of the present invention, the instructions being stored in one of the aforementioned storage components. For example, after power-on, the CPU 3601 can execute software application-related instructions from the main RAM memory 3602 after the instructions have been loaded from the program ROM 3603 or HD 3606. This software application, when executed by the CPU 3601, causes the steps of the method according to the invention to be performed.

[0887] It should also be understood that, according to other embodiments of the invention, a decoder according to the above embodiments is provided in a user terminal such as a computer, mobile phone (cellular phone), tablet, or any other type of device capable of providing / displaying content to a user (e.g., a display device). According to yet another embodiment, an encoder according to the above embodiments is provided in an image capture device, which further includes a camera, video camera, or webcam (e.g., a closed-circuit television or video surveillance camera) for capturing and providing content for encoding by the encoder. See below. Figure 18 and Figure 19 Here are two such examples.

[0888] Figure 18 This is a diagram illustrating a network camera system 3700 including a network camera 3702 and a client device 202.

[0889] The network camera 3702 includes a camera unit 3706, an encoding unit 3708, a communication unit 3710, and a control unit 3712.

[0890] The network camera 3702 and the client device 202 are interconnected via network 200 so that they can communicate with each other.

[0891] The camera unit 3706 includes a lens and an image sensor (e.g., a charge-coupled device (CCD) or complementary metal-oxide-semiconductor (CMOS)), and captures an image of the object and generates image data based on the image. The image can be a still image or a video image.

[0892] The encoding unit 3708 encodes the image data by using the encoding method described above or a combination of the encoding methods described above.

[0893] 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.

[0894] In addition, the communication unit 3710 receives commands from the client device 202. These commands include those for setting parameters for encoding by the encoding unit 3708.

[0895] The control unit 3712 controls other units in the network camera 3702 according to the commands received by the communication unit 3710.

[0896] The client device 202 includes a communication unit 3714, a decoding unit 3716, and a control unit 3718.

[0897] The communication unit 3714 of the client device 202 transmits commands to the network camera 3702.

[0898] In addition, the communication unit 3714 of the client device 202 receives encoded image data from the webcam 3702.

[0899] The decoding unit 3716 decodes the encoded image data by using the decoding method described above or a combination of the decoding methods described above.

[0900] The control unit 3718 of the client device 202 controls other units in the client device 202 based on user operations or commands received by the communication unit 3714.

[0901] The control unit 3718 of the client device 202 controls the display device 2120 to display the image decoded by the decoding unit 3716.

[0902] The control unit 3718 of the client device 202 also controls the display device 2120 to display the values ​​of the parameters for specifying the network camera 3702 (including the parameters for encoding the encoding unit 3708) in a GUI (graphical user interface).

[0903] The control unit 3718 of the client device 202 also controls other units in the client device 202 based on user operation input to the GUI displayed on the display device 2120.

[0904] The control unit 3718 of the client device 202 controls the communication unit 3714 of the client device 202 based on user operation input to the GUI displayed on the display device 2120, so as to transmit commands for specifying the values ​​of parameters of the network camera 3702 to the network camera 3702.

[0905] Figure 19 This is a diagram illustrating a smartphone 3800.

[0906] The smartphone 3800 includes a communication unit 3802, a decoding / encoding unit 3804, a control unit 3806, and a display unit 3808.

[0907] The communication unit 3802 receives encoded image data via the network 200.

[0908] The decoding / encoding unit 3804 decodes the encoded image data received by the communication unit 3802.

[0909] The decoding / encoding unit 3804 decodes / encodes the encoded image data using the decoding method described above.

[0910] The control unit 3806 controls other units in the smartphone 3800 based on user operations or commands received from the communication unit 3802.

[0911] For example, control unit 3806 controls display unit 3808 to display images decoded by decoding / encoding unit 3804. Smartphone 3800 may also include sensor 3812 and image recording device 3810. In this way, smartphone 3800 can record images and encode them (using the methods described above).

[0912] The smartphone 3800 can then (using the methods described above) decode the encoded image and display it via the display unit 3808, or transmit it to another device via the communication unit 3802 and the network 200.

[0913] Replacement and modification

[0914] While the invention has been described with reference to embodiments, it should be understood that the invention is not limited to the disclosed embodiments. Those skilled in the art will understand 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 this specification (including any appended claims, abstract, and drawings) and / or all steps of any method or process so disclosed can be combined in any combination other than mutually exclusive combinations of at least some of such features and / or steps. Unless otherwise expressly stated, the features disclosed in this specification (including any appended claims, abstract, and drawings) can be replaced by alternative features serving the same, equivalent, or similar purpose. Thus, unless otherwise expressly stated, the disclosed features are merely one example of equivalent or similar features in a general series.

[0915] It should also be understood that any result of the above comparisons, determinations, evaluations, selections, executions, processes, or considerations (e.g., selections made during encoding or filtering processes) may be indicated in or determined / inferred from data in the bitstream (e.g., flags or data indicating the result), such that the indicated or determined / inferred result may be used for processing rather than actually being compared, determined, evaluated, selected, executed, processed, or considered, for example, during decoding processes.

[0916] In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite articles "a" or "an" do not exclude plural. The fact that different features are recited only in mutually different dependent claims does not indicate that a combination of these features cannot be used advantageously.

[0917] The reference numerals appearing in the claims are for illustrative purposes only and should not be construed as limiting the scope of the claims.

Claims

1. A method for encoding image data into or decoding image data from said bit stream, said bit stream including data for instructing the partitioning of the image data into multiple blocks according to a coding tree, wherein the blocks in the coding tree can be partitioned according to one or more types of splitting, said method comprising: For the current block to be decoded, at least one other parameter associated with the image data is used to obtain a parameter indicating the maximum partition depth of at least one split type.

2. The method according to claim 1, wherein, The maximum partition depth is the maximum multi-tree partition depth used to indicate the maximum partition depth of multiple split 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 of the current block.

4. The method according to claim 4, wherein, The maximum partition depth indicator is used to indicate the maximum partition depth of binary tree splits and ternary tree splits, representing the maximum multi-tree partition depth.

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 partition depth is further based on a comparison of the parameters with reference values.

7. The method according to claim 6, wherein, The reference value is communicated via a signal in the header of the bit stream.

8. The method according to claim 6 or claim 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 relates to 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 average quadtree depth determined from the at least one region in 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 in another frame.

12. The method according to claim 9, wherein, The reference value is based on the maximum or average multi-tree depth determined from the at least one region in another frame.

13. The method according to any one of claims 9 to 12, comprising: The current maximum multitree depth is increased according to one or more rules or conditions based on the quadtree depth value and the reference depth value to obtain the maximum multitree depth of the current block.

14. The method of claim 13, comprising: When the quadtree depth value matches the reference quadtree depth value, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

15. The method according to claim 13 or 14, comprising: When the quadtree depth value matches the reference value minus 1, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

16. The method according to claim 14 or 15, wherein, Additionally, it is required that the reference quadtree value match the minimum quadtree value associated with the region of the same or more reference frames, in order to increase the current maximum multitree depth.

17. The method according to claims 14 to 16, wherein, Additionally, it is required that the reference quadtree value be matched with 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: The current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block based on one or more rules or conditions based on the quadtree depth value and the reference depth value.

19. The method of claim 16, comprising: When the quadtree depth value does not match the reference quadtree depth value, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

20. The method according to claim 16 or claim 17, comprising: When the quadtree depth value does not match the reference quadtree depth value minus 1, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

21. The method of claim 16, comprising: When the quadtree depth value is greater than the reference depth value, the current maximum multitree depth of the current block is reduced.

22. The method of claim 19, comprising: The reduction of the current maximum multitree depth of the current block when the quadtree depth value is greater than the reference depth value is only applied when the reference depth value is obtained from a region of code in another frame with higher quality than the current frame.

23. The method of claim 16, comprising: When the quadtree depth value is less than the reference depth value minus the offset, the current maximum multitree depth of the current block is reduced.

24. The method according to claim 23, wherein, The offset is 1.

25. The method according to claim 23 or 24, comprising: The reduction of the current maximum multitree depth of the current block is applied only when the reference depth value is obtained from a region of code in another frame with lower quality compared to the current frame.

26. The method according to any one of claims 16 to 25, comprising: When the reference depth value is less than the quadtree depth value, the current maximum multitree depth of the current block is reduced.

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, When the maximum multi-tree depth is reduced, the maximum multi-tree depth is set to zero.

29. The method according to any one of claims 9 to 12, comprising: The maximum multi-tree depth of the current block is obtained by using a function of the quadtree depth value and a reference quadtree depth value.

30. The method according to claim 29, wherein, The function is any one of the following: MaxMttDepth=2*QTDepthTempo-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 reference quadtree depth value.

31. The method according to any one of claims 1 to 30, wherein, The maximum multi-tree depth of the current block is obtained by using the maximum multi-tree depth value associated with one or more regions of another frame.

32. The method according to claim 31, wherein, The condition for modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block is based on a comparison between the maximum multi-tree depth signaled in the bitstream and the maximum multi-tree depth value associated with one or more regions in another frame.

33. The method of claim 32, comprising: The current maximum multi-tree depth of the current block is increased based on the fact that the maximum multi-tree depth signaled in the bitstream is less than the maximum multi-tree depth value associated with one or more regions in another frame.

34. The method according to claim 33, wherein, Increasing the current maximum multi-tree depth of the current block depends on the average multi-tree depth value associated with one or more regions in 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, If the average multitree depth value associated with one or more regions of another frame is greater than or equal to half of the maximum multitree depth of the current frame, increase the current maximum multitree depth of the current block.

37. The method of claim 35, wherein, If the average multitree depth value associated with one or more regions of another frame is greater than half of the maximum multitree depth of the current frame, increase the current maximum multitree depth of the current block.

38. The method according to claim 36 or 37, wherein, The maximum multi-tree depth of the current frame is halved by dividing by 2.

39. The method according to claim 36 or 37, wherein, The maximum multi-tree depth of the current frame is halved by shifting it one bit to the right.

40. The method according to claim 39, wherein, Before shifting to the right, add an offset to the maximum multi-tree depth of the current frame.

41. The method according to claim 34, wherein, The increase is based on a comparison between the average multi-tree depth value associated with one or more regions of another frame and the maximum multi-tree depth of another frame.

42. The method according to claim 41, wherein, If the average multitree depth value associated with one or more regions of another frame is greater than or equal to half of the maximum multitree depth of the other frame, increase the current maximum multitree depth of the current block.

43. The method according to claim 41, wherein, If the average multi-tree depth value associated with one or more regions of another frame is greater than half of the maximum multi-tree depth of the other frame, increase the current maximum multi-tree depth of the current block.

44. The method according to claim 42 or 43, wherein, The maximum multi-tree depth in another frame is halved by dividing by 2.

45. The method according to claim 42 or 43, wherein, The maximum multi-tree depth in another frame is halved by shifting it one bit to the right.

46. ​​The method according to claim 45, wherein, Before shifting to the right, add the offset to the maximum multi-tree depth of the other frame.

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 of claim 34, wherein if the average multi-tree depth value associated with one or more regions of another frame is equal to the maximum multi-tree depth of the other frame, the current maximum multi-tree 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 of claim 35, wherein, When the quadtree depth value matches a reference quadtree depth value minus 1, 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 the maximum multitree depth of the current frame.

51. The method according to claim 35, wherein, When the quadtree depth value matches a reference quadtree depth value minus 1, 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 of the maximum multitree depth of the current frame.

52. The method according to claim 35, wherein, When the quadtree depth value matches a reference quadtree depth value minus 1, 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 multi-tree 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 multi-tree depth of the current frame is halved by shifting it one bit to the right.

55. The method according to claim 54, wherein, Before shifting to the right, add an offset to the maximum multi-tree depth of the current frame.

56. The method of claim 41, comprising: When the quadtree depth value matches a reference quadtree depth value minus 1, 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 the maximum multitree depth of the other frame.

57. The method of claim 41, comprising: When the quadtree depth value matches a reference quadtree depth value minus 1, 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 of the maximum multitree depth of the other frame.

58. The method of claim 41, comprising: When the quadtree depth value matches a reference quadtree depth value minus 1, 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 other frame.

59. The method according to any one of claims 56 to 58, wherein, The maximum multi-tree depth in another frame is halved by dividing by 2.

60. The method according to any one of claims 56 to 58, wherein, The maximum multi-tree depth in another frame is halved by shifting it one bit to the right.

61. The method according to claim 60, wherein, Before shifting to the right, add the offset to the maximum multi-tree depth of the other frame.

62. The method of claim 32, comprising: The current maximum multi-tree depth of the current block is reduced based on the fact that the maximum multi-tree depth signaled in the bitstream is greater than the maximum multi-tree depth value associated with one or more regions in another frame.

63. The method of claim 32, comprising: The current maximum multi-tree depth of the current block is 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 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 of claim 32, comprising: When the maximum multi-tree depth of the current frame matches the maximum multi-tree depth value associated with one or more regions in another frame, the current maximum multi-tree depth of the current block is reduced.

65. The method according to claim 64, wherein, The additional condition for decreasing the current maximum multitree depth of the current block includes: the maximum multitree depth of the current frame matches the maximum multitree depth of another frame.

66. The method according to any one of claims 62 to 65, wherein, Additional conditions for decreasing the current maximum multi-tree depth include one or more of the following: i) The sequence including the current frame has a resolution higher than the 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.

67. The method according to claim 62, wherein, If the current maximum multi-tree depth of the current block is greater than the maximum multi-tree depth value associated with one or more regions in another frame, the current maximum multi-tree depth is further reduced.

68. The method according to any one of claims 62 to 66, comprising: When the current maximum multi-tree depth of the current block is set to be equal to the maximum multi-tree depth value associated with one or more regions of another frame, the current maximum multi-tree depth is reduced.

69. The method of claim 32, comprising: 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, the current maximum multi-tree depth of the current block is increased.

70. The method according to claim 32, wherein, The condition for adjusting the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block based on a comparison between the maximum multi-tree depth signaled in the bitstream and a maximum multi-tree depth value associated with one or more regions of another frame, as claimed in any one of claims 33 to 39, is a first condition, and The condition based on the comparison of the quadtree depth value with the reference value according to any one of claims 8 to 30 is the second condition, and Specifically, the adjustment of the current maximum multi-tree depth is applied when at least both the first and second conditions are met.

71. The method according to claim 70, wherein, The third condition is that the maximum multi-tree depth signaled by another frame at a higher level is less than the maximum multi-tree depth signaled by the frame for the current block at a higher level, and if the third condition is not met, the maximum multi-tree depth is not adjusted.

72. The method according to claim 71, wherein, The third condition is that the maximum multi-tree depth signaled by another frame at a higher level is less than or equal to the maximum multi-tree depth signaled by the frame at a higher level for the current block.

73. The method according to claim 71 or 72, wherein, The third condition is considered only when the size of the coding tree unit 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 the strip, image, and sequence levels, and is indicated by a signal in the header.

75. The method according to any one of claims 32 to 74, wherein, If the image data contains screen content, the modification of the maximum multi-tree depth is disabled.

76. The method according to claim 75, wherein, The image data contains screen content if the number of blocks encoded using palette mode in the current frame region or in one or more regions of another frame intersects with a predetermined value, and / or if palette mode is enabled in the bit stream.

77. The method according to any one of claims 9 to 76, wherein, The region or region in another frame is a region parallel to the current block.

78. The method according to claim 77, wherein, The region in another frame, or a region, comprises multiple blocks at different locations.

79. The method according to claim 77 or 78, wherein, The region in another frame, or a region, is a region that is larger in size compared to the current block.

80. The method according to claim 77, wherein, The region or region in another frame that is larger in size than the current block is a coding tree unit, or 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 a region in another frame.

82. The method according to claim 77, wherein, The region or a region encompasses the entire area of ​​the reference frame.

83. The method according to any one of claims 77 to 82, wherein, The other frame is a frame with the same temporal ID as the current frame that includes the current block.

84. The method according to claim 83, wherein, Frames with the same time domain ID are the closest frames with the same time domain ID.

85. The method according to any one of claims 77 to 84, wherein, The other frame is a frame with the same quantization parameters as the current frame that includes the current block.

86. The method according to any one of claims 77 to 84, wherein, The other frame is used for temporal motion vector prediction.

87. The method according to any one of claims 77 to 84, wherein, The other frame is the frame that is closest to the current frame that includes 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 a first other frame and a second region from a second other frame.

89. The method according to claim 9, wherein, The other frame corresponds to an intraframe.

90. The method of claim 89, comprising: The current maximum multitree depth is modified to obtain the maximum multitree depth of the current block based on one or more rules or conditions based on the quadtree depth value associated with the intra-frame and the reference depth value.

91. The method of claim 90, comprising: When the quadtree depth value matches the reference quadtree depth value associated with the intraframe, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block.

92. The method of claim 90, comprising: When the quadtree depth value matches the reference quadtree depth value minus 1, the current maximum multitree depth is not increased to obtain the maximum multitree depth of the current block.

93. The method of claim 90, comprising: When the quadtree depth value matches the reference quadtree depth value minus 1, the current maximum multitree depth is reduced to obtain the maximum multitree depth of the current block.

94. The method according to claim 93, wherein, Further conditions for modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block are based on a comparison between the maximum multi-tree depth signaled in the bitstream and a reference maximum multi-tree depth value associated with one or more regions of the intraframe.

95. The method of claim 94, comprising: The current maximum multi-tree depth of the current block is reduced based on the fact that the maximum multi-tree depth signaled in the bitstream is less than a reference maximum multi-tree depth value associated with one or more regions of the intraframe.

96. The method according to claim 93, wherein, Further conditions for modifying the current maximum multi-tree depth to obtain the maximum multi-tree depth of the current block are based on a comparison between the maximum multi-tree depth signaled in the bitstream and the maximum multi-tree depth of the intra-frame.

97. The method of claim 96, comprising: The current maximum multi-tree depth of the current block is reduced based on the fact that the maximum multi-tree depth signaled in the bitstream is less than the maximum multi-tree depth of the intra-frame.

98. The method according to any one of claims 89 to 97, wherein, The current maximum multi-tree depth is modified to obtain the maximum multi-tree depth of the current block based on a comparison between a reference average multi-tree depth value associated with one or more regions of the intra-frame and the maximum multi-tree depth of the intra-frame.

99. The method according to claim 98, wherein, 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, the current maximum multitree depth of the current block is reduced.

100. The method according to claim 98, wherein, 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, the current maximum multitree depth of the current block is reduced.

101. The method according to any one of claims 89 to 97, wherein, The current maximum multi-tree depth is modified to obtain the maximum multi-tree depth of the current block based on a comparison between a reference average multi-tree depth value associated with one or more regions of the intra-frame and a maximum multi-tree depth value associated with one or more regions of the intra-frame.

102. The method according to claim 101, wherein, 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, the current maximum multitree depth of the current block is reduced.

103. The method according to claim 101, wherein, 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, the current maximum multitree depth of the current block is reduced.

104. The method of claim 90, comprising: When the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block based on a comparison between the maximum multitree depth signaled in the bitstream, the maximum multitree depth of the intraframe, and a reference maximum multitree depth value associated with one or more regions of the intraframe.

105. The method according to claim 104, wherein, The current maximum multi-tree depth is increased when the maximum multi-tree depth signaled in the bitstream is equal to the maximum multi-tree depth of the intraframe, and the maximum multi-tree depth signaled in the bitstream is less than a reference maximum multi-tree depth value associated with one or more regions of the intraframe.

106. The method of claim 90, wherein when the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased to obtain the maximum multitree depth of the current block based on a comparison of a reference average multitree depth value associated with one or more regions of the intraframe and the maximum multitree depth of the intraframe.

107. The method according to claim 106, wherein, When the reference average multi-tree depth value associated with one or more regions of the intraframe is equal to the maximum multi-tree depth of the intraframe, the current maximum multi-tree depth is increased.

108. The method according to claim 106, wherein, When the reference average multi-tree depth value associated with one or more regions of the intra-frame is less than or equal to the maximum multi-tree depth of the intra-frame, the current maximum multi-tree depth is increased.

109. The method of claim 90, wherein when the quadtree depth value matches a reference quadtree depth value minus 1, the current maximum multitree depth is increased 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 a reference maximum multitree depth value associated with one or more regions of the intraframe.

110. The method according to claim 109, wherein, When the reference average multi-tree depth value associated with one or more regions of the intra-frame is equal to the reference maximum multi-tree depth value associated with one or more regions of the intra-frame, the current maximum multi-tree depth is increased.

111. The method according to claim 109, wherein, When the reference average multi-tree depth value associated with one or more regions of the intra-frame is less than or equal to the reference maximum multi-tree depth value associated with one or more regions of the intra-frame, the current maximum multi-tree depth is increased.

112. The method according to claim 91, wherein, Increase the current maximum multi-tree depth when all inter-frames in the sequence including the current frame have the same maximum multi-tree depth.

113. The method according to claim 89, wherein, Based on one or more rules or conditions, the current maximum multi-tree depth is not increased when another frame corresponds to an intra-frame.

114. The method according to claim 113, wherein, When the intraframe has a different temporal ID than the current frame that includes the current block, the current maximum multi-tree depth is not increased.

115. The method according to claim 113 or claim 114, wherein, When the difference in image order count (POC) between the current frame and the intra-frame is less than a threshold, the current maximum multi-tree depth is not increased.

116. The method according to claim 115, wherein, The threshold corresponds to a POC difference of 2 or 3 between the current frame and the intra-frame.

117. The method according to claim 86, wherein, When another frame is used for temporal motion vector prediction, the current maximum multi-tree depth is modified according to one or more rules or conditions.

118. The method according to claim 117, wherein, When the difference in image order count (POC) between the current frame and the frame used for temporal motion vector prediction is less than or equal to 2, the current maximum multi-tree depth is increased.

119. The method according to claim 117 or claim 118, wherein, When the frame used for temporal motion vector prediction is a frame with a different temporal ID than the current frame that includes the current block, the current maximum multi-tree depth is increased.

120. The method according to any one of claims 117 to 119, wherein, When the quantization parameter of the sequence including the current frame is greater than or equal to 2, the current maximum multi-tree depth is not increased.

121. The method according to any one of claims 5 to 12, wherein, In the bit stream, multiple maximum multi-tree depth values ​​are signaled, and obtaining the maximum multi-tree depth of the current block includes determining one of the signaled values ​​as the maximum multi-tree depth of the current block.

122. The method according to claim 121, wherein, The plurality of maximum multi-tree depth values ​​are signaled in one or more of the sequence parameter set, image parameter set, image header, and strip 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 claim 121 or 122, wherein, At least one of the plurality of maximum multi-tree depth values ​​is obtained by predicting the value of the at least one maximum multi-tree depth value from another of the plurality of maximum multi-tree depth values.

125. The method according to claim 121 or 122, wherein, The maximum multi-tree depth value is determined using a value signaled in the header or parameter set.

126. The method according to claim 121 or 122, wherein, At least one of the plurality of maximum multitree depth values ​​is obtained by applying a predetermined offset to the default value.

127. The method according to claim 126, wherein, The default value is communicated via a signal in the bit stream.

128. An apparatus for encoding image data into a bitstream, the apparatus being configured to perform the method according to any one of claims 1 to 127.

129. An apparatus for decoding image data from a bitstream, the apparatus being configured to perform the method according to any one of claims 1 to 127.

130. A computer program configured to, when executed, cause the method according to any one of claims 1 to 127 to be performed.