Derivation of Transformation Parameters Based on Block Segmentation
By introducing a non-power-2 segmentation tree (NPT-T) into video encoding and decoding, the problem of difficult to deal with non-power-2 video block segmentation in the prior art is solved, and more efficient video encoding and decoding is achieved and decoding complexity is reduced.
Patent Information
- Application Number
- CN202080014405.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-02-15
- Filing Date
- 2020-02-17
- Publication Date
- 2025-06-20
- Estimated Expiration
- 2040-02-17
AI Technical Summary
Existing video encoding and decoding technologies are difficult to effectively handle non-power-second segmentation of video blocks, resulting in low encoding efficiency and increased decoding complexity.
A video processing method is proposed to segment and encode video blocks by enabling a non-power of two segmentation tree (NPT-T), allowing the width or height of the video block or its sub-blocks to be non-power of two integers.
Through the NPT-T segmentation tree, the efficiency of video encoding and decoding can be improved, the decoding complexity can be reduced, and the characteristics of different video blocks can be adapted to improve the encoding quality.
Smart Images

Figure CN113439441B_ABST
Abstract
Description
[0001] In accordance with the applicable patent laws and / or in accordance with the rules of the Paris Convention, this application aims to claim the priority and benefits of International Patent Application No. PCT / CN2019 / 075170 filed on February 15, 2019 in a timely manner. The entire disclosure of International Patent Application No. PCT / CN2019 / 075170 is incorporated by reference as part of the disclosure of this application. Technical Field
[0002] This document relates to video and image encoding and decoding. Background Art
[0003] Digital video accounts for the largest bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that the bandwidth demand for digital video usage will continue to grow. Summary of the Invention
[0004] This document discloses video encoding and decoding tools. In one exemplary aspect, the tools enable a video encoder and decoder to encode or decode a video bitstream, wherein in the video bitstream, video blocks are encoded using partitions of non-power-of-two integer sizes.
[0005] In one exemplary aspect, a method of video processing is disclosed. The method includes: enabling the use of a non-power-of-two partition tree (NPT-T) for the conversion between a video and a bitstream representation of the video, wherein the NPT-T includes dividing a video block into one or more sub-blocks of a smaller size of the video block, and the width or height of at least one sub-block has a pixel size that is a non-power-of-two integer; and performing the conversion using the NPT-T.
[0006] In another exemplary aspect, another method of video processing is disclosed. The method includes: applying a transform size limit to the conversion between a sub-video block and a bitstream representation of the sub-video block, wherein the sub-video block is divided from a video block and has a pixel size that is a non-power-of-two (NPT) integer; and performing the conversion using the transform size limit.
[0007] In yet another exemplary aspect, another method of video processing is disclosed. The method includes: selectively applying a conversion between a video block and a bitstream representation of the video block based on a usage rule for using a non-power-of-two tree (NPT-T) for dividing the video block, wherein the video block or one or more sub-blocks of the video have a pixel size that is a non-power-of-two (NPT) integer; and performing the conversion using the usage rule.
[0008] In another example aspect, another method of video processing is disclosed. The method includes: selectively applying a non-power-of-two tree (NPT-T) partition of a video block to a conversion between the video block and a bitstream representation of the video block based on a usage indication, wherein the video block or one or more smaller-sized sub-blocks of the video have a pixel size that is a non-power-of-two (NPT) integer; and performing the conversion corresponding to the usage indication.
[0009] In another example aspect, another method of video processing is disclosed. The method includes: determining whether the use of a non-power-of-two partition tree (NPT-T) is enabled or disabled for a conversion between a first block of a video and a bitstream representation of the first block of the video, wherein the NPT-T includes partitioning the first block into a plurality of smaller-sized sub-blocks of the first block, and the width and / or height of at least one of the sub-blocks has a size that is a non-power-of-two integer; and in response to determining that the NPT-T is enabled, performing the conversion based on the NPT-T.
[0010] In another example aspect, another method of video processing is disclosed. The method includes: partitioning a first block of a video into a plurality of sub-blocks including a first sub-block, wherein at least one of the width (Wi) and height (Hi) of the block size of the first sub-block is a non-power-of-two integer; determining transform parameters associated with a transform block of the first sub-block for a conversion between the first sub-block and a bitstream representation of the first sub-block, wherein one or more of the width (TWi) and height (THi) of the block size of the transform block is less than the width (Wi) and height (Hi) of the first sub-block, and at least one of TWi or THi is a power of two; and performing the conversion by using the transform parameters.
[0011] In another example aspect, another method of video processing is disclosed. The method includes: determining whether non-power-of-two partition tree (NPT-T) partitioning is enabled or disabled for a conversion between a video and a bitstream representation of the video, wherein the NPT-T partitioning includes partitioning a first block of the video into a plurality of smaller-sized sub-blocks of the first block, and the width (Wi) and / or height (Hi) of at least one of the sub-blocks is a non-power-of-two integer; in response to determining that the NPT-T partitioning is allowed, determining restrictions associated with the use of the NPT-T partitioning; and performing the conversion based on the determination.
[0012] In another example aspect, the above method may be implemented by a video encoder device or a video decoder device including a processor.
[0013] In yet another example aspect, these methods may be stored on a computer-readable program medium in the form of processor-executable instructions.
[0014] These and other aspects are further described in this document. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 Shows an example of MB partitioning in H.264 / AVC.
[0016] Figure 2 Shows an example pattern for dividing a coding block into prediction blocks.
[0017] Figures 3A - 3B Shows a coded tree with its partitioning and the corresponding quadtree.
[0018] Figures 4A - 4B Provides an example illustration of the QTBT structure.
[0019] Figure 5 Shows an example of allowed partitioning in video coding.
[0020] Figure 6 Shows an example of allowed partitioning between a parent partition (solid line) and a current partition (dashed line).
[0021] Figures 7A - 7B As follows. Figure 7A Shows an example of the EQT horizontal mode. Figure 7B Shows an example of the EQT vertical mode.
[0022] Figure 8 Shows the signaling structure of quadtree binary tree (QTBT) plus EQT partitioning.
[0023] Figures 9A - 9H Shows an example of asymmetric quadtree partitioning.
[0024] Figures 10A - 10B Shows an example of pentatree partitioning.
[0025] Figure 11 Shows an example of QTBT partitioning.
[0026] Figure 12 Shows different partitionings used in video coding.
[0027] Figure 13A Shows an example where PIdx0 and PIdx1 have the same size.
[0028] Figure 13B Shows an example where PIdx0 and PIdx2 have the same size.
[0029] Figure 13C Shows an example where K = 5 and L0 = 4.
[0030] Figure 14 Shows an example of non-power-of-two tree (NPT-T) partitioning (where K = 5, L0 = 2, L1 = 2).
[0031] Figures 15A - 15B An example of (OffsetX, OffsetY) set to (0, 0) is shown.
[0032] Figures 16A - 16B Another example of (OffsetX, OffsetY) set to (0, 0) is shown.
[0033] Figure 17 An example of a hardware platform for implementing the techniques described in this document is shown.
[0034] Figure 18 It is a flowchart of an example method of video processing.
[0035] Figure 19 It is a flowchart of an example method of video processing.
[0036] Figure 20 It is a flowchart of an example method of video processing.
[0037] Figure 21 It is a flowchart of an example method of video processing. Detailed Description
[0038] This document provides various techniques that can be used by a decoder of a video bitstream to improve the quality of decompressed or decoded digital video. In addition, a video encoder can also implement these techniques during the encoding process to reconstruct decoded frames for further encoding.
[0039] For ease of understanding, section headings are used in this document, and the embodiments and techniques are not limited to the corresponding sections. Thus, embodiments from one section can be combined with embodiments from other sections.
[0040] 1. Overview
[0041] This document relates to image / video coding and decoding, specifically to the transform design of blocks whose width or height is not equal to a power of two. More specifically, for such a segmentation structure, how to avoid introducing additional transform / quantization matrices. It can be applied to existing video coding standards (such as HEVC) or standards to be completed (general video coding). It may also be applicable to future video coding standards or video codecs.
[0042] 2. Brief Discussion
[0043] Video coding standards have mainly evolved from the well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262 / MPEG-2 video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure, in which temporal prediction plus transform coding is utilized. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Exploration Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established, working on the VVC standard with the goal of reducing the bitrate by 50% compared to HEVC.
[0044] 2.1 Split tree structure in H.264 / AVC
[0045] The terms used in H.264 / AVS are macroblock and MB mode / 8x8 mode (split). A macroblock is the unit into which each picture / strip is divided, and the intra / inter mode is applied for determination. And the split defines the level at which motion information is signaled.
[0046] The core of the coding / decoding layer in H.264 / AVC is the macroblock, which contains a 16x16 block of luminance samples and, in the case of 4:2:0 color sampling, two corresponding 8x8 blocks of chrominance samples.
[0047] 2.1.1 H.264 / AVC Main Profile
[0048] Intra-coded blocks use spatial prediction to exploit the spatial correlation between pixels. Two splits are defined: 16x16 and 4x4.
[0049] Inter-coded blocks use temporal prediction by estimating the motion between pictures, rather than spatial prediction. Motion can be estimated independently for a 16x16 macroblock or any of its macroblock splits (16x8, 8x16, 8x8). A syntax element (MB mode) is signaled to indicate whether 16x16, 16x8, 8x16, or 8x8 is selected. If 8x8 is selected, another syntax element (8x8 mode) is further signaled to indicate whether 8x8, 8x4, 4x8, 4x4 is used (see Figure 1 ). Only one motion vector (MV) is allowed per split.
[0050] Figure 1 Shows an example of MB partitioning in H.264 / AVC.
[0051] Only uses 4x4 transform.
[0052] 2.1.2 H.264 / AVC High Profile
[0053] In the High Profile, 8x8 transform and I_8x8 (8x8 intra prediction) are introduced. For intra-coded macroblocks, the transform size is fixed. I_16x6 and I_4x4 use 4x4 transform; I_8x8 uses 8x8 transform.
[0054] For inter-coded macroblocks, 4x4 or 8x8 transform can be selected. However, the transform size cannot exceed the partitioning size. For example, if a macroblock selects 8x8 partitioning and further selects 8x4 submode, only 4x4 transform can be applied. If a macroblock selects 16x16, 16x8, 8x16, 8x8 partitioning and 8x8 submode, 4x4 or 8x8 transform can be selected.
[0055] 2.1.3 Overview
[0056] Mode selection is determined at the macroblock level. The transform size should not be greater than the partitioning size.
[0057] 2.2 Partitioning Tree Structure in HEVC
[0058] In HEVC, the coding tree unit (CTU, also known as the largest coding unit LCU) is partitioned into coding units (CUs) by using a quadtree structure represented as a coding tree to adapt to various local characteristics. The decision of whether to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Depending on the PU partitioning type, each CU can be further partitioned into one, two, or four PUs. Within a PU, the same prediction process is applied, and the relevant information is sent to the decoder based on the PU. After obtaining the residual block by applying the prediction process based on the PU partitioning type, the CU can be partitioned into transform units (TUs) according to another quadtree structure similar to the coding tree of the PU. A key feature of the HEVC structure is that it has a multi-partitioning concept, including CUs, PUs, and TUs.
[0059] In the following, various features involved in the hybrid video coding of HEVC are emphasized as follows.
[0060] 1) Coding tree units and coding tree block (CTB) structure: The similar structure in HEVC is the coding tree unit (CTU), whose size is selected by the encoder and can be larger than the traditional macroblock. The CTU consists of a luminance CTB, the corresponding chrominance CTB, and syntax elements. The size L×L of the luminance CTB can be selected as L = 16, 32, or 64 samples, and larger sizes generally enable better compression. Then, HEVC supports using a tree structure and quadtree-like signaling to divide the CTB into smaller blocks.
[0061] 2) Coding unit (CU) and coding block (CB): The quadtree syntax of the CTU specifies the size and position of its luminance CB and chrominance CB. The root of the quadtree is associated with the CTU. Therefore, the size of the luminance CTB is the maximum supported size of the luminance CB. The division of the CTU into luminance CB and chrominance CB is signaled jointly. One luminance CB and usually two chrominance CBs together with the associated syntax form a coding unit (CU). The CTB can contain only one CU or can be divided to form multiple CUs, and each CU has a tree of associated partitions to become prediction units (PUs) and transform units (TUs).
[0062] 3) Prediction unit (PU) and prediction block (PB): The decision on whether to use inter-picture or intra-picture prediction to code a picture region is made at the CU level. The root of the PU partition structure is at the CU level. Depending on the basic prediction type decision, the luminance CB and chrominance CB can then be further divided in size and predicted according to the luminance and chrominance prediction blocks (PBs). HEVC supports variable PB sizes from 64×64 down to 4×4 samples. Figure 2 Allowed PBs are depicted.
[0063] Figure 2 Examples of patterns for dividing a CB into multiple PBs under specific size constraints are shown. For intra-picture prediction of a CB, only MxM and M / 2x M / 2 are supported.
[0064] 4) Transform unit (TU) and transform block: The prediction residual is coded using block transforms. The root of the TU tree structure is at the CU level. The luminance CB residual can be the same as the luminance transform block (TB) or can be further divided into smaller luminance TBs. This also applies to chrominance TBs. Integer basis functions similar to the discrete cosine transform (DCT) are defined for square TB sizes of 4×4, 8×8, 16×16, and 32×32. For the 4×4 transform of the luminance intra-picture prediction residual, an integer transform derived from the form of the discrete sine transform (DST) is alternatively specified.
[0065] Figures 3A - 3BAn example of subdividing a CTB into CBs and TBs is shown. The solid lines indicate the CB boundaries, and the dashed lines indicate the TB boundaries.
[0066] 2.2.1 Depth of the quadtree
[0067] For a given luminance CB of size M×M, flag signaling indicates whether it is divided into four blocks of size M / 2×M / 2. If further division is possible, as signaled by the maximum depth signaling of the residual quadtree indicated in the SPS, a flag indicating whether each quadrant is divided into four quadrants is assigned. The leaf node blocks resulting from the residual quadtree are transform blocks that are further processed by transform coding. The encoder indicates the maximum and minimum luminance TB sizes it will use. When the CB size is greater than the maximum TB size, the division is implicit. When the division would result in a luminance TB size less than the indicated minimum, no division is implicit. Except when the luminance TB size is 4×4 (in which case a single 4×4 chrominance TB is used for the area covered by four 4×4 luminance TBs), the chrominance TB size is half of the luminance TB size in each dimension. In the case of a CU for intra picture prediction, the decoded samples of the nearest neighboring TB (inside or outside the CB) are used as reference data for intra picture prediction.
[0068] 2.2.2 Overview
[0069] Based on the increasing depth of the quadtree, a CTU can be recursively divided into multiple CUs. As Figures 3A - 3B shown, only square CB and TB partitions are specified, where a block can be recursively divided into quadrants.
[0070] Mode selection is determined at the CU level. Side information according to the selected mode is signaled at the PU level such as motion information, intra prediction mode. The residual is signaled at the TU level.
[0071] For an inter-coded block, a PU should not be larger than a CU, and for an intra-coded block, a PU should be equal to a CU.
[0072] For an inter-coded block, a TU can span a PU, but for an intra-coded block, a TU should be equal to a PU.
[0073] 2.3 Quadtree plus binary tree block structure with larger CTUs in JEM
[0074] To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been adopted by JVET and put into the reference software called the Joint Exploration Model (JEM).
[0075] 2.3.1 QTBT Block Partition Structure
[0076] Different from HEVC, the QTBT structure removes the separation of the CU, PU, and TU concepts and supports more flexibility in the CU partition shape. In the QTBT block structure, a CU can have a square or rectangular shape. As Figure 5 shown, the coding tree unit (CTU) is first partitioned by a quadtree structure. The quadtree leaf nodes are further partitioned by a binary tree structure. There are two types of partitions in the binary tree partitioning, symmetric horizontal partitioning and symmetric vertical partitioning. The binary tree leaf nodes are called coding units (CUs), and this segmentation is used for prediction and transform processing without any further partitioning. This means that the CUs, PUs, and TUs have the same block size in the QTBT coding block structure. In JEM, a CU sometimes consists of coding blocks (CBs) of different color components. For example, a CU contains one luma CB and two chroma CBs in the case of P slices and B slices in 4:2:0 chroma format, and sometimes consists of a CB of a single component. For example, a CU contains only one luma CB or only two chroma CBs in the case of I slices.
[0077] Define the following parameters for the QTBT partitioning scheme:
[0078] – CTU Size: The size of the root node of the quadtree, which is the same concept as in HEVC
[0079] – MinQTSize: The minimum allowed size of the quadtree leaf node
[0080] – MaxBTSize: The maximum allowed size of the binary tree root node
[0081] – MaxBTDepth: The maximum allowed depth of the binary tree
[0082] – MinBTSize: The minimum allowed size of the binary tree leaf node
[0083] In an example of the QTBT partitioning structure, the CTU size is set to 128×128 luma samples and two corresponding 64×64 chroma sample blocks, MinQTSize is set to 16×16, MaxBTSize is set to 64×64, MinBTSize (for both width and height) is set to 4×4, and MaxBTDepth is set to 4. Quad-tree partitioning is first applied to the CTU to generate quad-tree leaf nodes. The quad-tree leaf nodes can have sizes ranging from 16×16 (i.e., MinQTSize) to 128×128 (i.e., CTU size). If a leaf quad-tree node is 128×128, it is not further partitioned by the binary tree since its size exceeds MaxBTSize (i.e., 64×64). Otherwise, the leaf quad-tree node can be further split by the binary tree. Thus, the quad-tree leaf node is also the root node of the binary tree, and its binary tree depth is 0. When the binary tree depth reaches MaxBTDepth (i.e., 4), further partitioning is not considered. When the width of a binary tree node equals MinBTSize (i.e., 4), further horizontal partitioning is not considered. Similarly, when the height of a binary tree node equals MinBTSize, further vertical partitioning is not considered. The leaf nodes of the binary tree are further processed by prediction and transform processing without any further splitting. In JEM, the maximum CTU size is 256×256 luma samples.
[0084] Figure 4A An example of block partitioning by using QTBT is shown, and Figure 4B the corresponding tree representation is shown. Solid lines indicate quad-tree partitioning, and dashed lines indicate binary-tree partitioning. In each partitioning (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which partitioning type (i.e., horizontal or vertical) is used, where 0 indicates horizontal partitioning and 1 indicates vertical partitioning. For quad-tree partitioning, it is not necessary to indicate the partitioning type since quad-tree partitioning always splits a block horizontally and vertically to produce 4 sub-blocks of the same size.
[0085] Figures 4A - 4B An example illustration of the QTBT structure is provided.
[0086] Additionally, the QTBT scheme supports the ability to have separate QTBT structures for luma and chroma. Currently, for P slices and B slices, the luma CTB and chroma CTB in a CTU share the same QTBT structure. However, for I slices, the luma CTB is partitioned into CUs by a QTBT structure, and the chroma CTB is partitioned into chroma CUs by another QTBT structure. This means that the CUs in I slices consist of coding / decoding blocks of the luma component or coding / decoding blocks of the two chroma components, and the CUs in P slices or B slices consist of coding / decoding blocks of all three color components.
[0087] In HEVC, the inter prediction of small blocks is restricted to reduce the memory access for motion compensation, such that bidirectional prediction is not supported for 4×8 blocks and 8×4 blocks, and inter prediction is not supported for 4×4 blocks. In the QTBT of JEM, these restrictions are removed.
[0088] 2.3.2 Overview of QTBT
[0089] Based on the increased depth of the quadtree or binary tree, a CTU can be recursively divided into multiple CUs. Square and rectangular CBs (width / height equal to 1 / 2 or 2) are specified.
[0090] Mode selection is determined at the CU level. The PU and TU are always equal to the CU.
[0091] 2.4 Multi-Type Tree (MTT) in VVC
[0092] 2.4.1 Proposal
[0093] It is proposed to support tree types other than quadtree and binary tree. In an implementation, as shown in Figure 5 (e) and (f), two more ternary tree (TT) partitions, namely horizontal and vertical center-side ternary trees, are introduced.
[0094] Figure 5 , Examples of allowed partitions in VVC: (a) no further division (b) quadtree partition (c) horizontal binary tree (horizontal BT) partition (d) vertical binary tree (vertical BT) partition (e) horizontal center-side ternary tree (horizontal TT) partition (f) vertical center-side ternary tree partition (vertical TT)
[0095] Note that a partition in BT / TT can be further divided by BT / TT. Therefore, rectangular blocks are allowed.
[0096] There are two levels of trees, the region tree (quadtree) and the prediction tree (binary tree or ternary tree). First, the CTU is divided by the region tree (RT). The RT leaf can be further divided by the prediction tree (PT). The PT leaf can also be further divided by PT until the maximum PT depth is reached. The PT leaf is the basic coding / decoding unit. For convenience, it is still called the CU. The CU cannot be further divided. Prediction and transformation are applied to the CU in the same way as in JEM. The entire partition structure is named "multi-type tree".
[0097] 2.4.2 Partition Tree in VVC
[0098] Three types of split structures are supported, namely QT, BT, and TT. The blocks partitioned from QT can be further partitioned by QT / BT / TT. The blocks partitioned from BT or TT can be further partitioned into BT or TT. However, the blocks partitioned from BT or TT cannot be further partitioned into QT.
[0099] Figure 6 Examples of allowed splits between the parent partition (solid line) and the current partition (dashed line) are shown. The lines with "X" mean that such splits are not allowed.
[0100] In VVC, several variables are signaled / derived to control the use of different splits. For example:
[0101] – The maximum multi-type tree depth, with an offset maxMttDepth for luma and chroma respectively,
[0102] – The maximum binary tree size maxBtSize / the maximum ternary tree size maxTtSize
[0103] – The minimum quadtree size MinQtSize / the minimum binary tree size MinBtSize / the minimum ternary tree size minTtSize
[0104] 2.4.2.1.1 Allowed Binary Partition Process
[0105] The inputs to this process are:
[0106] – The binary partition mode btSplit,
[0107] – The coded block width cbWidth,
[0108] – The coded block height cbHeight,
[0109] – The position (x0, y0) of the top-left luma sample of the coded block under consideration relative to the top-left luma sample of the picture,
[0110] – The multi-type tree depth mttDepth,
[0111] – The maximum multi-type tree depth, with an offset maxMttDepth,
[0112] – The maximum binary tree size maxBtSize,
[0113] – The split index partIdx.
[0114] The output of this process is the variable allowBtSplit.
[0115] Table 2-1 – Specifications of parallelTtSplit and cbSize based on btSplit
[0116] btSplit == SPLIT_BT_VER btSplit == SPLIT_BT_HOR parallelTtSplit SPLIT_TT_VER SPLIT_TT_HOR cbSize cbWidth cbHeight
[0117] The variables parallelTtSplit and cbSize are derived as specified in Table 2-1.
[0118] The variable allowBtSplit is derived as follows:
[0119] – If one or more of the following conditions are true, then allowBtSplit is set equal to FALSE:
[0120] / / Based on the block size and the maximum allowed MTT depth
[0121] – cbSize is less than or equal to MinBtSizeY
[0122] – cbWidth is greater than maxBtSize
[0123] – cbHeight is greater than maxBtSize
[0124] – mttDepth is greater than or equal to maxMttDepth
[0125] – Otherwise, if all of the following conditions are true, then allowBtSplit is set equal to FALSE
[0126] / / Based on the picture boundaries (no vertical BT at the bottom picture boundary and the bottom-right picture boundary)
[0127] – btSplit is equal to SPLIT_BT_VER
[0128] – y0 + cbHeight is greater than pic_height_in_luma_samples
[0129] – Otherwise, if all of the following conditions are true, then allowBtSplit is set equal to FALSE
[0130] / / Based on the picture boundaries (no horizontal BT at the right picture boundary)
[0131] – btSplit is equal to SPLIT_BT_HOR
[0132] – x0 + cbWidth is greater than pic_width_in_luma_samples
[0133] – y0 + cbHeight is less than or equal to pic_height_in_luma_samples
[0134] – Otherwise, allowBtSplit is set equal to FALSE if all of the following conditions are true:
[0135] / / Split (mttDepth - 1) according to TT in the above level
[0136] – mttDepth is greater than 0
[0137] – partIdx is equal to 1
[0138] – MttSplitMode[x0][y0][mttDepth - 1] is equal to parallelTtSplit
[0139] / / According to the transformed size (e.g., when MaxTbSizeY is 64, there is no vertical BT for 64x128; no horizontal BT for 128x64)
[0140] – Otherwise, allowBtSplit is set equal to FALSE if all of the following conditions are true
[0141] – btSplit is equal to SPLIT_BT_VER
[0142] – cbWidth is less than or equal to MaxTbSizeY
[0143] – cbHeight is greater than MaxTbSizeY
[0144] – Otherwise, allowBtSplit is set equal to FALSE if all of the following conditions are true
[0145] – btSplit is equal to SPLIT_BT_HOR
[0146] – cbWidth is greater than MaxTbSizeY
[0147] – cbHeight is less than or equal to MaxTbSizeY
[0148] – Otherwise, allowBtSplit is set equal to TRUE.
[0149] 2.4.2.1.2 Allowed ternary partitioning process
[0150] The inputs to this process are:
[0151] – The ternary partitioning mode ttSplit,
[0152] – The coding / decoding block width cbWidth,
[0153] – Coding / decoding block height cbHeight,
[0154] – Position (x0, y0) of the top - left luma sample of the coding / decoding block being considered relative to the top - left luma sample of the picture,
[0155] – Multi - type tree depth mttDepth
[0156] – Maximum multi - type tree depth, with offset maxMttDepth,
[0157] – Maximum binary tree size maxTtSize.
[0158] – The output of the process is the variable allowTtSplit.
[0159] Table 2 - 2 – Specification of cbSize based on ttSplit.
[0160] ttSplit == SPLIT_TT_VER ttSplit == SPLIT_TT_HOR cbSize cbWidth cbHeight
[0161] The variable cbSize is derived as specified in Table 2 - 2.
[0162] The variable allowTtSplit is derived as follows:
[0163] – If one or more of the following conditions are true, then allowTtSplit is set to be equal to FALSE:
[0164] / / According to the block size
[0165] – cbSize is less than or equal to 2 * MinTtSizeY
[0166] – cbWidth is greater than Min(MaxTbSizeY, maxTtSize)
[0167] – cbHeight is greater than Min(MaxTbSizeY, maxTtSize)
[0168] / / According to the maximum allowed MTT depth
[0169] – mttDepth is greater than or equal to maxMttDepth
[0170] / / According to whether it is at the picture boundary
[0171] – x0 + cbWidth is greater than pic_width_in_luma_samples
[0172] – y0 + cbHeight is greater than pic_height_in_luma_samples
[0173] – Otherwise, allowTtSplit is set to be equal to TRUE.
[0174] 2.5 Split Tree Structure in AVS3
[0175] In AVS3, extended quadtree (EQT) splitting is adopted, which further extends the QTBT scheme and increases splitting flexibility. More specifically, EQT divides a parent CU into four child CUs of different sizes, which can fully model local image content that cannot be finely characterized by QTBT. At the same time, EQT splitting allows interleaving with BT splitting for enhanced adaptability.
[0176] Using EQT splitting, a parent CU is divided into four child CUs with different sizes. As Figures 7A - 7B shown, EQT divides an MxN parent CU into two MxN / 4 CUs and two M / 2xN / 2 CUs in the horizontal direction. Similarly, EQT vertical splitting generates two NxM / 4 CUs and two M / 2xN / 2 CUs. Specifically, the EQT sub-block size is always a power of 2, such that no additional transform is necessarily involved.
[0177] Figure 7A An example of the EQT horizontal mode is shown. Figure 7B An example of the EQT vertical mode is shown.
[0178] In the structure of QTBT, the QT partition flag is first signaled to indicate whether the current CU is partitioned by QT. Therefore, when this ag is false, a second signal is encoded to indicate whether the current CU partition mode is non-partition or BT partition. For a BT partitioned CU, a third binary bit (DIR) is signaled to distinguish between horizontal BT or vertical BT partitions. When EQT splitting is introduced, in the case where both BT and EQT are available, an additional binary bit called EQT is signaled to indicate whether it is an EQT partition, as Figure 8 shown.
[0179] Figure 8 The signaling structure of QTBT plus EQT splitting is shown.
[0180] 2.6 UQT
[0181] Asymmetric quadtree (UQT) splitting is proposed. Using UQT, a block of size W×H is divided into four splits of sizes W1×H1, W2×H2, W3×H3, and W4×H4, where W1, W2, W3, W4, H1, H2, H3, H4 are all integers. All parameters are in the form of a power of 2. For example, W1 = 2 N1 , W2 = 2 N2 , W3 = 2 N3, W4 = 2 N4 , H1 = 2 M1 , H2 = 2 M2 , H3 = 2 M3 , H4 = 2 M4 . In Figures 9A - 9H Some examples are given.
[0182] Figures 9A - 9H Some cases of UQT are shown.
[0183] 2.7 UQI-T
[0184] Several methods are proposed to introduce other types of partitioning structures that can divide a block into more than 4 partitions.
[0185] In one example, a quinary tree (QUI-T) partition is proposed. Figures 10A - 10B Examples are shown in
[0186] Figures 10A - 10B An example case of UQI-T is shown by dividing a W*H block into five smaller blocks.
[0187] Figure 10A It is shown that W0 + W1 + W2 + W3 + W4 = W; H0 = H1 = H2 = H3 = H4 = H.
[0188] Figure 10B It is shown that W0 + W1 + W2 = W3 + W4 = W; H0 = H1 = H2; H3 = H4; H0 + H3 = H.
[0189] In addition, there are other hexary tree, septary tree, octal tree partitions (SnT, StT, OctT), where a block can be divided into 6, 7 or 8 smaller blocks.
[0190] 2.8 Asymmetric binary tree structure
[0191] The tree structure used in this response (called multi-tree type (MTT)) is a generalization of QTBT. In QTBT, as Figure 11 shown, the coding tree unit (CTU) is first divided by a quadtree structure. The quadtree leaf nodes are further divided by a binary tree structure.
[0192] Figure 11 An example of the QTBT structure is shown.
[0193] The basic structure of MTT consists of two types of tree nodes: region tree (RT) and prediction tree (PT), supporting nine types of partitions, as Figure 12As shown. The region tree can recursively divide the CTU into square blocks until the region leaf nodes of 4x4 size. At each node in the region tree, the prediction tree can be formed by one of three tree types: binary tree, ternary tree, and asymmetric binary tree (ABT, as Figure 12 (f) to (i) depicted). In the PT partition, it is prohibited to have a quadtree split in the branches of the prediction tree. Similar to JEM, the luminance tree and the chrominance tree are separated in the I slice.
[0194] Figure 12 Shows (a) quadtree split (b) vertical binary tree split (c) horizontal binary tree split (d) vertical ternary tree split (e) horizontal ternary tree split (f) upper horizontal asymmetric binary tree split (g) lower horizontal asymmetric binary tree split (h) left vertical asymmetric binary tree split (i) right vertical asymmetric binary tree split.
[0195] 2.8.1 Transform / Quantization
[0196] To accommodate the more flexible splitting due to ABT, the block sizes are not powers of 2, such as 4x24 and 8x48, including the corresponding transform cores.
[0197] In total, additional transforms of 6-point, 12-point, 24-point, and 48-point have been added.
[0198] 3. Problems Solved by the Disclosed Embodiments.
[0199] Although the ABT split can bring additional coding / decoding gains, it simultaneously increases the decoder complexity by adding several new transform matrices.
[0200] At the same time, only the asymmetric binary split tree (i.e., ABT) has been attempted, and other types of splits that can divide a block into more than 2 asymmetric splits have not been fully studied.
[0201] 4. Examples of the Technology
[0202] To solve this problem, several methods are proposed to introduce other types of split structures that can divide a block (which can also be called a parent block) into smaller blocks (which can also be called child blocks), where the width / height or both the width and height of at least one block are not equal to a power of 2. This split is called a non-power-of-two split tree (NPT-T).
[0203] The following detailed technologies should be considered as examples to explain the general concept. These embodiments should not be interpreted narrowly. In addition, these embodiments can be combined in any way.
[0204] In the following discussion, the partitioning tree may indicate QT, BT, TT, or an asymmetric quad-tree (UQT), EQT, or others. The partitioning / dicing direction may indicate horizontal partitioning, vertical partitioning, diagonal partitioning, or others. A partition is represented by its partitioning tree type and partitioning direction.
[0205] QT, BT, TT, UQT, or EQT refer to "QT partitioning", "BT partitioning", "TT partitioning", "UQT partitioning", and "EQT partitioning", respectively.
[0206] In the following discussion, "partitioning" and "dicing" have the same meaning. The proposed method can also be applied to existing partitioning trees.
[0207] The function floor(x) returns the largest integer less than or equal to x.
[0208] 4.1 Examples of NPT-T
[0209] 1. The NPT-T dicing is proposed, where the width and / or height of at least one smaller block is not in the form of a power of 2. Using NPT-T, a block of size W×H is partitioned into K smaller blocks (K>1, K is an integer value). When the indication of using this dicing is true, such a block is directly partitioned into K smaller blocks (also called sub-blocks). A smaller one can be regarded as a coding / decoding unit / prediction unit / transformation unit.
[0210] The size of each smaller block can be represented by W i ×H i (where i is 0..(K-1), indicating the dicing index) and both W i and H i are integers.
[0211] a. In one example, each sub-block can be further partitioned into even smaller blocks, such as in a recursive manner.
[0212] b. In one example, K>2. That is, a block can be partitioned into at least three smaller blocks.
[0213] (a) Alternatively, K equals 2. However, it can choose a different partitioning method instead of using (1 / 4W or 1 / 4H in the ABT design).
[0214] c. In one example, at least one of W i or H i is not in the form of a power of 2.
[0215] (a) For example, W0≠2 N0 and / or W1≠2 N1 and / or W2≠2 N2, and / or W3 ≠ 2 N3 , and / or W4 ≠ 2 N4 , and / or H0 ≠ 2 M0 , and / or H1 ≠ 2 M1 , and / or H2 ≠ 2 M2 , and / or H3 ≠ 2 M3 , and / or H4 ≠ 2 M4 .
[0216] (b) Additionally, alternatively, at least one W i or H i is in the form of a power of 2.
[0217] 1. In one example, W i equals 2 floor(log2(W / K ).
[0218] 2. In one example, H i equals 2 floor(log2(H / K)) .
[0219] 3. In one example, if i is not equal to j, then W i may be different from W j .
[0220] 4. In one example, if i is not equal to j, then H i may be different from H j .
[0221] d. In one example, at least one W i is set to floor(W * m / 2 n ), where W >= 2 n and 1 <= m < 2 n .
[0222] e. In one example, at least one H i is set to floor(H * m / 2 n ), where H >= 2 n and 1 <= m < 2 n .
[0223] f. In one example, the blocks divided from the NPT-T can be further divided according to the NPT-T.
[0224] g. In one example, the blocks whose width or height is not in the form of a power of 2 may not be dividable according to the NPT-T. Additionally, alternatively, the signaling notice for the use of the NPT-T is skipped.
[0225] h. In one example, non-square blocks where the width is not equal to the height may not be dividable according to NPT-T. Additionally, alternatively, signaling of the use of NPT-T is skipped.
[0226] i. In one example, square blocks where the width is equal to the height may not be dividable according to NPT-T. Additionally, alternatively, signaling of the use of NPT-T is skipped.
[0227] j. In one example, blocks where the width or height is not in the form of a power of two must be divided. Additionally, alternatively, signaling of the division flag is skipped.
[0228] 4.2 Division Direction of NPT-T
[0229] 2. NPT-T can divide a block only in the vertical direction.
[0230] a. For example, H i = H (for i from 0 to (K - 1)).
[0231] b. In one example, L0 divisions (where L0 is equal to 2 to K) share the same division size.
[0232] (a) In one example, the width of the same division size is set to floor(W / K).
[0233] (b) In one example, L0 divisions can be adjacent to another. Alternatively, they can be non - adjacent to each other.
[0234] (c) In one example, L0 divisions can be continuously given division indices, where the division index indicates that one division should be directly encoded or decoded before or after another division.
[0235] (d) Some examples with L0 = 2 and K = 3 are given in Figure 13.
[0236] i. In Figure 13A , W0 = W1 = floor(W / 3) and W2 = W - 2*floor(W / 3).
[0237] ii. In Figure 13B , W0 = W2 = floor(W / 3) and W1 = W - 2*floor(W / 3).
[0238] iii. In Figure 13C , W0 = W1 = W2 = W3 = floor(W / 5) and W4 = W - 4*floor(W / 5).
[0239] Figure 13AAn example where PIdx0 and PIdx1 have the same size is shown.
[0240] Figure 13B An example where PIdx0 and PIdx2 have the same size is shown.
[0241] Figure 13C An example where K = 5 and L0 = 4 is shown.
[0242] Figures 13A - 13C An example of NPT-T segmentation is shown (where for (a) and (b), K = 3 and L0 = 2).
[0243] c. Additionally, alternatively, L1 of the remaining (K - L0) segments can be assigned equal sizes.
[0244] (a) In one example, L1 is in the range of [1...K - L0].
[0245] (b) In one example, the width of the L1 segment size is set to floor((W - L0 * floor(W / K)) / (K - L0)). Alternatively, when L1 is equal to (K - L0 - 1), in addition, one left segment can be assigned a block width equal to W – L0 * floor(W / K)-((W - L0 * floor(W / K)) / (K - L0))*(K - L0 - 1).
[0246] (c) Alternatively, the remaining (K - L0) segments can be assigned different sizes.
[0247] (d) In one example, L1 segments can be adjacent to another. Alternatively, they can be non - adjacent to each other.
[0248] (e) In one example, L1 segments can be given consecutive segmentation indices, where the segmentation index indicates that one segment should be directly encoded or decoded before or after another. Alternatively, they can be given non - consecutive segmentation indices.
[0249] (f) In Figure 14 Some examples with L0 = 2, L1 = 2, and K = 5 are given. In Figure 14 W0 = W1 = floor(W / 5), W2 = W3 = floor((W – 2 * floor(W / 5)) / 3) and W4 = W – 2 * W0 – 2 * W1.
[0250] Figure 14 An example of NPT-T segmentation is shown (where K = 5, L0 = 2, L1 = 2).
[0251] d. In one example, only one segment size (Wi ×H i ) is different from all the remaining partitions.
[0252] (a) For example, L0 is equal to K–1.
[0253] e. In one example, the partition size (W i ×H i ) can be the same for all partitions.
[0254] 3. NPT-T can partition a block only in the horizontal direction.
[0255] a. The sub-bullets in bullet 2 can be applied by swapping H and W.
[0256] 4. NPT-T can partition a block in both the horizontal and vertical directions. This case is called the mixed direction.
[0257] a. For example, at least one of the Ws i is not equal to W.
[0258] b. For example, at least one of the Hs i is not equal to H.
[0259] 5. If the width of the block is not in the form of a power of 2, then NPT-T can partition a block in the vertical direction, or / and if the height of the block is not in the form of a power of 2, then NPT-T can partition a block in the horizontal direction.
[0260] a. Alternatively, if the width of the block is in the form of a power of 2, then NPT-T can partition a block in the vertical direction, or / and if the height of the block is in the form of a power of 2, then NPT-T can partition a block in the horizontal direction.
[0261] 6. The above method can be extended to other quadtree, hexatree, enneatree, octree partitions (SnT, StT, OctT), where a block can be divided into 6, 7, or 8 smaller blocks.
[0262] 7. The coding / decoding order (represented by PIdx 0..(K-1)) can be different from the coding / decoding order defined in Figures 13A - 13C and Figure 14 .
[0263] a. The coding / decoding order of an NPT-T pattern can be predefined.
[0264] b. Alternatively, multiple coding / decoding orders can be predefined for an NPT-T pattern, and a block can select one of them (such as via signaling an indication of the selected coding / decoding order or derivation at the decoder side).
[0265] 4.3 Transforming Dimensions / Transformation Matrix and Transformation Region Selection
[0266] 8. For a sub - block size where at least one of the width (W i ) and height (H i ) is not in the form of a power of 2, the use of a transform block smaller than the sub - block is restricted (where the width and height are represented by TW i and TH i respectively). That is, if TW i = W i and TH i = H i , it is not allowed.
[0267] a. In one example, TW i and / or TH i and / or the setting of the transformation matrix can depend on the sub - block size.
[0268] (a) In one example, TW i is set to pow(2,floor(log2(W i ))).
[0269] (b) In one example, TH i is set to pow(2,floor(log2(H i ))).
[0270] b. In one example, TW i and / or TH i and / or the setting of the transformation matrix can depend on the available transformation matrix.
[0271] (a) In one example, TW i is set to an allowed transformation size and / or transformation matrix in the form of a power of 2, such as the maximum allowed transformation size but not greater than W i .
[0272] (b) In one example, TH i is set to an allowed transformation size and / or transformation matrix in the form of a power of 2, such as the maximum allowed transformation size but not greater than H i .
[0273] c. In one example, TW i and / or TH i and / or the setting of the transformation matrix can depend on the parent block from which the sub - block is divided.
[0274] d. In one example, TW i and / or TH iThe setting of the transform matrix and / or may depend on the size of the sub-blocks partitioned from the same parent block.
[0275] e. In one example, TW i and / or TH i and / or the setting of the transform matrix may depend on the color format and / or color components.
[0276] f. In one example, TW i and / or TH i and / or the setting of the transform matrix may depend on the picture type / strip type / slice group type / low-delay check flag.
[0277] g. In one example, TW i and / or TH i and / or the setting of the transform matrix may depend on other codec information, such as quantization parameter, mode information (intra / inter / combined intra-inter), reference picture information (current picture reference / uni-directional prediction / bi-directional prediction / multi-hypothesis prediction).
[0278] h. How to define the transform block size and / or transform matrix can be signaled in the high-level syntax elements, such as in SPS / VPS / in SPS / PPS / VPS / APS / sequence header / picture header / strip header / slice group header / CTU row / region, etc.
[0279] i. In one example, TW i is not greater than TWmax. For example, TWmax = 64.
[0280] j. In one example, TH i is not greater than THmax. For example, THmax = 64.
[0281] k. In one example, TW i is not less than TWmin. For example, TWmin = 4.
[0282] l. In one example, TH i is not less than THmin. For example, THmin = 4.
[0283] 9. When the transform block (where the width and height are represented by TW i and TH i respectively) is smaller than the sub-block, a fixed offset (OffsetX, OffsetY) can be applied to locate the region where the transform should be applied.
[0284] a. In one example, (OffsetX, OffsetY) is set to (0, 0). Figure 15A - Figure Figure 15BSome examples are shown. Alternatively, OffsetX is set to 0. Alternatively, OffsetY is set to 0.
[0285] Figure 15A The case where Wi ≠ 2N0 and Hi = 2N1 is shown.
[0286] Figure 15B Shows W i ≠ 2 N0 、H i ≠ 2 N1 case.
[0287] Figures 15A - 15B An example of (OffsetX, OffsetY) set to (0, 0) is shown (solid line: sub-block; dashed line: transformation region).
[0288] b. Alternatively, only one of OffsetX and OffsetY is set to 0.
[0289] c. Alternatively, neither OffsetX nor OffsetY is equal to 0.
[0290] (a) In one example, OffsetX is set to (W i - TW i ).
[0291] (b) In one example, OffsetY is set to (H i - TH i ).
[0292] (c) Figures 16A - 16B Some examples are shown.
[0293] Figure 16A Shows where W i ≠ 2 N0 、H i = 2 N1 example.
[0294] Figure 16B Shows where Wi ≠ 2 N0 、Hi ≠ 2 N1 example.
[0295] Figures 16A - 16B An example of (OffsetX, OffsetY) set to (0, 0) is shown (solid line: sub-block; dashed line: transformation region).
[0296] d. OffsetX and / or OffsetY can depend on the sub-block shape.
[0297] e. OffsetX and / or OffsetY can depend on the parent-block shape.
[0298] f. OffsetX and / or OffsetY may depend on the encoding / decoding information of the sub-block / parent block.
[0299] g. In one example, the setting of OffsetX and / or OffsetY may depend on the color format and / or color component.
[0300] h. In one example, the setting of OffsetX and / or OffsetY may depend on the picture type / strip type / slice group type / low-delay check flag.
[0301] i. In one example, the setting of OffsetX and / or OffsetY may depend on other encoding / decoding information, such as quantization parameter, mode information (intra / inter / combined intra-inter), reference picture information (current picture reference / uni-directional prediction / bidirectional prediction / multi-hypothesis prediction).
[0302] j. In one example, OffsetX and / or OffsetY may be signaled.
[0303] k. In one example, several candidates for OffsetX and / or OffsetY may be defined, and the index of the candidate may be signaled.
[0304] (a) In one example, the size of the candidate set may depend on the sub-block shape, and for different sub-block shapes, the index may be signaled differently.
[0305] (b) If the size of the candidate set is equal to 1, the index is not signaled.
[0306] l. In one example, several candidates for (OffsetX, OffsetY) may be defined, and the index of the candidate may be signaled to indicate OffsetX and OffsetY.
[0307] (a) In one example, the size of the candidate set may depend on the sub-block shape, and for different sub-block shapes, the index may be signaled differently.
[0308] (b) If the size of the candidate set is equal to 1, the index is not signaled.
[0309] 10. Different from the above bullet items where for a sub-block size where at least one of the width (W i ) and height (H i ) is not in the form of a power of 2, only one fixed transform size and / or transform matrix is allowed, it is proposed that for this kind of sub-block, multiple different transform sizes and / or transform matrices are allowed.
[0310] a. In one example, all kinds of allowed transformation sizes shall be in the form of a power of two.
[0311] b. Alternatively, at least one allowed transformation size shall be in the form of a power of two.
[0312] c. In one example, other kinds of transformation sizes shall not be greater than the transformation size defined in bullet 8.
[0313] d. For each of the allowed transformation sizes, only one fixed offset (including both OffsetX and OffsetY) where the transformation region should be applied can be defined / derived.
[0314] (a) In this case, only the indication of the selected transformation can be signaled.
[0315] e. Multiple offsets where the transformation region should be applied can be associated with each of the allowed transformation sizes.
[0316] (a) In this case, the indication of the selected transformation and offset can be signaled.
[0317] (b) In one example, for all kinds of allowed transformation sizes, the number of allowed offsets is the same.
[0318] (c) Alternatively, for different transformation sizes, the number of allowed offsets can be different.
[0319] f. In one example, the indication of all kinds of allowed transformation sizes and / or offsets and / or transformation matrices can be signaled.
[0320] g. Alternatively, the allowed transformation sizes and / or transformation matrices and / or offsets can be classified into M categories. The category index can be signaled first. Additionally, alternatively, the index of the selected transformation size / offset / matrix can be further signaled.
[0321] h. In one example, an index can be signaled to indicate both the transformation size and the offset.
[0322] 4.4 Use of Non-Power-of-Two Partition Trees
[0323] 11. A block divided into sub-blocks by NPT-T can be divided from a parent block by one or certain specific kinds of division methods.
[0324] a. Blocks that allow NPT-T division can be blocks generated by QT or BT or TT or NPT-T division.
[0325] b. For example, a block divided into sub-blocks by NPT-T can only be divided from a parent block by QT.
[0326] c. The block that allows NPT-T splitting can be the root block.
[0327] 12. The block divided from the parent block by NPT-T can be further divided into sub-blocks by one or more other splitting types (such as QT, BT, TT, NPT-T, UQT).
[0328] a. For example, the block divided from the parent block by NPT-T can be further divided into sub-blocks by BT and / or TT.
[0329] b. For example, the block divided from the parent block by NPT-T can be further divided into sub-blocks by BT and / or TT, and / or QUT-T instead of QT.
[0330] c. For example, the block divided from the parent block by NPT-T can be further divided into sub-blocks by NPT-T and / or QT instead of BT / TT.
[0331] d. For example, the block divided from the parent block by NPT-T cannot be further divided into sub-blocks by QT.
[0332] e. Alternatively, the NPT-T divided block may not be further divided into sub-blocks.
[0333] 13. When the parent block is divided into sub-blocks by NPT-T, the division depth of the sub-blocks can be deduced from the division depth of the parent block.
[0334] a. In one example, since the division by NPT-T can be used to update the QT / BT / TT / NPT-T / MTT depth.
[0335] (a) In one example, the QT depth of one or all of the sub-blocks is equal to the QT depth of the parent block plus 1.
[0336] (b) In one example, the BT depth of one or all of the sub-blocks is equal to the BT depth of the parent block plus 1.
[0337] (c) In one example, the TT depth of one or all of the sub-blocks is equal to the TT depth of the parent block plus 1.
[0338] (d) In one example, the NPT-T depth of one or all of the sub-blocks is equal to the NPT-T depth of the parent block plus 1.
[0339] (e) In one example, the MTT depth of one or all of the sub-blocks is equal to the MTT depth of the parent block plus 1.
[0340] 1. For example, if the parent block is divided into sub-blocks by BT, the MTT depth of the sub-blocks is equal to the MTT depth of the parent block plus 1.
[0341] 2. For example, if a parent block is divided into child blocks by TT, the MTT depth of the child blocks is equal to the MTT depth of the parent block plus 1.
[0342] b. In one example, the NPT-T / BT / TT / QT / MTT depth increases of different child blocks can be different.
[0343] (a) The depth increase depends on the ratio of the child block to the parent block.
[0344] 14. Filtering processes (such as deblocking filter, SAO, ALF, diffusion filter, bilateral filter) can depend on the NPT-T segmentation.
[0345] a. In one example, whether / how to filter samples can depend on whether these samples are located at the boundary of a block due to NPT-T partitioning.
[0346] b. In one example, the samples of the previously reconstructed child block can be used in the diffusion filter or / and bilateral filter.
[0347] c. In one example, whether / how to filter samples can depend on whether these samples are located at the boundary of a transform block within a coding unit due to NPT-T partitioning.
[0348] 15. The intra prediction mode or CIIP mode can depend on the NPT-T segmentation.
[0349] a. In one example, a child block can use the previously reconstructed child block for intra prediction in the intra prediction mode or CIIP mode.
[0350] 16. The local illumination compensation (LIC) mode can depend on the NPT-T segmentation.
[0351] a. In one example, a child block can use the previously reconstructed child block to derive LIC parameters.
[0352] 4.5 Limitations on the use of NPT-T
[0353] 17. In one example, the maximum / minimum block size and / or the maximum bit depth and / or the maximum depth that NPT-T segmentation is allowed can be signaled in the SPS / PPS / VPS / APS / sequence header / picture header / strip header / slice group header / CTU row / region, etc.
[0354] a. The maximum / minimum block size and / or the maximum depth that NPT-T segmentation is allowed can be derived from other values (such as the depth of MTT or the depth of QT).
[0355] b. The maximum block allowing NPT-T splitting can be the largest coding / decoding block (coding / decoding tree block or coding / decoding tree unit).
[0356] c. For example, the maximum block allowing NPT-T splitting can be a virtual pipeline data unit (VPDU).
[0357] d. In one example, the maximum / minimum block size allowing NPT-T splitting and / or the maximum depth allowing NPT-T splitting can depend on the profile / level / hierarchy of the standard.
[0358] e. In one example, the maximum / minimum block size allowing NPT-T splitting and / or the maximum depth allowing NPT-T splitting can be derived to be the same as, for example, QT splitting.
[0359] f. In one example, the maximum / minimum block size allowing NPT-T splitting and / or the maximum depth allowing NPT-T splitting can depend on whether the tile group tile / stripe type / color component / double tree is enabled.
[0360] g. In one example, the maximum / minimum block size allowing NPT-T splitting and / or the maximum depth allowing NPT-T splitting can be different for different NPT-T modes.
[0361] h. When dividing a block according to NPT-T, the corresponding depth of NPT-T of a smaller block can be adjusted accordingly (e.g., incremented by 1).
[0362] (a) Alternatively, the corresponding depth of a specific splitting (e.g., QT) of a smaller block can be adjusted accordingly (e.g., incremented by 1).
[0363] (b) Alternatively, the corresponding depth of MTT of a smaller block can be adjusted accordingly (e.g., incremented by 1).
[0364] (c) The adjustment of the corresponding depths of different smaller blocks can be made in the same way (e.g., incremented by 1).
[0365] 1. Alternatively, the adjustment of the corresponding depths of different smaller blocks can be made in different ways (e.g., incremented by 1). For example, the adjustment depends on the block size of the smaller block.
[0366] 18. If the divided sub-blocks span more than one virtual pipeline data unit (VPDU), NPT-T is not allowed.
[0367] a. Alternatively, NPT-T is still allowed. However, such sub-blocks are forced to be further divided until no sub-blocks span more than one VPDU.
[0368] 19. If the width / height of the current block (or any divided sub-block) satisfies some conditions, then NPT-T is not allowed. (Assume the width and height of the current block are W and H, and T1, T2, and T are some integers)
[0369] a. If W >= T1 and H >= T2, then NPT-T is not allowed;
[0370] b. If W >= T1 or H >= T2, then NPT-T is not allowed;
[0371] c. If W <= T1 and H <= T2, then NPT-T is not allowed;
[0372] d. If W <= T1 or H <= T2, then NPT-T is not allowed;
[0373] e. If W × H <= T, then NPT-T is not allowed;
[0374] f. If W × H >= T, then NPT-T is not allowed;
[0375] g. If H <= T, then horizontal NPT-T is not allowed; for example, T = 16.
[0376] h. If H >= T, then horizontal NPT-T is not allowed; for example, T = 128.
[0377] i. If W <= T, then vertical NPT-T is not allowed; for example, T = 16.
[0378] j. If W >= T, then vertical NPT-T is not allowed; for example, T = 128.
[0379] k. T1, T2, and T can be signaled from the encoder to the decoder in the VPS / SPS / PPS / picture header / slice header / picture group header / picture header.
[0380] l. T1, T2, and T can depend on the color component. For example, for the luminance and chrominance components, T1, T2, and T can be different.
[0381] m. T1, T2, and T can depend on whether the luminance coding tree and the chrominance coding tree are separated. For example, if the luminance coding tree and the chrominance coding tree are separated, then for the luminance and chrominance components, T1, T2, and T can be different.
[0382] n. Alternatively, when at least one sub-block due to NPT-T does not support transformation, the NPT-T partition is invalid.
[0383] o. Alternatively, when the depth of a block exceeds the allowed depth of the NPT-T partition, the NPT-T partition is invalid.
[0384] p. Alternatively, when any sub-block size of the NPT-T partition is smaller than the allowed block size, the NPT-T partition is invalid.
[0385] 20. If the width / height of the current block (or any partitioned sub-block) satisfies some conditions, NPT-T is allowed. (Assume the width and height of the current block are W and H, and T1, T2, and T are some integers)
[0386] a. If W >= T1 and H >= T2, then NPT-T is allowed;
[0387] b. If W >= T1 or H >= T2, then NPT-T is allowed;
[0388] c. If W <= T1 and H <= T2, then NPT-T is allowed;
[0389] d. If W <= T1 or H <= T2, then NPT-T is allowed;
[0390] e. If W × H <= T, then NPT-T is allowed;
[0391] f. If W × H >= T, then NPT-T is allowed;
[0392] g. If H <= T, then horizontal NPT-T is allowed; for example, T = 64.
[0393] h. If H >= T, then horizontal NPT-T is allowed; for example, T = 32.
[0394] i. If W <= T, then vertical NPT-T is allowed; for example, T = 64.
[0395] j. If W >= T, then vertical NPT-T is allowed; for example, T = 32.
[0396] k. T1, T2, and T can be signaled from the encoder to the decoder in the VPS / SPS / PPS / picture header / slice header / picture group header / slice header.
[0397] l. T1, T2, and T can depend on the color component. For example, for the luma and chroma components, T1, T2, and T can be different.
[0398] m. T1, T2, and T can depend on whether the luma coding tree and the chroma coding tree are separated. For example, if the luma coding tree and the chroma coding tree are separated, then for the luma and chroma components, T1, T2, and T can be different.
[0399] 21. If the depth of the current block satisfies some conditions, NPT-T is not allowed. The depth of the current block can refer to the QT depth, BT depth, TT depth, NPT-T depth, or MTT depth.
[0400] a. If the partition depth <= T, NPT-T is not allowed;
[0401] b. If the partition depth >= T, NPT-T is not allowed;
[0402] c. If the QT partition depth <= T, NPT-T is not allowed;
[0403] d. If the QT partition depth >= T, NPT-T is not allowed;
[0404] e. If the BT partition depth >= T, NPT-T is not allowed;
[0405] f. If the BT partition depth <= T, NPT-T is not allowed;
[0406] g. If the TT partition depth >= T, NPT-T is not allowed;
[0407] h. If the TT partition depth >= T, NPT-T is not allowed;
[0408] i. If the NPT-T partition depth <= T, NPT-T is not allowed;
[0409] j. If the NPT-T partition depth >= T, NPT-T is not allowed;
[0410] k. If the MTT partition depth <= T, NPT-T is not allowed;
[0411] l. If the MTT partition depth >= T, NPT-T is not allowed;
[0412] m. T can be signaled from the encoder to the decoder in the VPS / SPS / PPS / picture header / slice header / picture group header / picture header.
[0413] n. T can depend on the color component. For example, for the luma and chroma components, T1, T2, and T can be different.
[0414] o. T can depend on whether the luma coding tree and the chroma coding tree are separated. For example, if the luma coding tree and the chroma coding tree are separated, for the luma and chroma components, T1, T2, and T can be different.
[0415] 22. NPT-T is allowed if the depth of the current block meets some conditions. The depth of the current block can refer to the QT depth, BT depth, TT depth, NPT-T depth, or MTT depth.
[0416] a. NPT-T is allowed if the partitioning depth <= T;
[0417] b. NPT-T is allowed if the partitioning depth >= T;
[0418] c. NPT-T is allowed if the QT partitioning depth <= T;
[0419] d. NPT-T is allowed if the QT partitioning depth >= T;
[0420] e. NPT-T is allowed if the BT partitioning depth >= T;
[0421] f. NPT-T is allowed if the BT partitioning depth <= T;
[0422] g. NPT-T is allowed if the TT partitioning depth >= T;
[0423] h. NPT-T is allowed if the TT partitioning depth >= T;
[0424] i. NPT-T is allowed if the NPT-T partitioning depth <= T;
[0425] j. NPT-T is allowed if the NPT-T partitioning depth >= T;
[0426] k. NPT-T is allowed if the MTT partitioning depth <= T;
[0427] l. NPT-T is allowed if the MTT partitioning depth >= T;
[0428] m. T can be signaled from the encoder to the decoder in the VPS / SPS / PPS / picture header / slice header / slice group header / picture slice header.
[0429] n. T can depend on the color component. For example, for the luma and chroma components, T1, T2, and T can be different.
[0430] o. T can depend on whether the luma coding tree and the chroma coding tree are separated. For example, if the luma coding tree and the chroma coding tree are separated, then for the luma and chroma components, T1, T2, and T can be different.
[0431] 23. Whether and how to use NPT-T can depend on the position of the current block. For example, whether and how to use NPT-T can depend on whether the current block crosses the picture / slice / slice group boundary.
[0432] a. In one example, if the current block straddles the bottom boundary of the picture / slice / slice group, vertical NPT-T is not allowed.
[0433] b. In one example, if the current block straddles the bottom boundary of the picture / slice / slice group, horizontal NPT-T is not allowed.
[0434] c. In one example, if the current block straddles the right boundary of the picture / slice / slice group, vertical NPT-T is not allowed.
[0435] d. In one example, if the current block straddles the right boundary of the picture / slice / slice group, horizontal NPT-T is not allowed.
[0436] e. In one example, if the current block straddles the right boundary of the picture / slice / slice group, hybrid NPT-T may not be allowed.
[0437] f. In one example, if the current block straddles the bottom boundary of the picture / slice / slice group, hybrid NPT-T may not be allowed.
[0438] g. In one example, if the sub-blocks divided by NPT-T are completely outside the picture / slice / slice group, the sub-blocks can be omitted during the encoding / decoding process.
[0439] h. In one example, if the sub-blocks divided by NPT-T are partially outside the picture / slice / slice group, the following can apply
[0440] (a) The part outside the picture can be omitted during the encoding / decoding process.
[0441] (b) The part inside the picture can be further divided.
[0442] (c) The part inside the picture can be encoded / decoded as a CU.
[0443] 1. Whether the part inside the picture is encoded / decoded as a CU can depend on the width (w) and height (h) of the part.
[0444] i. In one example, if w = 2 nw , h = 2 nh , then the part inside the picture can be encoded / decoded as a CU, where nw and nh are integers.
[0445] i. In one example, if any sub-blocks divided by NPT-T are partially / fully outside the picture / slice / slice group, NPT-T is not allowed.
[0446] 24. When NPT-T or a specific NPT-T mode is not allowed, the indication of the use of the signaling notification mode can also be skipped.
[0447] a. Alternatively, it can still be signaled, but is constrained to false in the conformity bitstream.
[0448] 25. When partitioning a sub-block from NPT-T, it may not be allowed to further partition the sub-block using one or more of the following partitioning methods:
[0449] a. QT
[0450] b. Horizontal BT
[0451] c. Vertical BT
[0452] d. Horizontal TT
[0453] e. Vertical BT
[0454] f. Horizontal UQT
[0455] g. Vertical UQT
[0456] h. NPT-T
[0457] 26. NPT-T is not allowed for the root node.
[0458] a. In one example, NPT-T can be allowed for leaf nodes. Additionally, alternatively, signaling of further partitioning according to other splits is skipped.
[0459] 27. It is proposed that NPT-T can only be applied to leaf nodes, i.e., when a block is not further partitioned according to other splits.
[0460] a. In one example, a flag indicating whether to use NPT-T can be signaled for leaf nodes.
[0461] (a) Additionally, alternatively, which indication of NPT-T can be further signaled.
[0462] b. Alternatively, disabling NPT-T or which indication of NPT-T can be signaled for leaf nodes.
[0463] 28. For a specific size of a block, if NPT-T is selected to further partition it into multiple sub-blocks, all of the sub-blocks can share the same Merge list.
[0464] a. Alternatively, all of the sub-blocks can share the same coding mode (e.g., intra or inter).
[0465] b. Alternatively, all of the sub-blocks can share the same AMVP or other types of motion candidate lists.
[0466] c. Alternatively, all in the sub-blocks can share the same cross-component linear model (CCLM) / local illumination compensation (LIC) parameters or other parameters derived at the decoder side.
[0467] 4.6 Indication of the use of NPT-T
[0468] 29. Whether to apply NPT-T and / or which NPT-T to apply can be signaled from the encoder to the decoder.
[0469] a. In one example, it can be signaled in the VPS / SPS / PPS / sequence header / picture header / slice header / tile header / picture header to indicate whether NPT-T can be applied.
[0470] b. In one example, it can be signaled in the VPS / SPS / PPS / sequence header / picture header / slice header / tile header / picture header to indicate which NPT-T can be applied.
[0471] c. In one example, it can be signaled in a block to indicate whether NPT-T is used for partitioning the block.
[0472] d. In one example, it can be signaled in a block to indicate which NPT-T is used for partitioning the block.
[0473] e. In one example, different sets of NPT-T can be designed for different block shapes / sizes.
[0474] f. In one example, different sets of NPT-T can be designed for pictures / slices / bands with different temporal layers.
[0475] g. In one example, whether or how to apply NPT-T can depend on video resolution / picture resolution / codec mode / video characteristics (screen content or camera-captured sequence or mixed content) / band type / picture type / tile type / low-delay check flag.
[0476] 30. A syntax element can be signaled to indicate no partitioning or splitting (including split tree type and partitioning direction).
[0477] a. Alternatively, a syntax element can be signaled first to indicate whether partitioning is performed; and another syntax element can be signaled to indicate splitting.
[0478] 31. The indication of splitting can be represented by two syntax elements: the selected split tree type can be signaled first, followed by the partitioning direction (if required).
[0479] a. In one example, an index of the segmentation tree type can be signaled in a block to indicate whether the block is partitioned by QT, or by NPT-T, or is unpartitioned.
[0480] (a) Additionally, alternatively, a partitioning direction (horizontal / vertical / mixed direction) and / or a partitioning pattern can be further signaled.
[0481] h. In one example, an index of the segmentation tree type can be signaled in a block to indicate whether the block is partitioned by BT or TT or NPT-T.
[0482] (a) For example, the index can be signaled conditionally, such as only when at least one of BT, TT, and NPT-T is valid for the block.
[0483] (b) Additionally, alternatively, a partitioning direction (horizontal / vertical) and / or a partitioning pattern can be further signaled.
[0484] i. Alternatively, an indication of the partitioning direction can be signaled first, followed by the segmentation tree type (such as QT, TT, NPT-T).
[0485] (a) In one example, a flag is signaled in a block to indicate whether the block is vertically partitioned or horizontally partitioned. The vertical partitioning can be a BT vertical partitioning, a TT vertical partitioning, or an NPT-T vertical partitioning. The horizontal partitioning can be a BT horizontal partitioning, a TT horizontal partitioning, or an NPT-T horizontal partitioning.
[0486] (b) For example, the flag is signaled only when the block is partitioned by BT, TT, or NPT-T.
[0487] (c) For example, the flag is signaled only when both the vertical partitioning and the horizontal partitioning are valid for the block.
[0488] 1. If only the vertical partitioning is valid, the flag is not signaled, and it is inferred that the horizontal partitioning is used.
[0489] 2. If only the horizontal partitioning is valid, the flag is not signaled, and it is inferred that the vertical partitioning is used.
[0490] j. In one example, a binarization code is signaled in a block to indicate which partitioning (BT, TT, or an NPT-T) is used. In the following example, X represents 0 or 1, and Y = ~X (if X = 0, then Y = 1, and if X = 1, then Y = 0).
[0491] (a) In one example, according to previously signaled or derived information, the candidate BT, TT, or NPT-T to be signaled are all vertical partitioning or horizontal partitioning.
[0492] (b) In one example, the first flag is signaled to indicate whether NPT-T is used. For example, the binarized codewords representing BT, TT, NPT-T 1, NPT-T 2, NPT-T 3, and NPT-T 4 in order are XX, XY, YXX, YXY, YYX, YYY.
[0493] (c) In one example, the truncated unary code is applied. For example, the binarized codewords representing BT, TT, NPT-T 1, NPT-T2, NPT-T 3, and NPT-T 4 in order are X, YX, YYX, YYYX, YYYYYX, YYYYYY.
[0494] (d) In one example, the first flag is signaled to indicate whether BT is used. If BT is not used, the second flag is signaled to indicate whether NPT-T is used. If NPT-T is used, which NPT-T is used is further signaled. For example, the binarized codewords representing BT, TT, NPT-T 1, NPT-T 2, NPT-T 3, and NPT-T 4 in order are X, YX, YYXX, YYXY, YYYX, YYYY.
[0495] 32. In one example, how to signal which split to use in a block can depend on which split (including split tree type and / or split direction) is valid for the block. In the following examples, X represents 0 or 1, and Y = ~X (if X = 0, then Y = 1, and if X = 1, then Y = 0).
[0496] a. In one example, according to the previously signaled or derived information, the candidate BT, TT, or NPT-T to be signaled is either a vertical split or a horizontal split.
[0497] b. For example, an unacceptable or invalid split cannot be signaled from the encoder to the decoder, i.e., there is no codeword representing an unacceptable or invalid split.
[0498] c. In one example, if only one of the splits of BT, TT, and NPT-T is valid, the binarized code indicating which split (BT, TT, or an NPT-T) to use is not signaled.
[0499] d. In one example, if only two of the splits of BT, TT, and NPT-T are valid, a flag is signaled to indicate which of the two valid splits to use.
[0500] e. In one example, the code indicating which split (BT, TT, or an NPT-T) is binarized into a truncated unary code.
[0501] (a) For example, the maximum value of the truncated unary code is N - 1, where N is the number of valid partitions (BT, TT, and NPT - T).
[0502] (b) For example, there is no codeword representing an invalid partition. In other words, when building the codeword table, invalid partitions are skipped.
[0503] f. In one example, if no NPT - T is valid, the flag indicating whether NPT - T is used is not signaled and is inferred to be false. For example, the binary codewords representing BT and TT in order are X and Y.
[0504] g. In one example, if only one NPT - T is valid and signaling indicates the use of NPT - T, no further information is signaled to indicate which NPT - T is used. The valid NPT - T is used implicitly.
[0505] h. In one example, if only two NPT - Ts are valid and signaling indicates the use of NPT - T, a flag is signaled to indicate which NPT - T is used.
[0506] i. In one example, if only three NPT - Ts are valid and signaling indicates the use of NPT - T, a message is signaled to indicate which NPT - T is used. For example, the binary codewords representing the three NPT - Ts in order are X, YX, YY.
[0507] j. In one example, the binary - ization and / or signaling method does not change depending on which partitions in the block are valid. An invalid partition cannot be selected in the compliant bitstream.
[0508] 33. The indication of the split can be encoded and decoded by using arithmetic encoding and decoding of one or more contexts.
[0509] a. In one example, a context can be used to encode and decode only some of the bits of a binary string, and the remaining bits can be encoded and decoded in bypass mode (i.e., without using the context).
[0510] b. Alternatively, all bits of the binary string can be encoded and decoded using a context.
[0511] c. Alternatively, all bits of the binary string can be encoded and decoded in bypass mode.
[0512] d. For the bits encoded and decoded using a context, one or more contexts can be used.
[0513] e. The context can depend on:
[0514] (a) The position or index of the binary bit.
[0515] (b) Segmentation of spatio / temporal neighboring blocks.
[0516] (c) Current segmentation depth of the current block (e.g., QT depth / BT depth / TT depth / NPT-T depth / MTT depth).
[0517] (d) Segmentation depth of spatio / temporal neighboring blocks and / or spatio / temporal non-adjacent blocks (e.g., QT depth / BT depth / TT depth / NPT-T depth / MTT depth).
[0518] (e) Coding / decoding mode of spatio / temporal neighboring blocks.
[0519] (f) Width / height of spatio / temporal neighboring blocks.
[0520] (g) Width / height of the current block
[0521] (h) Strip type / picture type / slice group type
[0522] (i) Color component
[0523] (j) Statistical result of the segmentation type from previously coded / decoded blocks
[0524] 34. Whether and / or how to use NPT-T may depend on the color format (such as 4:4:4 or 4:2:0) and / or color component.
[0525] a. Whether and how to use NPT-T may depend on whether the luma and chroma coding trees are separated.
[0526] b. In one example, when the luma and chroma coding trees are separated, NPT-T can only be applied to the luma component.
[0527] 35. The above method can also be applied to SnT, StT, OctT, UQT.
[0528] Figure 17is a block diagram of a video processing apparatus 1700. The apparatus 1700 may be used to implement one or more methods described herein. The apparatus 1700 may be embodied in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. The apparatus 1700 may include one or more processors 1702, one or more memories 1704, and video processing hardware 1706. The (multiple) processors 1702 may be configured to implement one or more methods described in this document. The memory (multiple memories) 1704 may be used to store data and code for implementing the methods and techniques described herein. The video processing circuitry or hardware 1706 may be used to implement some of the techniques described in this document in hardware circuitry and may be partially or fully part of the processor 1702 (e.g., a graphics processing unit core GPU or other signal processing circuitry).
[0529] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation and vice versa. The bitstream representation of the current video block may correspond, for example, to bits co-located within the bitstream or distributed at different locations, as defined by the syntax. For example, a macroblock may be encoded based on the transform and codec error residual values and also using bits in the header and other fields in the bitstream.
[0530] It should be understood that several techniques have been disclosed, and by allowing the use of the techniques disclosed in this document, these techniques will be beneficial in video encoder and decoder embodiments incorporated within video processing devices such as smart phones, laptop computers, desktop computers, and similar devices.
[0531] Figure 18 is a flowchart of an example method 1800 of video processing. The method 1800 includes, at 1802, enabling the use of a non-power-of-two partition tree (NPT-T) for the conversion between a video and the bitstream representation of the video, where the NPT-T includes partitioning a video block into one or more smaller-sized sub-blocks of the video block, and at least one of the width or height of the sub-blocks has a pixel size that is a non-power-of-two integer. The method 1800 includes, at 1804, performing the conversion using the NPT-T.
[0532] Some embodiments may be described using the following clause-based format.
[0533] 1. A method for video processing, comprising: enabling the use of a non-power-of-two partition tree (NPT-T) for the conversion between a video and a bitstream representation of the video, wherein the NPT-T includes dividing a video block into one or more smaller-sized sub-blocks of the video block, and at least one of the width or height of the sub-blocks has a pixel size that is a non-power-of-two integer; and using the NPT-T to perform the conversion.
[0534] 2. The method according to clause 1, wherein the enabling is signaled in the bitstream representation by a field included at a sequence parameter set level, a video parameter set level, a sequence header level, a picture parameter set level, a slice header level, a coding unit level, a slice group level, or a coding tree unit row level.
[0535] 3. The method according to any one of clauses 1-2, wherein the sub-blocks are considered as coding units or prediction units or transform units for the conversion.
[0536] 4. The method according to any one of clauses 1-3, wherein the video block has a width of W pixels and a height of H pixels, and wherein the sub-blocks have a width of Wi pixels and a height of Hi pixels, where W, H, and Wi, Hi are all integers, and wherein i is an integer variable with a value between 0 and K-1, where K represents the number of sub-blocks.
[0537] 5. The method according to any one of clauses 1-4, wherein the conversion uses the sub-blocks by recursively dividing the sub-blocks into smaller blocks of coding units, prediction units, or transform units according to the NPT-T.
[0538] 6. The method according to any one of clauses 4-5, wherein at least some of Wi, Hi are non-power-of-two integers.
[0539] 7. The method according to any one of clauses 4-5, wherein at least some of Wi, Hi are power-of-two integers.
[0540] 8. The method according to any one of clauses 4-7, wherein:
[0541] (1) Wi is equal to 2floor(log2(W / K)), or
[0542] (2) Hi is equal to 2floor(log2(H / K)), or
[0543] (3) If i is not equal to j, then Wi can be different from Wj, or
[0544] (4) If i is not equal to j, then Hi can be different from Hj.
[0545] 9. The method according to clause 4, wherein the sub-blocks are divided only along a specific orientation direction.
[0546] 10. The method according to clause 9, wherein the orientation direction is the vertical direction.
[0547] 11. The method according to clause 9, wherein the orientation direction is the horizontal direction.
[0548] 12. The method according to clause 10, wherein Hi = H (for i being 0…(K - 1)).
[0549] 13. The method according to clause 11, wherein Wi = W (for i being 0…(K - 1)).
[0550] 14. The method according to any one of clauses 4 - 13, wherein L0 partitions representing sub - blocks share the same partitioning size, and the remaining sub - blocks have different partitioning sizes, where L0 is an integer between 2 and K.
[0551] 15. The method according to clause 14, wherein the same partitioning size is floor(W / K) or floor(H / K).
[0552] 16. The method according to clauses 14 - 15, wherein the L0 partitions are adjacent to each other.
[0553] 17. The method according to clauses 14 - 15, wherein at least some of the L0 partitions are non - adjacent partitions.
[0554] 18. The method according to clauses 14 - 15, wherein at least some of the L0 partitions are identified by consecutive indices in the bit - stream representation and are processed sequentially during the transformation.
[0555] 19. The method according to clause 10, wherein the partitioning sizes of the remaining sub - blocks are the same.
[0556] 20. The method according to any one of clauses 1 to 19, wherein the encoding / decoding order of the current block and the sub - blocks is implicitly defined based on rules.
[0557] 21. The method according to any one of clauses 1 to 19, wherein the encoding / decoding order of the current block and the sub - blocks is specified in the bit - stream representation.
[0558] Sections 4.1, 4.2, and 4.3 provide additional details and examples of clauses 1 - 21.
[0559] 22. A method for video processing, comprising:
[0560] Apply a transform size limit to the conversion between a sub-video block and a bitstream representation of the sub-video block, where the sub-video block is partitioned from a video block and has a pixel size that is a non-power-of-two (NPT) integer; and
[0561] Use the transform size limit to perform the conversion.
[0562] 23. The method according to clause 22, wherein the video block is W pixels wide and H pixels high, and wherein the sub-block is Wi pixels wide and Hi pixels high, where W, H, and Wi, Hi are all integers, and wherein i is an integer variable with a value between 0 and K-1, where K represents the number of sub-blocks partitioned from the video block.
[0563] 24. The method according to any one of clauses 22-23, wherein the transform size limit specifies that a given sub-block with at least Wi and height Hi being NPT integers uses a smaller transform size represented by width TWi and height THi.
[0564] 25. The method according to clause 24, wherein TWi or THi depends on the size of the given sub-block.
[0565] 26. The method according to clause 25, wherein:
[0566] (a) TWi is equal to pow(2,floor(log2(Wi)), or
[0567] (b) THi is equal to pow(2,floor(log2(Hi)).
[0568] 27. The method according to clause 24, wherein TWi or THi depends on the size of the transform matrix used for the conversion.
[0569] 28. The method according to clause 27, wherein the size of the transform matrix is a power of 2:
[0570] TWi is equal to the size of the transform size, i.e., the maximum allowable transform size not exceeding Wi, or
[0571] THi is equal to the transform size, i.e., the maximum allowable transform size not exceeding Hi.
[0572] 29. The method according to clause 24, wherein TWi or THi or the transform size depends on:
[0573] the type or position of the video block, or
[0574] the size of the sub-block partitioned from the video block, or
[0575] the color format or color component type of the video block, or
[0576] a picture type, slice type, slice group type, or low latency check flag in a bitstream representation, or
[0577] other codec information in a bitstream representation, including quantization parameters, mode information, or reference picture information, where the reference picture information includes current picture reference or uni-directional prediction or bi-directional prediction or multi-hypothesis prediction.
[0578] 30. The method according to any one of clauses 22 to 29, wherein the transform size limit specifies applying a transform to a portion of a sub-block using a fixed X offset or a fixed Y offset.
[0579] 31. The method according to clause 30, wherein the fixed X offset or the fixed Y offset is a function of the shape of the sub-block or the shape of the video block.
[0580] 32. The method according to clause 22, wherein the transform size limit allows multiple transform sizes to be used during the transform.
[0581] 33. The method according to clause 32, wherein the multiple transform sizes are power-of-two transform sizes.
[0582] 34. The method according to clause 32, wherein at least one of the multiple transform sizes is a power-of-two size.
[0583] Sections 4.3 and 4.4 provide additional examples and embodiments of clauses 22 to 34.
[0584] 35. A method for video processing, comprising:
[0585] selectively applying a conversion between a video block and a bitstream representation of the video block based on a usage rule for using a non-power-of-two tree (NPT-T) partition of the video block, the video block or one or more smaller-sized sub-blocks of the video having a pixel size that is a non-power-of-two (NPT) integer; and
[0586] performing the conversion using the usage rule.
[0587] 36. The method according to clause 5, wherein the usage rule specifies using NPT-T only in cases where the video block is partitioned from a parent block using a quadtree or a binary tree or a ternary tree or an NPT-T split.
[0588] 37. The method according to clause 35, wherein the usage rule specifies using NPT-T only in cases where the video block is partitioned from a parent block using a quadtree split.
[0589] 38. The method according to clause 35, wherein the usage rule prohibits using NPT-T in cases where the video block is a root block.
[0590] 39. The method according to any one of clauses 35 to 38, wherein one or more smaller-sized blocks are obtained using a splitting scheme that depends on the splitting type of the current block.
[0591] 40. The method according to any one of clauses 35 to 39, wherein the partitioning depth of one or more smaller-sized blocks depends on the partitioning depth of the current block.
[0592] 41. The method according to any one of clauses 35 to 39, wherein the partitioning depths of at least some of the one or more smaller-sized blocks are different.
[0593] 42. The method according to clause 35, wherein rules are used to specify a filtering process applied to one or more smaller blocks and a video block.
[0594] 43. The method according to clause 42, wherein the filtering process depends on the current block or the pixel positions in one or more sub-blocks using the boundaries created by NPT-T.
[0595] 44. The method according to any one of clauses 42 - 43, wherein the filtering process includes a deblocking filter or a sample adaptive offset filter or an adaptive loop filter or a diffusion filter or a bilateral filter.
[0596] 45. The method according to any one of clauses 42 - 44, wherein rules are used to specify the use of samples of previously reconstructed sub-blocks for diffusion filtering or bilateral filtering of samples of the current sub-block.
[0597] 46. The method according to clause 35, wherein rules are used to specify the selective application of an intra prediction mode or a local illumination compensation mode or a combined inter-intra segmentation applied to one or more smaller blocks and a video block.
[0598] 47. The method according to clause 35, wherein in the case where the size of a video block is higher than a maximum threshold, rules are used to disable the use of NPT-T for the video block.
[0599] 48. The method according to clause 35, wherein in the case where the size of a video block is lower than a minimum threshold, rules are used to disable the use of NPT-T for the video block.
[0600] 49. The method according to clause 35, wherein in the case where the bit depth of a video block is higher than a maximum bit depth or lower than a minimum bit depth, rules are used to disable the use of NPT-T for the video block.
[0601] 50. The method according to any one of clauses 47 - 49, wherein fields included in a bitstream representation at the sequence parameter set level, video parameter set level, sequence header level, picture parameter set level, slice header level, coding unit level, slice group level, or coding tree unit row level are signaled to be disabled using a rule.
[0602] 51. The method according to any one of clauses 47 - 49, wherein the use rule to be disabled is derived from parameters of a video block.
[0603] 52. The method according to clause 51, wherein the parameter of the current block is the split tree depth of the video block or the profile of the bitstream representation or the level of the bitstream representation or the tier of the bitstream representation or the layer.
[0604] 53. The method according to clause 51, wherein the parameter of the video block is based on the maximum or minimum size allowed in the quadtree splitting of neighboring blocks of the video block.
[0605] 54. The method according to clause 35, wherein the use rule specifies disabling the use of NPT - T for a video block or sub - blocks of a video block that span more than one virtual pipeline data unit.
[0606] 55. The method according to clause 35, wherein the video block spans more than one virtual pipeline data unit, and the use rule specifies dividing the video block into sub - blocks until no sub - block spans more than one virtual pipeline data unit.
[0607] 56. The method according to clause 35, wherein when the height H or width W of the video block satisfies a condition, the use rule disables the use of NPT - T in the horizontal or vertical direction.
[0608] 57. The method according to clause 56, wherein the condition includes:
[0609] W >= T1 and H >= T2;
[0610] W >= T1 or H >= T2;
[0611] W <= T1 and H <= T2;
[0612] W <= T1 or H <= T2;
[0613] W × H <= T; or
[0614] W × H >= T, where W, H are integers, and T, T1, T2 are rational numbers.
[0615] 58. The method according to clause 35, wherein when the height H or width W of a video block is as follows, the use of NPT-T in the horizontal direction is disabled using a rule:
[0616] (a) If H <= T, horizontal NPT-T is not allowed,
[0617] (b) If H >= T, horizontal NPT-T is not allowed,
[0618] (c) If W <= T, vertical NPT-T is not allowed, or
[0619] (d) If W >= T, vertical NPT-T is not allowed, where W, H, and T are integers.
[0620] 59. The method according to clause 35, wherein the use of NPT-T in the horizontal or vertical direction is disabled using a rule, unless the video block meets a condition.
[0621] 60. The method according to clause 59, wherein the condition includes:
[0622] W >= T1 and H >= T2;
[0623] W >= T1 or H >= T2;
[0624] W <= T1 and H <= T2;
[0625] W <= T1 or H <= T2;
[0626] W × H <= T;
[0627] W × H >= T;
[0628] If H <= T, horizontal NPT-T is allowed;
[0629] If H >= T, horizontal NPT-T is allowed;
[0630] If W <= T, vertical NPT-T is allowed; or
[0631] If W >= T, vertical NPT-T is allowed; where W, H, T, T1, and T2 are positive rational numbers.
[0632] Sections 4.3 to 4.5 provide additional examples and embodiments of clauses 35 to 60.
[0633] 61. A method for video processing, comprising:
[0634] Selectively apply non - power - of - two tree (NPT - T) partitioning of a video block to the transformation between the video block and its bit - stream representation based on a usage indication, where the video block or one or more smaller - sized sub - blocks of the video have a pixel size that is a non - power - of - two (NPT) integer; and
[0635] Perform the transformation corresponding to the usage indication.
[0636] 62. The method according to clause 61, wherein the usage indication is signaled in the bit - stream representation at the video parameter set level or sequence parameter set level or picture parameter set level or sequence header level or picture header level or slice group header level or slice header level.
[0637] 63. The method according to any one of clauses 61 - 62, wherein the usage indication indicates the type of split for the NPT - T partitioning.
[0638] 64. The method according to clause 3, wherein the type of split depends on the type of the video block.
[0639] 65. The method according to any one of clauses 61 to 64, wherein the usage indication depends on at least one of the following: the video resolution associated with the video block, the picture resolution, the codec mode, the video characteristics, the slice type, the picture type, the slice group type, or the low - latency check flag.
[0640] 66. The method according to any one of clauses 61 - 65, wherein the usage indication includes a plurality of syntax elements.
[0641] 67. The method according to clause 66, wherein the first syntax element of the plurality of syntax elements corresponds to the split - tree type, and the second syntax element corresponds to the partitioning direction.
[0642] 68. The method according to clause 67, wherein the first syntax element appears in the bit - stream representation before the second syntax element.
[0643] 69. The method according to clause 67, wherein the first syntax element appears in the bit - stream representation after the second syntax element.
[0644] 70. The method according to any one of clauses 61 - 69, wherein the usage indication uses a binarized code.
[0645] 71. The method according to clause 70, wherein the usage indication uses context - based arithmetic coding of the binarized code based on the bits of the binarized code.
[0646] 72. The method according to clause 71, wherein the context-based arithmetic coding and decoding uses a context depending on: the position or index of a binary bit, or the partitioning of spatial or temporal neighboring blocks of a video block, or the current partitioning depth of a video block, or the partitioning depth of spatial or temporal neighboring blocks.
[0647] 73. The method according to any one of clauses 61-72, wherein the indication is also based on a color format or color component associated with the video block.
[0648] 74. The method according to any one of clauses 1-73, wherein the transformation includes generating pixel values of a video block from a bitstream representation or generating a bitstream representation from a video block.
[0649] Section 4.6 provides additional details and examples for clauses 61-74.
[0650] 75. A video decoding device including a processor, configured to implement the method according to one or more of clauses 1-74.
[0651] 76. A video encoding device including a processor, configured to implement the method according to one or more of clauses 1-74.
[0652] 77. A computer-readable medium storing code, which when executed causes a processor to implement the method according to any one or more of clauses 1-74.
[0653] Figure 19 is a flowchart of an example method 1900 for video processing. Method 1900 includes determining (1902) whether the use of a non-power-of-two partitioning tree (NPT-T) is enabled or disabled for the transformation between a first block of a video and a bitstream representation of the first block of the video, where the NPT-T includes partitioning the first block into a plurality of smaller-sized sub-blocks of the first block, and at least one of the width and / or height of the sub-blocks has a size that is a non-power-of-two integer; and in response to determining that the NPT-T is enabled, performing (1904) the transformation based on the NPT-T.
[0654] In some examples, the method further includes: the determination is based on a field present in the bitstream representation.
[0655] In some examples, the method further includes: the field is an indication of a partitioning tree type in a set of partitioning tree types, the set of partitioning tree types including at least one of NPT-T, quadtree (QT), binary tree (BT), or ternary tree (TT); or an indication of the use of NPT-T.
[0656] In some examples, in response to the determination that the NPT-T is enabled, the first block is directly partitioned into a plurality of sub-blocks.
[0657] In some examples, at least one of the sub - blocks is a leaf node that is regarded as an encoding / decoding unit or a prediction unit or a transform unit for the conversion.
[0658] In some examples, the first block has a width of W pixels and a height of H pixels, and among them, the sub - block has a width of W i pixels and a height of H i pixels, where W, H, and W i , H i are all integers, and where i is an integer variable with a value between 0 and K - 1, and K represents the number of sub - blocks.
[0659] In some examples, the sub - blocks are further divided into even smaller blocks in a recursive manner.
[0660] In some examples, K > 2.
[0661] In some examples, at least one of W i or H i is a non - power - of - two integer.
[0662] In some examples, at least one of W i or H i is a power - of - two integer.
[0663] In some examples,
[0664] (1) W i equals 2 floor(log2(W / K)) , or
[0665] (2) H i equals 2 floor(log2(H / K)) , or
[0666] (3) If i is not equal to j, then W i is different from W j , or
[0667] (4) If i is not equal to j, then H i is different from H j ,
[0668] where i and j are integer variables with values between 0 and K - 1, where i is an integer variable with a value between 0 and K - 1, and the function floor(x) returns the largest integer less than or equal to x.
[0669] In some examples, at least one of W i is set to floor(W * m / 2 n ), where W >= 2 n and 1 <= m < 2 n .
[0670] In some examples, at least one H i is set to floor(H*m / 2 n ), where H >= 2 n and 1 <= m < 2 n .
[0671] In some examples, one or more of the sub-blocks are further divided into even smaller blocks according to NPT-T.
[0672] In some examples, the first block whose width or height is a non-power-of-two integer cannot be divided according to NPT-T.
[0673] In some examples, the first block whose width is not equal to its height cannot be divided according to NPT-T.
[0674] In some examples, the first block is divided only in one of the vertical and horizontal directions.
[0675] In some examples, when the first block is divided in the vertical direction, H i = H, where i ranges from 0 to (K - 1).
[0676] In some examples, when the first block is divided in the horizontal direction, W i = W, where i ranges from 0 to (K - 1).
[0677] In some examples, L0 of the multiple sub-blocks share the same segmentation size, where L0 is an integer between 2 and K.
[0678] In some examples, the width of the same segmentation size is floor(W / K), or the height of the same segmentation size is floor(H / K).
[0679] In some examples, the L0 sub-blocks are adjacent to each other.
[0680] In some examples, at least one of the L0 sub-blocks is a non-adjacent sub-block.
[0681] In some examples, the L0 sub-blocks are identified by consecutive indices indicating the processing order during the conversion.
[0682] In some examples, L1 of the remaining (K - L0) sub-blocks share a second same segmentation size, where L1 is an integer between 1 and K - L0.
[0683] In some examples, the width of the second same segmentation size is ((W - L0*floor(W / K)) / (K - L0)), or the height of the same segmentation size is ((H - L0*floor(H / K)) / (K - L0)).
[0684] In some examples, when L1 is equal to (K - L0 – 1), a left sub-block is assigned a block width equal to W – L0 * floor(W / K) - ((W - L0 * floor(W / K)) / (K - L0)) * (K - L0 - 1), or a top sub-block is assigned a block height equal to H – L0 * floor(H / K) - ((H - L0 * floor(H / K)) / (K - L0)) * (K - L0 - 1).
[0685] In some examples, the remaining (K - L0) sub-blocks are assigned different split sizes.
[0686] In some examples, the L1 sub-blocks are adjacent to each other.
[0687] In some examples, at least one of the L1 sub-blocks is a non-adjacent sub-block.
[0688] In some examples, the L1 sub-blocks are identified by consecutive indices indicating the processing order during the conversion.
[0689] In some examples, the L1 sub-blocks are identified by non-consecutive indices indicating the processing order during the conversion.
[0690] In some examples, the split size (W i ×H i ) of only one sub-block is different from the split sizes of all the remaining sub-blocks.
[0691] In some examples, all sub-blocks have the same split size (W i ×H i ).
[0692] In some examples, the first block is divided both in the vertical direction and in the horizontal direction.
[0693] In some examples, at least one of W i is not equal to W and / or at least one of H i is not equal to H.
[0694] In some examples, if the width of the first block is a non-power-of-two integer, the first block is divided in the vertical direction, or / if the height of the first block is a non-power-of-two integer, the first block is divided in the horizontal direction.
[0695] In some examples, if the width of the first block is a power-of-two integer, the first block is divided in the vertical direction, or / if the height of the first block is a power-of-two integer, the first block is divided in the horizontal direction.
[0696] In some examples, the plurality of sub-blocks includes 6, 7, or 8 sub-blocks.
[0697] In some examples, an encoding / decoding order is predetermined for an NPT-T mode.
[0698] In some examples, multiple encoding / decoding orders are predetermined for an NPT-T mode.
[0699] In some examples, one of the multiple encoding / decoding orders is selected for a first block via signaling of an indication of the selected encoding / decoding order or derivation at a decoder side.
[0700] In some examples, when the first block allows NPT-T, the first block is partitioned from a parent block by one or more specific kinds of partitioning methods.
[0701] In some examples, when the first block allows NPT-T, the first block is partitioned from a parent block by a quadtree (QT) or a binary tree (BT) or a ternary tree (TT) or NPT-T splitting.
[0702] In some examples, when the first block allows NPT-T, the first block can only be partitioned from a parent block by a quadtree (QT).
[0703] In some examples, when the first block allows NPT-T, the first block is a root block.
[0704] In some examples, a child block can be further partitioned into child blocks by one or more other splitting types.
[0705] In some examples, a child block can be further partitioned into child blocks by a BT and / or a TT.
[0706] In some examples, a child block can be further partitioned into child blocks by a BT and / or a TT and / or a QUT-T, but cannot be further partitioned into child blocks by a QT.
[0707] In some examples, a child block can be further partitioned into child blocks by an NPT-T and / or a QT, but cannot be further partitioned into child blocks by a BT or a TT.
[0708] In some examples, a child block cannot be further partitioned into child blocks by a QT.
[0709] In some examples, a child block cannot be further partitioned into child blocks.
[0710] In some examples, when the first block is partitioned into multiple child blocks by NPT-T, the partitioning depth of the child blocks is derived from the partitioning depth of the first block.
[0711] In some examples, the partitioning by NPT-T is used to update at least one of the depths of a QT, a BT, a TT, an NPT-T, or a multi-type tree (MTT).
[0712] In some examples, the QT depth of one or all of the sub-blocks is equal to the QT depth of the first block plus 1.
[0713] In some examples, the BT depth of one or all of the sub-blocks is equal to the BT depth of the first block plus 1.
[0714] In some examples, the TT depth of one or all of the sub-blocks is equal to the TT depth of the first block plus 1.
[0715] In some examples, the NPT-T depth of one or all of the sub-blocks is equal to the NPT-T depth of the first block plus 1.
[0716] In some examples, the MTT depth of one or all of the sub-blocks is equal to the MTT depth of the first block plus 1.
[0717] In some examples, if the first block is divided into sub-blocks by BT, the MTT depth of the sub-blocks is equal to the MTT depth of the first block plus 1.
[0718] In some examples, if the first block is divided into sub-blocks by TT, the MTT depth of the sub-blocks is equal to the MTT depth of the first block plus 1.
[0719] In some examples, the increase in the NPT-T or BT or TT or QT or MTT depth of different sub-blocks is different.
[0720] In some examples, the depth increase depends on the ratio of the sub-blocks compared to the first block.
[0721] In some examples, the filtering process depends on the NPT-T segmentation, where the filtering process is associated with at least one of a deblocking filter, a sample adaptive offset (SAO) filter, an adaptive loop filter (ALF), a diffusion filter, and a bilateral filter.
[0722] In some examples, whether and / or how to filter the samples depends on whether these samples are located at the boundary of a block generated by NPT-T partitioning.
[0723] In some examples, the samples of the previously reconstructed sub-blocks are used in the diffusion filter or / and the bilateral filter.
[0724] In some examples, whether and / or how to filter the samples depends on whether these samples are located at the boundary of a transform block within a codec unit generated by NPT-T partitioning.
[0725] In some examples, the intra prediction mode or the combined inter and intra prediction (CIIP) mode depends on the NPT-T segmentation.
[0726] In some examples, a sub-block uses a previously reconstructed sub-block for intra prediction in an intra prediction mode or a CIIP mode.
[0727] In some examples, a local illumination compensation (LIC) mode depends on an NPT-T split.
[0728] In some examples, a sub-block uses a previously reconstructed sub-block to derive LIC parameters.
[0729] In some examples, based on additional information, it is determined whether the use of a non-power-of-two partition tree (NPT-T) is enabled, where the additional information regarding whether to apply NPT-T and / or which NPT-T to apply is signaled from an encoder to a decoder.
[0730] In some examples, the information is signaled in at least one of a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), a sequence header, a picture header, a slice header, a slice group header, and a picture header to indicate whether NPT-T can be applied.
[0731] In some examples, the information is signaled in at least one of a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), a sequence header, a picture header, a slice header, a slice group header, and a picture header to indicate which NPT-T can be applied.
[0732] In some examples, the information is signaled in a block to indicate whether NPT-T can be applied.
[0733] In some examples, the information is signaled in a block to indicate which NPT-T can be applied.
[0734] In some examples, different NPT-T sets are designed for different block shapes and / or sizes.
[0735] In some examples, different NPT-T sets are designed for at least one of a picture, a slice, and a slice having different temporal layers.
[0736] In some examples, whether and / or how to apply NPT-T depends on at least one of video resolution, picture resolution, coding / decoding mode, video characteristics including screen content or a sequence or hybrid content captured by a camera, slice type, picture type, slice group type, and a low-delay check flag.
[0737] In some examples, a syntax element is signaled to indicate no division or split.
[0738] In some examples, a syntax element is first signaled to indicate whether to divide; then another syntax element is signaled to indicate a split including a split tree type and a division direction.
[0739] In some examples, the indication of the split is represented by two syntax elements: the selected split tree type and the partitioning direction.
[0740] In some examples, the index of the split tree type is first signaled in the block to indicate whether the block is partitioned by QT, or by NPT-T, or is non-partitioned.
[0741] In some examples, the partitioning direction and / or partitioning pattern including one of horizontal, vertical, and hybrid directions is further signaled.
[0742] In some examples, the index of the split tree type is first signaled in the block to indicate whether the block is partitioned by BT or TT or NPT-T
[0743] In some examples, the index is conditionally signaled only if at least one of BT, TT, and NPT-T is valid for the first block.
[0744] In some examples, the partitioning direction and / or partitioning pattern including one of horizontal and vertical directions is further signaled.
[0745] In some examples, the indication of the partitioning direction is first signaled, followed by the split tree type including QT, TT, NPT-T.
[0746] In some examples, a flag is signaled in the block to indicate whether the block is vertically partitioned or horizontally partitioned, where the vertical partitioning is BT vertical partitioning, TT vertical partitioning, or NPT-T vertical partitioning, and the horizontal partitioning is BT horizontal partitioning, TT horizontal partitioning, or NPT-T horizontal partitioning.
[0747] In some examples, the flag is conditionally signaled only if the first block is partitioned by BT or TT or NPT-T
[0748] In some examples, the flag is conditionally signaled only if both vertical partitioning and horizontal partitioning are valid for the first block.
[0749] In some examples, if only vertical partitioning is valid, the flag is not signaled and horizontal partitioning is inferred.
[0750] In some examples, if only horizontal partitioning is valid, the flag is not signaled and vertical partitioning is inferred.
[0751] In some examples, a binarization code is signaled in the block to indicate which partitioning is used, and the partitioning is selected from a group of BT, TT, and one type of NPT-T.
[0752] In some examples, the candidate BT, TT, or NPT-T to be signaled is a vertical partition or a horizontal partition according to information signaled previously or derived.
[0753] In some examples, a first flag is signaled to indicate whether NPT-T is used.
[0754] In some examples, the binary code is binary-coded into a truncated unary code.
[0755] In some examples, a first flag is signaled to indicate whether BT is used. If BT is not used, a second flag is signaled to indicate whether NPT-T is used, and if NPT-T is used, a third flag indicating which NPT-T is used is further signaled.
[0756] In some examples, how to signal which split to use in a block depends on which split is valid for the block, and the split includes a split tree type and / or a split direction.
[0757] In some examples, the candidate BT, TT, or NPT-T to be signaled is a vertical partition or a horizontal partition according to information signaled previously or derived.
[0758] In some examples, an unacceptable or invalid partition cannot be signaled from the encoder to the decoder.
[0759] In some examples, if only one of the partitions in a set of BT, TT, and NPT-T is valid, the binary code indicating which partition to use is not signaled.
[0760] In some examples, if only two of the partitions in BT, TT, and NPT-T are valid, a flag is signaled to indicate which of the two valid partitions to use.
[0761] In some examples, the code indicating which partition in a set of BT, TT, and NPT-T to use is binary-coded into a truncated unary code.
[0762] In some examples, the maximum value of the truncated unary code is N - 1, where N is the number of valid partitions in a set of BT, TT, and NPT-T.
[0763] In some examples, when building the codeword table, invalid partitions are skipped.
[0764] In some examples, if no NPT-T is valid, the flag indicating whether NPT-T is used is not signaled and is inferred to be false.
[0765] In some examples, if only one NPT-T is valid and signaling indicates the use of NPT-T, no further information is signaled to indicate which NPT-T to use, and the valid NPT-T is used implicitly.
[0766] In some examples, if only two NPT-Ts are valid and signaling indicates the use of NPT-T, a flag is signaled to indicate which NPT-T to use.
[0767] In some examples, if only three NPT-Ts are valid and signaling indicates the use of NPT-T, a message is signaled to indicate which NPT-T to use.
[0768] In some examples, the binarization and / or signaling method does not change depending on which partition in the block is valid.
[0769] In some examples, the indication of the split is encoded and decoded by using arithmetic coding and decoding of one or more contexts.
[0770] In some examples, only partial bits of the binary string are encoded and decoded with contexts, and the remaining bits are encoded and decoded in bypass mode.
[0771] In some examples, all bits of the binary string are encoded and decoded with contexts.
[0772] In some examples, all bits of the binary string are encoded and decoded in bypass mode.
[0773] In some examples, for the bits of the binary string encoded and decoded with contexts, one or more contexts are used.
[0774] In some examples, the context depends on at least one of the following:
[0775] (a) The position or index of the bit;
[0776] (b) The split of spatially / temporally neighboring blocks;
[0777] (c) The current split depth of the current block, including at least one of QT depth, BT depth, TT depth, NPT-T depth, and MTT depth;
[0778] (d) The split depth of spatially / temporally neighboring blocks and / or spatially / temporally non-adjacent blocks, including at least one of QT depth, BT depth, TT depth, NPT-T depth, and MTT depth;
[0779] (e) The coding and decoding mode of spatially / temporally neighboring blocks;
[0780] (f) The width / height of spatially / temporally neighboring blocks;
[0781] (g) Width / height of the current block;
[0782] (h) Strip type / picture type / slice group type;
[0783] (I) Color component;
[0784] (j) Statistical results of the segmentation type from the previously coded block.
[0785] In some examples, whether and / or how to apply NPT-T depends on the color format and / or color component.
[0786] In some examples, the color format includes 4:4:4 or 4:2:0.
[0787] In some examples, whether and how to use NPT-T depends on whether the luma and chroma coding trees are separated.
[0788] In some examples, when the luma and chroma coding trees are separated, NPT-T can only be applied to the luma component.
[0789] In some examples, the plurality of sub-blocks includes 6, 7, or 8 sub-blocks.
[0790] In some examples, the width of the transform matrix applied to at least one sub-block is less than the width of the sub-block, wherein the width and / or height of the at least one sub-block has a size that is a non-power-of-two integer; and / or the height of the transform matrix applied to at least one sub-block is less than the height of the sub-block, wherein the width and / or height of the at least one sub-block has a size that is a non-power-of-two integer.
[0791] In some examples, the conversion generates the first block of the video from the bitstream representation.
[0792] In some examples, the conversion generates the bitstream representation from the first block of the video.
[0793] Figure 20 is a flowchart of an example method 2000 for video processing. Method 2000 includes dividing (2002) the first block of the video into a plurality of sub-blocks including a first sub-block, wherein at least one of the width (W i ) and height (H i ) of the block size of the first sub-block is a non-power-of-two integer; determining (2004) transformation parameters associated with the transform block of the first sub-block for the conversion between the first sub-block and the bitstream representation of the first sub-block, wherein one or more of the width (TW i ) and height (TH i ) of the block size of the transform block is less than the width (W i ) and height (H i ) of the first sub-block, and TWi or TH i is at least one of a power of two; and performing the transform (2006) by using transform parameters.
[0794] In some examples, the first sub-block is partitioned from a parent block that is the first block by using a non-power-of-two partition tree (NPT-T), where the NPT-T partition includes partitioning the first block of the video into a plurality of first sub-blocks of a smaller size of the first block, and the width (Wi) and / or height (Hi) of at least one of the first sub-blocks is a non-power-of-two integer.
[0795] In some examples, the transform parameters include TW of the transform block i and / or TH i and / or a transform matrix.
[0796] In some examples, TW of the transform block i and / or TH i and / or the setting of the transform matrix depends on the block size of the first sub-block.
[0797] In some examples, TW i is set to pow(2,floor(log2(W i )) and / or TH i is set to pow(2,floor(log2(H i ))), where the function floor(x) returns the largest integer less than or equal to x, and the function pow(x,y) returns x to the power of y.
[0798] In some examples, TW of the transform block i and / or TH i and / or the setting of the transform matrix depends on the available transform matrix.
[0799] In some examples, TW i is set to an allowed transform size and / or transform matrix in the form of a power of two, and / or TH i is set to an allowed transform size and / or transform matrix in the form of a power of two.
[0800] In some examples, TW i is the largest allowed transform size but not greater than W i and TH i is the largest allowed transform size but not greater than H i .
[0801] In some examples, TW i and / or TH i and / or the setting of the transform matrix depends on the parent block from which the sub-block is partitioned.
[0802] In some examples, TW i and / or TH i and / or the setting of the transform matrix depends on the block sizes of one or more sub-blocks divided from the same parent block.
[0803] In some examples, TW i and / or TH i and / or the setting of the transform matrix depends on the color format and / or color components.
[0804] In some examples, TW i and / or TH i and / or the setting of the transform matrix depends on at least one of picture type, slice type, slice group type, and low-delay check flag.
[0805] In some examples, TW i and / or TH i and / or the setting of the transform matrix depends on other codec information including at least one of quantization parameter, mode information, and reference picture information, where the mode information includes intra-frame, inter-frame, combined intra-frame-inter-frame mode, and the reference picture information includes current picture reference, uni-directional prediction, bi-directional prediction, and multi-hypothesis prediction.
[0806] In some examples, the information on how to define the transform block size and / or transform matrix is signaled in the high-level syntax elements including SPS or VPS, or is signaled in SPS / PPS / VPS / APS / sequence header / picture header / slice header / slice group header / CTU row / region.
[0807] In some examples, TW i is not greater than a predefined value TWmax, where TWmax = 64, and / or TH i is not greater than a predefined value THmax, where THmax = 64.
[0808] In some examples, TW i is not less than a predefined value TWmin, where TWmin = 4, and / or TH i is not less than a predefined value THmin, where THmin = 4.
[0809] In some examples, the transform parameter further includes a fixed offset (OffsetX, OffsetY), and the fixed offset (OffsetX, OffsetY) is applied to locate the upper-left position within the region where the transform is to be applied using the transform parameter, where the coordinates of the upper-left corner of the first sub-block are (0, 0).
[0810] In some examples, both OffsetX and OffsetY are set to 0.
[0811] In some examples, only one of OffsetX and OffsetY is set to 0.
[0812] In some examples, neither OffsetX nor OffsetY is equal to 0.
[0813] In some examples, OffsetX and / or OffsetY depends on the shape of the first sub-block.
[0814] In some examples, OffsetX and / or OffsetY depends on the shape of the parent block.
[0815] In some examples, OffsetX and / or OffsetY depends on the encoding / decoding information of the sub-block / parent block.
[0816] In some examples, the setting of OffsetX and / or OffsetY depends on the color format and / or color components.
[0817] In some examples, the setting of OffsetX and / or OffsetY depends on at least one of the picture type, slice type, slice group type, and low-delay check flag.
[0818] In some examples, the setting of OffsetX and / or OffsetY depends on other encoding / decoding information including at least one of the quantization parameter, mode information, and reference picture information, where the mode information includes intra-frame, inter-frame, combined intra-frame - inter-frame modes, and the reference picture information includes current picture reference, uni-directional prediction, bi-directional prediction, and multi-hypothesis prediction.
[0819] In some examples, OffsetX and / or OffsetY is signaled.
[0820] In some examples, a candidate set including one or more candidates of (OffsetX, OffsetY) is defined, and the index of the candidate is signaled.
[0821] In some examples, the size of the candidate set depends on the shape of the sub-block, and the index is signaled differently for different sub-block shapes.
[0822] In some examples, if the size of the candidate set is equal to 1, the index is not signaled.
[0823] In some examples, a candidate set including one or more candidates of (OffsetX, OffsetY) is defined, and the index of the candidate is signaled to indicate both OffsetX and OffsetY.
[0824] In some examples, the size of the candidate set depends on the shape of the sub-block, and the index is signaled differently for different sub-block shapes.
[0825] In some examples, if the size of the candidate set is equal to 1, the index is not signaled.
[0826] In some examples, the transform parameters include multiple different transform sizes and / or transform matrices and / or offsets for the first sub-block.
[0827] In some examples, all kinds of transform sizes are in the form of powers of 2.
[0828] In some examples, at least one of the transform sizes is in the form of a power of 2.
[0829] In some examples, other kinds of transform sizes are not greater than TWmax and / or THmax.
[0830] In some examples, for each of the allowed transform sizes, a fixed offset including both OffsetX and OffsetY of the transform region to be applied is defined or derived.
[0831] In some examples, only an indication of the selected transform size is signaled.
[0832] In some examples, multiple offsets of the transform region to be applied are associated with each of the allowed transform sizes.
[0833] In some examples, indications of both the selected transform size and the offset are signaled.
[0834] In some examples, for all kinds of allowed transform sizes, the number of allowed offsets is the same.
[0835] In some examples, for different transform sizes, the number of allowed offsets is different.
[0836] In some examples, indications of all kinds of allowed transform sizes and / or offsets and / or transform matrices are signaled.
[0837] In some examples, the allowed transform sizes and / or transform matrices and / or offsets are classified into M categories, and the category index is signaled first.
[0838] In some examples, the index of the selected transform size / offset / matrix is further signaled.
[0839] In some examples, an index is signaled to indicate both the transform size and the offset.
[0840] In some examples, a transformation generates a first sub-block of a video from a bitstream representation.
[0841] In some examples, a transformation generates a bitstream representation from a first sub-block of a video.
[0842] Figure 21 is a flow chart of an example method 1800 of video processing. Method 1800 includes, at 1802, enabling use of a non-power-of-two partition tree (NPT-T) for a transformation between a video and a bitstream representation of the video, where the NPT-T includes partitioning a video block into one or more smaller-sized sub-blocks of the video block, and at least one of the width or height of a sub-block has a pixel size that is a non-power-of-two integer. Method 1800 includes, at 1804, performing the transformation using the NPT-T.
[0843] In some examples, the limitations include allowing a maximum and / or minimum block size for NPT-T partitioning and / or a maximum bit depth and / or maximum depth for NPT-T partitioning.
[0844] In some examples, the maximum and / or minimum block size for NPT-T partitioning and / or the maximum bit depth and / or maximum depth for NPT-T partitioning are signaled or parsed in at least one of a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptive parameter set (APS), a sequence header, a picture header, a slice header, a slice group header, a picture header, a coding tree unit (CTU) row, and a region.
[0845] In some examples, the maximum and / or minimum block size for NPT-T partitioning and / or the maximum bit depth and / or maximum depth for NPT-T partitioning are derived from other values including at least one of a depth of a multi-type tree (MTT) partition or a depth of a quadtree (QT) partition.
[0846] In some examples, the maximum block allowed for NPT-T partitioning is the maximum coding block of a coding tree block or a coding tree unit.
[0847] In some examples, the maximum block allowed for NPT-T partitioning is a virtual pipeline data unit (VPDU).
[0848] In some examples, the maximum and / or minimum block size for NPT-T partitioning and / or the maximum depth for NPT-T partitioning depend on at least one of a profile, a level, or a tier of a standard.
[0849] In some examples, the maximum and / or minimum block size for NPT-T partitioning and / or the maximum depth for NPT-T partitioning are derived to be the same as that of a QT partition.
[0850] In some examples, the maximum and / or minimum block size that allows NPT-T splitting and / or the maximum depth that allows NPT-T splitting depends on at least one of the slice group slice, the stripe type, the color component, and whether the dual tree is enabled.
[0851] In some examples, the maximum and / or minimum block size that allows NPT-T splitting and / or the maximum depth that allows NPT-T splitting is different for different NPT-T modes.
[0852] In some examples, when dividing the first block according to NPT-T splitting, the corresponding depth of the NPT-T splitting of a sub-block is adjusted accordingly.
[0853] In some examples, when dividing the first block according to NPT-T splitting, the corresponding depth of the QT splitting of a sub-block is adjusted accordingly.
[0854] In some examples, when dividing the first block according to NPT-T splitting, the corresponding depth of the MTT splitting of a sub-block is adjusted accordingly.
[0855] In some examples, the adjustment of the corresponding depths of different sub-blocks is done in the same way.
[0856] In some examples, the adjustment of the corresponding depths of different sub-blocks is done in different ways.
[0857] In some examples, the adjustment depends on the block size of the sub-block.
[0858] In some examples, the adjustment includes increasing the corresponding depth by 1.
[0859] In some examples, if the divided sub-block straddles more than one virtual pipeline data unit (VPDU), the NPT-T splitting is disabled.
[0860] In some examples, when the sub-block is forced to be further divided until no sub-block straddles more than one VPDU, the NPT-T splitting is enabled.
[0861] In some examples, if the width (W) and / or height (H) of the first block meet a predetermined condition, the NPT-T splitting is disabled.
[0862] In some examples, the predetermined condition includes at least one of the following:
[0863] If W >= T1 and H >= T2, the NPT-T splitting is disabled, where T1 and T2 are integers; or
[0864] If W >= T1 or H >= T2, the NPT-T splitting is disabled, where T1 and T2 are integers; or
[0865] If W <= T1 and H <= T2, then NPT-T splitting is disabled, where T1 and T2 are integers; or
[0866] If W <= T1 or H <= T2, then NPT-T splitting is disabled, where T1 and T2 are integers; or
[0867] If W × H <= T, then NPT-T splitting is disabled, where T is an integer; or
[0868] If W × H >= T, then NPT-T splitting is disabled, where T is an integer; or
[0869] If H <= T, then horizontal NPT-T splitting is disabled, where T = 16; or
[0870] If H >= T, then horizontal NPT-T is disabled, where T = 128; or
[0871] If W <= T, then vertical NPT-T is disabled, where T = 16; or
[0872] If W >= T, then vertical NPT-T is disabled, where T = 128.
[0873] In some examples, T1, T2, and T are signaled or parsed in at least one of the VPS, SPS, PPS, picture header, slice header, slice group header, and sequence header.
[0874] In some examples, T1, T2, and T depend on the color component.
[0875] In some examples, T1, T2, and T are different for the luma and chroma components.
[0876] In some examples, T1, T2, and T depend on whether the luma coding tree and the chroma coding tree are separated.
[0877] In some examples, if the luma coding tree and the chroma coding tree are separated, then T1, T2, and T are different for the luma and chroma components.
[0878] In some examples, when the transform is not supported for at least one sub-block divided by NPT-T splitting, NPT-T splitting is disabled.
[0879] In some examples, when the depth of the first block exceeds the allowed depth of NPT-T splitting, NPT-T splitting is disabled.
[0880] In some examples, when the size of one sub-block among multiple sub-blocks is smaller than the allowed block size, NPT-T splitting is disabled.
[0881] In some examples, the NPT-T split is enabled if the width (W) and / or height (H) of the first block satisfy a predetermined condition.
[0882] In some examples, the predetermined condition includes at least one of the following:
[0883] If W >= T1 and H >= T2, the NPT-T split is enabled, where T1 and T2 are integers; or
[0884] If W >= T1 or H >= T2, the NPT-T split is enabled, where T1 and T2 are integers; or
[0885] If W <= T1 and H <= T2, the NPT-T split is enabled, where T1 and T2 are integers; or
[0886] If W <= T1 or H <= T2, the NPT-T split is enabled, where T1 and T2 are integers; or
[0887] If W × H <= T, the NPT-T split is enabled, where T is an integer; or
[0888] If W × H >= T, the NPT-T split is enabled, where T is an integer; or
[0889] If H <= T, the horizontal NPT-T split is enabled, where T = 64; or
[0890] If H >= T, the horizontal NPT-T is enabled, where T = 32; or
[0891] If W <= T, the vertical NPT-T is enabled, where T = 64; or
[0892] If W >= T, the vertical NPT-T is enabled, where T = 32.
[0893] In some examples, T1, T2, and T are signaled or parsed in at least one of the VPS, SPS, PPS, picture header, slice header, slice group header, and slice header.
[0894] In some examples, T1, T2, and T depend on the color component.
[0895] In some examples, T1, T2, and T are different for the luma and chroma components.
[0896] In some examples, T1, T2, and T depend on whether the luma coding tree and the chroma coding tree are separated.
[0897] In some examples, if the luma coding tree and the chroma coding tree are separated, T1, T2, and T are different for luma and chroma components.
[0898] In some examples, if the depth of the first block meets a predetermined condition, the NPT-T split is prohibited.
[0899] In some examples, the depth of the first block includes at least one of the QT depth, the BT depth, the TT depth, the NPT-T depth, or the MTT depth.
[0900] In some examples, the predetermined condition includes at least one of the following:
[0901] If the partition depth <= T, the NPT-T split is disabled;
[0902] If the partition depth >= T, the NPT-T split is disabled;
[0903] If the QT partition depth <= T, the NPT-T split is disabled;
[0904] If the QT partition depth >= T, the NPT-T split is disabled;
[0905] If the BT partition depth >= T, the NPT-T split is disabled;
[0906] If the BT partition depth <= T, the NPT-T split is disabled;
[0907] If the TT partition depth >= T, the NPT-T split is disabled;
[0908] If the TT partition depth >= T, the NPT-T split is disabled;
[0909] If the NPT-T partition depth <= T, the NPT-T split is disabled;
[0910] If the NPT-T partition depth >= T, the NPT-T split is disabled;
[0911] If the MTT partition depth <= T, the NPT-T split is disabled;
[0912] If the MTT partition depth >= T, the NPT-T split is disabled,
[0913] where T is an integer.
[0914] In some examples, T is signaled or parsed in at least one of the VPS, SPS, PPS, picture header, slice header, slice group header, and slice header.
[0915] In some examples, T depends on the color component.
[0916] In some examples, T is different for the luminance and chrominance components.
[0917] In some examples, T depends on whether the luminance coding / decoding tree and the chrominance coding / decoding tree are separated.
[0918] In some examples, if the luminance coding / decoding tree and the chrominance coding / decoding tree are separated, then T is different for the luminance and chrominance components.
[0919] In some examples, if the depth of the first block satisfies a predetermined condition, then the NPT-T split is enabled.
[0920] In some examples, the depth of the first block includes at least one of the QT depth, the BT depth, the TT depth, the NPT-T depth, or the MTT depth.
[0921] In some examples, the predetermined condition includes at least one of the following:
[0922] If the partition depth <= T, then the NPT-T split is enabled;
[0923] If the partition depth >= T, then the NPT-T split is enabled;
[0924] If the QT partition depth <= T, then the NPT-T split is enabled;
[0925] If the QT partition depth >= T, then the NPT-T split is enabled;
[0926] If the BT partition depth >= T, then the NPT-T split is enabled;
[0927] If the BT partition depth <= T, then the NPT-T split is enabled;
[0928] If the TT partition depth >= T, then the NPT-T split is enabled;
[0929] If the TT partition depth >= T, then the NPT-T split is enabled;
[0930] If the NPT-T partition depth <= T, then the NPT-T split is enabled;
[0931] If the NPT-T partition depth >= T, then the NPT-T split is enabled;
[0932] If the MTT partition depth <= T, then the NPT-T split is enabled;
[0933] If the MTT partition depth >= T, then the NPT-T split is enabled,
[0934] where T is an integer.
[0935] In some examples, T is signaled or parsed in at least one of a VPS, SPS, PPS, picture header, slice header, slice group header, and picture slice header.
[0936] In some examples, T depends on a color component.
[0937] In some examples, T is different for a luminance and a chrominance component.
[0938] In some examples, T depends on whether a luminance coding tree and a chrominance coding tree are separated.
[0939] In some examples, if a luminance coding tree and a chrominance coding tree are separated, then T is different for a luminance and a chrominance component.
[0940] In some examples, whether and / or how to use NPT-T splitting depends on the position of a first block.
[0941] In some examples, whether and how to use NPT-T splitting depends on whether a first block straddles a picture, slice, or slice group boundary.
[0942] In some examples, if a first block straddles a picture, slice, or slice group bottom boundary, then vertical NPT-T splitting is disabled.
[0943] In some examples, if a first block straddles a picture, slice, or slice group bottom boundary, then horizontal NPT-T splitting is disabled.
[0944] In some examples, if a first block straddles a picture, slice, or slice group right boundary, then vertical NPT-T splitting is disabled.
[0945] In some examples, if a first block straddles a picture, slice, or slice group right boundary, then horizontal NPT-T splitting is disabled.
[0946] In some examples, if a first block straddles a picture, slice, or slice group bottom boundary, then hybrid NPT-T splitting is disabled.
[0947] In some examples, if a first block straddles a picture, slice, or slice group right boundary, then hybrid NPT-T splitting is disabled.
[0948] In some examples, if a sub-block divided by NPT-T splitting is completely outside a picture, slice, or slice group, then the sub-block is omitted during conversion.
[0949] In some examples, if a sub-block divided by NPT-T splitting is partially outside a picture, then the part outside the picture is omitted during conversion.
[0950] In some examples, if a sub-block divided by NPT-T is partially outside a picture, slice, or slice group, the part within the picture is further divided.
[0951] In some examples, if a sub-block divided by NPT-T is partially outside a picture, slice, or slice group, the part within the picture is encoded and decoded as a coding unit (CU).
[0952] In some examples, whether the part within the picture is encoded and decoded as a CU depends on the width (w) and height (h) of that part.
[0953] In some examples, if w = 2nw and h = 2nh, the part within the picture is encoded and decoded as a CU, where nw and nh are integers.
[0954] In some examples, if any sub-block divided by NPT-T is partially or completely outside a picture, slice, or slice group, NPT-T division is disabled.
[0955] In some examples, when NPT-T division or a specific NPT-T mode is disabled, the indication of the use of the signaling mode is skipped.
[0956] In some examples, when NPT-T division or a specific NPT-T mode is disabled, the indication of the use of the mode is constrained to false in the compliant bitstream.
[0957] In some examples, the sub-blocks divided from the first block by NPT-T are not allowed to be further divided by one or more of the following division methods:
[0958] a. QT,
[0959] b. Horizontal BT,
[0960] c. Vertical BT,
[0961] d. Horizontal TT,
[0962] e. Vertical BT,
[0963] f. Horizontal asymmetric quadtree (UQT),
[0964] g. Vertical UQT, and
[0965] h. NPT-T
[0966] In some examples, NPT-T division is disabled for the root node.
[0967] In some examples, NPT-T division is enabled for the leaf node.
[0968] In some examples, signaling notifications based on further partitioning of other partitions are skipped.
[0969] In some examples, NPT-T partitioning is only applied to leaf nodes.
[0970] In some examples, signaling notifications or parsing flags for leaf nodes are used to indicate whether NPT-T partitioning is used.
[0971] In some examples, which indication of NPT-T partitioning is further signaled or parsed.
[0972] In some examples, for a specific size of the first block, if the first block is partitioned into multiple sub-blocks by NPT-T partitioning, all of the multiple sub-blocks share the same Merge list.
[0973] In some examples, for a specific size of the first block, if the first block is partitioned into multiple sub-blocks by NPT-T partitioning, all of the multiple sub-blocks share the same coding mode, where the coding mode is an intra mode or an inter mode.
[0974] In some examples, for a specific size of the first block, if the first block is partitioned into multiple sub-blocks by NPT-T partitioning, all of the multiple sub-blocks share the same Advanced Motion Vector Prediction (AMVP) or other kinds of motion candidate lists.
[0975] In some examples, for a specific size of the first block, if the first block is partitioned into multiple sub-blocks by NPT-T partitioning, all of the multiple sub-blocks share the same Cross-Component Linear Model (CCLM) or Local Illumination Compensation (LIC) parameters or other parameters derived on the decoder side.
[0976] In some examples, the width of the transform matrix applied to at least one sub-block is less than the width of the sub-block, where the width and / or height of the at least one sub-block has a size that is a non-power-of-two integer; and / or the height of the transform matrix applied to at least one sub-block is less than the height of the sub-block, where the width and / or height of the at least one sub-block has a size that is a non-power-of-two integer.
[0977] In some examples, transform the first block of video generated from the bitstream representation.
[0978] In some examples, transform the bitstream representation generated from the first block of video.
[0979] The disclosed and other solutions, examples, embodiments, modules, and functional operations may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and structural equivalents thereof, or in combinations of one or more of them. The disclosed and other embodiments may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for running by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter affecting a machine-readable propagated signal, or a combination of one or more of them. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for the computer programs being discussed, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, generated to encode information for transmission to an appropriate receiver apparatus.
[0980] A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including a compiled or interpreted language, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in a part of a file that holds other programs or data, such as one or more scripts stored in a markup language document, in a single file dedicated to the program being discussed, or in multiple coordinated files (such as files that store one or more modules, subroutines, or portions of code). A computer program may be deployed to run on one computer or on multiple computers distributed across one site or multiple sites and interconnected by a communication network.
[0981] The processes and logical flows described in this specification may be performed by one or more programmable processors running one or more computer programs to perform functions by operating on input data and generating output. The processes and logical flows may also be performed by, or the apparatus may be implemented as, special purpose logic circuitry, e.g., an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).
[0982] Processors suitable for running a computer program include, for example, any one or more processors of general and special purpose microprocessors, as well as any type of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more memory devices for storing the instructions and data. Generally, a computer will also include one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data, or operatively coupled to receive data from or transfer data to the one or more mass storage devices, or receive data from and transfer data to them. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.
[0983] Although this patent document contains many details, these details should not be construed as limitations on any subject or the scope that may be claimed, but rather as descriptions of features specific to particular embodiments of a particular technology. Certain features described in the context of separate embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable sub-combination. Additionally, although features may be described as acting in certain combinations and even initially claimed as such, in some cases one or more features from a claimed combination may be excluded from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
[0984] Similarly, although operations are depicted in the drawings in a particular order, this should not be understood to require that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed to achieve a desired result. Additionally, the separation of various system components in the embodiments described in this patent document should not be understood to require such separation in all embodiments.
[0985] Only some embodiments and examples have been described, and other embodiments, enhancements, and variations may be made based on what is described and illustrated in this patent document.
Claims
1. A method for video processing, comprising: Divide a first block of a video into a plurality of sub - blocks including a first sub - block, wherein at least one of the width Wi and height Hi of the block size of the first sub - block is a non - power - of - two integer; Determine transform parameters associated with a transform block of a first sub-block for conversion between the first sub-block and a bitstream of the first sub-block, wherein a width TW of a block size of the transform block i and a height TH i of one or more of them are less than a width W of the first sub-block i and a height H i , and at least one of TW i or TH i is a power of two, wherein the TW i and / or TH i and / or settings of a transform matrix depend on a block size of the first sub-block or available transform matrices, TW i is set to pow(2, floor(log2(W i )) and / or TH i is set to pow(2, floor(log2(H i ))), where the function floor(x) returns the largest integer less than or equal to x, and the function pow(x, y) returns x to the power of y; and Perform the transformation by using transform parameters, wherein the transform parameters include a fixed offset (OffsetX, OffsetY), and the fixed offset (OffsetX, OffsetY) is applied to locate the upper - left position within the region to which the transform is to be applied using the transform parameters, and the coordinates of the upper - left corner of the first sub - block are (0, 0).
2. The method according to claim 1, wherein, The first sub - block is divided from a parent block that is the first block by using a non - power - of - two partitioning tree NPT - T, wherein the NPT - T partitioning includes dividing the first block of the video into a plurality of first sub - blocks of smaller sizes of the first block, and the width Wi and / or height Hi of at least one first sub - block is a non - power - of - two integer.
3. The method according to claim 1 or 2, wherein, The transformation parameters include the TW of the transformation block i and / or the TH i and / or the transformation matrix.
4. The method according to claim 1, wherein, TW i An allowed transform size and / or an element in a transform matrix set to a power of two, and / or TH i An allowed transform size and / or an element in a transform matrix set to a power of two.
5. The method according to claim 4, wherein, TW i is set to be equal to the maximum allowable transformed size, but not greater than W i , and TH i is set to be equal to the maximum allowable transformed size, but not greater than H i .
6. The method according to claim 1 or 2, wherein, TW i and / or TH i and / or the setting of the transformation matrix depends on the parent block from which the sub-block is divided.
7. The method according to claim 1 or 2, wherein, TW i and / or TH i and / or the setting of the transformation matrix depends on the block sizes of one or more sub-blocks partitioned from the same parent block.
8. The method according to claim 1 or 2, wherein, TW i and / or TH i and / or the setting of the transformation matrix depends on the color format and / or color components.
9. The method according to claim 1 or 2, wherein, TW i and / or TH i The setting of the transformation matrix depends on at least one of the picture type, stripe type, slice group type, and low-latency check flag.
10. The method according to claim 1 or 2, wherein, TW i and / or TH i and / or the setting of the transform matrix depends on other codec information including at least one of a quantization parameter, mode information, and reference picture information, where the mode information includes intra-frame, inter-frame, combined intra-frame-inter-frame modes, and the reference picture information includes current picture reference, uni-directional prediction, bi-directional prediction, and multi-hypothesis prediction.
11. The method according to claim 1 or 2, wherein, Information on how to define the transform block size and / or the transform matrix is signaled in high - level syntax elements including SPS or VPS, or is signaled in SPS / PPS / VPS / APS / sequence header / picture header / strip header / slice group header / CTU row / region.
12. The method according to claim 1 or 2, wherein, TW i not greater than a predefined value TWmax, where TWmax = 64, and / or TH i not greater than a predefined value THmax, where THmax = 64.
13. The method according to claim 1 or 2, wherein, TW i not less than a predefined value TWmin, where TWmin = 4, and / or TH i not less than a predefined value THmin, where THmin = 4.
14. The method according to claim 1, wherein, Both OffsetX and OffsetY are set to 0.
15. The method according to claim 1, wherein, Only one of OffsetX and OffsetY is set to 0.
16. The method according to claim 1, wherein, Neither OffsetX nor OffsetY is equal to 0.
17. The method according to claim 1, wherein, OffsetX and / or OffsetY depends on the shape of the first sub - block.
18. The method according to claim 1, wherein, OffsetX and / or OffsetY depends on the shape of the parent block.
19. The method according to claim 1, wherein, OffsetX and / or OffsetY depends on the coding / decoding information of the sub - block / parent block.
20. The method according to claim 1, wherein, The setting of OffsetX and / or OffsetY depends on the color format and / or color component.
21. The method according to claim 1, wherein, The setting of OffsetX and / or OffsetY depends on at least one of picture type, strip type, slice group type, and low - latency check flag.
22. The method according to claim 1, wherein, The setting of OffsetX and / or OffsetY depends on other coding / decoding information including at least one of quantization parameter, mode information, and reference picture information, wherein the mode information includes intra - frame, inter - frame, combined intra - frame - inter - frame mode, and the reference picture information includes current picture reference, uni - directional prediction, bi - directional prediction, and multi - hypothesis prediction.
23. The method according to claim 1, wherein, OffsetX and / or OffsetY is signaled.
24. The method according to claim 1, wherein, A candidate set including one or more candidates of OffsetX and / or OffsetY is defined, and the index of the candidate is signaled.
25. The method according to claim 24, wherein, The size of the candidate set depends on the shape of the sub - block, and the index is signaled differently for different sub - block shapes.
26. The method according to claim 24, wherein, If the size of the candidate set is equal to 1, the index is not signaled.
27. The method according to claim 1, wherein, A candidate set including one or more candidates of (OffsetX, OffsetY) is defined, and the index of the candidate is signaled to indicate both OffsetX and OffsetY.
28. The method according to claim 27, wherein, The size of the candidate set depends on the shape of the sub - block, and the index is signaled differently for different sub - block shapes.
29. The method according to claim 28, wherein, If the size of the candidate set is equal to 1, the index is not signaled.
30. The method according to claim 1 or 2, wherein, The transform parameters include a plurality of different transform sizes and / or transform matrices and / or offsets for the first sub-block.
31. The method according to claim 30, wherein, All kinds of transform sizes are in the form of powers of two.
32. The method according to claim 30, wherein, At least one of the transform sizes is in the form of a power of two.
33. The method according to claim 30, wherein, The transform sizes that are not in the form of powers of two are not greater than TWmax and / or THmax.
34. The method according to claim 30, wherein, For each of the allowed transform sizes, a fixed offset including both OffsetX and OffsetY of the transform region to be applied is defined or derived.
35. The method according to claim 34, wherein, Only the indication of the selected transform size is signaled.
36. The method according to claim 30, wherein, A plurality of offsets of the transform region to be applied are associated with each of the allowed transform sizes.
37. The method according to claim 36, wherein, The indications of the selected transform size and offset are both signaled.
38. The method according to claim 36 or 37, wherein, For all kinds of allowed transform sizes, the number of allowed offsets is the same.
39. The method according to claim 36 or 37, wherein, For different transform sizes, the number of allowed offsets is different.
40. The method according to claim 30, wherein, The indications of all kinds of allowed transform sizes and / or offsets and / or transform matrices are signaled.
41. The method according to claim 30, wherein, The allowed transform sizes and / or transform matrices and / or offsets are classified into M categories, and the category index is signaled first.
42. The method according to claim 41, wherein, The index of the selected transform size / offset / matrix is further signaled.
43. The method according to claim 30, wherein, An index is signaled to indicate both the transform size and the offset.
44. The method according to claim 1 or 2, wherein, The conversion generates a first sub-block of the video from the bitstream.
45. The method according to claim 1 or 2, wherein, The conversion generates a bitstream from a first sub-block of the video.
46. An apparatus in a video system, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement the method according to any one of claims 1 to 45.
47. A computer-readable medium storing code, the code, when executed by a processor, causing the processor to execute the method according to any one of claims 1 to 45.
Citation Information
Patent Citations
Block size based transform restrictions
WO2018130473A1