Codec tools for chroma components
By introducing implicit multi-transform sets and simplifying the signaling notification mechanism of transform skip flags in video encoding and decoding, the problems of low encoding and decoding efficiency and high computational complexity in the prior art are solved, and more efficient video processing performance is achieved .
Patent Information
- Application Number
- CN202080045375.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-06-21
- Filing Date
- 2020-06-19
- Publication Date
- 2025-01-07
- Estimated Expiration
- 2040-06-19
AI Technical Summary
When handling high-resolution videos, existing video encoding and decoding techniques have problems with low encoding and decoding efficiency and high computational complexity, especially in signaling notifications of multi-transform sets and transform skip flags. Not high problem.
By introducing implicit multi-transform sets (MTS) in video encoding and decoding and simplifying the signaling notification mechanism of transform skip flags, the transformation type is dynamically selected based on the decoded coefficients and block characteristics, reducing unnecessary signaling notifications and transformation operations , improve the encoding and decoding efficiency.
It improves the efficiency of video encoding and decoding, reduces calculation complexity, reduces redundant signaling notifications, and improves the performance of video processing.
Smart Images

Figure CN114026865B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] In accordance with the applicable Patent Law and / or Paris Convention, this application promptly claims priority and the benefits of International Patent Application No. PCT / CN2019 / 092388 filed on June 21, 2019. For all legal purposes, 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 accounts for the largest bandwidth usage on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that bandwidth requirements for digital video usage will continue to grow. Summary of the invention
[0005] Devices, systems and methods are described that relate to digital video coding and decoding, and in particular to coding and decoding tools for chrominance components. 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 encoders.
[0006] In a representative aspect, the disclosed technology can be used to provide an example method for video processing. The method includes: as part of a conversion between a current block of video and a bitstream representation of the video, applying a codec tool to one or more chrominance components of the video based on the selective application of a codec tool to a corresponding luma component of the video; and performing the conversion.
[0007] In another representative aspect, the disclosed technology can be used to provide an example method for video processing. The method includes: as part of a conversion between a current block of a first chroma component of a video and a bitstream representation of the video, based on the selective application of the codec tool to one or more corresponding blocks of other chroma components of the video, applying a codec tool to the current block; and performing the conversion.
[0008] In yet another representative aspect, the disclosed technology can be used to provide an exemplary method for video processing. The method includes: as part of a conversion between a current block of the video and a bitstream representation of the video, based on the selective application of the codec tool to one or more corresponding chroma components of the video, applying a codec tool to a luma component of the video; and performing the conversion.
[0009] In yet another representative aspect, the disclosed technology can be used to provide an exemplary method for video processing. The method includes: performing a conversion between a current block of video and a bitstream representation of the video, wherein whether to signal a multiple transform set (MTS) index and / or a transform skip flag in the bitstream representation is based on the enablement of a block differential pulse codec modulation (BDPCM) based codec tool for the current block.
[0010] In yet another representative aspect, the disclosed technology can be used to provide an exemplary method for video processing. The method includes: selecting a codec type having a plurality of binary numbers based on a multiple transform set (MTS) type for a current block of the video; and applying the codec type to an indication of the MTS type as part of a conversion between the current block and a bitstream representation of the video.
[0011] In yet another representative aspect, the above method is implemented in the form of processor executable code and stored in a computer readable program medium.
[0012] 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.
[0013] In yet another representative aspect, a video decoder device may implement a method as described herein.
[0014] 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
[0015] Figure 1 An example of an encoder block diagram is shown.
[0016] Figure 2 Examples of 67 intra prediction modes are shown.
[0017] Figure 3A and 3B An example of reference sampling for wide-angle intra prediction mode for non-square blocks is shown.
[0018] Figure 4 An example of discontinuity when using wide angle intra prediction is shown.
[0019] Figures 5A-5D An example of sampling used by the Position Dependent Intra Prediction Combining (PDPC) method is shown.
[0020] Figure 6 Examples of partitioning into 4×8 blocks and 8×4 blocks are shown.
[0021] Figure 7Examples of partitioning of all blocks except 4×8, 8×4, and 4×4 are shown.
[0022] Figure 8 An example of partitioning a 4×8 sample block into two independently decodable regions is shown.
[0023] Fig. 9 An example of the order in which rows of pixels are processed using a vertical predictor to maximize throughput for a 4xN block is shown.
[0024] Fig.10 An example of a quadratic transform in JEM is shown.
[0025] Fig.11 An example of the proposed simplified quadratic transform (RST) is shown.
[0026] Fig.12 Examples of a forward simplified transform and an inverse simplified transform are shown.
[0027] Fig.13 An example of a positive RST 8x8 process utilizing a 16x48 matrix is shown.
[0028] Fig.14 An example is shown where positions 17 to 64 are scanned in an 8x8 block for non-zero elements.
[0029] Fig.15 Examples of sub-block transform modes SBT-V and SBT-H are shown.
[0030] Figure 16A-16E A flowchart of an example method for multiple transformations according to the disclosed technology is shown.
[0031] Fig.17 is a block diagram of an example of a hardware platform for implementing the visual media decoding techniques or the visual media encoding techniques described in this document.
[0032] Fig.18 is a block diagram of an exemplary video processing system in which the disclosed technology may be implemented. DETAILED DESCRIPTION
[0033] 1 Introduction
[0034] Due to the growing demand for higher resolution video, video coding and decoding methods and techniques are ubiquitous in modern technology. Video encoders typically include electronic circuits or software that compress or decompress digital video, and are constantly being improved to provide higher coding and decoding efficiency. Video encoders 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 bit rate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, and end-to-end latency (delay). The compression format typically 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 to-be-finalized Universal Video Codec (VVC) standard, or other current and / or future video codec standards.
[0035] 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 specification to improve the readability of the specification and do not in any way limit the discussion or embodiments (and / or implementation) to the corresponding sections.
[0036] 2 Embodiments and Examples of Methods for Various Transformations
[0037] 2.1 Color Space and Chroma Subsampling
[0038] 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 (e.g. RGB). Fundamentally, a color space is an elaboration of coordinate systems and subspaces.
[0039] For video compression, the most commonly used color spaces are YCbCr and RGB.
[0040] YCbCr, Y'CbCr, or YPb / CbPr / Cr, also written as YCBCR or Y'CBCR, is a family of color spaces used as part of the color imaging pipeline in video and digital photography systems. Y' is the luma component, CB and CR are the blue color difference chroma component and the red color difference chroma component. Y' (with an apostrophe) is different from luma Y, which means that the light intensity is non-linearly encoded based on the gamma-corrected RGB primaries.
[0041] Chroma subsampling is the practice of encoding an image by achieving 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 luminance.
[0042] 4:4:4 format.Each of the three Y'CbCr components has the same sampling rate, so there is no chroma subsampling. This scheme is sometimes used in high-end film scanners and film post-production.
[0043] 4:2:2 format. The two chroma components are sampled at half the sampling rate of luma: the horizontal chroma resolution is halved. This reduces the bandwidth of the uncompressed video signal by one third with little to no visual difference.
[0044] 4:2:0 format. In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but the vertical resolution is halved since the Cb and Cr channels are sampled only every other row in this scheme. Therefore, the data rate is the same. Each of CB and Cr is subsampled horizontally and vertically by a factor of 2. The 4:2:0 scheme has three different variations with different horizontal and vertical positioning.
[0045] In MPEG-2, Cb and Cr are co-located horizontally. Cb and Cr are located between pixels in the vertical direction (positioned intermittently).
[0046] o In JPEG / JFIF, H.261 and MPEG-1, Cb and Cr are intermittently positioned between alternate luma samples, positioned at mid-positions between alternate luma samples.
[0047] In 4:2:0 DV, Cb and Cr are co-located horizontally. In the vertical direction, Cb and Cr are co-located on alternate lines.
[0048] 2.2 Encoding and decoding flow of typical video encoders
[0049] Figure 1 An example of an encoder block diagram for VVC is shown, which includes three in-loop filtering blocks: deblocking filter (DF), sample adaptive offset (SAO), and ALF. Unlike DF, which uses a predetermined filter, the offset and filter coefficients are signaled using codec side information. SAO and ALF use the original samples of the current picture to reduce the mean square error between the original samples and the reconstructed samples by adding an offset and applying a finite impulse response (FIR) filter, respectively. ALF is located at the last processing stage of each picture and can be considered a tool that tries to capture and repair artifacts produced by previous stages.
[0050] 2.3 Intra-mode coding and decoding using 67 intra-prediction modes
[0051] To capture arbitrary edge directions that occur in natural videos, the number of directional intra modes is extended from 33 as used in HEVC to 65. Figure 2In , additional directional modes are shown as red dashed arrows, and planar and DC modes remain the same. These more intensive directional intra prediction modes apply to all block sizes and luma and chroma intra prediction.
[0052] like Figure 1 As shown, the traditional angular intra prediction direction is defined as 45 degrees to -135 degrees in the clockwise direction. In VTM2, multiple traditional angular intra prediction modes are adaptively replaced by wide-angle intra prediction modes for non-square blocks. The replaced mode is signaled using the original method, and the replaced mode is remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes is unchanged (e.g., 67), and the intra mode codec is unchanged.
[0053] In HEVC, each intra-coded block has a square shape and the length of each side is a power of 2. Therefore, no division operation is required to form the intra predictor using the DC mode. In VTV2, blocks can have a rectangular shape, which in general requires the use of a division operation for each block. To avoid the division operation for DC prediction, only the longer side is used to calculate the average value for non-square blocks.
[0054] 2.4 Wide-angle Intra Prediction for Non-square Blocks
[0055] In some embodiments, the traditional angular intra prediction direction is defined as 45 degrees to -135 degrees in the clockwise direction. In VTM2, multiple traditional angular intra prediction modes are adaptively replaced by wide-angle intra prediction modes for non-square blocks. The replaced modes are signaled using the original method, and the replaced modes are remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes is unchanged (e.g., 67), and the intra mode codec is unchanged.
[0056] like Figure 3A and Figure 3B As defined in the example in, to support these prediction directions, a top reference of length 2W+1 and a left reference of length 2H+1 are defined.
[0057] 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.
[0058]
[0059] Table 1: Intra prediction modes replaced by wide mode
[0060] like Figure 4As shown, 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.
[0061] 2.5 Example of Position-Dependent Intra Prediction Combining (PDPC).
[0062] In VTM2, the intra prediction results of the planar mode are 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-style intra prediction with filtered boundary reference samples. PDPC is applied to the following intra modes without signaling: planar, DC, horizontal, vertical, bottom-left angle mode and its eight neighboring angle modes, and top-right angle mode and its eight neighboring angle modes.
[0063] The prediction sample pred(x, y) is predicted by using the intra prediction mode (DC, planar, angular) and a linear combination of the reference samples according to the following equation:
[0064] pred(x,y)=(wL×R -1,y +wT×R x,-1 -wTL×R -1,-1 +(64-wL-wT+wTL)×pred(x,y)+32)>>shift
[0065] In this paper, R x,-1 , R -1,y represent the reference samples located at the top and left of the current sample (x, y), and R -1,-1 Represents the reference sample located at the upper left corner of the current block.
[0066] 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.
[0067] Figure 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, and the reference sample R -1,y The coordinate y of is similarly given by: y=x'+y'+1.
[0068] In some embodiments, the PDPC weight depends on the prediction mode and is shown in Table 2, where S=shift.
[0069]
[0070] Table 2: Examples of PDPC weights according to prediction mode
[0071] 2.6 Intra-frame sub-block segmentation
[0072] 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 block size dimension, 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.
[0073]
[0074]
[0075] Table 3: Number of subdivisions depending on block size
[0076] For each of these sub-partitions, a residual signal is generated by entropy decoding the coefficients sent by the encoder, followed by inverse quantization and inverse transformation. The sub-partition is then intra-predicted and finally the corresponding reconstructed samples are obtained by adding the residual signal to the prediction signal. Thus, the reconstructed values of each sub-partition will be used to generate the prediction of the next sub-partition, which will repeat the process and so on. All sub-partitions share the same intra mode.
[0077] Based on the intra mode and the partition utilized, two different categories of processing order are used, which are referred to as normal and reverse order. In the normal order, the first sub-division to be processed is the sub-division that includes the upper left sample of the CU, and then continues downward (horizontal partitioning) or to the right (vertical partitioning). Therefore, the reference samples used to generate the sub-division prediction signal are located only on the left and upper sides of the row. On the other hand, the reverse processing order starts from the sub-division that includes the lower left sample of the CU and continues upward, or starts from the sub-division that includes the upper right sample of the CU and continues to the left.
[0078] 2.7-block differential pulse code modulation codec.
[0079] BDPCM was proposed in JVET-M0057. Since the shape of the horizontal (vertical) predictor of the current pixel is predicted using the left (A) (upper (B)) pixels, the most throughput-efficient way to process a block is to process all pixels of a column (row) in parallel and process these columns (rows) sequentially. To increase throughput, we introduce the following procedure: when the predictor selected on the block is vertical, the block of width 4 is divided into two halves with a horizontal front edge, and when the predictor selected on the block is horizontal, the block of height 4 is divided into two halves with a vertical front edge.
[0080] 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 pixel is replaced by a reference pixel in the prediction direction. Figure 8 This is shown in for different positions of the current pixel X in the vertically predicted 4x8 block.
[0081] Due to this feature, a 4×4 block can now be processed in 2 cycles, and a 4×8 or 8×4 block in 4 cycles, and so on, as Fig. 9 shown.
[0082] Table 4 summarizes the number of cycles required to process a block, depending on the size of the block. It is clear that any block with both dimensions greater than or equal to 8 can be processed at 8 pixels per cycle or more.
[0083]
[0084] Table 4: Throughput for blocks of size 4×N and N×4
[0085] 2.8 Quantized Residual Domain BDPCM
[0086] In JVET-N0413, quantized residual domain BDPCM (hereinafter denoted as RBDPCM) is proposed. Intra prediction is performed on the whole block by copying the samples in the prediction direction (horizontal prediction or vertical prediction) similar to intra prediction. The residual is quantized and the delta between the quantized residual and its predictor (horizontal or vertical) quantized value is encoded and decoded.
[0087] 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 horizontally (copying the left neighbor pixel values row by row on the prediction block) or vertically (copying the upper neighbor row to each row in the prediction block) using unfiltered samples from the upper or left block boundary samples. Let Q(r i,j ), 0≤i≤M-1,0≤j≤N-1 represents the residual r i,jThe quantized version of , where the residual is the difference between the original block value and the predicted block value. Block DPCM is then applied to the quantized residual samples r i,j , get the modified element An M×N array When vertical BDPCM is signaled:
[0088]
[0089] For horizontal prediction, similar rules apply and the residual quantization samples are obtained by
[0090]
[0091] Residual Quantization Sampling is sent to the decoder.
[0092] At the decoder side, the above calculation is reversed to obtain Q(r i,j ),0≤i≤M-1,0≤j≤N-1. For vertical prediction,
[0093] value.
[0094] An advantage of this scheme is that the inversion of DPCM can be done during the coefficient analysis, or it can be done after the analysis by simply adding the predictors as coefficients of the analysis.
[0095] Transform skipping is always used in quantized residual domain BDPCM.
[0096] 2.9 Multiple Transform Set (MTS) in VVC
[0097] In VTM4, large block size transforms (up to 64×64 in size) are allowed, which mainly benefits higher resolution video (e.g., 1080p and 4K sequences). For transform blocks with a size (width or height, or both) 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 left 32 columns of transform coefficients are retained. Similarly, when N is equal to 64, only the upper 32 rows of transform coefficients are kept. When transform skip mode is used for large blocks, the entire block is used without zeroing any values.
[0098] In addition to DCT-II already used in HEVC, a multi-transform selection (MTS) scheme is used for residual coding of both inter-frame coding blocks and intra-frame coding blocks. This scheme uses multiple transforms selected 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.
[0099]
[0100]
[0101] Table 4: Basis functions of the transformation matrix used in VVC
[0102] To maintain the orthogonality of the transform matrices, the transform matrices are quantized more accurately than in HEVC. To keep the intermediate values of the transformed coefficients within the 16-bit range, all coefficients will have 10 bits after the horizontal transform and after the vertical transform.
[0103] To control the MTS scheme, separate enable flags are specified for intra and inter at the SPS level. When MTS is enabled at SPS, a CU level flag is signaled to indicate whether MTS is applied. Here, MTS is used only for luma. The MTS CU level flag is signaled when the following conditions are met.
[0104] οWidth and height are both less than or equal to 32
[0105] οCBF flag equals 1
[0106] If the MTS CU flag is equal to zero, DCT2 is applied in both directions. However, if the MTS CU flag is equal to 1, two other flags are additionally signaled to indicate the transform type for the horizontal and vertical directions, respectively. The transform and signaling mapping table is shown in Table 5. For transform matrix precision, an 8-bit main transform core is used. Therefore, all transform cores used in HEVC remain the same, including 4-point DCT-2 and DST-7, 8-point, 16-point, and 32-point DCT-2. Moreover, 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 of 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 or decoded in transform skip mode. To avoid syntax coding redundancy, the transform skip flag is not signaled when the CU level MTS_CU_flag is not equal to zero. The block size limit for transform skip is the same as that for MTS in JEM4, which means that transform skip can be applied to a CU when both the block width and height are equal to or less than 32.
[0110] 2.10 Simplified Quadratic Transform (RST) proposed in JVET-N0193
[0111] 2.10.1 Non-separable quadratic transform (NSST) in JEM
[0112] In JEM, a secondary transform is applied between the forward primary transform and quantization (at the encoder) and between dequantization and the inverse primary transform (at the decoder side). Fig.10 As shown, the execution of 4×4 (or 8×8) secondary transform depends on the block size. For example, for small blocks (i.e., min(width, height) < 8), 4×4 secondary transform is applied, while for larger blocks (i.e., min(width, height) > 4), 8×8 secondary transform is applied for every 8×8 block.
[0113] The application of the non-separable transform is described below using the input as an example. To apply the non-separable transform, the 4×4 input block X
[0114]
[0115] First represent it as a vector:
[0116]
[0117] The inseparable transformation is computed as in represents the transform coefficient vector, and T is the 16×16 transform matrix. 16×1 coefficient vector The block is then reorganized into 4×4 blocks using the scan order (horizontal, vertical or diagonal). Coefficients with smaller indices will be placed in the 4×4 coefficient block 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 intra prediction modes to transform sets is predefined. For each transform set, the selected non-separable secondary transform (NSST) candidate is also specified by an explicitly signaled secondary transform index. After the transform coefficients, the index is signaled once in the bitstream for each intra CU.
[0118] 2.10.2 Simplified Secondary Transform (RST) in JVET-N0193
[0119] The RST (also known as the Low-Frequency Non-Separable Transform (LFNST)) was introduced in JVET-K0099, and four transform sets (instead of 35 transform sets) mapping were introduced in JVET-L0133. In this JVET-N0193, 16×64 (further reduced to 16×48) and 16×16 matrices were used. For ease of representation, 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.
[0120] RST calculation
[0121] 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.
[0122] The RT matrix is an R×N matrix as follows:
[0123]
[0124] 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 RT and inverse RT are shown in Fig.12 ...
[0125] In this contribution, RST8×8 with a reduction factor of 4 (1 / 4 size) is applied. Therefore, a 16×64 direct matrix is used instead of 64×64, where 64×64 is the size of the traditional 8×8 non-separable transform matrix. In other words, a 64×16 inverse RST matrix is used on the decoder side to generate the core (main) transform coefficients in the upper left 8×8 region. The forward RST8×8 uses a 16×64 (or 8×64 for an 8×8 block) matrix, such that it only generates non-zero coefficients in the upper left 4×4 region within a given 8×8 region. In other words, if RST is applied, the 8×8 region except for the upper left 4×4 region will only have zero coefficients. For RST4×4, 16×16 (or 8×16 for a 4×4 block) direct matrix multiplication is applied.
[0126] The inverse RST is conditionally applied when the following two conditions are met:
[0127] ο The block size is greater than or equal to a given threshold (W >= 4 && H >= 4)
[0128] ο The transform skip mode flag is equal to zero
[0129] 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 region of the transform coefficient block. Otherwise, RST4×4 is applied to the upper left min(8, W)×min(8, H) region of the transform coefficient block.
[0130] If the RST index is equal to 0, the RST is not applied. Otherwise, the RST is applied and the core is selected using the RST index. The RST selection method and the encoding and decoding of the RST index will be explained later.
[0131] In addition, RST is used for intra CUs in both intra slices and inter slices, and for both luma and chroma. If dual tree is enabled, RST indexes for luma and chroma are signaled separately. For inter slices (dual tree disabled), a single RST index is signaled and used for luma and chroma.
[0132] 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, the performance improvement is negligible. In addition, disabling RST for the residual of ISP prediction can reduce the coding complexity.
[0133] RST selection
[0134] The RST matrix is selected from four transform sets, each consisting of two transforms. Which transform set is applied is determined based on the intra prediction mode, as follows:
[0135] (1) If one of the three CCLM modes is indicated, transform set 0 is selected.
[0136] (2) Otherwise, select the transformation set according to the following table:
[0137] Transformation Set Selection Table
[0138]
[0139] The index for accessing the above table (denoted as IntraPredMode) has a range of [-14, 83], which is the transformed mode index for wide-angle intra prediction.
[0140] Reduced dimensionality RST matrix
[0141] As a further simplification, a 16×48 matrix is applied instead of a 16×64 with the same transform set configuration, where each transform set configuration takes 48 input data from three 4×4 blocks in the upper left 8×8 block except the lower right 4×4 block (e.g. Fig.13shown).
[0142] RST signaling
[0143] Positive RST 8×8 with R=16 uses a 16×64 matrix, so that in a given 8×8 region, only the upper left 4×4 region produces non-zero coefficients. In other words, if RST is applied, the 8×8 region except the upper left 4×4 region only produces zero coefficients. Therefore, when the upper left 4×4 (in Fig.14 The RST index is not encoded or decoded when any non-zero element is detected in an 8×8 block region other than the 8×8 block region described in , since this means that RST is not applied. In this case, the RST index is inferred to be zero.
[0144] Zero adjustment range
[0145] Typically, any coefficient in a 4x4 sub-block may be non-zero before inverse RST is applied to the 4x4 sub-block. However, in some cases, some coefficients in a 4x4 sub-block must be zero before inverse RST is applied to the sub-block.
[0146] Let nonZeroSize be a variable. When rearranging it into a 1-D array before inverse RST, it is required that any coefficient with index not less than nonZeroSize must be zero.
[0147] When nonZeroSize is equal to 16, the coefficients in the upper left 4×4 sub-block have no zeroing constraints.
[0148] In JVET-N0193, when the current block size is 4×4 or 8×8, nonZeroSize is set equal to 8 (i.e., Fig.14 As shown, the coefficients for scan indices in the range [8, 15] will be 0). For other block sizes, nonZeroSize is set equal to 16.
[0149] Description of RST in the working draft
[0150] Sequence Parameter Set RBSP Syntax
[0151]
[0152]
[0153] Residual Codec Syntax
[0154]
[0155]
[0156] Codec unit syntax
[0157]
[0158]
[0159] Sequence Parameter Set RBSP Semantics ......
[0161] sps_st_enabled_flag equal to 1 specifies that st_idx may be present in the residual codec syntax for intra-codec units. sps_st_enabled_flag equal to 0 specifies that st_idx is not present in the residual codec syntax for intra-codec units. ......
[0163] Codec unit semantics ......
[0165] st_idx[x0][y0] specifies which secondary transform kernel is applied between the two candidate kernels in the selected transform set. st_idx[x0][y0] equal to 0 specifies that no secondary transform is applied. The matrix indices x0, y0 specify the position (x0, y0) of the top left sample of the transform block under consideration relative to the top left sample of the picture.
[0166] When st_idx[x0][y0] does not exist, st_idx[x0][y0] is inferred to be equal to 0.
[0167] Transformation process of scaling transform coefficients
[0168] General
[0169] The input to this process is:
[0170] - luma position (xTbY, yTbY) which specifies the top left sample of the current luma transform block relative to the top left luma sample of the current picture;
[0171] – the variable nTbW, which specifies the width of the current transform block,
[0172] – the variable nTbH, which specifies the height of the current transform block,
[0173] – the variable cIdx, which specifies the color component of the current block,
[0174] – A (nTbW)x(nTbH) matrix d[x][y] with scaled transform coefficients, where x=0..nTbW-1, y=0..nTbH-1.
[0175] The output of this process is a (nTbW)x(nTbH) matrix r[x][y] of residual samples, where x=0..nTbW-1, y=0..nTbH-1.
[0176] If st_idx[xTbY][yTbY] is not equal to 0, the following conditions apply:
[0177] 1. The variables nStSize, log2StSize, numStX, numStY, and nonZeroSize are derived as follows:
[0178] – If nTbW and nTbH are both greater than or equal to 8, log2StSize is set to 3 and nStOutSize is set to 48.
[0179] – Otherwise, log2StSize is set to 2 and nStOutSize is set to 16.
[0180] –nStSize is set to (1< <log2StSize)。
[0181] – If nTbH is equal to 4 and nTbW is greater than 8, numStx is set equal to 2.
[0182] – Otherwise, numStx is set equal to 1.
[0183] – If nTbW is equal to 4 and nTbH is greater than 8, numStY is set equal to 2.
[0184] – Otherwise, numStY is set equal to 1.
[0185] – If nTbW and nTbH are both equal to 4, or if nTbW and nTbH are both equal to 8, then nonZeroSize is set equal to 8.
[0186] – Otherwise, set nonZeroSize equal to 16.
[0187] 2. For xSbIdx=0..numStX-1 and ySbIdx=0..numStY-1, the following applies:
[0188] – The variable matrix u[x] with x=0..nonZeroSize-1 is derived as follows:
[0189] xC=(xSbIdx< <log2StSize)+
[0190] DiagScanOrder[log2StSize][log2StSize][x][0]
[0191] yC = (ySbIdx << log2StSize) +
[0192] DiagScanOrder[log2StSize][log2StSize][x][1]
[0193] u[x] = d[xC][yC]
[0194] – The u[x] for x = 0..nonZeroSize - 1 is transformed into the variable matrix v[x] for x = 0..nStOutSize - 1 by calling the one-dimensional transformation process as specified in Clause 8.7.4.4 as follows: The scaled transform coefficient, the transform input length of nonZeroSize, the transform output length nStOutSize of the list u[x] for x = 0..nonZeroSize - 1, the index stPredModeIntra for transform set selection, and the index for transform selection in the transform set st_idx[xTbY][yTbY] are used as inputs, and the output is the list v[x] for x = 0..nStOutSize - 1. The variable stPredModeIntra is set to predModeIntra as specified in Clause 8.4.4.2.1.
[0195] – The array d[(xSbIdx << log2StSize) + x][(ySbIdx << log2StSize) + y] for x = 0..nStSize - 1, y = 0..nStSize - 1 is derived as follows:
[0196] – 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:
[0197] d[(xSbIdx << log2StSize) + x][(ySbIdx < log2StSize) + y] = (y < 4)? V[x + (y < log2StSize)] : ((x < 4)? V[32 + x + ((y - 4) < 2)] :
[0198] d[(xSbIdx << log2StSize) + x][(ySbIdx < log2StSize) + y])
[0199] – Otherwise, the following applies:
[0200] d[(xSbIdx< <log2StSize)+x][(ySbIdx<log2StSize)+y]=(y<4)?V[y+(x<log2StSize)]:((x<4)?V[32+(y-4)+(x<2)]:
[0201] d[(xSbIdx< <log2StSize)+x][(ySbIdx<log2StSize)+y])
[0202] Secondary transformation process
[0203] The input to this process is:
[0204] – variable nTrS, which specifies the transform output length,
[0205] – variable nonZeroSize, which specifies the transform input length,
[0206] – List of transformed inputs x[j], where j = 0..nonZeroSize-1,
[0207] – Variable stPredModeIntra, specifies the index used for transform set selection.
[0208] – The variable stIdx specifies the index for the transform selection in the set.
[0209] The output of this process is a list of transformed samples y[i] for i=0..nTrS-1.
[0210] The transform matrix derivation process as specified in clause 8.7.4.5 involves as input the transform output length nTrS, the index stPredModeIntra for transform set selection, the index stIdx for transform selection in the transform set, and as output the transform matrix secTransMatrix.
[0211] The list derivation of the transformed samples y[i] for i=0..nTrS-1 is as follows:
[0212] y[i]=Clip3(CoeffMin,CoeffMax, Where i = 0..nTrS-1
[0213] CoeffMin=-(1<<15)and CoeffMax=(1<<15)-1;
[0214] Secondary transformation matrix derivation process
[0215] The input to this process is:
[0216] – variable nTrS, which specifies the transform output length,
[0217] – the variable stPredModeIntra, which specifies the index used for transform set selection,
[0218] – A variable stIdx that specifies the index used to specify the transform selection in the transform set.
[0219] The output of this process is the transformation matrix secTransMatrix.
[0220] The variable stTrSetIdx is derived as follows:
[0221]
[0222] The transformation matrix secTransMatrix is derived based on nTrS, stTrSetIdx and stIdx as follows:
[0223] – If nTrS is equal to 16, stTrSetIdx is equal to 0, and stIdx is equal to 1, the following applies:
[0224] SecTransMatrix[m][n]=...
[0225] – If nTrS is equal to 16, stTrSetIdx is equal to 0, and stIdx is equal to 2, the following applies:
[0226] SecTransMatrix[m][n]=...
[0227] – If nTrS is equal to 16, stTrSetIdx is equal to 1, and stIdx is equal to 1, the following applies:
[0228] SecTransMatrix[m][n]=...
[0229] – If nTrS is equal to 16, stTrSetIdx is equal to 1, and stIdx is equal to 2, the following applies:
[0230] SecTransMatrix[m][n]=...
[0231] – If nTrS is equal to 16, stTrSetIdx is equal to 2, and stIdx is equal to 1, the following applies:
[0232] SecTransMatrix[m][n]=...
[0233] – If nTrS is equal to 16, stTrSetIdx is equal to 2, and stIdx is equal to 2, then the following applies:
[0234] SecTransMatrix[m][n]=...
[0235] – If nTrS is equal to 16, stTrSetIdx is equal to 3, and stIdx is equal to 1, the following applies:
[0236] SecTransMatrix[m][n]=...
[0237] – If nTrS is equal to 16, stTrSetIdx is equal to 3, and stIdx is equal to 2, the following applies:
[0238] SecTransMatrix[m][n]=...
[0239] – If nTrS is equal to 48, stTrSetIdx is equal to 0, and stIdx is equal to 1, the following applies:
[0240] SecTransMatrix[m][n]=...
[0241] – If nTrS is equal to 48, stTrSetIdx is equal to 0, and stIdx is equal to 2, the following applies:
[0242] SecTransMatrix[m][n]=...
[0243] – If nTrS is equal to 48, stTrSetIdx is equal to 1, and stIdx is equal to 1, the following applies:
[0244] SecTransMatrix[m][n]=...
[0245] – If nTrS is equal to 48, stTrSetIdx is equal to 1, and stIdx is equal to 2, the following applies:
[0246] SecTransMatrix[m][n]=...
[0247] – If nTrS is equal to 48, stTrSetIdx is equal to 2, and stIdx is equal to 1, the following applies:
[0248] SecTransMatrix[m][n]=...
[0249] – If nTrS is equal to 48, stTrSetIdx is equal to 2, and stIdx is equal to 2, then the following applies:
[0250] SecTransMatrix[m][n]=...
[0251] – If nTrS is equal to 48, stTrSetIdx is equal to 3, and stIdx is equal to 1, the following applies:
[0252] SecTransMatrix[m][n]=...
[0253] – If nTrS is equal to 48, stTrSetIdx is equal to 3, and stIdx is equal to 2, the following applies:
[0254] SecTransMatrix[m][n]=...
[0255] 2.11 Dequantization Reduction in HEVC
[0256] In HEVC, the scaled transform coefficient d' is calculated as
[0257] d'=Clip3(coeffMin, coeffMax, d),
[0258] where d is the scaled transform coefficient before the reduction.
[0259] For the luminance component,
[0260] CoeffMin=CoeffMinY, CoeffMax=CoeffMaxY;
[0261] For the chrominance component,
[0262] CoeffMin=CoeffMinC, CoeffMax=CoeffMaxC.
[0263] In this article,
[0264] CoeffMinY=-(1<<(extended_precision_processing_flag?Max(15,BitDepthY+6):15))
[0265] CoeffMinC=-(1<<(extended_precision_processing_flag?Max(15,BitDepthC+6):15))
[0266] CoeffMaxY=(1<<(extended_precision_processing_flag?Max(15,BitDepthY+6):15))-1
[0267] CoeffMaxC=(1<<(extended_precision_processing_flag?Max(15,BitDepthC+6):15))–1
[0268] The extended_precision_processing_flag is a syntax element signaled in the SPS.
[0269] 2.12 Affine Linear Weighted Intra Prediction (ALWIP, or Matrix-based Intra Prediction)
[0270] Affine Linear Weighted Intra Prediction (ALWIP, or Matrix-based Intra Prediction (MIP)) was proposed in JVET-N0217.
[0271] In JVET-N0217, two tests were performed. In Test 1, ALWIP was designed with a memory limit of 8K bytes and at most 4 multiplications per sample. Test 2 was similar to Test 1, but the design was further simplified in terms of memory requirements and model structure.
[0272] ο A single set of matrices and offset vectors for all block shapes.
[0273] οFor all block shapes, the number of patterns is reduced to 19.
[0274] ο Reduces memory requirements to 5760 10-bit values, or 7.20 kilobytes.
[0275] o Perform a linear interpolation of the predicted samples in a single step in each direction, instead of an iterative interpolation as in the first test.
[0276] 2.13 Sub-block Transformation
[0277] For an inter-predicted CU with cu_cbf equal to 1, cu_sbt_flag may be signaled to indicate whether the entire residual block or a sub-part of the residual block is decoded. In the former case, the inter MTS information is further parsed to determine the transform type of the CU. In the latter case, a portion of the residual block is encoded and decoded using the inferred adaptive transform, and another portion of the residual block is zeroed. SBT is not applied to combined inter-intra mode.
[0278] In the sub-block transform, a position-dependent transform is applied to the luma transform block 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, in Fig.15The 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 TU tiling, cbf, and horizontal and vertical transforms 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.
[0279] 3 Examples of defects in existing implementations
[0280] The current design of MTS has the following problems:
[0281] Signaling the index may result in overhead bits.
[0282] Some combinations of transforms may not be valid in MTS and SBT.
[0283] In the current VVC, the transform skip (TS) flag is encoded regardless of whether the current block is encoded or decoded in QR-BDPCM mode. However, when QR-BDPCM is enabled, no transform needs to be applied. Therefore, when a block is encoded or decoded with QR-BDPCM, the signaling of the TS flag is redundant.
[0284] In current VVC, a context is used to context-code the transform skip flag, which can also be used to encode and decode a binary number indicating whether the transform matrix is DCT2. Shared contexts may be less efficient.
[0285] There are 5 context encoding and decoding bins using 9 contexts for encoding and decoding transform matrix indices that affect parsing throughput.
[0286] QR-BDPCM / TS can also be applied to chrominance blocks. How to better determine the use of QR-BDPCM / TS requires further study.
[0287] 4 Exemplary Methods for Various Transformations
[0288] Embodiments of the currently disclosed technology overcome the shortcomings of existing implementations, thereby providing video codecs with higher codec efficiency but lower computational complexity. Methods for multiple transformations as described in this document are explained in the examples described below for various implementations, which can enhance existing and future video codec standards. The examples of the disclosed technology provided below illustrate the general concepts and are not meant to be interpreted as limiting. In the examples, unless explicitly stated to the contrary, the features described in these examples can be combined.
[0289] In the following examples, it is assumed that:
[0290] οMax(x, y) returns the larger of x and y
[0291] oMin(x, y) returns the smaller of x and y.
[0292] Implicit MTS
[0293] It is proposed to decide the transform (horizontal transform and / or vertical transform) applied to a block based on decoded coefficients, without receiving a transform index.
[0294] 1. The decoded coefficients may be associated with one or more representative blocks in the same color component or in a different color component as the current block.
[0295] a. In one example, determination of a transform for the first block may depend on decoded coefficients of the first block.
[0296] b. In one example, the determination of the transform for the first block may depend on decoded coefficients of the second block, which may be different from the first block.
[0297] i. In one example, the second block may be in the same color component (eg, luminance component) as the color component of the first block.
[0298] 1) In one example, the second block may be adjacent to the first block.
[0299] 2) In one example, the second block may have the same intra prediction mode as the first block.
[0300] 3) In one example, the second block may have the same block dimensions as the first block.
[0301] 4) In one example, the second block may be the last decoded block before the first block in decoding order that satisfies certain conditions (eg, same intra prediction mode or same dimension).
[0302] ii. In one example, the second block may be in a different color component than the first block.
[0303] 1) In one example, the first block may be in a luma component and the second block may be in a chroma component (eg, Cb / Cr, B / R component).
[0304] a) In one example, the three blocks are in the same codec unit.
[0305] b) Furthermore, alternatively, the implicit MTS is only applied to luma blocks and not to chroma blocks.
[0306] 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.
[0307] 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 different from the first block.
[0308] i. In one example, the plurality of blocks may include a first block.
[0309] ii. In one example, the plurality of blocks may include one block or a plurality of blocks adjacent to the first block.
[0310] iii. In one example, the plurality of blocks may include one block or a plurality of blocks having the same block dimension as the first block.
[0311] iv. In one example, the plurality of blocks may include the last N decoded blocks that meet a specific condition (eg, same intra prediction mode or same dimension) before the first block in decoding order. N is an integer greater than 1.
[0312] v. In one example, the plurality of blocks may include one or more blocks that are not in the same color component as the first block.
[0313] 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).
[0314] a) In one example, the three blocks are in the same codec unit.
[0315] b) Furthermore, alternatively, the implicit MTS is only applied to luma blocks and not to chroma blocks.
[0316] 2) In one example, a first block included in a first color component among a plurality of blocks and a plurality of blocks not included in the first color component may be located at corresponding positions of a picture having the first block.
[0317] 2. The decoded coefficients used for transform determination are coefficients that are not equal to zero (indicated as significant coefficients). The coefficients used for transform determination are called representative coefficients.
[0318] a. In one example, the representative coefficient is all the significant coefficients in the representative block.
[0319] b. Alternatively, the representative coefficient is a portion of significant coefficients in the representative block.
[0320] i. In one example, the representative coefficient is a decoded significant coefficient that is greater than or not greater than a threshold value
[0321] ii. In one example, the representative coefficient is a decoded significant coefficient that is less than or not greater than a threshold value
[0322] iii. In one example, the representative coefficient is the first K (K>=1) decoded significant coefficients in decoding order.
[0323] iv. In one example, the representative coefficient is the last K (K>=1) decoded significant coefficients in decoding order.
[0324] v. In one example, the representative coefficients may be those at predetermined positions in the block.
[0325] 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.
[0326] 2) For example, the position may depend on the dimensions of the block.
[0327] vi. In one example, the representative coefficients may be those at predetermined positions in the coefficient scanning order.
[0328] c. Alternatively, the representative coefficients may also include zero coefficients.
[0329] d. Alternatively, the representative coefficients may be coefficients derived from decoded coefficients, for example by being clipped to a range via quantization.
[0330] 3. The transformation determination may depend on a function of the representative coefficients, such as a function with the value V as output and using the representative coefficients as input.
[0331] a. In one example, V is derived to represent the number of coefficients.
[0332] i. Alternatively, V is derived as the sum of representative coefficients.
[0333] 1) Furthermore, alternatively, V and V may be clipped.
[0334] ii. Alternatively, V is derived as the sum of the absolute values of the representative coefficients.
[0335] 1) Furthermore, alternatively, V and V may be clipped.
[0336] b. In one example, the selection can be determined implicitly at the decoder based on the parity of V.
[0337] i. For example, if V is an even number, the first type of transform is selected as a horizontal transform, and the second type of transform is selected as a vertical transform; if V is an odd number, the third type of transform is selected as a horizontal transform, and the fourth type of transform is selected as a vertical transform.
[0338] 1) In one example, the first type of transform is the same as the second type of transform.
[0339] a) Alternatively, the first type of transform is different from the second type of transform.
[0340] 2) In one example, the third type of transform is the same as the fourth type of transform.
[0341] a) Alternatively, the third type of transform is different from the fourth type of transform.
[0342] 3) The first / second / third / fourth type of 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.
[0343] 4) Furthermore, alternatively, at least one of the third and fourth types of transforms is different from the first and second types of transforms.
[0344] a) In one example, when V is an even number, the first and second transforms are DCT-2, and when V is an odd number, the third and fourth transforms are DST-7.
[0345] b) Alternatively, when V is an odd number, the first and second transforms are DCT-2, and when V is an even number, the third and fourth transforms are DST-7.
[0346] c. In one example, if V is less than a threshold value T1, the fifth type of transform is selected as a horizontal transform, and the sixth type of transform is selected as a vertical transform. For example, T1=1 or 2.
[0347] i. Alternatively, if V is greater than the threshold T2, the fifth type of transform is selected as a horizontal transform, and the sixth type of transform is selected as a vertical transform.
[0348] ii. For example, the threshold may depend on the dimension of the block.
[0349] iii. For example, the threshold may depend on the QP.
[0350] iv. In one example, the fifth type of transformation is the same as the sixth type of transformation.
[0351] 1) Alternatively, the fifth type of transform is different from the sixth type of transform.
[0352] v. In one example, the fifth / sixth type of 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.
[0353] 4. The transform determination may also depend on the coded information of the current block.
[0354] a. In one example, if the current intra-coded block is in an I-slice / picture, DST-7 may be applied to the current block when V is even, and DCT-2 may be applied to the current block when V is odd.
[0355] 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, DCT-7 may be applied to the current block.
[0356] c. In one example, the determination may further depend on mode information (eg, intra or inter).
[0357] 5. A set of transforms may be predefined from which implicit MTS transforms may be selected.
[0358] a. In one example, the horizontal and vertical transform sets may not be the same.
[0359] i. Alternatively, the horizontal and vertical transform sets may be different.
[0360] b. In one example, the transform set may include DCT-2 and DST-7.
[0361] c. In one example, the transform set may include DCT-2, DST-7, and identification transform.
[0362] d. In one example, the transform set may depend on the coded information, color component, partition structure (eg, dual tree / single tree; quadtree / binary tree / ternary tree / extended quadtree), slice / picture type, etc.
[0363] i. In one example, the set of transforms may depend on the block dimension.
[0364] ii. In one example, for the intra-frame codec block, DCT-2 and DST-7 may be included.
[0365] iii. In one example, for blocks that are coded with reference samples in the same picture (eg, intra block copy), DST-7 and identity transform (ie, no transform is applied) may be included.
[0366] 6. In one example, one or more of the methods disclosed in items 1-5 may only be applied to specific blocks.
[0367] a. For example, one or more of the methods disclosed in items 1-5 can only be applied to intra-frame codec blocks.
[0368] Simplify MTS / SBT
[0369] 7. In one example, in MTS the vertical transform and the horizontal transform must be the same.
[0370] a. In one example, a block can only choose one of the following two types of conversions:
[0371] i. DCT-2 in horizontal transform and DCT-2 in vertical transform;
[0372] ii. DST-7 in horizontal conversion and DST-7 in vertical conversion;
[0373] b. In one example, signaling for MTS may include at most one flag for a block.
[0374] i. In one example, if the flag is equal to 0, DCT-2 in horizontal transform and DCT-2 in vertical transform; if the flag is equal to 1, DST-7 in horizontal transform and DST-7 in vertical transform.
[0375] ii. In one example, if the flag is equal to 1, DCT-2 in horizontal transform and DCT-2 in vertical transform; if the flag is equal to 0, DST-7 in horizontal transform and DST-7 in vertical transform.
[0376] 8. Assume that the width and height of the block are W and H respectively. Item 7 is applied only if
[0377] aW>=T1 and H>=T2, for example, T1=T2=8;
[0378] bW<=T1 and H<=T2, for example, T1=T2=16;
[0379] c.Min(W,H)>=T1, for example, T1=8;
[0380] d.Max(W,H)<=T1, for example, T1=32;
[0381] eW*H>=T1, for example, T1=64;
[0382] fW*H<=T1, for example, T1=256.
[0383] 9. In one example, transforms other than DST-8 may be applied in blocks encoded and decoded with SBT.
[0384] a. In one example, only DCT-2 and DST-7 can be applied to blocks coded and decoded using SBT.
[0385] b. In one example, in a method for Fig.15 In the case of the SBT shown (SBT-V, position 0), DCT-2 is applied horizontally and DST-7 is applied vertically.
[0386] c. In one example, in a method for Fig.15 In the case of the SBT shown (SBT-H, position 0), DST-7 is applied horizontally and DCT-2 is applied vertically.
[0387] 10. Assume that the width and height of the transform block are W and H, respectively. In one example, the choice of transform for a block coded with SBT may depend on the transform block dimensions, where the transform block may be smaller than the coded block when SBT is applied.
[0388] a. In one example, Fig.15 In the case shown for SBT (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.
[0389] b. In one example, in a method for Fig.15 In the case of (SBT-H, position 0) of the SBT shown, 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.
[0390] General Features
[0391] 11. The decision of the transform matrix can be done at the CU / CB level or at the TU level.
[0392] a. In one example, the decision is made in the CU level, where all TUs share the same transform matrix.
[0393] i. In addition, alternatively, when a CU is divided into multiple TUs, the transform matrix can be determined using coefficients in one TU (eg, the first or last TU) or part or all of the TUs.
[0394] b. Whether to use a CU level solution or a TU level solution may depend on the block size and / or the VPDU size and / or the maximum CTU size of a block and / or the coded information.
[0395] i. In one example, when the block size is larger than the VPDU size, the CU level determination method may be applied.
[0396] 12. In the method disclosed in this document, the coefficients or representative coefficients may be quantized or dequantized.
[0397] 13. Transform skipping can also be determined implicitly by coefficients or representative coefficients using any of the methods disclosed in this document.
[0398] 14. In the methods disclosed in this document, coefficients or representative coefficients may be modified before being used to derive a transformation.
[0399] a. For example, coefficients or representative coefficients may be pruned before being used to derive the transform.
[0400] b. For example, the coefficients or representative coefficients may be scaled before being used to derive the transform.
[0401] c. For example, the coefficients or representative coefficients may be added with an offset before being used to derive the transform.
[0402] d. For example, the coefficients or representative coefficients may be filtered before being used to derive the transform.
[0403] 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.
[0404] 15. The methods disclosed in this document can also be used to derive other codec modes / information implicitly through coefficients or representative coefficients.
[0405] 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.
[0406] b. Furthermore, alternatively, the representative coefficients are from coefficients corresponding to a sub-region rather than the entire block.
[0407] 16. In one example, the header may be in the sequence level / picture level / slice level / tile group level, such as in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice level.
[0408] The band header / slice group header signals whether and / or how to apply the method disclosed above.
[0409] 17. In one example, whether and / or how to apply the method disclosed above may depend on codec information, where the codec information may include:
[0410] a. Block dimension.
[0411] i. In one example, for blocks whose width and height are not greater than a threshold (eg, 32), the implicit MTS method described above may be applied.
[0412] b.QP
[0413] c. Picture or slice type (e.g. I-frame or P / B-frame, I-slice or P / B-slice)
[0414] i. In one example, the proposed method may be enabled on I-frames but disabled on P / B-frames.
[0415] d. A structural partitioning method (single tree or double tree)
[0416] i. In one example, for a stripe / picture / brick / slice of a single tree partitioning application, the implicit MTS method described above may be applied.
[0417] e. Codec mode (e.g. inter-frame mode / intra-frame mode / IBC mode, etc.)
[0418] i. In one example, for intra-coded blocks, the implicit MTS method described above may be applied.
[0419] f. Coding and decoding method (e.g., intra-frame sub-block segmentation, derivative tree (DT) method, etc.)
[0420] i. In one example, for intra-frame codec blocks to which DT is applied, the implicit MTS method described above may be disabled.
[0421] ii. In one example, for an intra-frame codec block to which ISP is applied, the implicit MTS method described above may be disabled.
[0422] g. Color component
[0423] i. In one example, for the luma block, the above implicit MTS method may be applied, while for the chroma block, the above implicit MTS method may not be applied.
[0424] h. Intra-frame prediction mode (e.g. DC, vertical, horizontal, etc.)
[0425] i. Motion information (eg MV and reference index).
[0426] j. Standard Profiles / Levels / Tiers
[0427] Codec tools for chroma components
[0428] 18. It is proposed that codec X may be applied to one or more chroma components of a block depending on whether codec X is applied to one or more corresponding luminance blocks. In the following discussion, "chroma component" may refer to "one or more chroma components".
[0429] a. In one example, the usage of codec tool X for chroma blocks is derived from the information of whether the codec tool is applied to the corresponding luma block. Therefore, no additional signaling of the usage of codec tool X for chroma blocks is required.
[0430] i. In one example, if codec tool X is applied to the corresponding luma block, codec tool X may be applied to the chroma components of the block; and if codec tool X is not applied to the corresponding luma block, codec tool X is not applied to the chroma components of the block.
[0431] ii. In one example, when codec tool X is applied to the corresponding luma block, codec tool X may be applied to luma components and chroma components in the same manner.
[0432] b. In one example, a message (e.g., a flag or index) may be conditionally signaled to indicate whether codec X is applied to the chroma components of a block. The condition may be defined as whether codec X is applied to the corresponding luma block. Additionally, alternatively, if codec X is not applied to the corresponding luma block, codec X is not applied to the chroma components of the block without signaling.
[0433] i. In one example, when codec X is applied to the corresponding luma block and the message indicates that codec X is also applied to chroma components, codec X may be applied to the luma component and the chroma components in the same manner.
[0434] ii. In one example, codec tool X may be applied to luma components and chroma components in different ways.
[0435] 1) It is possible to signal how to apply codec X to luma and chroma components separately.
[0436] c. In the above discussion, a "corresponding luma block" may refer to a luma block that covers at least one "corresponding sample" of a chroma block. The sampling positions may be scaled according to the color format, such as 4:4:4 or 4:2:0. Assume that the top left corner position of the chroma block is (x0, y0), and the width and height of the chroma block are W and H, all of which are scaled to luma sampling units.
[0437] i. In one example, the corresponding sample may be at (x0, y0);
[0438] ii. In one example, the corresponding sample may be at (x0+W-1, y0+H-1);
[0439] iii. In one example, the corresponding sample may be at (x0+W / 2-1, y0+H / 2-1);
[0440] iv. In one example, the corresponding sample may be at (x0+W / 2, y0+H / 2);
[0441] v. In one example, the corresponding sample may be at (x0+W / 2, y0+H / 2-1);
[0442] vi. In one example, the corresponding sample may be at (x0+W / 2-1, y0+H / 2);
[0443] 19. It is proposed that codec tool X may be applied to one chroma component of a block depending on whether codec tool X is applied to one or more corresponding blocks of another chroma component.
[0444] a. In one example, the use of codec tool X for a chroma block is derived from information on whether the codec is applied to corresponding blocks of other chroma components. Therefore, no additional signaling of the use of codec tool X for chroma blocks is required.
[0445] b. In one example, a notification message (e.g., a flag) may be conditionally signaled to indicate whether codec tool X is applied to the chroma component of a block. The condition may be defined as whether codec tool X is applied to the corresponding blocks of other chroma components. Additionally, alternatively, if codec tool X is not applied to the corresponding blocks of other chroma components, codec tool X is not applied to the chroma component of the block without signaling.
[0446] 20. It is proposed that codec X may be applied to the luma component of a block depending on whether codec X is applied to one or more corresponding blocks of chroma components.
[0447] a. In one example, the use of codec tool X for luma blocks is derived from the information of whether the codec tool is applied to the corresponding block of chroma components. Therefore, no additional signaling of the use of codec tool X for chroma blocks is required.
[0448] b. In one example, a notification message (e.g., a flag) may be conditionally signaled to indicate whether codec tool X is applied to the luma component of a block. The condition may be defined as whether codec tool X is applied to the corresponding block of chroma components. Alternatively, if codec tool X is not applied to the corresponding block of chroma components, codec tool X is not applied to the luma component of the block without signaling.
[0449] 21. The above codec tool X can be defined as follows.
[0450] a. In one example, codec tool X may be MTS.
[0451] b. In one example, codec tool X may be transform skip.
[0452] c. In one example, codec X may be RST.
[0453] d. In one example, codec X may be RBDPCM.
[0454] e. In one example, codec X may be BDPCM.
[0455] Signaling of MTS index and change skip flag
[0456] 22. It is proposed that depending on the use of BDPCM or QR-BDPCM or any variant of BDPCM, the MTS index and / or the transition skip flag may be signaled conditionally.
[0457] a. In one example, when BDPCM or QR-BDPCM or any variant of BDPCM is enabled for a block in the bitstream (eg, intra_bdpcm_flag is equal to true), the MTS index and / or transform skip flag may not be signaled for the block.
[0458] i. Furthermore, alternatively, when BDPCM or QR-BDPCM or any variant of BDPCM is enabled in a block, the transform skip flag of the block may be inferred to be true.
[0459] b. In one example, when BDPCM or QR-BDPCM or any variant of BDPCM is enabled in a block, the MTS index of the block can be inferred to be 0.
[0460] 23. Fixed-length codecs can be applied to encode and decode different MTS types other than TS and DCT-2 (such as DST7-DST7, DCT8-DST7, DST7-DCT8, DCT8-DCT8 in the VVC specification).
[0461] a. In one example, a fixed length of 2 binary numbers may be applied.
[0462] b. In one example, each binary number may be context-encoded.
[0463] c. In one example, the first or last bin may be context-coded, while the remaining bins are bypass-coded.
[0464] d. In one example, all binary numbers are bypassed for encoding and decoding.
[0465] 24. Context modeling of transform matrix indices (eg, TS, DCT-2, other transform matrices) may depend on the coded mode, transform block size and / or QT depth and / or MTT depth and / or BT depth and / or TT depth.
[0466] a. In one example, context modeling for transform matrix indexing may depend on the coding mode of the block, such as whether the block is coded in intra / inter / IBC mode.
[0467] b. In one example, context modeling for transform matrix indexing may depend on a function of multiple segmentation depths, where the multiple segmentation depths may include QT depth, MTT depth, BT depth, TT depth.
[0468] c. In one example, context modeling of the transform matrix index may depend on the transform depth of the TU / TB relative to the CU / PU.
[0469] d. In one example, the context index increment may be set as a function of the TU / TB dimension.
[0470] i. In one example, the context index increment may be set to ((Log2(TbW)+log2(TbH))>>1)−X, where TBW and TBH indicate the width and height of the transform block, and X is an integer (such as X=2).
[0471] ii. In one example, the context index increment may be set to Log2(max(TbW, TbH))−X, where TBW and TBH indicate the width and height of the transform block, X is an integer (such as X=2), and max(a, b) returns the larger value.
[0472] iii. In one example, the context index increment may be set to Log2(min(TbW, TbH))−X, where TBW and TBH indicate the width and height of the transform block, X is an integer (such as X=2), and min(a, b) returns a smaller value.
[0473] iv. The above context index increment can be further clipped to a range of, for example, [k0, k1], where k0 and k1 are integers.
[0474] e. In one example, the context index increment may be set as a function of the TU / TB width or height.
[0475] f. In one example, the context index increment may be set as a function of the MTT depth.
[0476] g. In one example, the context index increment can be set to min(K, quadtree depth), where the function min(a, b) returns the smaller value between a and b, and K is an integer such as 4 or 5.
[0477] h. In one example, the above method can be applied to code-specific binaries used in matrix index encoding and decoding.
[0478] i. In one example, a binary number indicating whether it is DCT2 is context coded and context modeling is based on the above method, e.g. the first binary number of tu_mts_idx.
[0479] 25. It is proposed that context modeling can be shared for encoding and decoding the indication of whether it is TS or DCT2.
[0480] a. In one example, the context modeling (ie, how to select the context index) for encoding and decoding transform_skip_flag and the first binary of tu_mts_idx may be the same.
[0481] b. Furthermore, alternatively, the contexts used to encode and decode the two binaries may be different or partially shared.
[0482] i. In one example, the first set of contexts can be used to encode and decode transform_skip_flag, and the second set of contexts can be used to encode and decode the first binary of tu_mts_idx. And the two sets are not shared.
[0483] c. In addition, alternatively, the context used to encode and decode the two binary numbers can also be fully shared.
[0484] 26. A binary number is proposed that a single context can be used for partial or full context coding of the syntax element tu_mts_idx.
[0485] a. For example, a single context may be used for the first binary of tu_mts_idx.
[0486] b. For example, a single context may be used for all bins except the first bin of tu_mts_idx.
[0487] i. In addition, alternatively, the context modeling method mentioned in item 24 can be used to context-code the first binary number of tu_mts_idx.
[0488] 1. In one example, depending on the transform size, the first binary number can be context-coded with N contexts (e.g., the context index increment can be set to ((Log2(TbW)+log2(TbH))>>1)–2, so that N=4), and all remaining binary numbers can be contexts coded with a single context.
[0489] c. Furthermore, alternatively, the first and second bins of tu_mts_idx may be context-coded, and all remaining bins may be bypass-coded.
[0490] d. In one example, the first binary may be context-coded with N contexts according to the transform size (e.g., N=4), the second binary may be context-coded with a single context, and the remaining binary may be bypass-coded. For example, all binary digits of tu_mts_idx may be bypass-coded.
[0491] 27. The binarization of the transformation matrix can be defined in the following way:
[0492] a. In one example, the table below shows the mapped binary numbers and the corresponding matrix.
[0493] TS 0 DCT2-DCT2 1 0 DST7-DST7 1 1 0 DCT8-DST7 1 1 1 0 DST7-DCT8 1 1 1 1 0 DCT8-DCT8 1 1 1 1 1
[0494] b. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0495] TS 0 DCT2-DCT2 1 0 DST7-DST7 1 1 0 0 DCT8-DST7 1 1 0 1 DST7-DCT8 1 1 1 0 DCT8-DCT8 1 1 1 1
[0496] c. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0497] TS 1 DCT2-DCT2 0 1 DST7-DST7 0 0 0 0 DCT8-DST7 0 0 0 1 DST7-DCT8 0 0 1 0 DCT8-DCT8 0 0 1 1
[0498] d. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0499]
[0500]
[0501] e. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0502] TS 0 DCT2-DCT2 11 DST7-DST7 10
[0503] f. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0504] TS 1 DCT2-DCT2 00 DST7-DST7 01
[0505] g. In one example, the following table shows the mapped binary numbers and the corresponding matrix.
[0506] TS 1 DCT2-DCT2 01 DST7-DST7 00
[0507] 28. Two candidate combinations of MTS with only transformations are proposed: DCT2-DCT2 and DST7-DST7.
[0508] The above examples may be combined in the context of the methods described below, for example, methods 1610 , 1620 , 1630 , 1640 , and 1650 , which may be implemented at a video encoder and / or decoder.
[0509] Fig.16A A flow chart of an exemplary method for video processing is shown. Method 1610 includes: In operation 1612, as part of a conversion between a current block of video and a bitstream representation of the video, applying a codec tool to one or more chroma components of the video based on the selective application of the codec tool to corresponding luma components of the video.
[0510] The method 1610 includes: in operation 1614, converting.
[0511] Fig. 16B A flow chart of an exemplary method for video processing is shown. The method 1620 includes: in operation 1622, as part of a conversion between a current block of a first chroma component of a video and a bitstream representation of the video, applying a codec tool to the current block based on the selective application of the codec tool to one or more corresponding blocks of other chroma components of the video.
[0512] The method 1620 includes: in operation 1624, converting.
[0513] Fig. 16C A flow chart of an exemplary method for video processing is shown. Method 1630 includes: In operation 1632, as part of a conversion between a current block of video and a bitstream representation of the video, applying a codec tool to a luma component of the video based on a selective application of the codec tool to one or more corresponding chroma components of the video.
[0514] The method 1630 includes: in operation 1634, converting.
[0515] Fig.16DA flow chart of an exemplary method for video processing is shown. The method 1640 includes: in operation 1642, performing a conversion between a current block of video and a bitstream representation of the video. In some embodiments, whether a multiple transform set (MTS) index and / or a transform skip flag is signaled in the bitstream representation is based on the enablement of a block differential pulse codec modulation (BDPCM) based codec tool for the current block.
[0516] Fig.16E A flow chart of an exemplary method for video processing is shown. The method 1650 includes: in operation 1652, based on a multiple transform set (MTS) type for a current block of a video, selecting a codec type having a plurality of binary numbers.
[0517] The method 1650 includes, at operation 1654 , applying the codec type to the indication of the MTS type as part of the conversion between the current block and the bitstream representation of the video.
[0518] 5. Exemplary Implementation of the Disclosed Technology
[0519] In the following examples, bold double curly brackets are used to indicate additions, e.g., {{a}} indicates that "a" has been added, and bold double brackets are used to indicate deletions, e.g., [[a]] indicates that "a" has been deleted.
[0520] 5.1 Example #1
[0521] The working draft specified in JVET-N1001-v7 may be changed as follows.
[0522] 8.7.4 Transformation process for transform coefficients used for scaling
[0523] 8.7.4.1 General ...
[0525] Table 8-17 - Description of trTypeHor and trTypeVer depending on cu_sbt_horizontal_flag and cu_sbt_pos_flag
[0526] 0 0 {{nTbW>=8?0:}}2 1 0 1 1 1 1 0 1 {{nTbH>=8?0:}}2 1 1 1 1
[0527] 5.2 Example 2
[0528] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0529] 7.3.7.10 Transformation unit syntax
[0530]
[0531] Alternatively, the following may apply:
[0532]
[0533] 5.3 Example 3
[0534] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0535] 9.5.3.7 Fixed-length binarization process ...
[0537] {{
[0538] 9.5.3.8 Binarization process for tu_mts_idx
[0539] The input to this process is a request for the binarization of the syntax element tu_mts_idx. The output of this process is the binarization of the syntax element tu_mts_idx.
[0540] The binarization for the syntax element tu_mts_idx is specified in Table 9-14.
[0541] Table 9-14 — Binarization of tu_mts_idx
[0542]
[0543] }}
[0544] 5.4 Example 4
[0545] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0546] 9.5.4.2 Derivation Process for ctxTable, ctxIdx, and bypassFlag
[0547] 9.5.4.2.1 General ...
[0549] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded bins
[0550]
[0551] 5.5 Example 5
[0552] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0553] 9.5.4.3 Derivation process for ctxTable, ctxIdx and bypassFlag
[0554] 9.5.4.3.1 General ...
[0556] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded bins
[0557]
[0558] 5.6 Example 6
[0559] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0560] 9.5.4.4 Derivation process for ctxTable, ctxIdx and bypassFlag
[0561] 9.5.4.4.1 General ...
[0563] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded bins
[0564]
[0565] 5.7 Example 6
[0566] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0567] 9.5.4.5 Derivation process for ctxTable, ctxIdx and bypassFlag
[0568] 9.5.4.5.1 General ...
[0570] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded bins
[0571]
[0572] 5.8 Example 7
[0573] The working draft specified in JVET-N1001-v8 can be changed as follows.
[0574] 9.5.4.6 Derivation process for ctxTable, ctxIdx and bypassFlag
[0575] 9.5.4.6.1 General ...
[0577] Table 9-17 – Assignment of ctxInc to syntax elements with context-coded bins
[0578]
[0579] Alternatively, the following may apply:
[0580]
[0581] Fig.17 1 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 implemented in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. Device 1700 may include one or more processors 1702, one or more memories 1704, and video processing hardware 1706. Processor 1702 may be configured to implement one or more methods described in this document (including but not limited to methods 1610, 1620, 1630, 1640, and 1650). One or more memories 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.
[0582] In some embodiments, as shown in Fig.17 As described, the video encoding and decoding method can be implemented using a device implemented on a hardware platform.
[0583] Some embodiments of the disclosed technology include deciding or determining to enable a video processing tool or mode. In one 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 may not need to modify the generated bitstream based on the use of the tool or mode. That is, the conversion from a block of video to a bitstream representation of a video will use the video processing tool or mode when enabling the video processing tool or mode based on a decision or determination. In another example, when a video processing tool or mode is enabled, the decoder will utilize the knowledge that the bitstream has been modified based on the video processing tool or mode to process the bitstream. That is, the conversion from the bitstream representation of a video to a block of a video will be performed using a video processing tool or mode enabled based on a decision or determination.
[0584] Some embodiments of the disclosed technology include 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 from blocks of video 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 using the knowledge that the bitstream has not been modified using the video processing tool or mode enabled based on the decision or determination.
[0585] Fig.18 1 is a block diagram illustrating an exemplary 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 (e.g., 8 or 10-bit multi-component pixel values), or may be received 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, a passive optical network (PON), and the like, and wireless interfaces such as Wi-Fi or cellular interfaces.
[0586] System 1800 may include a codec component 1804, which can implement various codecs and coding methods described in this document. Codec component 1804 can reduce the average bit rate of the video from input 1802 to the output of codec component 1804 to produce a coded 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 can be stored, or sent by a connected communication component (as shown in component 1806). The stored or transmitted bitstream (or coded) representation of the video received at input 1802 can be used by component 1808 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 the corresponding decoding tools or operations of the inverse codec results will be performed by decoders.
[0587] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB) or High Definition Multimedia Interface (HDMI) or DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described in this document may be implemented in various electronic devices, such as mobile phones, laptop computers, smart phones, or other devices capable of digital data processing and / or video display.
[0588] In some embodiments, the following technical solutions may be implemented:
[0589] 1. A method for video processing, comprising: performing a conversion between a current block of a video and a bitstream representation of the video, wherein whether to signal a multiple transform set (MTS) index and / or a transform skip flag in the bitstream representation is based on the enabling of a block differential pulse codec modulation (BDPCM) based codec tool for the current block.
[0590] 2. A method as described in Technical Solution 1, wherein the BDPCM-based encoding and decoding tool is quantized residual domain BDPCM (QR-BDPCM).
[0591] 3. A method as described in technical solution 1 or 2, wherein when a BDPCM-based coding and decoding tool is enabled for the current block, the MTS index and / or the transform skip flag is excluded from the bitstream representation.
[0592] 4. A method as described in technical solution 1 or 2, wherein, when a BDPCM-based coding and decoding tool is enabled for the current block, the MTS index and / or the transform skip flag is inferred to be false.
[0593] 5. A method as described in technical solution 1 or 2, wherein when a BDPCM-based coding tool is enabled for the current block, the inferred transform skip flag is true.
[0594] 6. A method as described in any one of technical solutions 1 to 5, wherein the MTS process includes: based on the MTS index, using at least one of multiple predetermined transformations during conversion.
[0595] 7. A method as described in any one of technical solutions 1 to 5, wherein, in a transform skip mode based on a transform skip flag, the residual of the prediction error between the current video block and the reference video block is quantized without applying a transform.
[0596] 8. A method as described in any one of technical solutions 1 to 5, wherein, in a BDPCM-based coding and decoding tool, differential pulse coding modulation (DPCM) is used to represent the difference between the residual of the intra-frame prediction of the current video block and the prediction of the residual in the bit stream representation.
[0597] 9. A method for video processing, comprising: applying a codec tool to one or more chrominance components of a video based on the selective application of the codec tool to corresponding luminance components of the video as part of a conversion between a current block of the video and a bitstream representation of the video; and performing the conversion.
[0598] 10. A method as described in technical solution 9, wherein the indication of applying coding tools to one or more chrominance components is excluded from the bitstream representation.
[0599] 11. A method as described in technical solution 9, wherein, based on conditions, an indication of applying a coding tool to one or more chrominance components is signaled in the bitstream representation.
[0600] 12. A method as described in technical solution 11, wherein the condition includes applying a codec tool to a corresponding brightness component of the video.
[0601] 13. A method as described in any one of technical solutions 10 to 12, wherein the indication includes a flag or an index.
[0602] 14. A method as described in any one of technical solutions 9 to 13, wherein the luminance component covers the corresponding sampling of the chrominance component in one or more chrominance components.
[0603] 15. A method as in technical solution 14, wherein the corresponding samples are scaled based on the color format of the current block.
[0604] 16. A method for video processing, comprising: applying a codec tool to the current block as part of a conversion between a current block of a first chrominance component of a video and a bitstream representation of the video based on the selective application of the codec tool to one or more corresponding blocks of other chrominance components of the video; and performing the conversion.
[0605] 17. A method as described in technical solution 16, wherein the indication of applying the coding tool to the current block is excluded from the bitstream representation.
[0606] 18. A method as described in technical solution 16, wherein, based on a condition, an indication of applying a coding tool to the current block is signaled in the bitstream representation.
[0607] 19. A method as described in technical solution 18, wherein the condition includes applying the encoding and decoding tool to one or more corresponding blocks of other chrominance components.
[0608] 20. A method for video processing, comprising: applying a codec tool to a luma component of a video based on selective application of the codec tool to one or more corresponding chroma components of the video as part of a conversion between a current block of the video and a bitstream representation of the video; and performing the conversion.
[0609] 21. A method as described in technical solution 20, wherein the indication of applying coding tools to the luminance component is excluded from the bitstream representation.
[0610] 22. A method as described in technical solution 20, wherein, based on a condition, an indication of applying a coding tool to a luminance component is signaled in a bitstream representation.
[0611] 23. A method as described in technical solution 22, wherein the condition includes applying a codec tool to one or more corresponding chrominance components.
[0612] 24. A method as described in any one of technical solutions 9 to 23, wherein the coding and decoding tool is selected from the group consisting of: multiple transform set (MTS), transform skipping, simplified secondary transform (RST), block differential pulse codec modulation (BDPCM) and quantized residual domain BDPCM (QR-BDPCM).
[0613] 25. A method for video processing, comprising: selecting a codec type having a plurality of binary numbers based on a multiple transform set (MTS) type for a current block of a video; and applying the codec type to an indication of the MTS type as part of a conversion between the current block and a bitstream representation of the video.
[0614] 26. A method as described in technical solution 25, wherein the codec type is a fixed-length codec, wherein the MTS type is DST7-DST7, DCT8-DST7, DST7-DCT8 or DCT8-DCT8, wherein DST# is a discrete sine transform of type #, and DCT# is a discrete cosine transform of type #.
[0615] 27. A method as described in technical solution 26, wherein each of the multiple binary numbers is context-encoded.
[0616] 28. A method as described in technical solution 26, wherein each of the multiple binary numbers is bypass encoded and decoded.
[0617] 29. A method as described in technical solution 25, wherein the MTS type is transform skip (TS) or discrete cosine transform of type II (DCT-II), and wherein the indicated context model is based on the codec mode of the current block, the transform block size used for the current block and / or the depth of the codec tree applied to the current block.
[0618] 30. A method as described in technical solution 29, wherein the coding and decoding mode is intra-frame mode, inter-frame mode or intra-frame block copy (IBC) mode.
[0619] 31. A method as described in Technical Solution 29, wherein the codec tree is a quadtree (QT), a multi-type tree (MTT), a ternary tree (TT) or a binary tree (BT).
[0620] 32. A method as described in technical solution 29, wherein the increase in the index of the context model is based on the dimension of the transform unit (TU) or the dimension of the transform block (TB) associated with the current block.
[0621] 33. A method as described in technical solution 29, wherein the increase in the index of the context model is based on the depth of the codec tree, and wherein the codec tree is a multi-type tree (MTT).
[0622] 34. A method as described in technical solution 25, wherein the MTS type is transform skip (TS) or discrete cosine transform of type II (DCT-II), and wherein the context model used for indication is shared.
[0623] 35. A method as described in technical solution 25, wherein the indication is a syntax element and wherein a single context is used for one or more of a plurality of binary numbers.
[0624] 36. A method as described in technical solution 35, wherein the syntax element is tu_mts_idx.
[0625] 37. A method as described in technical solution 35 or 36, wherein a single context is used for the first binary number among multiple binary numbers.
[0626] 38. A method as described in technical solution 35 or 36, wherein a single context is used for the first binary number and the second binary number among multiple binary numbers, and the remaining binary numbers among the multiple binary numbers are bypass encoded and decoded.
[0627] 39. A method as described in technical solution 25, wherein the MTS type is transform skip (TS), DCT2-DCT2, DST7-DST7, DCT8-DST7, DST7-DCT8 or DCT8-DCT8, wherein DST# is a discrete sine transform of type #, and DCT# is a discrete cosine transform of type #, and wherein the codec type is binarization based on the table defined as follows:
[0628] TS 0 DCT2-DCT2 1 0 DST7-DST7 1 1 0 DCT8-DST7 1 1 1 0 DST7-DCT8 1 1 1 1 0 DCT8-DCT8 1 1 1 1 1
[0629] 40. A method as described in technical solution 25, wherein the MTS type is DCT2-DCT2 or DST7-DST7, wherein DST# is a discrete sine transform of type #, and DCT is a discrete cosine transform of type #.
[0630] 41. A method as described in any one of technical solutions 1 to 40, wherein the conversion generates the current block from a bitstream representation.
[0631] 42. A method as described in any one of technical solutions 1 to 40, wherein the conversion generates a bitstream representation from the current block.
[0632] 43. A device in a video system, comprising: a processor; and a non-volatile memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement a method as described in any one of technical solutions 1 to 42.
[0633] 44. A computer program product stored on a non-volatile computer-readable medium, the computer program product comprising a program code for executing a method as described in any one of technical solutions 1 to 42.
[0634] It can be understood from the above that specific embodiments of the presently disclosed technology have been described herein for illustrative purposes, but various modifications may be made without departing from the scope of the present invention. Therefore, the presently disclosed technology is not limited thereto, but is defined by the appended claims.
[0635] The implementation of the subject matter and functional operations described in this patent document can be implemented in various systems, digital electronic circuits, or computer software, firmware or hardware, including the structures disclosed in this specification and their equivalents, or a combination of one or more of the above. 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 and decoded on a tangible non-transient 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 memory device, a material composition that affects a machine-readable propagation signal, or a combination of one or more of the above. 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 also include code that creates an execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of the above.
[0636] 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 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 collaborative files (e.g., files storing one or more modules, subroutines, or code portions). A computer program may be deployed to execute on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communications network.
[0637] The processes and logic flows described in this specification may 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. The processes and logic flows may also be performed by, and the apparatus may be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0638] For example, processors suitable for executing computer programs include general and special 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 a read-only memory and a random access memory. The necessary elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include or be operably coupled to receive data from or transmit data to one or more mass storage devices, which are used to store data, such as magnetic disks, magneto-optical disks, or optical disks. However, the 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 memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices. The processor and memory can be supplemented by or combined in a dedicated logic circuit.
[0639] Although this patent document includes many details, these should not be interpreted as limitations on the scope of any invention or the scope of what is claimed, but rather as descriptions of features that may be specific to a specific embodiment of a specific invention. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, the various features described in the context of a single embodiment may also be implemented in multiple embodiments individually 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 in the claimed combination may be removed from the combination, and the claimed combination may be directed to a sub-combination or a variation of the sub-combination.
[0640] 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 shown or in sequential order, or that all illustrated operations be performed 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.
[0641] Only a few implementations and examples are described, and other implementations, enhancements, and variations may be made based on what is described and shown in this patent document.
Claims
1. A method for video processing, comprising: performing a conversion between a current block of a video and a bitstream of the video, wherein whether to signal a multiple transform set (MTS) index and / or a transform skip flag in the bitstream is based on the activation of a block differential pulse codec modulation (BDPCM) based codec tool for the current block, and Wherein, when the BDPCM-based coding tool is enabled for the current block, the MTS index and / or the transform skip flag are excluded from the bitstream.
2. The method of claim 1, wherein: The BDPCM-based coding tool is quantized residual domain BDPCM (QR-BDPCM).
3. The method according to claim 1 or 2, wherein: When the BDPCM-based codec tool is enabled for the current block, the MTS index and / or the transform skip flag is inferred to be false.
4. The method according to claim 1 or 2, wherein: The transform skip flag is inferred to be true when the BDPCM based codec tool is enabled for the current block.
5. The method according to claim 1 or 2, wherein: The MTS process includes using at least one of a plurality of predetermined transformations during the conversion based on the MTS index.
6. The method according to claim 1 or 2, wherein: In a transform skip mode based on the transform skip flag, a residual of a prediction error between the current block and a reference video block is quantized without applying a transform.
7. The method according to claim 1 or 2, wherein: In the BDPCM-based codec tool, the difference between the residual of the intra-frame prediction of the current block and the prediction of the residual is represented in the bitstream using Differential Pulse Width Modulation (DPCM).
8. The method of claim 1, further comprising: as part of a conversion between a current block of a video and a bitstream of the video, applying a codec tool to one or more chroma components of the video based on selective application of the codec tool to corresponding luma components of the video; as well as The conversion is performed.
9. The method of claim 8, wherein: Indications of applying the codec tools to the one or more chroma components are excluded from the bitstream.
10. The method of claim 8, wherein: Based on a condition, an indication is signaled in the bitstream to apply the codec tool to the one or more chroma components.
11. The method of claim 10, wherein: The condition includes applying the codec tool to a corresponding luma component of the video.
12. The method according to any one of claims 9 to 11, wherein: The indication comprises a flag or an index.
13. The method according to any one of claims 8 to 11, wherein: The luma component covers corresponding samples of chroma components of the one or more chroma components.
14. The method of claim 13, wherein: The corresponding samples are scaled based on a color format of the current block.
15. The method of claim 1, further comprising: as part of a conversion between a current block of a first chroma component of a video and a bitstream of the video, applying a codec tool to the current block based on selective application of the codec tool to one or more corresponding blocks of other chroma components of the video; as well as The conversion is performed.
16. The method of claim 15, wherein: An indication of applying the codec tool to the current block is excluded from the bitstream.
17. The method of claim 15, wherein: Based on a condition, an indication to apply the codec tool to the current block is signaled in the bitstream.
18. The method of claim 17, wherein: The condition comprises applying the codec tool to one or more corresponding blocks of the other chroma components.
19. The method of claim 1, further comprising: as part of a conversion between a current block of a video and a bitstream of the video, applying a codec tool to a luma component of the video based on selective application of the codec tool to one or more corresponding chroma components of the video; as well as The conversion is performed.
20. The method of claim 19, wherein: An indication of applying the codec tool to the luma component is excluded from the bitstream.
21. The method of claim 19, wherein: Based on a condition, an indication to apply the codec tool to the luma component is signaled in the bitstream.
22. The method of claim 21, wherein: The condition comprises applying the codec tool to the one or more corresponding chroma components.
23. The method of any one of claims 8 to 11, 14 to 22, wherein: The codec tool is selected from the group consisting of: Multiple Transform Set MTS, Transform Skip, Reduced Secondary Transform RST, Block Differential Pulse Codec Modulation BDPCM and Quantized Residual Domain BDPCM (QR-BDPCM).
24. The method of claim 1, further comprising: Selecting a codec type having a plurality of binary numbers based on a multi-transform set (MTS) type for a current block of the video; as well as As part of a conversion between the current block and a bitstream of the video, the codec type is applied to the indication of the MTS type.
25. The method of claim 24, wherein: The codec type is a fixed length codec, wherein the MTS type is DST7-DST7, DCT8-DST7, DST7-DCT8 or DCT8-DCT8, wherein DST# is a discrete sine transform of type #, and DCT# is a discrete cosine transform of type #.
26. The method of claim 25, wherein: Each of the plurality of bins is context-coded.
27. The method of claim 25, wherein: Each of the plurality of binary numbers is bypass coded.
28. The method of claim 24, wherein: The MTS type is a transform skipped TS or a discrete cosine transform DCT-II of type II, and wherein the indicated context model is based on a codec mode of the current block, a transform block size for the current block and / or a depth of a codec tree applied to the current block.
29. The method of claim 28, wherein: The coding and decoding mode is an intra-frame mode, an inter-frame mode or an intra-frame block copy (IBC) mode.
30. The method of claim 28, wherein: The codec tree is a quadtree QT, a multi-type tree MTT, a ternary tree TT or a binary tree BT.
31. The method of claim 28, wherein: The index of the context model is increased based on the dimension of the transform unit TU or the dimension of the transform block TB associated with the current block.
32. The method of claim 28, wherein: The index of the context model is increased based on the depth of the codec tree, and wherein the codec tree is a multi-type tree (MTT).
33. The method of claim 24, wherein: The MTS type is a transform skipped TS or a discrete cosine transform DCT-II of type II, and wherein the indicated context model is shared.
34. The method of claim 24, wherein: The indication is a syntax element, and wherein a single context is used for one or more of the plurality of bins.
35. The method of claim 34, wherein: The syntax element is tu_mts_idx.
36. The method of claim 34 or 35, wherein: The single context is for a first bin of the plurality of bins.
37. The method of claim 34 or 35, wherein: The single context is used for a first bin and a second bin of the plurality of bins, and wherein remaining bins of the plurality of bins are bypass coded.
38. The method of claim 24, wherein: The MTS type is transform skipped TS, DCT2-DCT2, DST7-DST7, DCT8-DST7, DST7-DCT8 or DCT8-DCT8, wherein DST# is a discrete sine transform of type #, and DCT# is a discrete cosine transform of type #, and wherein the codec type is binarization based on the table defined as follows: 。 39. The method of claim 24, wherein: The MTS type is DCT2-DCT2 or DST7-DST7, where DST# is a discrete sine transform of type #, and DCT is a discrete cosine transform of type #.
40. The method of any one of claims 1 to 2, 8 to 11, 15 to 22, 24 to 35, wherein The conversion generates the current block from the bitstream.
41. The method of any one of claims 1 to 2, 8 to 11, 15 to 22, 24 to 35, wherein The converting generates the bitstream from the current block.
42. An apparatus in a video system, comprising: processor; and a non-volatile memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement the method of any one of claims 1 to 41.
43. A computer program product stored on a non-transitory computer readable medium, the computer program product comprising program code for executing the method of any one of claims 1 to 41.