Apply implicit transformation selection
By making dynamic transformation decisions based on coefficient sets and codec information in video encoding and decoding technology, combined with implicit MTS and SBT transformation, the problems of low encoding and decoding efficiency and high computational complexity in the existing technology are solved, and high resolution is achieved Efficient processing and bandwidth optimization of rate video.
Patent Information
- Application Number
- CN202080041875.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-06-15
- Filing Date
- 2020-06-08
- Publication Date
- 2025-01-03
- Estimated Expiration
- 2040-06-08
AI Technical Summary
When processing high-resolution videos, existing video encoding and decoding technologies have problems such as low encoding and decoding efficiency, high computational complexity and large bandwidth usage. Especially in the context of the continuous growth in bandwidth demand for digital video usage, existing multiple transformation methods There are problems with signaling notification overhead and low efficiency.
A multiple transformation method is proposed. By making transformation decisions based on the coefficient set, and transform selection is performed at the encoding and decoding unit, codec block or transform unit level, combined with implicit MTS and SBT transformations, the suitable transformation matrix is dynamically selected to improve the Codec efficiency, reduce calculation complexity.
Improves the efficiency and performance of video encoding and decoding, reduces computational complexity and bandwidth usage, and is suitable for existing and future video encoding and decoding standards such as HEVC and VVC, enhancing the processing capabilities of high-resolution videos.
Smart Images

Figure CN113940076B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] In accordance with the applicable patent laws and / or implementing regulations regarding the Paris Convention, this application is filed in a timely manner to claim the priority and benefits of International Patent Application No. PCT / CN2019 / 090261 filed on June 6, 2019 and International Patent Application No. PCT / CN2019 / 091435 filed on June 15, 2019. For all purposes prescribed by law, the entire disclosure of the above application is incorporated herein by reference as part of the disclosure of this application. Technical Field
[0003] This patent document relates to video coding and decoding technology, equipment and systems. Background Art
[0004] Despite advances in video compression, digital video remains the largest bandwidth used on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, bandwidth requirements for digital video use are expected to continue to grow. Summary of the invention
[0005] Devices, systems and methods related to digital video coding are described, and in particular, multiple transform methods for video coding are described. The described methods can be applied to existing video coding standards (e.g., High Efficiency Video Codec (HEVC)) and future video coding standards (e.g., Versatile Video Codec (VVC)) or codecs.
[0006] In yet another representative aspect, the disclosed technology can be used to provide an example method of video processing. The method includes making a decision about applying a transform to a current block of video based on a coefficient set, and performing a conversion between the current block and a bitstream representation of the video based on the decision.
[0007] In another representative aspect, the disclosed technology can be used to provide an example method of video processing. The method includes making a decision about applying a transform to a current block of video based on codec information associated with the current block, and performing a conversion between the current block and a bitstream representation of the video based on the decision.
[0008] In another representative aspect, the disclosed technology can be used to provide an example method of video processing. The method includes: for a current block of a video, based on an indication at a codec unit (CU) level, a codec block (CB) level, or a transform unit (TU) level in a bitstream representation of the video, making a decision about applying a transform to the current block; and based on the decision, performing a conversion between the current block and the bitstream representation.
[0009] In yet another representative aspect, the above method is embodied in the form of processor executable code and stored in a computer readable program medium.
[0010] In yet another representative aspect, a device configured or operable to perform the above method is disclosed. The device may include a processor programmed to implement the method.
[0011] In yet another representative aspect, a video decoder device may implement the methods described herein.
[0012] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the description and the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] Figure 1 An example of a codec block diagram is shown.
[0014] Figure 2 Examples of 67 intra prediction modes are shown.
[0015] Figure 3A and 3B An example of reference samples for wide-angle intra prediction mode for a non-square block is shown.
[0016] Figure 4 An example of discontinuity when using wide angle intra prediction is shown.
[0017] Figures 5A-5D An example of samples used by the Position Dependent Intra Prediction Combining (PDPC) method is shown.
[0018] Figure 6 Examples of partitioning into 4x8 and 8x4 blocks are shown.
[0019] Figure 7 Examples of partitioning of all blocks except 4×8, 8×4, and 4×4 are shown.
[0020] Figure 8 An example of dividing a block of 4×8 samples into two independently decodable regions is shown.
[0021] Fig. 9 An example of a processing order for pixel rows that maximizes throughput for a 4xN block using vertical prediction values is shown.
[0022] Fig.10 An example of a secondary transform of JEM is shown.
[0023] Fig.11 An example of the proposed simplified quadratic transform (RST) is shown.
[0024] Fig.12Examples of forward and inverse simplification transforms are shown.
[0025] Fig.13 An example of forward RST 8×8 processing with a 16×48 matrix is shown.
[0026] Fig.14 An example is shown where positions 17 to 64 are scanned in an 8x8 block for non-zero elements.
[0027] Fig.15 Examples of sub-block transform modes SBT-V and SBT-H are shown
[0028] Figures 16A-16C A flow chart illustrating an example method of video processing is shown.
[0029] Fig.17 is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document.
[0030] Fig.18 is a block diagram of an example video processing system in which the disclosed techniques may be implemented. DETAILED DESCRIPTION
[0031] 1 Introduction
[0032] Video coding methods and techniques are ubiquitous in modern technology due to the growing demand for higher resolution video. Video codecs typically include electronic circuits or software that compress or decompress digital video and are constantly being improved to provide higher codec efficiency. Video codecs convert uncompressed video to a compressed format and vice versa. There is a complex relationship between video quality, the amount of data used to represent the video (determined by the bitrate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, and end-to-end delay (latency). The compression format usually conforms to a standard video compression specification, such as the High Efficiency Video Codec (HEVC) standard (also known as H.265 or MPEG-H Part 2), the yet-to-be-finalized Versatile Video Codec (VVC) standard, or other current and / or future video codec standards.
[0033] Embodiments of the disclosed technology can be applied to existing video codec standards (e.g., HEVC, H.265) and future standards to improve runtime performance. Section headings are used in this document to improve the readability of the description and do not in any way limit the discussion or embodiments (and / or implementations) to only the corresponding sections.
[0034] 2. Implementation and Examples of Multiple Transformation Methods
[0035] 2.1 Color Space and Chroma Subsampling
[0036] A color space, also called a color model (or color system), is an abstract mathematical model that simply describes the range of colors as a tuple of numbers, usually 3 or 4 values or color components (such as RGB). Fundamentally, a color space is a refinement of coordinate systems and subspaces.
[0037] For video compression, the most commonly used color spaces are YCbCr and RGB.
[0038] YCbCr, Y'CbCr, or Y Pb / Cb Pr / Cr, also known as YCBCR or Y'CbCr, is a family of color spaces used as part of the color image pipeline in video and digital photography systems. Y' is the luminance component, CB and CR are the blue difference and red difference chrominance components. Y' (with primaries) is different from Y (luminance), which means that the light intensity is non-linearly encoded and decoded based on the gamma-corrected RGB primaries.
[0039] Chroma subsampling is the practice of encoding an image at a lower resolution for chroma information than for luminance information, taking advantage of the fact that the human visual system is less sensitive to color differences than to brightness.
[0040] 4:4:4 format. Each of the three Y'CbCr components has the same sample rate, so there is no chroma subsampling. This scheme is sometimes used in high-end film scanners and film post-production.
[0041] 4:2:2 format. The two chroma components are sampled at half the luma sampling rate: the horizontal chroma resolution is halved. This reduces the bandwidth of the uncompressed video signal by one third, with little visible difference
[0042] 4:2:0 format. In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but since in this scheme the Cb and Cr channels are sampled only on every alternate line, the vertical resolution is halved. Hence the data rate is the same. Cb and Cr are subsampled by a factor of 2 both horizontally and vertically. There are three variants of the 4:2:0 scheme with different horizontal and vertical positions.
[0043] In MPEG-2, Cb and Cr are located at the same position in the horizontal direction. Cb and Cr are located between pixels in the vertical direction (in the gap).
[0044] o In JPEG / jif, H.261, and MPEG-1, Cb and Cr are located in the gaps, in the middle of alternating luminance samples.
[0045] In 4:2:0 DV, Cb and Cr are located in the same position horizontally. In the vertical direction, they are located on alternating lines.
[0046] 2.2 Encoding and decoding process of typical video codecs
[0047] Figure 1 An example of a VVC codec block diagram is shown, which contains three in-loop filtering blocks: deblocking filter (DF), sample adaptive offset (SAO) and ALF. Unlike DF, which uses a predefined filter, SAO and ALF use the original samples of the current picture to reduce the mean square error between the original and reconstructed samples by adding an offset and by applying a finite impulse response (FIR) filter, respectively, where the codec's side information signals the offset and filter coefficients. ALF is located at the last processing stage for each picture and can be seen as a tool that tries to catch and repair artifacts created by previous stages.
[0048] 2.3 Intra-mode codec with 67 intra-prediction modes
[0049] To capture arbitrary edge orientations present in natural videos, the number of directional intra modes is extended from the 33 used by HEVC to 65. The additional directional modes are Figure 2 The directional intra prediction modes are depicted as red dot arrows in , and the planar and DC modes remain the same. These dense directional intra prediction modes apply to all block sizes and both luma and chroma intra prediction.
[0050] like Figure 1 As shown, the traditional angular intra prediction direction is defined as from 45 degrees to -135 degrees in the clockwise direction. In VTM2, for non-square blocks, several traditional angular intra prediction modes are adaptively replaced with wide-angle intra prediction modes. The replaced mode is signaled using the original method and remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes remains unchanged (e.g., 67), and the intra mode encoding and decoding remains unchanged.
[0051] In HEVC, each intra-coded block has a square shape, where the length of each side is a power of 2. Therefore, no division operation is required to generate intra prediction values using DC mode. In VTV2, blocks can have a rectangular shape, and in general, a division operation must be used for each block. To avoid division operations for DC prediction, only the longer sides are used to calculate the average value for non-square blocks.
[0052] 2.4 Wide-angle intra prediction for non-square blocks
[0053] In some embodiments, the traditional angular intra prediction direction is defined as from 45 degrees to -135 degrees in a clockwise direction. In VTM2, for non-square blocks, several traditional angular intra prediction modes are adaptively replaced with wide-angle intra prediction modes. The replaced modes are signaled using the original method and remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes for a block remains unchanged (e.g., 67), and the intra mode encoding and decoding remains unchanged.
[0054] To support these prediction directions, a top reference of length 2W+1 and a left reference of length 2H+1 are defined as Figure 3A and 3B as shown in the example.
[0055] In some embodiments, the mode number of the replaced modes in the wide direction mode depends on the aspect ratio of the block. Table 1 shows the replaced intra prediction modes.
[0056] Table 1: Intra prediction modes replaced by wide angle mode
[0057]
[0058] like Figure 4 As shown in Figure 2, in the case of wide-angle intra prediction, two vertically adjacent prediction samples can use two non-adjacent reference samples. Therefore, low-pass reference sample filtering and side smoothing are applied to wide-angle prediction to reduce the increased gap Δp. α negative impact.
[0059] 2.5 Example of Position Dependent Intra Prediction Combination (PDPC)
[0060] In VTM2, the result of intra prediction for planar mode is further modified by the Position Dependent Intra Prediction Combination (PDPC) method. PDPC is an intra prediction method that calls for a combination of unfiltered boundary reference samples and HEVC-type intra prediction with filtered boundary reference samples. PDPC is applicable to the following intra modes that do not require signaling: planar, DC, horizontal, vertical, bottom left corner mode and its eight adjacent corner modes, and top right corner mode and its eight adjacent corner modes.
[0061] The prediction sample pred(x,y) is predicted using the intra prediction mode (DC, planar, angular) and a linear combination of the reference samples according to the following equation:
[0062] pred(x,y)=(wL×R -1,y +wT×R x,-1 –wTL×R -1,-1 +(64–wL–wT+wTL)×pred(x,y)+32)>>shift
[0063] In this paper, R x,-1 , R -1,y Respectively represent the reference sample points located at the top and left of the current sample point (x, y), R -1,-1 Indicates the reference sample located at the upper left corner of the current block.
[0064] In some embodiments, and if PDPC is applied to DC, planar, horizontal, and vertical intra modes, no additional boundary filters are needed as required in the case of HEVC DC mode boundary filters or horizontal / vertical mode edge filters.
[0065] Figures 5A-5D The reference samples (R) of PDPC applied to various prediction modes are shown. x,-1 ,R -1,y and R -1,-1 ). The prediction sample pred(x',y') is located at (x',y') in the prediction block. The reference sample R x,-1 The coordinate x of is given by: x = x' + y' + 1, with reference to the sample point R -1,y The coordinate y of is similarly given by: y=x'+y'+1.
[0066] In some embodiments, the PDPC weight depends on the prediction mode and is shown in Table 2, where S=shift.
[0067] Table 2: Examples of PDPC weights according to prediction mode
[0068] Prediction Model w wxya wxya Upper right diagonal 16>>((y'<<1)>>S) 16>>((x'<<1)>>S) 0 Lower left diagonal 16>>((y'<<1)>>S) 16>>((x'<<1)>>S) 0 Upper right adjacent diagonal 32>>((y'<<1)>>S) 0 0 Lower left adjacent diagonal 0 32>>((x'<<1)>>S) 0
[0069] 2.6 Intra-frame segmentation of sub-blocks
[0070] In JVET-M0102, ISP is proposed, which divides the luma intra prediction block vertically or horizontally into 2 or 4 sub-partitions according to the size of the block, as shown in Table 3. Figure 6 and Figure 7 Examples of two possibilities are shown. All sub-partitions satisfy the condition of having at least 16 samples.
[0071] Table 3: Number of subpartitions depending on block size
[0072] Block size Number of subpartitions 4×4 No division 4×8 and 8×4 2 All other cases 4
[0073] For each of these subpartitions, a residual signal is generated by entropy decoding the coefficients sent by the encoder, followed by inverse quantization and inverse transformation. The subpartitions are then intra predicted, and the corresponding reconstructed samples are finally obtained by adding the residual signal to the prediction signal. Thus, the reconstructed values of each subpartition will be used to generate the prediction of the next subpartition, which will repeat the process and so on. All subpartitions share the same intra mode.
[0074] Two different categories of processing order (called normal and reverse order) are used, based on the intra mode and partition used. In the normal order, the first sub-partition to be processed is the partition containing the top left sample of the CU, and then continues downwards (horizontal partitioning) or to the right (vertical partitioning). As a result, the reference samples used to generate the sub-partition prediction signal are located only to the left and above the line. On the other hand, the reverse processing order starts either from the sub-partition containing the bottom left sample of the CU and continues upwards, or from the sub-partition containing the top right sample of the CU and continues to the left.
[0075] 2.7 Block Differential Pulse Codec Modulation Codec (BDPC)
[0076] BDPCM was proposed in JVET-M0057. Due to the shape of the horizontal (or vertical) prediction value (using the left (A) (or, above (B)) pixel for the prediction of the current pixel), the most throughput-efficient way to process a block is to process all pixels of a column (or, a row) and process these columns (or rows) sequentially. In order to increase the throughput, we introduce the following processing: when the prediction value selected on the block is vertical, the block of width 4 is divided into two halves with a horizontal boundary, and when the prediction value selected on the block is horizontal, the block of height 4 is divided into two halves with a vertical boundary.
[0077] When partitioning a block, samples from one area are not allowed to use pixels from another area to compute a prediction: if this happens, the predicted pixels will be replaced by reference pixels in the prediction direction. Figure 8 , different positions of the current pixel X in a 4×8 block for vertical prediction are shown.
[0078] Due to this feature, it is now possible to process a 4×4 block in 2 cycles, and a 4×8 or 8×4 block in 4 cycles, and so on. Fig. 9 shown.
[0079] Table 4 summarizes the number of cycles required to process a block, depending on the block size. It is common to show that any block with both dimensions greater than or equal to 8 can be processed with 8 pixels per cycle or more.
[0080] Table 4: Throughput of blocks of size 4xN, Nx4
[0081]
[0082]
[0083] 2.8 Quantized Residual Domain BDPCM
[0084] In JVET-N0413, quantized residual domain BDPCM (hereinafter referred to as RBDPCM) is proposed. Similar to intra prediction, intra prediction is performed on the entire block by copying samples in the prediction direction (horizontal or vertical prediction). The residual is quantized, and the deviation between the quantized residual and its predicted value (horizontal or vertical) quantized value is encoded and decoded.
[0085] For a block of size M (rows) × N (columns), let r i,j , 0≤i≤M-1,0≤j≤N-1 is the prediction residual after performing intra prediction using unfiltered samples from the upper or left block boundary samples horizontally (copying the left neighbor pixel values row by row across the prediction block) or vertically (copying the top neighbor to each row in the prediction block). Let Q(r i,j ), 0≤i≤M-1,0≤j≤N-1 represents the residual r i,j The quantized version of , where the residual is the difference between the original block and the predicted block value. Then, block DPCM is applied to the quantized residual samples to obtain a modified , with elements An M×N array When vertical BDPCM is signaled:
[0086]
[0087] For horizontal prediction, similar rules apply and the residual quantization samples are obtained by
[0088]
[0089] Residual quantization samples is sent to the decoder.
[0090] At the decoder side, the above calculation is reversed to produce Q(r i,j ),0≤i≤M-1,0≤j≤N-1. For vertical prediction,
[0091]
[0092] For the horizontal case,
[0093]
[0094] Dequantized residual Q -1 (Q(r i,j )) is added to the intra block prediction value to produce the reconstructed sample value.
[0095] One of the benefits of this approach is that DPCM inversion can be done dynamically during the coefficient parsing process by simply adding prediction values when parsing the coefficients, or it can be performed after parsing.
[0096] Transform skipping is always used in quantized residual domain BDPCM.
[0097] 2.9 Multiple Transform Set (MTS) in VVC
[0098] In VTM4, large block size conversion of up to 64×64 is supported, which is mainly suitable for higher resolution videos, such as 1080p and 4K sequences. For transform blocks with a size (width or height, or both width and height) equal to 64, the high-frequency transform coefficients are zeroed, so that only the low-frequency coefficients are retained. For example, for an M×N transform block, with M as the block width and N as the block height, when M is equal to 64, only the 32 columns of transform coefficients on the left are retained. Similarly, when N is equal to 64, only the top 32 rows of transform coefficients are retained. When the transform skip mode is used for a large block, the entire block will be used without zeroing any values.
[0099] In addition to DCT-II already used in HEVC, the Multiple Transform Selection (MTS) scheme is used for residual coding of inter-frame and intra-frame coding blocks. It uses multiple selected transforms from DCT8 / DST7. The newly introduced transform matrices are DST-VII and DCT-VIII. Table 4 below shows the basis functions of the selected DST / DCT.
[0100] Table 4: Basis functions of the transformation matrix used in VVC
[0101]
[0102] To maintain orthogonality of the transform matrices, the transform matrices are quantized more precisely than in HEVC. To keep the intermediate values of the transform coefficients within 16 bits, all coefficients have 10 bits after horizontal and vertical transforms.
[0103] To control the MTS scheme, separate enable flags are specified at the SPS level for intra and inter frames respectively. When MTS is enabled at SPS, a CU-level flag is signaled to indicate whether MTS is applied. Here, MTS is applied only to luma. The MTS CU-level flag is signaled when the following conditions are met.
[0104] o Both width and height are less than or equal to 32
[0105] οCBF flag equals one
[0106] If the MTS CU flag is equal to zero, DCT2 is applied bidirectionally. However, if the MTS CU flag is equal to 1, two other flags are additionally signaled to indicate the transform type in the horizontal and vertical directions, respectively. The transform and signaling mapping table is shown in Table 5. When it comes to transform matrix precision, an 8-bit main transform core is used. Therefore, all transform cores used by HEVC remain unchanged, including 4-point DCT-2 and DST-7, 8-point, 16-point, and 32-point DCT-2. In addition, other transform cores including 64-point DCT-2, 4-point DCT-8, 8-point, 16-point, 32-point DST-7 and DCT-8 use an 8-bit main transform core.
[0107]
[0108] To reduce the complexity of large-size DST-7 and DCT-8, high-frequency transform coefficients are zeroed for DST-7 and DCT-8 blocks with size (width or height, or both) equal to 32. Only coefficients in the 16×16 low-frequency region are retained.
[0109] As in HEVC, the residual of a block can be coded with transform skip mode. To avoid redundancy in syntax coding and decoding, the transform skip flag is not signaled when MTS_CU_flag at the CU level is not equal to 0. The block size restrictions for transform skip are the same as MTS in JEM4, which indicates that transform skip is applicable to a CU when both block width and height are equal to or less than 32.
[0110] Implicit MTS is a recent tool of VVC. The derivation of the variable implicitMtsEnabled is as follows:
[0111] – If sps_mts_enabled_flag is equal to 1, implicitMtsEnabled is set to 1 if one of the following conditions is true:
[0112] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT
[0113] –cu_sbt_flag is equal to 1 and Max(nTbW, nTbH) is less than or equal to 32
[0114] –sps_explicit_mts_intra_enabled_flag is equal to 0, CuPredMode[0][xTbY][yTbY] is equal to MODE_INTRA, lfnst_idx[x0][y0] is equal to 0, and intra_mip_flag[x0][y0] is equal to 0
[0115] – Otherwise, implicitMtsEnabled is set to 0.
[0116] In VVC draft v6, if the current codec block is the luma component and implicitMtsEnabled is equal to 1, the implicit MTS transform selection is determined by the following formula:
[0117] trTypeHor=(nTbW>=4&&nTbW<=16)? DST7:DCT2(8-965)
[0118] trTypeVer=(nTbH>=4&&nTbH<=16)? DST7:DCT2(8-966)
[0119] where trTypeHor and trTypeVer specify the horizontal and vertical transform kernels, and nTbW and nTbH specify the width and height of the transform block. These two formulas indicate that the implicit MTS transform is selected from the following pairs: {DST7, DST7}, {DST7, DCT2}, {DCT2, DST7}, {DCT2, DCT2}
[0120] 2.10 Simplified quadratic transform (RST) proposed in JVET-N 0193
[0121] 2.10.1JEM’s Nonseparable Quadratic Transform (NSST)
[0122] In JEM, a secondary transform is applied between the forward main transform and quantization (at the encoder side) and between inverse quantization and inverse main transform (at the decoder side). Fig.10 As shown, a 4×4 (or 8×8) secondary transform is performed according to the block size. For example, for each 8×8 block, a 4×4 secondary transform is applied to small blocks (i.e., min(width, height) <8), and an 8×8 secondary transform is applied to larger blocks (i.e., min(width, height)>4).
[0123] The following describes the application of the inseparable transformation using the input as an example. To apply the inseparable transformation, the 4x4 input block X
[0124]
[0125] First, we represent it as a vector
[0126]
[0127] The non-separable transform is calculated as where indicates the transform coefficient vector, and T is a 16×16 transform matrix. The 16×1 coefficient vector is then reorganized into 4×4 blocks using the scan order (horizontal, vertical, or diagonal) of the block. Coefficients with smaller indices will be placed in the 4x4 coefficient block together with smaller scan indices. There are a total of 35 transform sets, and each transform set uses 3 non-separable transform matrices (kernels). The mapping from the intra prediction mode to the transform set is predefined. For each transform set, the selected non-separable quadratic transform (NSST) candidate is further specified by a quadrature transform index signaled explicitly. After the transform coefficients, this index is signaled once per intra CU in the bitstream.
[0128] 2.10.2 Reduced Quadrature Transform (RST) in JVET-N0193
[0129] The RST transform (also known as the low-frequency non-separable transform (LFNST)) was introduced in JVET-K0099, and a mapping of 4 transform sets (instead of 35 transform sets) was introduced in JVET-L0133. In this JVET-N0193, 16×64 (further reduced to 16×48) and 16×16 matrices are adopted. For ease of annotation, the 16×64 (reduced to 16×48) transform is denoted as RST8×8, and the 16×16 transform is denoted as RST4×4. Fig.11 An example of RST is shown.
[0130] RST calculation
[0131] The main idea of the reduced transform (RT) is to map an N-dimensional vector to an R-dimensional vector in a different space, where R / N (R < N) is the reduction factor.
[0132] The RT matrix is an R×N matrix as follows:
[0133]
[0134] where the R rows of the transform are the R bases of the N-dimensional space. The inverse transform matrix of RT is the transpose of its forward transform. The forward and reverse RT are as Fig.12 shown.
[0135] In this proposal, RST8×8 with a simplification factor of 4 (1 / 4 size) is applied. Therefore, a 16×64 direct matrix is used instead of 64×64, which is the traditional 8×8 inseparable transform matrix size. In other words, a 64×16 inverse RST matrix is used on the decoder side to generate the core (main) transform coefficients in the 8×8 upper left region. Forward RST8×8 uses a 16×64 (or 8×64 for 8×8 blocks) matrix, so it only produces non-zero coefficients in the upper left 4×4 region within a given 8×8 region. In other words, if RST is applied, then the 8×8 region except the upper left 4×4 region will have only zero coefficients. For RST4×4, a 16×16 (or 8×16 for 4×4 blocks) direct matrix multiplication is applied.
[0136] Anti-RST is applied conditionally when both of the following conditions are met:
[0137] οBlock size is greater than or equal to a given threshold (W>=4&&H>=4)
[0138] ο Transform skip mode flag equal to zero
[0139] If the width (W) and height (H) of the transform coefficient block are both greater than 4, RST8×8 is applied to the upper left 8×8 area of the transform coefficient block. Otherwise, RST4×4 is applied to the upper left min(8,W)×min(8,H) area of the transform coefficient block.
[0140] If the RST index is equal to 0, the RST is not applied. Otherwise, the RST is applied and its kernel is selected together with the RST index. The RST selection method and encoding and decoding of the RST index will be explained later.
[0141] In addition, RST is applied to intra CUs in intra and inter slices, and to both luma and chroma. If dual tree is enabled, the RST indexes for luma and chroma are signaled separately. For inter slices (dual tree is disabled), a single RST index is signaled and used for both luma and chroma.
[0142] In the 13th JVET meeting, intra sub-partitioning (ISP) was adopted as a new intra prediction mode. When ISP mode is selected, RST is disabled and the RST index is not signaled, because even if RST is applied to each feasible partition block, the performance improvement is minimal. In addition, disabling RST for the residual of ISP prediction can reduce the coding complexity.
[0143] RST selection
[0144] The RST matrix is selected from four transform sets, each consisting of two transforms. Which transform set is applied is determined according to the intra prediction mode as follows:
[0145] (1) If one of the three CCLM modes is indicated, transform set 0 is selected.
[0146] (2) Otherwise, select the transformation set according to the following table:
[0147] Transformation Set Selection Table
[0148] Intra mode Transform Set Index Intra mode < 0 1 0<=intra mode<=1 0 2<=Intra mode<=12 1 13<=intra mode<=23 2 24<=Intra mode<=44 3 45<=Intra-frame mode<=55 2 56<=Intra-frame mode 1
[0149] The index for accessing the above table (denoted as IntraPredMode) is in the range of [-14, 83], which is the transform mode index for wide-angle intra prediction.
[0150] Reduced Dimensionality RST Matrix
[0151] As a further simplification, 16×48 matrices are used instead of 16×64 matrices with the same transform set configuration. Each 16×48 matrix takes 48 input data from three 4×4 blocks in the upper left 8×8 block (excluding the lower right 4×4 block) (e.g. Fig.13 shown).
[0152] RST signaling
[0153] Forward RST 8×8 with R=16 uses a 16×64 matrix, so it only generates non-zero coefficients in the top-left 4×4 region within a given 8×8 region. In other words, if RST is applied, only zero coefficients are generated in the 8×8 region other than the top-left 4×4 region. As a result, when any non-zero element is detected in the 8×8 block region other than the top-left 4×4, the RST index is not encoded (it is in Fig.14 ), because this means that no RST is applied. In this case, the RST index is inferred to be zero.
[0154] Zero range
[0155] Typically, any coefficient in a 4×4 subblock can be non-zero before inverse RST is applied to the 4×4 subblock. However, in some cases, it is restricted that certain coefficients in the 4×4 subblock must be zero before inverse RST can be applied to the subblock.
[0156] Let nonZeroSize be a variable. Require that coefficients with indices no less than nonZeroSize must be zero when rearranged into a 1D array before inverse RST.
[0157] When nonZeroSize is equal to 16, the coefficients in the upper left 4×4 sub-block have no zeroing constraints.
[0158] In JVET-N0193, when the current block size is 4×4 or 8×8, nonZeroSize is set equal to 8 (i.e., the coefficient with a scan index in the range [8, 15] (e.g., Fig.14 For other block sizes, nonZeroSize is set equal to 16.
[0159] Description of RST in the working draft
[0160] Sequence Parameter Set RBSP Syntax
[0161]
[0162] Residual Codec Syntax
[0163]
[0164]
[0165] Codec unit syntax
[0166]
[0167] Sequence Parameter Set RBSP Semantics
[0168] …
[0169] sps_st_enabled_flag equal to 1 specifies that st_idx may be present in the residual codec syntax of an intra codec unit. sps_st_enabled_flag equal to 0 specifies that st_idx is not present in the residual codec syntax of an intra codec unit.
[0170] …
[0171] Codec unit semantics
[0172] …
[0173] st_idx[x0][y0] specifies which secondary transform kernel to apply between the two candidate kernels in the selected transform set. st_idx[x0][y0] equal to 0 specifies that no secondary transform is applied. Array index x0, y0 specifies the position (x0, y0) of the top left corner sample of the considered transform block relative to the top left corner sample of the picture.
[0174] When st_idx[x0][y0] does not exist, st_idx[x0][y0] is inferred to be equal to 0.
[0175] Transformation Processing of Scaled Transform Coefficients
[0176] Overview
[0177] The inputs to this process include:
[0178] –Specify the luminance position (xTbY, yTbY) of the upper left corner sample of the current luminance transform block relative to the luminance sample of the upper left corner of the current image,
[0179] – variable nTbW that specifies the current transform block width,
[0180] – variable nTbH that specifies the current transform block height,
[0181] – Variable cIdx that specifies the color component of the current block,
[0182] – An (nTbW)x(nTbH) array d[x][y] with scaled transform coefficients, where x=0..nTbW-1, y=0..nTbH-1.
[0183] The output of this process is an (nTbW)x(nTbH) array r[x][y] of residual samples, where x=0..nTbW-1 and y=0..nTbH-1.
[0184] If st_idx[xTbY][yTbY] is not equal to 0, the following applies:
[0185] 1. The variables nStSize, log2StSize, numStX, numStY, and nonZeroSize are derived as follows:
[0186] – If nTbW and nTbH are both greater than or equal to 8, log2StSize is set to 3 and nStOutSize is set to 48.
[0187] – Otherwise, log2StSize is set to 2 and nStOutSize is set to 16.
[0188] –nStSize is set to (1< <log2StSize)。
[0189] – If nTbH is equal to 4 and nTbW is greater than 8, numStX is set to 2.
[0190] – Otherwise, numStX is set to 1.
[0191] – If nTbW is equal to 4 and nTbH is greater than 8, numStY is set to 2.
[0192] – Otherwise, numStY is set equal to 1.
[0193] – If both nTbW and nTbH are equal to 4, or both nTbW and nTbH are equal to 8, then nonZeroSize is set to be equal to 8.
[0194] – Otherwise, nonZeroSize is set to 16.
[0195] 2. For xSbIdx = 0..numStX – 1 and ySbIdx = 0..numStY – 1, the following applies:
[0196] – The derivation of the variable array u[x] (x = 0..nonZeroSize – 1) is as follows:
[0197] xC = (xSbIdx << log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][0]
[0198] yC = (ySbIdx << log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][1] u[x] = d[xC][yC]
[0199] – By calling the one-dimensional transform process specified in Clause 8.7.4.4, u[x] (x = 0..nonZeroSize – 1) is transformed into the variable array v[x] (x = 0..nStOutSize – 1). In this one-dimensional transform process, the transform input length of the scaled transform coefficients is nonZeroSize, the transform output length is nStOutSize, the list u[x] (x = 0..nonZeroSize – 1), the index stPredModeIntra of the transform set selection, and the index st_idx[xTbY][yTbY] of the transform selection in the transform set are used as inputs, and the output is the list v[x] (x = 0..nStOutSize – 1). The variable stPredModeIntra is set to predModeIntra specified in Clause 8.4.4.2.1.
[0200] – The array d[(xSbIdx << log2tsize) + x][(ySbIdx << log2tsize) + y] (x = 0..nStSize – 1, y = 0..nStSize – 1) is derived as follows:
[0201] – If stPredModeIntra is less than or equal to 34, or equal to INTRA_LT_CCLM, INTRA_T_CCLM, or INTRA_L_CCLM, then the following applies:
[0202] d[(xSbIdx< <log2StSize)+x][(ySbIdx<<log2StSize)+y]
[0203] =
[0204] (y<4)? v[x+(y< <log2StSize)]:((x<4)?v[32+x+((y–4)<<2)]:
[0205] d[(xSbIdx< <log2StSize)+x][(ySbIdx<<log2StSize)+y])
[0206] – Otherwise, the following applies:
[0207] d[(xSbIdx< <log2StSize)+x][(ySbIdx<<log2StSize)+y]
[0208] =
[0209] (y<4)? v[y+(x< <log2StSize)]:((x<4)?v[32+(y–4)+(x<<2)]:
[0210] d[(xSbIdx< <log2StSize)+x][(ySbIdx<<log2StSize)+y])
[0211] Secondary transformation processing
[0212] The input to this process is:
[0213] – variable nTrS that specifies the transform output length,
[0214] – variable nonZeroSize that specifies the length of the conversion input,
[0215] – List of transformed inputs x[j] (j=0..nonZeroSize-1),
[0216] – the variable stPredModeIntra that specifies the index of the transform set selection,
[0217] – The variable stIdx, which specifies the index of the transform selection in the collection.
[0218] The output of this process is a list y[i] (i=0..nTrS-1) of transformed samples.
[0219] The transform matrix derivation process specified in clause 8.7.4.5 involves the transform output length nTrS, the transform set selection index stPredModeIntra and the transform selection index stIdx in the transform set as input, and the transform matrix secTransMatrix as output.
[0220] The transformation sample list y[i] (i=0..nTrS-1) is derived as follows:
[0221]
[0222] CoeffMin=-(1<<15)and CoeffMax=(1<<15)-1;
[0223] Secondary transformation matrix derivation and processing
[0224] The inputs to this process include:
[0225] – variable nTrS that specifies the transform output length,
[0226] – the variable stPredModeIntra that specifies the index of the transform set selection,
[0227] – The variable stIdx that specifies the index of the transform selection in the transform set.
[0228] The output of this process is the transformation matrix secTransMatrix.
[0229] The variable stTrSetIdx is derived as follows:
[0230]
[0231]
[0232] The transformation matrix secTransMatrix is derived based on nTrS, stTrSetIdx and stIdx as follows:
[0233] – If nTrS is equal to 16, stTrSetIdx is equal to 0, and stIdx is equal to 1, the following applies:
[0234] secTransMatrix[m][n]=…
[0235] – If nTrS is equal to 16, stTrSetIdx is equal to 0, and stIdx is equal to 2, the following applies:
[0236] secTransMatrix[m][n]=…
[0237] – If nTrS is equal to 16, stTrSetIdx is equal to 1, and stIdx is equal to 1, the following applies:
[0238] secTransMatrix[m][n]=…
[0239] – If nTrS is equal to 16, stTrSetIdx is equal to 1, and stIdx is equal to 2, the following applies:
[0240] secTransMatrix[m][n]=…
[0241] – If nTrS is equal to 16, stTrSetIdx is equal to 2, and stIdx is equal to 1, the following applies:
[0242] secTransMatrix[m][n]=…
[0243] – If nTrS is equal to 16, stTrSetIdx is equal to 2, and stIdx is equal to 2, then the following applies:
[0244] secTransMatrix[m][n]=…
[0245] – If nTrS is equal to 16, stTrSetIdx is equal to 3, and stIdx is equal to 1, the following applies:
[0246] secTransMatrix[m][n]=…
[0247] – If nTrS is equal to 16, stTrSetIdx is equal to 3, and stIdx is equal to 2, the following applies:
[0248] secTransMatrix[m][n]=…
[0249] – If nTrS is equal to 48, stTrSetIdx is equal to 0, and stIdx is equal to 1, the following applies:
[0250] secTransMatrix[m][n]=…
[0251] – If nTrS is equal to 48, stTrSetIdx is equal to 0, and stIdx is equal to 2, the following applies:
[0252] secTransMatrix[m][n]=…
[0253] – If nTrS is equal to 48, stTrSetIdx is equal to 1, and stIdx is equal to 1, the following applies:
[0254] secTransMatrix[m][n]=…
[0255] – If nTrS is equal to 48, stTrSetIdx is equal to 1, and stIdx is equal to 2, the following applies:
[0256] secTransMatrix[m][n]=…
[0257] – If nTrS is equal to 48, stTrSetIdx is equal to 2, and stIdx is equal to 1, the following applies:
[0258] secTransMatrix[m][n]=…
[0259] – If nTrS is equal to 48, stTrSetIdx is equal to 2, and stIdx is equal to 2, then the following applies:
[0260] secTransMatrix[m][n]=…
[0261] – If nTrS is equal to 48, stTrSetIdx is equal to 3, and stIdx is equal to 1, the following applies:
[0262] secTransMatrix[m][n]=…
[0263] – If nTrS is equal to 48, stTrSetIdx is equal to 3, and stIdx is equal to 2, the following applies:
[0264] secTransMatrix[m][n]=…
[0265] 2.11 Dequantization Limiting in HEVC
[0266] In HEVC, the scaled transform coefficient d' is calculated as follows
[0267] d'=Clip3(coeffMin,coeffMax,d),
[0268] where d is the scaled transform coefficient before clipping.
[0269] For the luminance component,
[0270] coeffMin=CoeffMinY, coeffMax=CoeffMaxY
[0271] For the chrominance component,
[0272] coeffMin=CoeffMinC, coeffMax=CoeffMaxC.
[0273] In this article,
[0274] CoeffMinY=-(1<<(extended_precision_processing_flag?Max(15,BitDepthY+6):15))
[0275] CoeffMinC=-(1<<(extended_precision_processing_flag?Max(15,BitDepthC+6):15))
[0276] CoeffMaxY=(1<<(extended_precision_processing_flag?Max(15,BitDepthY+6):15)-1
[0277] CoeffMaxC=(1<<(extended_precision_processing_flag?Max(15,BitDepthC+6):15))–1
[0278] The extended_precision_processing_flag is a syntax element signaled in the SPS.
[0279] 2.12 Affine Linear Weighted Intra Prediction (ALWIP, or Matrix-based Intra Prediction)
[0280] Affine Linear Weighted Intra Prediction (ALWIP, or Matrix-based Intra Prediction (MIP)) was proposed in JVET-N0217.
[0281] In JVET-N0217, two tests were performed. In Test 1, ALWIP was designed with a memory limit of 8K bytes and a maximum of 4 multiplications per sample. Test 2 was similar to Test 1, but the design was further simplified in terms of memory requirements and model architecture.
[0282] ο A single set of matrices and offset vectors for all block shapes.
[0283] ο Reduce the number of patterns used for all block shapes to 19.
[0284] ο Reduces memory requirements to 5760 10-bit values, or 7.20 kilobytes.
[0285] o Linear interpolation of the prediction samples is performed in a single step in each direction instead of the iterative interpolation in the first test.
[0286] 2.13 Sub-block Transformation
[0287] For inter-prediction CUs with cu_cbf equal to 1, cu_sbt_flag can be signaled to indicate whether to decode the entire residual block or a sub-part of the residual block. In the former case, the MTS information is further parsed to determine the transform type of the CU. In the latter case, a portion of the residual block is coded with the inferred adaptive transform and another portion of the residual block is zeroed. SBT is not applicable to combined inter-intra modes.
[0288] In sub-block transforms, position-dependent transforms are applied to luma transform blocks in SBT-V and SBT-H (chroma TBs of DCT-2 are always used). The two positions of SBT-H and SBT-V are associated with different core transforms. More specifically, Fig.15 The horizontal and vertical transforms for each SBT position are specified in . For example, the horizontal and vertical transforms for SBT-V position 0 are DCT-8 and DST-7, respectively. When one side of the residual TU is larger than 32, the corresponding transform is set to DCT-2. Therefore, the sub-block transform jointly specifies the horizontal and vertical transforms, TU tiling, and cbf of the residual block, which can be considered as a syntactic shortcut for the case where the primary residual of a block is on one side of the block.
[0289] 3 Examples of defects in existing implementations
[0290] The current design of MTS has the following problems:
[0291] Signaling the index may result in overhead bits.
[0292] In MTS and SBT, some combinations of transformations may not be efficient.
[0293] 4 Exemplary Methods of Multiple Transformations
[0294] Embodiments of the currently disclosed technology overcome the shortcomings of existing implementations, thereby providing a video codec with higher codec efficiency but lower computational complexity. As described in this document, methods for multiple transforms can enhance existing and future video codec standards, as described in the examples described below for various implementations. The examples of the disclosed technology provided below illustrate the general concepts and are not meant to be interpreted as limiting. In the examples, the various features described in these examples may be combined unless expressly stated to the contrary.
[0295] In the following examples, assume that:
[0296] ο Max(x, y) returns the larger of x and y, and
[0297] oMin(x, y) returns the smaller of x and y.
[0298] Implicit MTS
[0299] It is proposed to decide the transform (horizontal and / or vertical transform) applied to a block based on the decoded coefficients without receiving the transform index.
[0300] 1. The decoded coefficients can be the same color component or different color components of the current block or
[0301] A plurality of representative blocks are associated.
[0302] a. In one example, determination of a transform for the first block may depend on decoded coefficients of the first block.
[0303] b. In one example, determination of a transform for a first block may depend on decoded coefficients of a second block which may be different from the first block.
[0304] i. In one example, the second block may have the same color component, such as a luminance component, as the color component of the first block.
[0305] 1) In one example, the second block may be adjacent to the first block.
[0306] 2) In one example, the second block may have the same intra prediction mode as the first block.
[0307] 3) In one example, the second block may have the same block size as the first block.
[0308] 4) In one example, the second block may be the last decoded block preceding the first block in decoding order that satisfies certain conditions, such as the same intra prediction mode or the same size.
[0309] ii. In one example, the second block may have different color components than the first block.
[0310] 1) In one example, the first block may be a luma component, and the second block may be a chroma component (eg, Cb / Cr, B / R component).
[0311] a) In one example, the three blocks are in the same codec unit.
[0312] b) Furthermore, alternatively, the implicit MTS is only applied to luma blocks and not to chroma blocks.
[0313] 2) In one example, the first block in the first color component and the second block in the second color component may be located at corresponding positions of the picture to each other.
[0314] c. In one example, determination of a transform for a first block may depend on decoded coefficients of a plurality of blocks including at least one block that is different from the first block.
[0315] i. In one example, the plurality of blocks may include a first block.
[0316] ii. In one example, the plurality of blocks may include one block or a plurality of blocks adjacent to the first block.
[0317] iii. In one example, the plurality of blocks may include one block or a plurality of blocks having the same block size as the first block.
[0318] iv. In one example, the plurality of blocks may include the last N decoded blocks that precede the first block in decoding order and satisfy a certain condition (such as the same intra prediction mode or the same size). N is an integer greater than 1.
[0319] v. In one example, the plurality of blocks may include a block or blocks that are not in the same color component as the first block.
[0320] 1) In one example, the first block may be in the luma component. The plurality of blocks may include blocks in the chroma components (eg, the second block in the Cb / B component, and the third block in the Cr / R component).
[0321] a) In one example, the three blocks are in the same codec unit.
[0322] b) Furthermore, alternatively, the implicit MTS is only applied to luma blocks and not to chroma blocks.
[0323] 2) In one example, the first block in the first color component and a number of blocks included in the plurality of blocks that are not in the first color component may be located at corresponding positions of the picture having the first block.
[0324] 2. The decoded coefficients used for transform determination are those coefficients that are not equal to zero (denoted as significant coefficients). Those coefficients used for transform determination are called representative coefficients.
[0325] a. In one example, the representative coefficients are all significant coefficients in the representative block.
[0326] b. Alternatively, the representative coefficients are a portion of the significant coefficients in the representative block.
[0327] i. In one example, representative coefficients are those decoded significant coefficients that are greater than or not less than a threshold value
[0328] ii. In one example, representative coefficients are those decoded significant coefficients that are less than or not greater than a threshold
[0329] iii. In one example, the representative coefficients are the first K (K>=1) decoded significant coefficients in decoding order.
[0330] iv. In one example, the representative coefficients are the last K (K>=1) decoded significant coefficients in decoding order.
[0331] v. In one example, the representative coefficients may be those coefficients at predetermined positions in the block.
[0332] 1) In one example, the representative coefficient may include only one coefficient located at the coordinate (xPos, yPos) relative to the representative block, for example xPos=yPos=0.
[0333] 2) For example, the position may depend on the size of the block.
[0334] vi. In one example, the representative coefficients may be those coefficients at predetermined positions in the coefficient scanning order.
[0335] c. Alternatively, the representative coefficients may also include those zero coefficients.
[0336] d. Alternatively, the representative coefficients may be those derived from the decoded coefficients, such as by clipping to a range, by quantization.
[0337] 3. The transformation determines a function that may depend on the representative coefficients, such as a function that has a value V as output using the representative coefficients as input.
[0338] a. In one example, V is derived as the number of representative coefficients.
[0339] i. Alternatively, V is derived as the sum of representative coefficients.
[0340] 1) Alternatively, furthermore, the sum may be clipped to derive V.
[0341] ii. Alternatively, V is derived as the sum of the absolute values of the representative coefficients.
[0342] 1) Alternatively, furthermore, the sum may be clipped to derive V.
[0343] b. In one example, the choice can be implicitly determined at the decoder depending on the parity of V
[0344] i. For example, if V is an even number, the first transform is selected as the horizontal transform and the second transform is selected as the vertical transform; if V is an odd number, the third transform is selected as the horizontal transform and the fourth transform is selected as the vertical transform.
[0345] 1) In one example, the first transform is the same as the second transform.
[0346] a) Alternatively, the first transform is different from the second transform.
[0347] 2) In one example, the third transform is the same as the fourth transform.
[0348] a) Alternatively, the third transform is different from the fourth transform.
[0349] 3) The first / second / third / fourth transform is a specific transform, such as DCT-X or DCT-Y. X can be an integer, such as 2 or 8. Y can be an integer, such as 7 or 8.
[0350] 4) Alternatively, furthermore, at least one of the third and fourth transformations is different from the first and second transformations.
[0351] a) In one example, when V is even, the first and second transforms are DCT-2, and when V is odd, the third and fourth transforms are DST-7.
[0352] b) Alternatively, when V is odd, the first and second transforms are DCT-2, and when V is even, the third and fourth transforms are DST-7.
[0353] c. In one example, if V is less than a threshold value T1, the fifth transform is selected as the horizontal transform, and the sixth transform is selected as the vertical transform. For example, T1=1 or 2.
[0354] i. Alternatively, if V is greater than threshold T2, the fifth transform is selected as the horizontal transform and the sixth transform is selected as the vertical transform.
[0355] ii. For example, the threshold may depend on the size of the block.
[0356] iii. For example, the threshold may depend on the QP.
[0357] iv. In one example, the fifth transform is the same as the sixth transform.
[0358] 1) Alternatively, the fifth transform is different from the sixth transform.
[0359] v. In one example, the fifth / sixth transform is a specific transform, such as DCT-X or DST-Y. X can be an integer, such as 2 or 8. Y can be an integer, such as 7 or 8.
[0360] 4. The transformation determination may also depend on the codec information of the current block.
[0361] a. In one example, if the current intra-coded block is in an I slice / picture, when V is an even number, DST-7 may be applied to the current block, and when V is an odd number, DCT-2 may be applied to the current block.
[0362] b. In one example, if the current intra-coded block is in a P / B slice / picture and V is an even number, DCT-2 may be applied to the current block, and when V is an odd number, DST-7 may be applied to the current block.
[0363] c. In one example, the determination may further depend on mode information (eg, intra-frame or inter-frame mode information).
[0364] 5. The set of transforms from which the implicit MTS can select transforms can be predefined.
[0365] a. In one example, the horizontal and vertical transform sets may not be the same.
[0366] i. Alternatively, the horizontal and vertical transform sets may be the same.
[0367] b. In one example, the transform set may include DCT-2 and DST-7.
[0368] c. In one example, the transform set may include DCT-2, DST-7, and identity transform.
[0369] d. In one example, the transform set may depend on codec information, color component, partition structure (eg, dual tree / single tree; quadtree / binary tree / ternary tree / extended quadtree), slice / picture type, etc.
[0370] i. In one example, the set of transforms may depend on the block size.
[0371] ii. In one example, for intra-coded blocks, DCT-2 and DST-7 may be included.
[0372] iii. In one example, for blocks that are encoded with reference samples in the same picture (eg, intra block copy), DST-7 and the identity transform (ie, no transform is applied) may be included.
[0373] 6. In one example, one or more methods disclosed in points 1-5 can only be applied to a specific block.
[0374] a. For example, one or more methods disclosed in points 1-5 can only be applied to intra-frame coding blocks.
[0375] Simplified MTS / SBT
[0376] 7. In one example, the vertical transform and the horizontal transform in MTS must be the same.
[0377] a. In one example, a block can only choose one of the following two transformations:
[0378] i. DCT-2 in horizontal transform and DCT-2 in vertical transform;
[0379] ii. DST-7 in horizontal conversion and DST-7 in vertical conversion;
[0380] b. In one example, signaling for MTS may include at most one flag for a block.
[0381] i. In one example, if the flag is equal to 0, DCT-2 in the horizontal transform and DCT-2 in the vertical transform are selected; if the flag is equal to 1, DST-7 in the horizontal transform and DST-7 in the vertical transform are selected.
[0382] ii. In one example, if the flag is equal to 1, DCT-2 in the horizontal transform and DCT-2 in the vertical transform are selected; if the flag is equal to 0, DST-7 in the horizontal transform and DST-7 in the vertical transform are selected.
[0383] 8. Assume that the width and height of the block are W and H respectively. Point 7 is applicable only if:
[0384] aW>=T1, and H>=T2, for example, T1=T2=8;
[0385] bW<=T1, and H<=T2, for example, T1=T2=16;
[0386] c.Min(W,H)>=T1, for example, T1=8;
[0387] d.Max(W,H)<=T1, e.g. T1=32
[0388] eW*H>=T1, e.g. T1=64
[0389] fW*H<=T1, for example, T1=256.
[0390] 9. In one example, transforms that do not include DST-8 may be applied to blocks encoded with SBT.
[0391] a. In one example, only DCT-2 and DST-7 can be applied to blocks encoded with SBT.
[0392] b. In one example, Fig.15 In the case of the SBT shown (SBT-V, position 0), DCT-2 is applied horizontally and DST-7 is applied vertically.
[0393] c. In one example, Fig.15 In the case of the SBT shown (SBT-H, position 0), DST-7 is applied horizontally and DCT-2 is applied vertically.
[0394] 10. Assume that the width and height of the transform block are W and H, respectively. In one example, the selection of transform for a block coded with SBT may depend on the transform block size, where the transform block may be smaller than the coded block when SBT is applied.
[0395] a. In one example, Fig.15 In the case of the SBT shown (SBT-V, position 0), if W>=T1, DCT-2 is applied horizontally and DST-7 is applied vertically; otherwise, DCT-8 is applied horizontally and DST-7 is applied vertically. For example, T1=8.
[0396] b. In one example, Fig.15 In the case of the SBT shown (SBT-H, position 0), if H>=T1, DST-7 is applied horizontally and DCT-2 is applied vertically; otherwise, DST-7 is applied horizontally and DCT-8 is applied vertically. For example, T1=8.
[0397] General claims
[0398] 11. The decision of the transformation matrix can be made at the CU / CB level or the TU level.
[0399] a. In one example, the decision is made at the CU level, where all TUs share the same transform matrix.
[0400] i. Alternatively, further, when a CU is divided into a plurality of TUs, coefficients in one TU (eg, the first or last TU) or a portion or all of the TUs may be used to determine the transform matrix.
[0401] b. Whether to use a CU-level solution or a TU-level solution may depend on the block size and
[0402] / or VPDU size and / or maximum CTU size and / or encoding and decoding information of a block.
[0403] i. In one example, when the block size is larger than the VPDU size, a CU level determination method may be applied.
[0404] 12. In the method disclosed in this document, the coefficients or representative coefficients may be quantized or dequantized.
[0405] 13. Transform skipping can also be determined implicitly by coefficients or representative coefficients using any of the methods disclosed in this document.
[0406] 14. In the methods disclosed in this document, coefficients or representative coefficients may be modified before being used to derive the transform.
[0407] a. For example, coefficients or representative coefficients may be clipped before being used to derive the transform.
[0408] b. For example, the coefficients or representative coefficients may be scaled before being used to derive the transform.
[0409] c. For example, coefficients or representative coefficients may be offset before being used to derive the transform.
[0410] d. For example, coefficients or representative coefficients may be filtered before being used to derive the transform.
[0411] e. For example, coefficients or representative coefficients may be mapped to other values (eg, via a lookup table) before being used to derive a transform.
[0412] 15. The methods disclosed in this document can also be used to derive other codec modes / information implicitly through coefficients or representative coefficients.
[0413] a. In one example, the disclosed method can be used to derive a secondary transform that can be applied to a sub-region of a block.
[0414] b. Alternatively, furthermore, the representative coefficients are from those corresponding to a sub-region rather than the entire block.
[0415] 16. In one example, whether and / or how to apply the above disclosed method can be signaled at the sequence level / picture level / slice level / slice group level, such as in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / slice group header.
[0416] 17. In one example, whether and / or how to apply the above disclosed method may depend on codec information, which may include:
[0417] a. Block size.
[0418] i. In one example, for blocks whose width and height are both not greater than a threshold (eg, 32), the implicit MTS method described above may be applied.
[0419] b.QP
[0420] c. Picture or stripe type (such as I frame or P / B frame, I stripe or P / B stripe)
[0421] i. In one example, the proposed method can be enabled on I frames, but disabled on P / B frames.
[0422] d. Structural partitioning method (single tree or dual tree)
[0423] i. In one example, for a slice / picture / tile / slice applied with a single tree partitioning, the implicit MTS method described above may be applied.
[0424] e. Codec mode (such as inter-frame mode / intra-frame mode / IBC mode, etc.)
[0425] i. In one example, for intra-frame coded blocks, the implicit MTS method described above may be applied.
[0426] f. Coding and decoding methods (such as intra-sub-block segmentation, derivative tree (DT) method, etc.)
[0427] i. In one example, for intra-frame codec blocks to which DT is applied, the implicit MTS method described above may be disabled.
[0428] ii. In one example, for an intra-frame codec block to which ISP is applied, the implicit MTS method described above may be disabled.
[0429] g. Color component
[0430] i. In one example, for luma blocks, the implicit MTS method described above may be applied, but for chroma blocks, it is not applied.
[0431] h. Intra-frame prediction mode (such as DC, vertical, horizontal, etc.)
[0432] i. Motion information (such as MV and reference index).
[0433] j. Profile / Level / Tier
[0434] The examples described above may be combined in the context of the methods described below, such as methods 1675 , 1680 , and 1685 , which may be implemented at a video encoder and / or decoder.
[0435] Fig.16AA flow chart of an exemplary method for video processing is shown. The method 1675 includes, at step 1676, making a decision regarding applying a transform to a current block of video based on the set of coefficients.
[0436] The method 1675 includes, at step 1677, performing a conversion between the current block and a bitstream representation of the video based on the decision.
[0437] Fig. 16B A flow chart of an exemplary method for video processing is shown. The method 1680 includes, at step 1681, making a decision regarding applying a transform to a current block of video based on codec information associated with the current block.
[0438] The method 1680 includes, at step 1682, performing a conversion between the current block and a bitstream representation based on the decision.
[0439] Fig. 16C A flow chart of an exemplary method for video processing is shown. The method 1685 includes, at step 1686, for a current block of a video, making a decision about applying a transform to the current block based on an indication at a codec unit (CU) level, a codec block (CB) level, or a transform unit (TU) level in a bitstream representation of the video.
[0440] The method 1685 includes, at step 1687, performing a conversion between the current block and a bitstream representation based on the decision.
[0441] 5 Example Implementations of the Disclosed Technology
[0442] In the following embodiments, additions are indicated using bold double brackets, for example, {{a}} indicates that "a" has been added, and deletions are indicated using bold double brackets, for example, [[a]] indicates that "a" has been deleted.
[0443] 5.1 Example #1
[0444] The working draft specified in JVET-N1001-v7 can be modified as follows.
[0445] 8.7.4 Transformation Processing of Scaling Transform Coefficients
[0446] 8.7.4.1 Overview
[0447] …
[0448] Table 8-17 – Specification of trTypeHor and trTypeVer depending on cu_sbt_horizontal_flag and cu_sbt_pos_flag
[0449] cu_sbt_horizontal_flag cu_sbt_pos_flag trTypeHor trTypeVer 0 0 {{nTbW>=8?0:}}2 1 0 1 1 1 1 0 1 {{nTbH>=8?0:}}2 1 1 1 1
[0450] …
[0451] In some embodiments, the following technical solutions can be implemented:
[0452] C1. A method for video processing, comprising: making a decision about applying a transform to a current block of a video based on a coefficient set; and based on the decision, performing a conversion between the current block and a bitstream representation of the video.
[0453] C2. The method of solution C1, wherein the set of coefficients corresponds to a set of quantized coefficients in a bitstream representation.
[0454] C3. The method of solution C1, wherein the coefficient set corresponds to a dequantized version of a quantized coefficient set in the bitstream representation.
[0455] C4. The method of any of solutions C1 to C3, wherein application of the transform skip to the current block is based on the coefficient set.
[0456] C5. The method of any of solutions C1 to C3, further comprising modifying the coefficient set; and deriving a transform based on the modified coefficient set before making a decision.
[0457] C6. The method of solution C5, wherein modifying the coefficient set comprises clipping at least one coefficient in the coefficient set.
[0458] C7. The method of solution C5, wherein modifying the coefficient set includes scaling at least one coefficient in the coefficient set.
[0459] C8. The method of solution C5, wherein modifying the coefficient set comprises adding an offset to at least one coefficient in the coefficient set.
[0460] C9. The method of solution C5, wherein modifying the coefficient set includes filtering at least one coefficient in the coefficient set.
[0461] C10. The method of solution C5, wherein modifying the coefficient set comprises mapping the coefficient set to a modified coefficient set based on at least one lookup table (LUT).
[0462] C11. The method of any of solutions C1 to C3, wherein deriving the coding mode and / or information associated with the current block is implicitly based on the set of coefficients.
[0463] C12. The method of any of solutions C1 to C3, wherein deriving a secondary transform applicable to a sub-region of the current block is based on the set of coefficients.
[0464] C13. The method of solution C12, wherein the set of coefficients corresponds to the sub-region.
[0465] C14. The method of any of solutions C1 to C3, wherein the decision is further based on an indication signaled at a sequence level, a picture level, a slice level, a slice group level in the bitstream representation.
[0466] C15. The method of any one of solutions C1 to C3, wherein the indication is signaled in a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoder parameter set (DPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header or a slice group header.
[0467] C16. The method of any of solutions C1 to C15, wherein the set of coefficients comprises a representative set of coefficients.
[0468] C17. A method for video processing, comprising: making a decision about applying a transformation to a current block of a video based on codec information associated with the current block; and performing a conversion between the current block and a bitstream representation of the video based on the decision.
[0469] C18. The method of solution C17, wherein the transform is associated with an implicit selection of transform (IST) mode, and wherein the IST mode comprises selectively applying a transform type other than a discrete cosine transform of type II (DCT-II).
[0470] C19. The method of solution C17, wherein the codec information includes the size of the current block.
[0471] C20. The method of solution C19, wherein the transform is applied when the height and width of the current block are not greater than a threshold (T), and wherein T is a positive integer.
[0472] C21. The method of solution C20, where T=32.
[0473] C22. The method of solution C17, wherein the codec information includes a quantization parameter (QP).
[0474] C23. The method of solution C17, wherein the codec information includes a picture type of a current picture including the current block.
[0475] C24. The method of solution C23, wherein the picture type is an I frame or a P / B frame.
[0476] C25. The method of solution C24, wherein the transform is applied when the picture type is an I frame, and wherein the transform is not applied when the picture type is a P / B frame.
[0477] C26. The method of solution C17, wherein the codec information includes a slice type of a current slice containing the current block.
[0478] C27. The method of solution C26, wherein the stripe type is an I stripe or a P / B stripe.
[0479] C28. The method of solution C17, wherein the encoding and decoding information includes a segmentation method of the current block.
[0480] C29. The method of solution C28, wherein the partitioning method is a single tree or a dual tree.
[0481] C30. The method of solution C17, wherein the codec information includes a codec mode of the current block.
[0482] C31. The method of solution C30, wherein the coding mode comprises at least one of an inter mode, an intra mode, or an intra block copy (IBC) mode.
[0483] C32. The method of solution C30 or C31, wherein the transform is applied when the current block is an intra-coded block.
[0484] C33. The method of solution C17, wherein the codec information includes a codec method applied to the current block.
[0485] C34. The method of solution C33, wherein the encoding and decoding method is an intra sub-block partitioning (ISP) method and / or a derived tree (DT) method.
[0486] C35. The method of solution C33, wherein when the current block is an intra-coded block, wherein a derived tree (DT) method is applied to the current block, the transform is not applied.
[0487] C36. The method of solution C33, wherein when the current block is an intra-coded block in which an intra sub-block partitioning (ISP) method is applied to the current block, the transform is not applied.
[0488] C37. The method of solution C17, wherein the codec information includes color components of the video.
[0489] C38. The method of solution C37, wherein the transform is applied when the color component is a luma component of a video.
[0490] C39. The method of solution C37, wherein the transform is not applied when the color component is a chroma component of a video.
[0491] C40. The method of solution C17, wherein the encoding and decoding information includes an intra-frame prediction mode of the current block.
[0492] C41. The method of solution C17, wherein the codec information includes motion information associated with the current block.
[0493] C42. The method of solution C41, wherein the motion information comprises one or more motion vectors and / or reference indices.
[0494] C43. The method of solution C17, wherein the codec information includes a standard profile, level or layer of the current block.
[0495] C44. A method for video processing, comprising: for a current block of a video, based on an indication at a codec unit (CU) level, a codec block (CB) level, or a transform unit (TU) level in a bitstream representation of the video, making a decision about applying a transform to the current block; and based on the decision, performing a conversion between the current block and the bitstream representation.
[0496] C45. The method of solution C44, wherein the decision is made based on an indication at the CU level, and wherein all TUs share the same transform matrix.
[0497] C46. The method of solution C44, wherein a CU is divided into a plurality of TUs, and wherein a transform matrix corresponding to the transform is determined based on coefficients in one or more of the plurality of TUs.
[0498] C47. The method of solution C46, wherein the one or more TUs include a first TU among the multiple TUs.
[0499] C48. The method of solution C46, wherein the one or more TUs include a last TU of the plurality of TUs.
[0500] C49. The method of solution C46, wherein the one or more TUs do not include at least one TU from the plurality of TUs.
[0501] C50. The method of solution C46, wherein the one or more TUs include each of the multiple TUs.
[0502] C51. The method of solution C44 is to make a decision based on an indication at the CU level or based on an indication at the TU level based on at least one of the size of the current block, the size of the virtual pipeline data unit (VPDU), the maximum size of the codec tree unit (CTU) and / or the codec information of the current block.
[0503] C52. The method of solution C51, wherein when the size of the current block is larger than the size of the VPDU, the decision is based on an indication at the CU level.
[0504] C53. The method of any of solutions C1 to C52, wherein the conversion generates the current block from a bitstream representation.
[0505] C54. The method of any of solutions C1 to C52, wherein the conversion generates a bitstream representation from the current block.
[0506] C55. 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 in any one of solutions C1 to C54.
[0507] C56. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising a program code for executing the method in any one of solutions C1 to C54.
[0508] Fig.17 1700 is a block diagram of a video processing device 1700. Device 1700 may be used to implement one or more methods described herein. Device 1700 may be embodied in a smartphone, a tablet, a computer, an IoT receiver, etc. Device 1700 may include one or more processors 1702, one or more memories 1704, and video processing hardware 1706. Processor(s) 1702 may be configured to implement one or more methods described in this document (including but not limited to methods 1675, 1680, and 1685). Memory(s) 1704 may be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 1706 may be used to implement some of the techniques described in this document in hardware circuits.
[0509] In some embodiments, the video encoding and decoding method can be implemented using a device implemented on a hardware platform, such as reference Fig.17 described.
[0510] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In an example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of a video block, but will not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from a video block to a bitstream representation of a video will use the video processing tool or mode. In another example, when a video processing tool or mode is enabled, a decoder will process the bitstream using the knowledge that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of a video to a video block will be performed using a video processing tool or mode enabled based on a decision or determination.
[0511] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In one example, when the video processing tool or mode is disabled, the encoder will not use the tool or mode in the conversion of video blocks to a bitstream representation of the video. In another example, when the video processing tool or mode is disabled, the decoder will process the bitstream with the knowledge that the bitstream has not been modified using the video processing tool or mode that was enabled based on the decision or determination.
[0512] Fig.18 1 is a block diagram illustrating an example video processing system 1800 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1800. System 1800 may include an input 1802 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8 or 10 bit multi-component pixel values, or may be in a compressed or encoded format. Input 1802 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces (such as Ethernet, passive optical networks, etc.) and wireless interfaces (such as wireless networks or cellular interfaces).
[0513] System 1800 may include a codec component 1804, which may implement various codecs or encoding methods described in this document. Codec component 1804 may reduce the average bit rate of the video from the input 1802 of codec component 1804 to the output to generate a codec representation of the video. Therefore, codec technology is sometimes referred to as video compression or video code conversion technology. The output of codec component 1804 may be stored or transmitted by a connected communication (as represented by component 1806). Component 1808 may use the bitstream (or codec) representation of the storage or communication of the video received at input end 1802 to generate pixel values or displayable video sent to display interface 1810. The process of generating user-visible video from bitstream representation is sometimes referred to as video decompression. In addition, although some video processing operations are referred to as "codec" operations or tools, it should be understood that codec tools or operations are used at encoders, and corresponding decoding tools or operations that reverse the codec results will be performed by decoders.
[0514] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB) or High Definition Multimedia Interface (HDMI) or Display Port, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The technology described in this document may be embodied in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0515] From the above, it will be appreciated that specific embodiments of the presently disclosed technology have been described herein for purposes of illustration, but that various modifications may be made without departing from the scope of the invention. Accordingly, the presently disclosed technology is not limited except as defined by the appended claims.
[0516] The implementation of the subject matter and functional operations described in this patent document can be implemented in various systems, digital electronic circuits, or in computer software, firmware or hardware (including the structures disclosed in this specification and their structural equivalents), or in a combination of one or more of them. The implementation of the subject matter described in this specification can be implemented as one or more computer program products, that is, one or more modules of computer program instructions encoded on a tangible and non-transitory computer-readable medium, for execution by a data processing device or controlling the operation of the data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material combination that implements a machine-readable propagation signal, or a combination of one or more of them. The term "data processing unit" or "data processing device" includes all devices, equipment and machines for processing data, including, for example, a programmable processor, a computer or multiple processors or computers. In addition to hardware, the device may include code that creates an execution environment for the computer program in question, for example, code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
[0517] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, 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 portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files storing one or more modules, subroutines, or portions of code). A computer program may be deployed to be executed on a single computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communications network.
[0518] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. These processes and logic flows can also be performed by special purpose logic circuits, and the device can also be implemented as a special purpose logic circuit, for example, an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
[0519] For example, processors suitable for executing computer programs include general and special purpose microprocessors, and any one or more processors of any type of digital computer. Typically, the 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 storage devices for storing instructions and data. Typically, a computer will also include or be operably coupled to one or more large-capacity storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, to receive data from or transmit data to, or both. However, a computer does not need to have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example, semiconductor storage devices, such as EPROM, EEPROM, and flash memory devices. The processor and memory can be supplemented or incorporated therein by dedicated logic circuits.
[0520] Although this patent document contains many details, these details should not be interpreted as limitations on any invention or the scope of the claimed protection, but rather as descriptions of features that may be specific to a particular embodiment of a particular invention. Certain features described in this patent document in the context of a separate embodiment may also be implemented in combination in a single embodiment. On the contrary, the various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable sub-combination. In addition, although features may be described above as working in certain combinations, and even initially claimed as such, in some cases, one or more features from the claimed combination may be deleted from the combination, and the claimed combination may point to a variant of a sub-combination or a sub-combination.
[0521] Similarly, while operations are described in a particular order in the drawings, this should not be understood as requiring that the operations be performed in the particular order or order shown, or that all of the illustrated operations be performed, in order to achieve the desired results. Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0522] Only a few implementations and examples are described, and other implementations, enhancements, and variations may be made based on what is described and illustrated in this patent document.
Claims
1. A method for processing video data, comprising: making a first decision to apply an implicitly selected transform of a multiple transform selection process for a primary transform to a current block of a video based on codec information associated with the current block; and Based on the first decision, performing conversion between the current block and a bitstream of a video; Wherein, when the current block is an intra-frame coded block with a derived tree (DT), the implicitly selected transform is not applied to the current block.
2. The method according to claim 1, wherein: The implicitly selected transform is applied under at least one condition, the condition including whether the current block is an intra-coded block or an inter-coded block.
3. The method according to claim 1, wherein: The implicitly selected transform is applied under at least one condition, the condition including that the height and width of the current block are not greater than a threshold (T), and wherein T is a positive integer.
4. The method according to claim 3, wherein: T = 32。 5. The method according to claim 1, wherein: In response to the implicitly selected transform being applied to the current block, one or more transform matrices applied to the current block are based on a representative coefficient set of the current block, the one or more transform matrices comprising at least one of a horizontal transform matrix or a vertical transform matrix.
6. The method according to claim 5, wherein: The representative set of coefficients corresponds to the dequantized version.
7. The method according to claim 5, wherein: The one or more transform matrices are determined at a transform unit (TU) level.
8. The method according to claim 5, wherein: The one or more transform matrices are based on a function of the representative set of coefficients, the output of the function being the number of coefficients in the representative set of coefficients.
9. The method according to claim 8, wherein: When the number is an even number, the horizontal transformation matrix includes a first transformation matrix and the vertical transformation matrix includes a second transformation matrix, and wherein, when the number is an odd number, the horizontal transformation matrix includes a third transformation matrix and the vertical transformation matrix includes a fourth transformation matrix.
10. The method according to claim 9, wherein: The first transform matrix and the second transform matrix are discrete sine transform (DST) of type VII (DST-VII), and the third transform matrix and the fourth transform matrix are discrete cosine transform (DCT) of type II (DCT-II).
11. The method according to claim 1, wherein: The converting includes encoding the current block into the bitstream.
12. The method according to claim 1, wherein: The converting includes decoding the current block from the bitstream.
13. The method according to claim 1, further comprising: making a second decision regarding applying a transform to a current block of the video based on the set of coefficients; as well as Based on the second decision, a conversion between the current block and a bitstream of a video is performed.
14. The method according to claim 13, wherein: The coefficient set corresponds to a quantized coefficient set in the bitstream.
15. The method according to claim 13, wherein: The coefficient set corresponds to a dequantized version of a quantized coefficient set in the bitstream.
16. The method according to any one of claims 13 to 15, wherein: Application of a transform skip to the current block is based on the coefficient set.
17. The method according to any one of claims 13 to 15, further comprising: modifying the set of coefficients; as well as Prior to making the second decision, the transform is derived based on a modified set of coefficients.
18. The method according to claim 17, wherein: Modifying the set of coefficients includes clipping at least one coefficient in the set of coefficients.
19. The method according to claim 17, wherein: Modifying the set of coefficients includes scaling at least one coefficient in the set of coefficients.
20. The method according to claim 17, wherein: Modifying the set of coefficients includes adding an offset to at least one coefficient in the set of coefficients.
21. The method according to claim 17, wherein: Modifying the set of coefficients includes filtering at least one coefficient in the set of coefficients.
22. The method according to claim 17, wherein: Modifying the set of coefficients includes mapping the set of coefficients to a modified set of coefficients based on at least one look-up table (LUT).
23. The method according to any one of claims 13 to 15, wherein: Deriving a codec mode and / or information associated with the current block is implicitly based on the set of coefficients.
24. The method according to any one of claims 13 to 15, wherein: Deriving a secondary transform applicable to a sub-region of the current block is based on the set of coefficients.
25. The method according to claim 24, wherein: The set of coefficients corresponds to the sub-region.
26. The method according to any one of claims 13 to 15, wherein: The second decision is also made based on an indication signaled in the bitstream at a sequence level, a picture level, a slice level, or a slice group level.
27. The method according to claim 26, wherein: The indication is signaled in a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoder parameter set (DPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header or a slice group header.
28. The method according to any one of claims 13 to 15, wherein: The coefficient sets include representative coefficient sets.
29. The method of claim 1, further comprising: making a third decision regarding applying a transform to a current block of the video based on codec information associated with the current block; as well as Based on the third decision, conversion between the current block and a bitstream of a video is performed.
30. The method of claim 29, wherein: The transform is associated with an implicit selection of transform (IST) mode, and wherein the IST mode comprises selectively applying a transform type other than a discrete cosine transform of type II (DCT-II).
31. The method of claim 29, wherein: The codec information includes the size of the current block.
32. The method according to claim 31, wherein: The transform is applied when the height and width of the current block are not greater than a threshold (T), where T is a positive integer.
33. The method of claim 32, wherein T = 32.
34. The method of claim 29, wherein: The codec information includes a quantization parameter (QP).
35. The method of claim 29, wherein: The codec information includes a picture type of a current picture including the current block.
36. The method of claim 35, wherein: The picture type is an I frame or a P / B frame.
37. The method of claim 36, wherein: The transform is applied when the picture type is an I frame, and wherein the transform is not applied when the picture type is a P / B frame.
38. The method of claim 29, wherein: The codec information includes a slice type of a current slice including the current block.
39. The method of claim 38, wherein: The stripe type is an I stripe or a P / B stripe.
40. The method of claim 29, wherein: The coding information includes a segmentation method of the current block.
41. The method of claim 40, wherein: The partitioning method is single tree or double tree.
42. The method of claim 29, wherein: The codec information includes a codec mode of the current block.
43. The method of claim 42, wherein: The coding mode includes at least one of an inter-frame mode, an intra-frame mode, or an intra-block copy (IBC) mode.
44. The method according to claim 42 or 43, wherein: When the current block is an intra-coded block, the transformation is applied.
45. The method of claim 29, wherein: The codec information includes a codec method applied to the current block.
46. The method of claim 45, wherein: The coding method is an intra sub-block partitioning (ISP) method and / or a derived tree (DT) method.
47. The method of claim 45, wherein: When the current block is an intra-coded block in which a derived tree (DT) method is applied to the current block, the transform is not applied.
48. The method of claim 45, wherein: When the current block is an intra-coded block in which an intra sub-block partitioning (ISP) method is applied to the current block, the transform is not applied.
49. The method of claim 29, wherein: The codec information includes color components of the video.
50. The method of claim 49, wherein: The transform is applied when the color component is a luma component of the video.
51. The method of claim 49, wherein: When the color component is a chroma component of the video, the transform is not applied.
52. The method of claim 29, wherein: The coding information includes an intra prediction mode of the current block.
53. The method of claim 29, wherein: The codec information includes motion information associated with the current block.
54. The method of claim 53, wherein: The motion information includes one or more motion vectors and / or reference indexes.
55. The method of claim 29, wherein: The codec information includes the standard profile, level or layer of the current block.
56. The method of claim 1, further comprising: For a current block of the video, based on an indication at a codec unit (CU) level, a codec block (CB) level, or a transform unit (TU) level in a bitstream of the video, make a fourth decision on applying a transform to the current block; as well as Based on the fourth decision, a conversion between the current block and the bitstream is performed.
57. The method of claim 56, wherein: The fourth decision is made based on the indication at the CU level, and wherein all TUs share the same transform matrix.
58. The method of claim 56, wherein: A CU is divided into a plurality of TUs, and a transform matrix corresponding to the transform is determined based on coefficients in one or more TUs in the plurality of TUs.
59. The method of claim 58, wherein: The one or more TUs include a first TU among the multiple TUs.
60. The method of claim 58, wherein: The one or more TUs include a last TU of the multiple TUs.
61. The method of claim 58, wherein: The one or more TUs do not include at least one TU among the multiple TUs.
62. The method of claim 58, wherein: The one or more TUs include each of the plurality of TUs.
63. According to the method according to claim 56, whether the fourth decision is made based on the indication at the CU level or based on the indication at the TU level is based on at least one of the size of the current block, the size of the virtual pipeline data unit (VPDU), the maximum size of the codec tree unit (CTU) and / or the codec information of the current block.
64. The method of claim 63, wherein: When the size of the current block is larger than the size of the VPDU, the fourth decision is based on an indication at the CU level.
65. The method of any one of claims 13 to 15, 29 to 43 and 45 to 64, wherein The conversion generates the current block from the bitstream.
66. The method of any one of claims 13 to 15, 29 to 43, and 45 to 64, wherein The converting generates the bitstream from the current block.
67. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein: The instructions, when executed by the processor, cause the processor to: making a first decision to apply an implicitly selected transform of a multiple transform selection process for a primary transform to a current block of a video based on codec information associated with the current block; and Based on the first decision, performing conversion between the current block and a bitstream of a video; Wherein, when the current block is an intra-frame coded block with a derived tree (DT), the implicitly selected transform is not applied to the current block.
68. The apparatus of claim 67, wherein: The implicitly selected transform is applied under at least one condition, the condition including that the height and width of the current block are not greater than a threshold (T), and wherein T is a positive integer, T=32.
69. The apparatus of claim 67, wherein: In response to the implicitly selected transform being applied to the current block, one or more transform matrices applied to the current block are based on a representative set of coefficients for the current block, the one or more transform matrices comprising at least one of a horizontal transform matrix or a vertical transform matrix, wherein the representative set of coefficients corresponds to a dequantized version, and wherein the one or more transform matrices are determined at a transform unit (TU) level.
70. A non-transitory computer-readable storage medium storing instructions that cause a processor to: Based on codec information associated with a current block of video, making a first decision to apply an implicitly selected transform of a multiple transform selection process for a primary transform to the current block; and Based on the first decision, performing conversion between the current block and a bitstream of a video; in, When the current block is an intra-coded block with a derived tree (DT), the implicitly selected transform is not applied to the current block.
71. The non-transitory computer readable storage medium of claim 70, wherein: The implicitly selected transform is applied under at least one condition, the condition including that the height and width of the current block are not greater than a threshold (T), and wherein T is a positive integer, T=32.
72. The non-transitory computer-readable storage medium of claim 70, wherein: In response to the implicitly selected transform being applied to the current block, one or more transform matrices applied to the current block are based on a representative set of coefficients for the current block, the one or more transform matrices comprising at least one of a horizontal transform matrix or a vertical transform matrix, wherein the representative set of coefficients corresponds to a dequantized version, and wherein the one or more transform matrices are determined at a transform unit (TU) level.
73. A method for storing a bit stream of a video, comprising: making a first decision to apply an implicitly selected transform of a multiple transform selection process for a primary transform to a current block of a video based on codec information associated with the current block; generating a bitstream of the video based on the first decision; and storing the generated bit stream in a non-transitory computer-readable recording medium, Wherein, when the current block is an intra-frame coded block with a derived tree (DT), the implicitly selected transform is not applied to the current block.
74. The method of claim 73, wherein: The implicitly selected transform is applied under at least one condition, the condition including that the height and width of the current block are not greater than a threshold (T), and wherein T is a positive integer, T = 32, wherein, in response to the implicitly selected transform being applied to the current block, one or more transform matrices applied to the current block are based on a representative coefficient set of the current block, the one or more transform matrices comprising at least one of a horizontal transform matrix or a vertical transform matrix, wherein the representative set of coefficients corresponds to a dequantized version, and wherein the one or more transform matrices are determined at a transform unit (TU) level.
75. An apparatus for processing video data, 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 of any one of claims 2, 8 to 66.
