Signaling of the quantization matrix
A one-dimensional indexing scheme for signaling scaling matrices in video coding standards addresses memory and throughput issues by deriving larger matrices from smaller base matrices, enhancing video coding efficiency.
Patent Information
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- HFI INNOVATION INC
- Filing Date
- 2020-09-24
- Publication Date
- 2026-07-21
AI Technical Summary
Existing video coding standards face challenges in efficiently signaling and processing quantization matrices, particularly for larger transform blocks, leading to increased memory requirements and reduced hardware processing throughput.
A method for signaling a scaling matrix through a one-dimensional indexing scheme, allowing derivation of larger quantization matrices from smaller base matrices, and using delta values or explicit signaling to minimize memory usage and improve processing efficiency.
This approach reduces memory requirements and enhances hardware processing throughput by efficiently signaling and reconstructing quantization matrices, particularly for larger transform blocks, thereby improving video coding performance.
Smart Images

Figure 112022043077335-PCT00012_ABST
Abstract
Description
Technology Field
[0001] Cross-reference regarding related patent applications
[0002] The present disclosure is part of a regular application claiming priority to U.S. provisional applications No. 62 / 904,717, 62 / 912,538, 62 / 913,103, and 62 / 925,267, filed on September 24, 2019, October 8, 2019, October 9, 2019, and October 24, 2019, respectively. The contents of the applications listed above are incorporated herein by reference.
[0003] Technology field
[0004] The present disclosure generally relates to video coding. In particular, the present disclosure relates to a method for signaling and processing a quantization matrix. Background Technology
[0005] Unless otherwise indicated in this specification, the approach described in this section is not prior art for the claims listed below and is not included in this section to be recognized as prior art.
[0006] Quantization matrices (QMs) have been used in various video coding standards. Block-based hybrid video coding schemes, which imply transform coding of residual signals, utilize frequency-dependent scaling to control the distribution of quantization distortion across different frequencies in the transform unit (TU). To achieve perceptually uniform quantization across spatial frequencies, the quantization matrix weights each frequency channel associated with the transform factor according to perceived sensitivity for the relevant frequency range, so that lower frequency factors in the transform block are quantized to finer quantization step sizes than higher frequency factors. In the decoder, the corresponding quantization matrix inversely weights the inversely quantized transform factors of each frequency channel. Quantization matrices have been successfully utilized in various video coding standards, such as H.264 / AVC (Advanced Video Coding) and H.265 / HEVC (High Efficiency Video Coding), as well as in numerous commercial products, to enhance the subjective quality of video content.
[0007] For H.265 / HEVC, the following quantization matrices are supported depending on the size and type of the transform block. Luma: Intra4x4, Inter4x4, Intra8x8, Inter8x8, Intra16x16, Inter16x16, Intra32x32, Inter32x32. Cb: Intra4x4, Inter4x4, Intra8x8, Inter8x8, Intra16x16, Inter16x16. Cr: Intra4x4, Inter4x4, Intra8x8, Inter8x8, Intra16x16, Inter16x16.
[0008] The following summary is merely illustrative and is not intended to be limiting in any way. That is, the following summary is provided to introduce the concepts, highlights, benefits, and advantages of the novel and non-self-evident technology described herein. Selected implementations, rather than all, are further described in the detailed description below. Therefore, the following summary is not intended to identify the essential features of the claimed subject matter, nor is it intended to be used to determine the scope of the claimed subject matter.
[0009] Some embodiments of the present disclosure provide a method for signaling a scaling matrix for transform factor quantization. A decoder receives data from a bitstream to be decoded as a current picture of video, and the current picture is decoded using a plurality of scaling matrices. The decoder receives a reference index offset for a first scaling matrix of the plurality of scaling matrices. The decoder applies the reference index offset to a first index identifying the first scaling matrix to derive a second index identifying the second scaling matrix of the plurality of scaling matrices. The second scaling matrix has been previously reconstructed. The decoder reconstructs the first scaling matrix by referencing the second scaling matrix. The decoder inversely quantizes the transform factors of a transform block of the current picture using the plurality of scaling matrices and reconstructs the current picture using the inversely quantized transform factors.
[0010] In some embodiments, when a first flag of the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are identical, the first scaling matrix is determined by duplicating the elements of the second scaling matrix as elements of the first scaling. In some embodiments, when a first flag of the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, a second flag of the bitstream indicates whether the first scaling matrix is determined by (i) adding a set of delta values to the elements of the second scaling matrix as elements of the first scaling matrix, or (ii) by explicit signaling in the bitstream.
[0011] In some embodiments, the first index and the second index are assigned to the first scaling matrix and the second scaling matrix, respectively, according to a one-dimensional indexing method that assigns indices to the scaling matrix based on the color component, block size, and prediction type. In some embodiments, the scaling matrix for coding a 2x2 transform block of chroma components for an intra prediction type is not assigned an index according to the one-dimensional indexing method. In some embodiments, if another scaling matrix of a specific size identical to the first scaling matrix has not previously been signaled for the current picture, the reference index offset is not signaled in the bitstream, and the first scaling matrix is determined by referencing the default quantization matrix. In some embodiments, when the first index is greater than a threshold, the block size of the scaling matrix is 64.
[0012] In some embodiments, the bitstream includes a first syntax element specifying the difference between two consecutive scaling matrix coefficients of a first matrix and a second syntax element specifying the DC coefficient of the first scaling matrix. The first syntax element and the second syntax element are limited to -128 to 127. Brief explanation of the drawing
[0013] The attached drawings are included to provide further understanding of the present disclosure, are incorporated into the present disclosure, and constitute part of the present disclosure. The drawings serve to illustrate embodiments of the present disclosure and, together with the description, explain the principles of the present disclosure. It should be understood that the drawings are not necessarily to actual scale, as some components may be depicted disproportionately to their actual size in order to clearly illustrate the concepts of the present disclosure. Fig. 1 exemplifies the contents of default quantization matrices of sizes 4x4 and 8x8 with default values. Fig. 2 This exemplifies upsampling the base scaling matrix (8x8 quantization matrix) to derive the quantization matrix of a larger block. Fig. 3 Figure 1 illustrates an exemplary 1D indexing scheme for identifying scaling matrices of different sizes, different color components, and different prediction modes. Fig. 4 Figure 1 illustrates a 1D indexing method for identifying scaling matrices of different sizes, different color components, and different prediction modes with 2x2 chroma removed in 1D scaling matrix indexing. Fig. 5 It conceptually exemplifies a scaling matrix (or scaling list or quantization matrix) determined by referring to a previously coded or signaled scaling matrix. Fig. 6 ... exemplifies an exemplary video encoder. Fig. 7 This exemplifies a part of a video encoder that implements signaling of a scaling matrix. Fig. 8 It conceptually exemplifies a process for signaling a scaling matrix to encode a video picture. Fig. 9 illustrates an example video decoder. Fig. 10 This exemplifies a part of a video decoder that processes the signaling of a scaling matrix. Fig. 11 It conceptually exemplifies a process for reconstructing a scaling matrix for decoding a video picture. Fig. 12 [This] conceptually illustrates an electronic system in which some embodiments of the present disclosure are implemented. Specific details for implementing the invention
[0014] In the following detailed description, numerous specific details are presented as examples to provide a complete understanding of the relevant teachings. Any modifications, derivatives, and / or extensions based on the teachings described herein are within the scope of protection of this disclosure. In some examples, to avoid unnecessarily obscuring aspects of the teachings of this disclosure, methods, procedures, components, and / or circuits well known with respect to one or more exemplary embodiments disclosed herein may be described at a relatively high level without detail.
[0015] I. Quantization matrix
[0016] Some embodiments of the present disclosure provide a method for signaling or representing a quantization matrix. The quantization matrix is used to achieve frequency-dependent scaling. Consequently, the quantization matrix (QM) may also be referred to as a scaling matrix, a scaling list, or a scaling list matrix. For HEVC, frequency-dependent scaling can be enabled using the syntax element scaling_list_enabled_flag in the Sequence Parameter Set (SPS). When this flag is enabled, additional flags in the SPS and Picture Parameter Set (PPS) control whether a default quantization matrix or a non-default quantization matrix is used. In some embodiments, Fig. 1 exemplifies the contents of default quantization matrices of sizes 4x4 and 8x8 having default values. In some embodiments, non-default quantization matrices may be optionally transmitted in the bitstream of the SPS or PPS.
[0017] To reduce the memory required to store quantization matrices, 8x8 matrices are used to derive quantization matrices for larger transform blocks (e.g., 16x16, 32x32, 64x64, etc.). Therefore, the 8x8 default quantization matrix is called the basic scaling matrix. For example, the quantization matrices for transform blocks of size 16x16 and 32x32 are obtained from the same type of 8x8 basic scaling matrix by upsampling using replication.
[0018] Fig. 2 This exemplifies upsampling a base scaling matrix (8x8 quantization matrix) to derive a quantization matrix of a larger block. As exemplified, a 1x1 region of the 8x8 quantization matrix (210) is upsampled to a 2x2 region of the 16x16 quantization matrix (220) and a 4x4 region of the 32x32 quantization matrix (230).
[0019] A. Quantization matrix for small blocks
[0020] In some embodiments, the scaling list for a 2x2 TU is disabled. In some embodiments, the default matrix (i.e., the flat matrix) is always used for a 2x2 TU. In some embodiments, the scaling list for a 2x2 TU may be derived from another scaling list, for example, a scaling list for a 4x4 TU or an 8x8 TU. For example, the scaling list for 2x2 may be derived from a 4x4 scaling list by downsampling or may use the top-left 2x2 from a 4x4 scaling list directly. In the above cases, the 2x2 scaling list is not signaled.
[0021] For some video coding standards, the smallest chroma CB is 2x2. This smallest CB is generated by Sub-Block Transform (SBT) and results in low hardware processing throughput. In some embodiments, certain constraints are applied to Sub-Block Transform (SBT) to eliminate 2x2 blocks. In some embodiments, the maximum luma CB size of SBT is limited to, for example, 64x64 or 32x32. In some embodiments, for small CBs, SBT is restricted to be enabled only when the CB width or height is greater than or equal to 8 (for example, 8x4 luma CB is allowed for SBT). When vertical splitting is applied, a 4x4 luma CB is generated along with the 2x2 chroma CB. In some embodiments, for small blocks, SBT may be applied only when both the luma CB width and height are greater than 8. In some embodiments, SBT may be applied only when the luma CB size is greater than 64. In some embodiments, after applying SBT to one CU, if the Luma TB size becomes 4x4, SBT is prohibited.
[0022] In one embodiment, a 2x2 inter-scaling list for chroma is signaled, while a 2x2 intra-scaling list for chroma is not signaled. For sizes from 4x4 to 32x32, different combinations of inter / intra and luma / chroma scaling lists are signaled.
[0023] B. 1D indexing of a scaling matrix
[0024] In some embodiments, when signaling a scaling matrix, the matrix size identifier (sizeId) and the matrix identifier (matrixId) themselves are signaled independently in a two-dimensional manner. In some other embodiments, a one-dimensional (1D) indexing method is used to specify the scaling matrix. For example, in some embodiments, a linear sequence of indices may be assigned to different types of scaling matrices (e.g., from a smaller TB size to a larger TB size). Additionally, for each TB size, indices are assigned in a sequential order interleaved to scaling matrices for different prediction modes (e.g., inter-mode, intra-mode, intra-block copy mode, etc.) and different color components (Y, U, V).
[0025] Fig. 3 Figure 1 illustrates an exemplary 1D indexing scheme for identifying scaling matrices of different sizes, different color components, and different prediction modes. In the illustrated 1D indexing scheme, the scaling matrix is not coded for the luminance block with sizeId=2. The following Table 1 represents an exemplary syntax for signaling a scaling list of a video picture or sequence based on a 1D indexing method.
[0026] scaling_list_data( ) { Descriptor for( scalingListId = 0; scalingListId < 30; scalingListId ++ ) { matrixSize = (scalingListId < 4) ? 2 : (scalingListId < 10 ) ? 4:8 scaling_list_copy_mode_flag [ scalingListId ] u(1) if(!scaling_list_copy_mode_flag [scalingListId]) scaling_list_prediction_mode_flag [ scalingListId ] u(1) if( ( scaling_list_copy_mode_flag [ scalingListId ] | | scaling_list_prediction_mode_flag [ scalingListId ] ) && scalingListId != 0 && scalingListId != 4 && scalingListId !=10 ) { scaling_list_pred_scaling_list_id_delta [ scalingListId ] ue(v) if(!scaling_list_copy_mode_flag [scalingListId]){ nextCoef = (scaling_list_prediction_mode_flag[ scalingListId ]) ? 0:8 if( scalingListId > 15 ) { scaling_list_dc_coef [ scalingListId ] se(v) nextCoef = scaling_list_dc_coef [scalingListId] + nextCoef } for( i = 0; i < matrixSize * matrixSize; i++ ) { x = DiagScanOrder[ 3 ][ 3 ][ i ][ 0 ] y = DiagScanOrder[ 3 ][ 3 ][ i ][ 1 ] if ( !( matrixId > 27 && x >= 4 && y >= 4) ) { scaling_list_delta_coef se(v) nextCoef = ( nextCoef + scaling_list_delta_coef + 256 ) % 256 ScalingList[ scalingListId ][ i ] = nextCoef } } } } }
[0027] The variable "scalingListId" is the index of the scaling list or scaling matrix (also referred to as the current or target scaling list or matrix) that is signaled according to the 1D indexing method.
[0028] Syntax elements scaling_list_copy_mode_flag [scalingListId] being 1 indicates that the value of the scaling list is the same as the value of the reference scaling list. The reference scaling list is specified using the syntax element scaling_list_pred_scaling_list_id_delta[scalingListId]. The syntax element scaling_list_copy_mode_flag[scalingListId] being 0 indicates that the value of the scaling list is explicitly signaled.
[0029] Syntax elements scaling_list_prediction_mode_flag [scalingListId] being 1 indicates that the value of the scaling list can be predicted from the reference scaling list. The reference scaling list is specified by scaling_list_pred_scaling_list_id_delta[scalingListId]. The syntax element scaling_list_prediction_mode_flag[scalingListId] being 0 indicates that the value of the scaling list is explicitly signaled. When the value of scaling_list_prediction_mode_flag[scalingListId] does not exist, it is inferred to be equal to 0.
[0030] Syntax elements scaling_list_pred_scaling_list_id_delta [scalingListId] is used to specify or identify the reference scaling list used to derive the current scaling list ScalingList[scalingListId]. The index of the reference scaling list indicated by refScalingListId can be derived using the index of the current scaling list scalingListId and scaling_list_pred_scaling_list_id_delta. For example, the index of the reference scaling list can be set as follows.
[0031] refScalingListId =
[0032] scalingListId - scaling_list_pred_scaling_list_id_delta[scalingListId].
[0033] In other words, scaling_list_predi_scaling_list_id_delta[scalingListId] is the offset from the index of the current scaling list to the index of the reference scaling list. This offset is also referred to as the reference index offset for the current scaling list.
[0034] In some embodiments, when scalingListId is less than 4, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId; when scalingListId is in the range of 4 to 9, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId-4; and when scalingListId is greater than 9, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId-10.
[0035] In some embodiments, when scaling_list_copy_mode_flag[scalingListId] is 1 (or when scaling_list_pred_mode_flag[scalingListId] is 0), ScalingMatrix[sizeId][matrixId][x][y] follows:
[0036] x=0..(1<< matrixSize)-1, y=0..(1<< matrixSize)-1,
[0037] If scaling_list_pred_scaling_list_id_delta[matrixId] is 0, ScalingMatrix[sizeId][matrixId][x][y] is inferred to be 16.
[0038] Otherwise, the scaling list ScalingMatrix[sizeId][matrixId][x][y] is inferred from the reference scaling list ScalingMatrix[refSizeId][refMatrxId][x][y] (e.g., set to be identical).
[0039] In some embodiments, a scaling matrix having a base size different from the current scaling matrix cannot be used as a reference scaling matrix. For example, when the current scaling matrix has a scalingListId equal to 0, 4, or 10 ( 도 3 As shown in [figure], it is the first scaling matrix for each base size), default quantization matrix ( 도 1 As shown in the figure) is inferred as a reference matrix, and the syntax element scaling_list_pred_scaling_list_id_delta is skipped.
[0040] Additionally, since each scaling list matrix can only reference matrices of the same base size, value constraints may be applied to the offset value scaling_list_pred_scaling_list_id_delta. For example, if scalingListId is less than 4, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is limited to the range of 0 to scalingListId. When scalingListId is between 4 and 9, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is limited to the range of 0 to scalingListId-4. When scalingListId is greater than 9, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is limited to the range of 0 to scalingListId-10. Therefore, for example, a scaling list with Id=13 in a range greater than 9 can refer to a previously decoded scaling list with Id=10 to Id=12 in addition to referring to the default scaling list.
[0041] For the target scaling list index (scalingListID in 1D method), the size index and matrix index (sizeId and matrixId in 2D method) can be derived by a lookup table or a formula. The values of sizeId and matrixId are 표 2 It is derived based on the scalingListId. The values of refSizeId and refMatrixId are also 표 2 It can be derived based on refScalingListId using .
[0042] scalingListId 0 1 2 3 4 5 6 7 8 9 sizeId 1 1 1 1 2 2 2 2 2 2 matrixId 1 2 4 5 0 1 2 3 4 5 scalingListId 10 11 12 13 14 15 16 17 18 19 sizeId 3 3 3 3 3 3 4 4 4 4 matrixId 0 1 2 3 4 5 0 1 2 3 scalingListId 20 21 22 23 24 25 26 27 28 29 sizeId 4 4 5 5 5 5 5 5 6 6 matrixId 4 5 0 1 2 3 4 5 0 3
[0043] 표 3A represents the specification of sizeId based on the size of the quantization matrix / scaling list.
[0044] 표 3B represents the specifications of matrixId according to the prediction mode and color component.
[0045]
[0046] Syntax elements scaling_list_dc_coef [scalingListId] + predDC specifies the value of ScalingFactorDC[sizeId][matrixId] (the DC value of the scaling list identified by scalingListId). In some embodiments, the value of ScalingFactorDC[sizeId][matrixId] is limited to the range of 1 to 255. If scaling_list_prediction_mode_flag[scalingListId] is 1 and scaling_list_pred_scaling_list_id_delta[scalingListId] is 0, predDC is 16; otherwise, if scaling_list_prediction_mode_flag[matrixId] is 1, predDC is equal to ScalingMatrix[refSizeId][refMatrixId][0][0]; otherwise, predDC is equal to 8. If scaling_list_copy_mode_flag[scalingListId] is 1, scalingListId is greater than 15, and scaling_list_pred_scaling_list_id_delta[scalingListId] is 0, then ScalingFactorDC[sizeId][matrixId] is set to 16. Otherwise, if scaling_list_copy_mode_flag[scalingListId] is 1, scalingListId is greater than 15, and scaling_list_pred_scaling_list_id_delta[scalingListId] is not 0, then the value of ScalingFactorDC[sizeId][matrixId] is set to be the same as ScalingFactorDC[refSizeId][refMatrixId].
[0047] Syntax elements scaling_list_delta_coef Specifies the difference between the current matrix coefficient ScalingList[scalingListId][i] and the previous matrix coefficient ScalingList[scalingListId][i-1] when scaling_list_copy_mode_flag[scalingListId] is 0. In some embodiments, the value of scaling_list_delta_coef is limited to the range of -128 to 127. The value of ScalingList[scalingListId][i] must be greater than 0. When scaling_list_copy_mode_flag[scalingListId] is 0 and scaling_list_delta_coef does not exist, the value of ScalingList[scalingListId][i] is inferred to be 0.
[0048] If scaling_list_copy_mode_flag[scalingListId] is 0, the array ScalingMatrix[scalingListId] (or ScalingMatrix[sizeId][matrixId]) is derived as follows:
[0049] ScalingMatrix[sizeId][matrixId][i][j] = ScalingList[scalingListId][k] + (scaling_list_prediction_mode_flag[scalingListId])?
[0050] ((scaling_list_pred_scaling_list_id_delta[scalingListId] = = 0) ? 16: ScalingList[refScalingListId][i]): 0
[0051] with k = 0..(matrixSize* matrixSize-1),
[0052] i = diagScanOrder[sizeId][sizeId][k][0], and
[0053] j = diagScanOrder[sizeId][sizeId][k][1]
[0054] When ChromaArrayType is 3, the elements of the 64x64 chroma quantization matrix, ScalingMatrix[6][6][matrixId][x][y], x=0..7, y=0..7, and matrixId = 1, 2, 4, and 5 are derived as follows:
[0055] ScalingMatrix[6][6][matrixId][x][y]=ScalingMatrix[5][5][matrixId][i][j]
[0056] with i = x and j = y
[0057] The variable ScalingFactor is a 5-dimensional array. Specifically, ScalingFactor[wId][hId][matrixId][x][y] specifies an array of scaling factors according to the following: (The variable matrixId is specified in Table 3B)
[0058] The range of x is from 0 to (1< <wId)-1이고, y 범위는 0 내지 (1<<hId)-1, wId=0..6, hId=0..6,인 경우,
[0059] ScalingFactor[wId][hId][matrixId][x][y] =
[0060] ScalingMatrix[sizeLId][matrixId][i][j]
[0061] If wId is not equal to hId, sizeLId = max(wId, hId),
[0062] i = (x << ( (sizeLId>3) ? 3 : sizeLId) >>wId ),
[0063] j = (y << ( (sizeLId>3) ? 3 : sizeLId) >>hId )
[0064] Otherwise (when wId is the same as hId), sizeLId=wId, i=x, j=y
[0065] If max(wId, hId) is greater than 3, the following applies:
[0066] ScalingFactor[wId][hId][matrixId][0][0]=
[0067] ScalingFactorDC[max(wId, hId)][matrixId]
[0068] In some embodiments, the intra 2x2 chroma (scaling) matrix may be removed (from the 1D indexing method). 도 4 represents a 1D indexing scheme for identifying scaling matrices of different sizes, different color components, and different prediction modes with 2x2 chroma removed in 1D scaling matrix indexing. As illustrated, the first index (index 0) corresponds to a scaling list for 2x2 interchroma components, while 2x2 intrachroma components are omitted in this indexing scheme.
[0069] do 표 4 represents syntax for signaling the scaling list of a video picture or sequence when the intra 2x2 chroma scaling list is omitted in the 1D indexing method.
[0070] scaling_list_data( ) { Descriptor for( scalingListId = 0; scalingListId < 28; scalingListId ++ ) { matrixSize = (scalingListId < 2 ) ? 2 : (scalingListId < 8 ) ? 4 : 8 scaling_list_copy_mode_flag [ scalingListId ] u(1) if( !scaling_list_copy_mode_flag [ scalingListId ] ) scaling_list_prediction_mode_flag [ scalingListId ] u(1) if( ( scaling_list_copy_mode_flag [ scalingListId ] | | scaling_list_prediction_mode_flag [ scalingListId ] ) && scalingListId != 0 && scalingListId != 2 && scalingListId !=8 ) { scaling_list_pred_scaling_list_id_delta [ scalingListId ] ue(v) if( !scaling_list_copy_mode_flag [ scalingListId ]){ nextCoef = (scaling_list_prediction_mode_flag[ scalingListId ]) ? 0 : 8 if( scalingListId > 13 ) { scaling_list_dc_coef [ scalingListId ] se(v) nextCoef = scaling_list_dc_coef [ scalingListId ] + nextCoef } for( i = 0; i < matrixSize * matrixSize; i++ ) { x = DiagScanOrder[ 3 ][ 3 ][ i ][ 0 ] y = DiagScanOrder[ 3 ][ 3 ][ i ][ 1 ] if ( !( matrixId > 25 && x >= 4 && y >= 4) ) { scaling_list_delta_coef se(v) nextCoef = ( nextCoef + scaling_list_delta_coef + 256 ) % 256 ScalingList[ scalingListId ][ i ] = nextCoef } } } } }
[0071] When 2x2 chroma is removed from 1D indexing, the mapping between scalingListId (1D indexing) and sizeId and matrixId (2D indexing) values is modified according to Table 5 below.
[0072] scalingListId 0 1 2 3 4 5 6 7 8 9 sizeId 1 1 2 2 2 2 2 2 3 3 matrixId 4 5 0 1 2 3 4 5 0 1 scalingListId 10 11 12 13 14 15 16 17 18 19 sizeId 3 3 3 3 4 4 4 4 4 4 matrixId 2 3 4 5 0 1 2 3 4 5 scalingListId 20 21 22 23 24 25 26 27 sizeId 5 5 5 5 5 5 6 6 matrixId 0 1 2 3 4 5 0 3
[0073] When Intra 2x2 Chroma is removed in 1D indexing method, syntax elements scaling_list_pred_scaling_list_id_delta [scalingListId] is defined differently than when intra 2x2 chroma is 1D indexing. Specifically, when scalingListId is less than 2, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId. When scalingListId is in the range of 2 to 7, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId-2. When scalingListId is greater than 7, the value of scaling_list_pred_scaling_list_id_delta[scalingListId] is in the range of 0 to scalingListId-8.
[0074] C. 스케일링 리스트 예측기
[0075] A value may be used to predict the first coefficient (named the starting point predictor) in the scaling list. In one embodiment, the starting point predictor may be a predefined value (e.g., 0, 8, or 16). In another embodiment, the starting point predictor may be a value that depends on a matrix prediction mode (e.g., copy mode (the current scaling matrix being signaled is exactly the same as the previously signaled scaling matrix), DPCM mode (signaling directly to all coefficients of the scaling list), or predictor mode (the previously signaled scaling list is used as a predictor or reference; the difference between the predictor and the current scaling matrix and the index of the predictor need to be signaled). In another embodiment, the starting point predictor may be a value that depends on the internal bit depth. In another embodiment, the starting point predictor may be a value that depends on the color component (e.g., Y, Cb, or Cr). In another embodiment, the starting point predictor may be a value that depends on the prediction mode (e.g., inter, intra, IBC).
[0076] The predictor mode (or matrix-prediction mode) also uses a default scaling list (e.g.,) to perform predictions. 도 1 You may refer to the default quantization matrix (or a matrix having uniform or flat values). In some embodiments, the reference matrix index (an index identifying the predictor / reference scaling matrix in the 1D method) may be used to indicate whether the default scaling list is used to predict the current scaling list. If the reference matrix index is equal to the current matrix index (an index identifying the current scaling list in the 1D method), the default scaling list is used as the predictor to predict the current scaling list. In some embodiments, a flag indicating whether the predictor mode is applied may be omitted. In some embodiments, only the copy mode and the predictor mode are used to code or signal the scaling list, and the reference matrix index is used to indicate whether the default scaling list is used to predict the current scaling list. The DPCM may be applied to code or signal the difference value between the predictor (reference scaling matrix) and the current scaling list.
[0077] 표 1 and 표 4 In scaling_list_copy_mode_flag and scaling_list_prediction_mode_flag (and below 표 6 The scaling_list_pred_mode_flag and scaling_list_predictor_mode_flag) are used to indicate whether the current scaling matrix is copied from the reference scaling matrix, or whether the current scaling matrix can be predicted from a previously decoded or default reference scaling matrix with differences between additional elements. If the current scaling matrix is copied or predicted from a reference scaling matrix that has already been signaled or coded, the syntax element scaling_list_pred_scaling_list_id_delta is signaled to indicate which scaling matrix is used.
[0078] In some embodiments, a scalingListId greater than or less than the threshold indicates that the current scaling list is for a 64x64 / 64xN / Nx64 block size. In some embodiments, the threshold is 27. In some embodiments, the threshold is 23. In some embodiments, the bottom right sample of the current scaling list is not signaled due to a zero-out count.
[0079] D. 대체 시그널링 리스트 신택스
[0080] In some embodiments, different sets of syntax elements are used to signal a scaling list (scaling or quantization matrix) using a one-dimensional indexing method. For example, the syntax element "scaling_list_copy_mode_flag" may be replaced with "scaling_list_pred_mode_flag" to signal whether the value of the current scaling list is the same as the value of the reference scaling list; and the syntax element "scaling_list_prediction_mode_flag" may be replaced with "scaling_list_predictor_mode_flag" to signal whether the value of the current scaling list can be predicted from the reference scaling list or is explicitly signaled. Table 6 below shows exemplary syntax for signaling a scaling list of a video picture or sequence based on a one-dimensional indexing method using the substituted syntax.
[0081] scaling_list_data( ) { Descriptor for( scalingListId = 0; scalingListId < 30; scalingListId ++ ) { matrixSize = ( matrixId < 4 ) ? 2 : ( matrixId < 10 ) ? 4 : 8 scaling_list_pred_mode_flag [ scalingListId] u(1) if( !scaling_list_pred_mode_flag [ scalingListId ] ) scaling_list_predictor_mode_flag [ scalingListId ] u(1) if( (!scaling_list_pred_mode_flag [ scalingListId ] | | scaling_list_predictor_mode_flag [ scalingListId ]) && scalingListId != 0 && scalingListId != 4 && scalingListId !=10) { scaling_list_pred_scaling_list_id_delta [ scalingListId ] ue(v) if( scaling_list_pred_mode_flag [ scalingListId ]){ nextCoef = 8 if( scalingListId > 15 ) { scaling_list_dc_coef_minus8 [ scalingListId ] se(v) nextCoef = scaling_list_dc_coef_minus8 [ scalingListId ] + 8 } for( i = 0; i < (1<<(matrixSize << 1)); i++ ) { x = DiagScanOrder[ 3 ][ 3 ][ i ][ 0 ] y = DiagScanOrder[ 3 ][ 3 ][ i ][ 1 ] if ( !( matrixId > 27 && x >= 4 && y >= 4) ) { scaling_list_delta_coef se(v) nextCoef = ( nextCoef + scaling_list_delta_coef + 256 ) % 256 ScalingList [ scalingListId ][ i ] = nextCoef } } } } }
[0082] Syntax elements scaling_list_pred_mode_flag [scalingListId] being 0 indicates that the value of the scaling list is the same as the value of the reference scaling list. The reference scaling list is specified by scaling_list_pred_scaling_list_id_delta[scalingListId]. The syntax element scaling_list_pred_mode_flag[scalingListId] being 1 indicates that the value of the scaling list is explicitly signaled.
[0083] Syntax elements scaling_list_predictor_mode_flag [scalingListId] being 1 indicates that the value of the scaling list can be predicted from the reference scaling list specified by scaling_list_pred_scaling_list_id_delta[scalingListId]. The syntax element scaling_list_predictor_mode_flag[scalingListId] being 0 indicates that the value of the scaling list is explicitly signaled. If the value of scaling_list_predictor_mode_flag[scalingListId] does not exist, it is inferred to be equal to 0.
[0084] Syntax elements scaling_list_dc_coef_minus8 [scalingListId] + 8 + predDC specifies the DC value of the determined current scaling list, denoted as ScalingFactorDC[sizeId][matrixId] or ScalingFactorDC[scalingListId]. In some embodiments, the value of scaling_list_dc_coef_minus8[scalingListId] is limited to the range of -7 to 247. If scaling_list_predictor_mode_flag[scalingListId] is 1 and scaling_list_pred_scaling_list_id_delta[scalingListId] is 0, predDC is 16; otherwise, if scaling_list_predictor_mode_flag[matrixId] is 1, predDC is equal to ScalingMatrix[refSizeId][refMatrixId][0][0]. Otherwise, predDC is equal to 0. If scaling_list_pred_mode_flag[scalingListId] is 0, scalingListId is greater than 15, and scaling_list_pred_scaling_list_id_delta[scalingListId] is 0, the value of ScalingFactorDC[sizeId][matrixId] is set to 16. Otherwise, if scaling_list_pred_mode_flag[scalingListId] is 0, scalingListId is greater than 15, and scaling_list_pred_scaling_list_id_delta[scalingListId] is not 0, the value of ScalingFactorDC[sizeId][matrixId] is set to be equal to ScalingFactorDC[refSizeId][refMatrixId].
[0085] If Scaling_list_pred_mode_flag[scalingListId] is 1, syntax element scaling_list_delta_coef Specifies the difference between the current matrix coefficient ScalingList[scalingListId][i] and the previous matrix coefficient ScalingList[scalingListId][i-1]. The value of scaling_list_delta_coef is limited to the range of -128 to 127. The value of ScalingList[scalingListId][i] is greater than 0. If scaling_list_pred_mode_flag[scalingListId] is 1 and scaling_list_delta_coef is absent, the value of ScalingList[scalingListId][i] is inferred to be 0.
[0086] If scaling_list_pred_mode_flag[scalingListId] is 1, the array ScalingMatrix[scalingListId] is derived as follows:
[0087] ScalingMatrix[sizeId][matrixId][i][j] = ScalingList[scalingListId][k] + (scaling_list_predictor_mode_flag[scalingListId]) ? ((scaling_list_pred_scaling_list_id_delta[scalingListId] == 0) ? 16 : ScalingList[refScalingListId][i]) : 0
[0088] with k = 0 .. coefNum - 1,
[0089] i = diagScanOrder[log2(coefNum) / 2][log2(coefNum) / 2][k][0], and
[0090] j = diagScanOrder[log2(coefNum) / 2][log2(coefNum) / 2][k][1]
[0091] In some embodiments, when ChromaArrayType is 3, the elements of the chroma quantization matrix of size 64x64, ScalingFactor[6][6][matrixId][x][y], x=0..63, y=0..63 and matrixId = 1, 2, 4 and 5 are derived as follows.
[0092] ScalingFactor[6][6][matrixId][x][y]=ScalingFactor[5][5][matrixId][i][j]
[0093] with i=x and j=y
[0094] 표 7 illustrates another alternative syntax for signaling a scaling list of video pictures or sequences based on a 1D indexing scheme, where the syntax element "scalingListId" is simply referred to as "id" and the range defined for the scaling list index is modified.
[0095] scaling_list_data( ) { Descriptor scaling_matrix_for_lfnst_disabled_flag u(1) for( id = 0; id < 28; id ++ ) matrixSize = (id < 2 ) ? 2 : ( ( id < 8 ) ? 4 : 8 ) scaling_list_copy_mode_flag[ id ] u(1) if(!scaling_list_copy_mode_flag[id]) scaling_list_pred_mode_flag[ id ] u(1) if( ( scaling_list_copy_mode_flag [ id ]||scaling_list_pred_mode_flag [ id ] ) && id != 0 && id != 2 && id != 8 ) scaling_list_pred_id_delta[id] ue(v) if(!scaling_list_copy_mode_flag[id]) { nextCoef = 0 if( id > 13 ) { scaling_list_dc_coef[id - 14] se(v) nextCoef = nextCoef + scaling_list_dc_coef[id - 14] } for( i = 0; i < matrixSize * matrixSize; i++ ) { x = DiagScanOrder[ 3 ][ 3 ][ i ][ 0 ] y = DiagScanOrder[ 3 ][ 3 ][ i ][ 1 ] if( !( id > 25 && x >= 4 && y >= 4 ) ) { scaling_list_delta_coef se(v) nextCoef = nextCoef + scaling_list_delta_coef } ScalingList[id][i] = nextCoef } } } }
[0096] Syntax elements scaling_matrix_for_lfnst_disabled_flag A value of 1 specifies that the scaling matrix is not applied to blocks coded with LFNST, and a value of 0 specifies that the scaling matrix can be applied to blocks coded with LFNST.
[0097] Syntax elements scaling_list_copy_mode_flag [id] being 1 indicates that the value of the scaling list is the same as the value of the reference scaling list. The reference scaling list is specified as scaling_list_pred_id_delta[id]. The syntax element scaling_list_copy_mode_flag[id] being 0 indicates that scaling_list_pred_mode_flag exists.
[0098] Syntax elements scaling_list_pred_mode_flag[id] being 1 indicates that the value of the scaling list can be predicted from the reference scaling list. The reference scaling list is specified as scaling_list_pred_id_delta[id]. scaling_list_pred_mode_flag[id] being 0 indicates that the value of the scaling list is explicitly signaled. If the value of scaling_list_pred_mode_flag[id] does not exist, the value is inferred to be 0.
[0099] Syntax elements scaling_list_pred_id_delta [id] specifies the reference scaling list used to derive the prediction scaling matrix ScalingMatrixPred[id]. If scaling_list_pred_id_delta[id] does not exist, scaling_list_pred_id_delta[id] is inferred to be 0. The value of scaling_list_pred_id_delta[id] is restricted to the range from 0 to maxIdDelta, and maxIdDelta is derived based on id as follows:
[0100] maxIdDelta = (id<2) ? id : ((id<8) ? (id2) : (id8))
[0101] The variables refId and matrixSize are derived as follows:
[0102] refId = id scaling_list_pred_id_delta[id]
[0103] matrixSize = (id<2) ? 2 : ((id<8) ? 4 : 8)
[0104] The (matrixSize)x(matrixSize) array is ScalingMatrixPred[x][y] with x=0..matrixSize-1, y=0..matrixSize-1.
[0105] The variable ScalingMatrixDCPred is derived as follows: if both scaling_list_copy_mode_flag[id] and scaling_list_pred_mode_flag[id] are 0, all elements of ScalingMatrixPred are set to 8 and the value of ScalingMatrixDCPred is set to 8. Otherwise, if scaling_list_pred_id_delta[id] is 0, all elements of ScalingMatrixPred are set to 16 and ScalingMatrixDCPred is set to 16. Otherwise (if scaling_list_copy_mode_flag[id] or scaling_list_pred_mode_flag[id] is 1 and scaling_list_pred_id_delta[id] is greater than 0), ScalingMatrixPred is set to be equal to ScalingMatrix[refId]. If refId is greater than 13, ScalingMatrixDCRed is set to be equal to ScalingMatrixDC[refId-14]. Otherwise (if refId is less than or equal to 13), ScalingMatrixDCPred is set to be the same as ScalingMatrixPred[0][0].
[0106] Syntax elements scaling_list_dc_coef [id-14] is used to derive the value of the variable ScalingMatrixDC[id-14] when id is greater than 13:
[0107] ScalingMatrixDC[id14] = ScalingMatrixDCPred
[0108] +scaling_list_dc_coef[id14]+256, or
[0109] ScalingMatrixDC[id14] = (ScalingMatrixDCPred
[0110] +scaling_list_dc_coef[id14]+256)%256
[0111] In some embodiments, the value of scaling_list_dc_coef[id-14] is limited to the range of -254 to 254. If the value of scaling_list_dc_coef[id-14] does not exist, the value of scaling_list_dc_coef[id-14] is inferred to be 0. In some embodiments, the value of ScalingMatrixDC[id-14] is limited to the range of 1 to 255. In some other embodiments, the value of scaling_list_dc_coef[id-14] is limited to the range of -128 to 127. If the value of scaling_list_dc_coef[id-14] does not exist, the value of scaling_list_dc_coef[id-14] is inferred to be 0. In some embodiments, the value of ScalingMatrixDC[id-14] is limited to be greater than 0.
[0112] Syntax elements scaling_list_delta_coef specifies the difference between the current matrix coefficient ScalingList[id][i] and the previous matrix coefficient ScalingList[id][i-1] when scaling_list_copy_mode_flag[id] is 0. In some embodiments, the value of scaling_list_delta_coef is limited to the range of -511 to 511. In some embodiments, the value of scaling_list_delta_coef is limited to the range of -128 to 127. When scaling_list_copy_mode_flag[id] is 1, all elements of ScalingList[id] are set to 0.
[0113] ScalingMatrix[id] is an array of (matrixSize)x(matrixSize) derived as follows:
[0114] ScalingMatrix[id][x][y] = ScalingMatrixPred[x][y] + ScalingList[id][k], with k = 0..( matrixSize * matrixSize1 ), or
[0115] ScalingMatrix[id][x][y] = (ScalingMatrixPred[x][y] + ScalingList[id][k]+256)%256, with k = 0..( matrixSize * matrixSize1 ),
[0116] x = DiagScanOrder[Log2( matrixSize)][Log2(matrixSize)][k][0],
[0117] y = DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][1],
[0118] The ScalingMatrix[id][x][y] value must be in the range of 1 to 255. In some other embodiments, the ScalingMatrix[id][x][y] value must be greater than 0.
[0119] In some embodiments, when scaling_list_delta_coef and scaling_list_dc_coef are signaled as the difference between the predictor and the original data, the ranges of scaling_list_delta_coef and scaling_list_dc_coef may be designed based on the predictor bit depth or a predefined range (e.g., [-255,255], [-254,254], [-128,128], [-255,254], [-512,511] or [-511,511]). In some embodiments, the ranges of scaling_list_delta_coef and scaling_list_dc_coef may be limited by a modulus operation. For example, when the predictor value is 8, the ranges of scaling_list_delta_coef and scaling_list_dc_coef are set to [-7,247]; Otherwise, if the value of the predictor is 16, the range of scaling_list_delta_coef and scaling_list_dc_coef is set to [-15, 239]. Otherwise, if the value of the predictor has a bit depth of 8 bits, the range of scaling_list_delta_coef and scaling_list_dc_coef is set to [-512, 511].
[0120] In some embodiments, predefined ranges of scaling_list_delta_coef and scaling_list_dc_coef may be used to derive the range of the final scaling matrix coefficients. In some embodiments, the ranges of scaling_list_delta_coef and scaling_list_dc_coef may be explicitly signaled to the decoder at the sequence level, picture level, or slice level. In some embodiments, if the coefficients of the final scaling matrix are overflow compared to a predefined range (e.g., 8-bit, 10-bit, or internal bit-depth), the overflow coefficients are set to predefined default values (e.g., 16, 8) before signaling. In some embodiments, if the coefficients of the final scaling matrix are overflow compared to a predefined range (e.g., 8-bit, 10-bit, or internal bit-depth), the corresponding scaling matrix is all set to predefined default values (e.g., 16, 8) before signaling.
[0121] In some embodiments, when scaling_list_delta_coef and scaling_list_dc_coef are signaled as the difference between the predictor and the original data, the ranges of scaling_list_delta_coef and scaling_list_dc_coef may be further limited to a predefined range (e.g., [-255, 255], [-254, 254], [-127, 127], [-128, 127], [-256, 255], [-512, 511] or [-511, 511]). In some embodiments, the ranges of scaling_list_delta_coef and scaling_list_dc_coef may be limited by a modulus operation. In some embodiments, the range of intermediate parameters (e.g., nextCoef) may be further limited by a modulus operation (e.g., modulo to 256) to ensure that the bit depth of the final scaling matrix coefficients is within a predefined range. In some embodiments, the ranges of scaling_list_delta_coef, scaling_list_dc_coef, and nextCoef may be limited by a modulus operation (e.g., modulus to 256). The scaling_list_delta_coef and scaling_list_dc_coef signaled in this way may be limited to a smaller range (e.g., [-128, 127], [-127, 127]). In some embodiments, a predefined range of scaling_list_delta_coef and scaling_list_dc_coef or an intermediate parameter (e.g., nextCoef) may be used to derive the bit depth of the final scaling matrix coefficients.
[0122] E. Method for signaling a scaling matrix.
[0123] Fig. 5This figure conceptually illustrates a scaling matrix (or scaling list or quantization matrix) determined by referencing a previously coded or signaled scaling matrix. This figure illustrates exemplary scaling matrices QM0 through QM27 used to quantize or dequantize the transform factors of a video picture. Different scaling matrices are specified for transform blocks of different types (e.g., different block sizes (2, 4, 8, 16, 32, 64), different color components (luma and chroma), and / or different prediction modes (inter / intra)).
[0124] The scaling matrices QM0 through QM27 are also called basis or base scaling matrices because they serve as the foundation for deriving the actual quantization matrix used to quantize or dequantize the transform block (e.g., by upsampling or downsampling).
[0125] The drawing illustrates the signaling of scaling matrices QM0 through QM27. An encoder provides a signal that encodes scaling matrices QM0 through QM27 in a bitstream. A decoder receives a signal from the bitstream and reconstructs each scaling matrix based on the received signal. In the example, scaling matrices QM0 through QM15 have already been signaled or reconstructed, whereas scaling matrices QM16 through QM27 have not yet been signaled or reconstructed.
[0126] The video encoder may signal the contents of a scaling matrix by referencing a previously signaled (or reconstructed) scaling matrix as a predictor (or the decoder may reconstruct it). In this example, the video encoder signals the contents of the scaling matrix QM16 by referencing the contents of the scaling matrix QM14 (or the decoder reconstructs it). In some embodiments, since the scaling matrix QM14 is a perfect predictor of the scaling matrix QM16, the video encoder may signal QM16 (or the video decoder reconstructs it) by copying or duplicating the elements of QM14 without applying delta values. If QM14 is not a perfect predictor of QM16, the video encoder may signal additional delta values between the corresponding elements of QM14 and QM16.
[0127] In some embodiments, the decoder may identify a reference or predictor scaling matrix by applying a reference index offset to an index of the scaling matrix being reconstructed. The reference index offset may be a syntax element of the bitstream (e.g., scaling_list_pred_scaling_list_id_delta). Fig. 5 In the example, the index of the scaling matrix being reconstructed is 16 (QM16) and the index of the scaling matrix being referenced is 14 (QM14). The reference index offset has a value of "2" for QM16, which is used to derive the index of QM14 from the index of QM16.
[0128] In this example, the reference scaling matrix (QM14) has the same size as the scaling matrix to be coded (QM16). In some embodiments, when a previously coded or signaled scaling matrix is referenced as a predictor to determine the scaling matrix to be currently coded, the referenced scaling matrix must have the same size as the current scaling matrix. Therefore, Fig. 5For the example, QM16 can reference QM15 and QM14 (size 16x16) but may not reference QM13 (size 8x8). Additionally, when signaling the first scaling matrix according to the 1D indexing scheme (e.g., QM14, the first scaling matrix of size 16x16, is signaled), the previously coded scaling matrix (e.g., QM13) cannot be used as a reference (because of the difference in size), and the reference index offset is always 0.
[0129] Any of the methods proposed above may be implemented in various hardware, software implementations, or combinations thereof of an encoder and / or decoder. For example, an embodiment of the present invention may be one or more circuits integrated into a video compression chip or program code integrated into video compression software to perform the process described herein. For example, any of the proposed methods may be implemented as a circuit connected to the quantization module and the dequantization module of an encoder, and as a circuit connected to the dequantization module of a decoder. In one embodiment, any of the proposed methods may be implemented in the quantization module and the dequantization module of an encoder, and may be implemented in the dequantization module of a decoder.
[0130] II. Exemplary video encoder
[0131] Fig. 6The example illustrates an exemplary video encoder (600). As illustrated, the video encoder (600) receives an input video signal from a video source (605) and encodes the signal into a bitstream (695). The video encoder (600) has several components or modules for encoding a signal from a video source (605), including at least some components selected from a transform module (610), a quantization module (611), an inverse quantization module (614), an inverse transform module (615), an intra-picture estimation module (620), an intra-prediction module (625), a motion compensation module (630), a motion estimation module (635), an in-loop filter (645), a reconstructed picture buffer (650), an MV buffer (665), an MV prediction module (675), and an entropy encoder (690). The motion compensation module (630) and the motion estimation module (635) are part of the inter-prediction module (640).
[0132] In some embodiments, the modules (610 to 690) are modules of software instructions executed by one or more processing units (e.g., processors) of a computing device or electronic device. In some embodiments, the modules (610 to 690) are modules of hardware circuits implemented by one or more integrated circuits (ICs) of an electronic device. The modules 610 to 690 are represented as separate modules, but some modules may be combined into a single module.
[0133] A video source (605) provides a raw video signal that presents pixel data of each video frame without compression. A subtractor (608) calculates the difference between the raw video pixel data of the video source (605) and the pixel data (613) predicted by the motion compensation module (630) or the intra prediction module (625). A transform module (610) transforms the difference (or residual pixel data or residual signal (609)) into transform factors (e.g., by performing a discrete cosine transform or DCT). A quantization module (611) quantizes the transform factors into quantized data (or quantized factors) (612), which is encoded into a bitstream (695) by an entropy encoder (690).
[0134] The inverse quantization module (614) inversely quantizes the quantized data (or quantized coefficients) (612) to obtain the transformation coefficients, and the inverse transformation module (615) performs an inverse transformation on the transformation coefficients to generate the reconstructed residuals (619). The reconstructed residuals (619) are added to the predicted pixel data (613) to generate the reconstructed pixel data (617). In some embodiments, the reconstructed pixel data (617) is temporarily stored in a line buffer (not shown) for intra-picture prediction and spatial MV prediction. The reconstructed pixels are filtered by an in-loop filter (645) and stored in the reconstructed picture buffer (650). In some embodiments, the reconstructed picture buffer (650) is a storage outside the video encoder (600). In some embodiments, the reconstructed picture buffer (650) is a storage inside the video encoder (600).
[0135] The intra-picture estimation module (620) performs intra-prediction based on the reconstructed pixel data (617) to generate intra-prediction data. The intra-prediction data is provided to the entropy encoder (690) and encoded into a bitstream (695). The intra-prediction data is also used by the intra-prediction module (625) to generate predicted pixel data (613).
[0136] The motion estimation module (635) performs inter-prediction by generating an MV to reference pixel data of a previously decoded frame stored in a reconstructed picture buffer (650). This MV is provided to the motion compensation module (630) to generate predicted pixel data.
[0137] Instead of encoding the complete actual MV in the bitstream, the video encoder (600) uses MV prediction to generate the predicted MV, and the difference between the MV used for motion compensation and the predicted MV is encoded as residual motion data and stored in the bitstream (695).
[0138] The MV prediction module (675) generates a predicted MV based on a reference MV generated to encode a previous video frame, that is, a motion-compensated MV used to perform motion compensation. The MV prediction module (675) retrieves the reference MV from the previous video frame from the MV buffer (665). The video encoder (600) stores the MV generated for the current video frame in the MV buffer (665) as a reference MV for generating the predicted MV.
[0139] The MV prediction module (675) generates a predicted MV using a reference MV. The predicted MV can be calculated by spatial MV prediction or temporal MV prediction. The difference between the predicted MV and the motion-compensated MV (MC MV) of the current frame (residual motion data) is encoded into a bitstream (695) by an entropy encoder (690).
[0140] The entropy encoder (690) encodes various parameters and data into a bitstream (695) using an entropy-coding technique such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding. The entropy encoder (690) encodes various header elements and flags as syntax elements into the bitstream (695), along with quantized transform coefficients (612) and residual motion data. The bitstream (695) is then stored in a storage device or transmitted to a decoder via a communication medium such as a network.
[0141] An in-loop filter (645) performs a filtering or smoothing operation on the reconstructed pixel data (617) to reduce coding artifacts, particularly at the boundaries of pixel blocks. In some embodiments, the filtering operation performed includes a sample adaptive offset (SAO). In some embodiments, the filtering operation includes an adaptive loop filter (ALF).
[0142] Fig. 7 exemplifies a part of a video encoder (600) that implements the signaling of a scaling matrix. As illustrated, the quantization module (611) uses a quantization matrix to quantize the transformation coefficients (616). The quantization matrix is provided by a quantization matrix generator (730). The quantization matrix generator (730) generates a quantization matrix for the current transformation block by, for example, selecting a basis scaling matrix based on a set of basis scaling matrices (720) and performing downsampling or upsampling on the selected basis scaling matrix to generate a quantization matrix that matches the size of the current transformation block.
[0143] A set of basic scaling matrices (720) is determined or configured by a scaling matrix generator (710) for the current picture or current sequence of pictures for transformation blocks of different sizes, different color components, and different prediction modes. The scaling matrix generator (710) also provides a signal that can be used to construct a scaling matrix for an entropy encoder (690) to be included in the bitstream (695).
[0144] The scaling matrix generator (710) generates a scaling matrix (720). The scaling matrix generator (710) may refer to a default scaling matrix when generating the coefficients of the scaling matrix. The scaling matrix generator (710) may generate the scaling matrix by prediction or by copying. Specifically, the scaling matrix generator provides the reference scaling matrix (or predictor (e.g., scaling_list_pred_scaling_list_id_delta) to the entropy encoder (690) by providing a reference index offset (e.g., scaling_list_pred_scaling_list_id_delta) that can be used to identify a previously coded or signaled scaling matrix as a reference or predictor scaling matrix. Fig. 5 QM16)) can be signaled by referencing QM14. The matrix generator (790) can also provide the entropy encoder (690) with a flag indicating whether the predictor scaling matrix should be copied or serve as a basis for prediction, along with a delta value between the predictor scaling matrix and the current scaling matrix.
[0145] Fig. 8 The process (800) conceptually illustrates a process for signaling a scaling matrix to encode a video picture. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing the encoder (600) perform the process (800) by executing instructions stored on a computer-readable medium. In some embodiments, an electronic device implementing the encoder (600) performs the process (800).
[0146] The encoder receives data from the bitstream to be encoded into the current picture of the video (at block 810). The current picture will be encoded using multiple scaling matrices.
[0147] The encoder signals the first scaling matrix of the plurality of scaling matrices by referring to the previously signaled second scaling matrix of the plurality of scaling matrices (in block 820). In some embodiments, when a first flag (e.g., scaling_list_copy_mode_flag) in the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are identical, the first scaling matrix is determined by copying the elements of the second scaling matrix to the elements of the first scaling matrix. In some embodiments, when a first flag in the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, a second flag in the bitstream (e.g., scaling_list_prediction_mode_flag) indicates whether the first scaling matrix is determined by (i) adding a set of delta values to the elements of the second scaling matrix as elements of the first scaling matrix, or (ii) by explicitly signaling in the bitstream.
[0148] The encoder determines a reference index offset (e.g., scaling_list_pred_scaling_list_id_delta) between a first index identifying a first scaling matrix and a second index identifying a second scaling matrix (in block 830). The encoder signals the determined reference index offset (in block 840). In some embodiments, the first index and the second index are assigned to the first scaling matrix and the second scaling matrix, respectively, according to a one-dimensional indexing method that assigns indices to the scaling matrix based on color components, block size, and prediction type. In some embodiments, the scaling matrix for coding a 2x2 transform block of chroma components for an intra prediction type is not assigned an index according to the one-dimensional indexing method. In some embodiments, if another scaling matrix of a specific size identical to the first scaling matrix has not previously been signaled for the current picture (e.g., the index of the first scaling matrix Fig. 3 In the method, if it is 0, 4, or 10, or Fig. 4 (in the case of 2, 8, or 14 in the method), the reference index offset is not signaled in the bitstream, and the first scaling matrix is determined by referring to the default quantization matrix. In some embodiments, when the first index is greater than a threshold, the block size of the scaling matrix is 64.
[0149] The encoder (in block 850) encodes the current picture into the transform factors of the transform block. The encoder (in block 860) quantizes the transform factors using multiple scaling matrices.
[0150] In some embodiments, the bitstream includes a first syntax element (e.g., scaling_list_delta_coef) specifying the difference between two consecutive scaling matrix coefficients of the first matrix and a second syntax element (e.g., scaling_list_dc_coef) specifying the DC coefficient of the first scaling matrix. The first syntax element and the second syntax element are limited to between -128 and 127.
[0151] III. Exemplary video decoder
[0152] Fig. 9 This illustrates an exemplary video decoder (900). As illustrated, the video decoder (900) is an image decoding or video decoding circuit that receives a bitstream (995) and decodes the contents of the bitstream into pixel data of a video frame for display. The video decoder (900) has several components or modules for decoding the bitstream (995), including some components selected from an inverse quantization module (911), an inverse transform module (910), an intra-prediction module (925), a motion compensation module (930), an in-loop filter (945), a decoded picture buffer (950), an MV buffer (965), an MV prediction module (975), and a parser (990). The motion compensation module (930) is part of the inter-prediction module (940).
[0153] In some embodiments, the modules (910 to 990) are modules of software instructions executed by one or more processing units (e.g., processors) of a computing device. In some embodiments, the modules (910 to 990) are modules of hardware circuits implemented by one or more ICs of an electronic device. Although the modules 910 to 990 are depicted as separate modules, some modules may be combined into a single module.
[0154] A parser (990) (or entropy decoder) receives a bitstream (995) and performs initial parsing according to the syntax defined by a video coding or image coding standard. The parsed syntax elements include various header elements, flags, and quantized data (or quantized coefficients) (912). The parser (990) parses the various syntax elements using an entropy coding technique such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding.
[0155] The inverse quantization module (911) inversely quantizes the quantized data (or quantized coefficients) (912) to obtain the transformation coefficients, and the inverse transformation module (910) performs an inverse transformation on the transformation coefficients (916) to generate a reconstructed residual signal (919). The reconstructed residual signal (919) is added to the pixel data (913) predicted by the intra prediction module (925) or the motion compensation module (930) to generate decoded pixel data (917). The decoded pixel data is filtered by an in-loop filter (945) and stored in a decoded picture buffer (950). In some embodiments, the decoded picture buffer (950) is a storage outside the video decoder (900). In some embodiments, the decoded picture buffer (950) is a storage inside the video decoder (900).
[0156] The intra prediction module (925) receives intra prediction data from the bitstream (995) and accordingly generates predicted pixel data (913) from the decoded pixel data (917) stored in the decoded picture buffer (950). In some embodiments, the decoded pixel data (917) is also stored in a line buffer (not shown) for intra picture prediction and spatial MV prediction.
[0157] In some embodiments, the contents of the decoded picture buffer (950) are used for display. The display device (955) retrieves the contents of the decoded picture buffer (950) directly for display, or retrieves the contents of the decoded picture buffer into a display buffer. In some embodiments, the display device receives pixel values from the decoded picture buffer (950) via pixel transmission.
[0158] The motion compensation module (930) generates predicted pixel data (913) from decoded pixel data (917) stored in a picture buffer (950) that is decoded according to the motion compensation MV (MC MV). This motion compensation MV is decoded by adding residual motion data received from the bitstream (995) with the predicted MV received from the MV prediction module (975).
[0159] The MV prediction module (975) generates a predicted MV based on a reference MV generated to decode a previous video frame, for example, a motion compensation MV used to perform motion compensation. The MV prediction module (975) retrieves the reference MV of the previous video frame from the MV buffer (965). The video decoder (900) stores the motion compensation MV generated to decode the current video frame in the MV buffer (965) as a reference MV for generating the predicted MV.
[0160] An in-loop filter (945) performs filtering or smoothing operations on decoded pixel data (917) to reduce coding artifacts, particularly at the boundaries of pixel blocks. In some embodiments, the filtering operation performed includes a sample adaptive offset (SAO). In some embodiments, the filtering operation includes an adaptive loop filter (ALF).
[0161] Fig. 10exemplifies a part of a video decoder (900) that processes signaling of a scaling matrix. As illustrated, the inverse quantization module (911) uses a quantization matrix to inversely quantize the transform coefficients (916). The quantization matrix is provided by a quantization matrix generator (1030). The quantization matrix generator (1030) generates a quantization matrix for the current transform block based on a set of base scaling matrices (1020) by, for example, selecting a base scaling matrix and performing downsampling or upsampling on the selected base scaling matrix to generate a quantization matrix that matches the size of the current transform block.
[0162] A set of basic scaling matrices is determined or configured by a scaling matrix generator (1010) for the current picture or the current sequence of pictures for transformation blocks of different sizes, different color components, and different prediction modes. The scaling matrix generator (1010) receives a signal associated with the scaling matrix parsed by the entropy decoder (990) from the bitstream (995).
[0163] The scaling matrix generator (1010) generates a scaling matrix (1020). The scaling matrix generator (1010) may refer to a default scaling matrix when generating the coefficients of the scaling matrix. The scaling matrix generator (1010) may also generate the scaling matrix through prediction or copying. Specifically, the scaling matrix generator receives a reference index offset (e.g., scaling_list_pred_scaling_list_id_delta) from the entropy decoder (990) that can be used to identify a previously coded or signaled scaling matrix as a reference or predictor scaling matrix, thereby generating a reference scaling matrix (or predictor, e.g., Fig. 5QM16) that references QM14 can be identified. The matrix generator (1090) can also receive from the entropy decoder (990) a flag indicating whether the predictor scaling matrix should be copied or serve as a basis for prediction, along with a delta value between the predictor scaling matrix and the current scaling matrix.
[0164] Fig. 11 The process (1100) conceptually illustrates a process for reconstructing a scaling matrix to decode a video picture. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing the decoder (900) perform the process (1100) by executing instructions stored on a computer-readable medium. In some embodiments, an electronic device implementing the decoder (900) performs the process (1100).
[0165] The decoder receives data from the bitstream to be decoded as the current picture of the video (in block 1110). The current picture will be decoded using multiple scaling matrices.
[0166] The decoder receives (in block 1120) a reference index offset (e.g., scaling_list_pred_scaling_list_id_delta) for a first scaling matrix of a plurality of scaling matrices. The decoder (in block 1130) applies the reference index offset to a first index identifying the first scaling matrix to derive a second index identifying the second scaling matrix among the plurality of scaling matrices. The second scaling matrix has been previously reconstructed. In some embodiments, the first index and the second index are assigned to the first scaling matrix and the second scaling matrix according to a one-dimensional indexing method that assigns indices to the scaling matrix based on color components, block size, and prediction type. In some embodiments, the scaling matrix for coding a 2x2 transform block of chroma components for an intra prediction type is not assigned an index according to the one-dimensional indexing method. In some embodiments, if another scaling matrix of a specific size identical to the first scaling matrix has not previously been signaled for the current picture (e.g., the index of the first scaling matrix is Fig. 3 In the method, if it is 0, 4, or 10, or Fig. 4 (in the case of 2, 8, or 14 in the method), the reference index offset is not signaled in the bitstream, and the first scaling matrix is determined by referring to the default quantization matrix. In some embodiments, when the first index is greater than a threshold, the block size of the scaling matrix is 64.
[0167] The decoder reconstructs the first scaling matrix by referring to the second scaling matrix (in block 1140). In some embodiments, when a first flag (e.g., scaling_list_copy_mode_flag) in the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are identical, the first scaling matrix is determined by duplicating the elements of the second scaling matrix to the elements of the first scaling matrix. In some embodiments, when a first flag in the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, a second flag in the bitstream (e.g., scaling_list_prediction_mode_flag) indicates whether the first scaling matrix is determined by (i) adding a set of delta values to the elements of the second scaling matrix as elements of the first scaling matrix, or (ii) by explicitly signaling in the bitstream.
[0168] The decoder (in block 1150) uses multiple scaling matrices to inversely quantize the transform coefficients of the transform block of the current picture. The decoder (in block 1160) reconstructs the current picture using the inversely quantized transform coefficients.
[0169] In some embodiments, the bitstream includes a first syntax element (e.g., scaling_list_delta_coef) specifying the difference between two consecutive scaling matrix coefficients of the first matrix and a second syntax element (e.g., scaling_list_dc_coef) specifying the DC coefficient of the first scaling matrix. The first syntax element and the second syntax element are limited to between -128 and 127.
[0170] IV. Exemplary electronic system
[0171] Many of the features and applications described above are implemented as software processes characterized by a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When such instructions are executed by one or more computational or processing units (e.g., one or more processors, processor cores, or other processing units), such instructions cause the processing units to perform the operations indicated in the instructions. Exemplary computer-readable media include, but are not limited to, CD-ROMs, flash drives, RAM (Random-Access Memory) chips, hard drives, EPROM (Erasable Programmable Read Only Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), etc. Computer-readable media do not include carrier waves and electronic signals transmitted via wireless or wired connections.
[0172] In this specification, the term “software” means firmware residing in read-only memory or applications stored in magnetic storage that can be read into memory for processing by a processor. Additionally, in some embodiments, a number of software inventions may be implemented as sub-parts of a larger program while maintaining separate software inventions. In some embodiments, a number of software inventions may also be implemented as separate programs. Finally, any combination of individual programs implementing together the software inventions described in this specification is within the scope of the invention. In some embodiments, a software program defines one or more specific machine implementations that execute and perform the operation of the software program when installed to operate on one or more electronic systems.
[0173] Fig. 12[This section] conceptually illustrates an electronic system (1200) in which some embodiments of the present disclosure are implemented. The electronic system (1200) may be a computer (e.g., a desktop computer, a personal computer, a tablet computer, etc.), a telephone, a PDA, or any other type of electronic device. Such an electronic system includes various types of computer-readable media and interfaces to various other types of computer-readable media. The electronic system (1200) includes a bus (1205), a processing unit (1210), a graphics processing unit (GPU) (1215), a system memory (1220), a network (1225), read-only memory (1230), a permanent storage device (1235), an input device (1240), and an output device (1245).
[0174] The bus (1205) collectively represents all system, peripheral, and chipset buses that enable communication between numerous internal devices of the electronic system (1200). For example, the bus (1205) enables communication between the processing unit (1210) and the GPU (1215), read-only memory (1230), system memory (1220), and permanent storage device (1235).
[0175] From these various memory units, the processing unit (1210) retrieves instructions to execute and data to process in order to execute the process of the present disclosure. In different embodiments, the processing unit may be a single processor or a multi-core processor. Some instructions are passed to the GPU (1215) and executed by the GPU (1215). The GPU (1215) may offload various calculations or complement the image processing provided by the processing unit (1210).
[0176] ROM (read-only memory) (1230) stores static data and commands used by the processing unit (1210) and other modules of the electronic system. Meanwhile, the permanent storage device (1235) is a read-and-write memory device. This device is a non-volatile memory device that stores commands and data even when the electronic system (1200) is turned off. Some embodiments of the present disclosure use a mass storage device (e.g., a magnetic or optical disk and its disk drive) as the permanent storage device (1235).
[0177] Another embodiment uses a removable storage device (such as a floppy disk, a flash memory device, and a corresponding disk drive) as a permanent storage device. Like the permanent storage device (1235), the system memory (1220) is a read-and-write memory device. However, unlike the storage device (1235), the system memory (1220) is a volatile read-and-write memory, such as random access memory. The system memory (1220) stores some of the instructions and data that the processor uses at runtime. In some embodiments, the process according to the present disclosure is stored in the system memory (1220), the permanent storage device (1235), and / or the read-only memory (1230). For example, various memory units contain instructions for processing multimedia clips according to some embodiments. From these various memory units, the processing unit (1210) retrieves instructions to execute and data to process to execute the process of some embodiments.
[0178] The bus (1205) is also connected to input devices and output devices (1240 and 1245). The input device (1240) enables a user to communicate information and select commands for an electronic system. The input device (1240) includes an alphanumeric keyboard and a pointing device (also called a “cursor control device”), a camera (e.g., a webcam), a microphone, or a similar device for receiving voice commands. The output device (1245) displays an image generated by the electronic system or otherwise outputs data. The output device (1245) includes a printer and a display device, such as a cathode ray tube (CRT) or liquid crystal display (LCD), as well as a speaker or a similar audio output device. Some embodiments include a device such as a touchscreen that functions as both an input device and an output device.
[0179] finally, Fig. 12 As illustrated in the figure, the bus (1205) also connects the electronic system (1200) to a network (1225) via a network adapter (not shown). In this way, the computer may be part of a computer network (e.g., a local area network (“LAN”), a wide area network (“WAN”), or an intranet) or a network of networks such as the Internet. Any or all components of the electronic system (1200) may be used with the present disclosure.
[0180] Some embodiments include electronic components such as a microprocessor, storage device, and memory that store computer program instructions on a machine-readable or computer-readable medium (alternatively also referred to as a computer-readable storage medium, machine-readable medium, or machine-readable storage medium). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), writable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital multi-purpose discs (e.g., DVD-ROM, dual-layer DVD-ROM), various writable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD card, mini SD card, micro SD card, etc.), magnetic and / or solid-state hard drives, read-only and writable Blu-Ray® discs, ultra-high density optical discs, all other optical or magnetic media, and floppy disks. The computer-readable medium may store a computer program that can be executed by at least one processing unit and includes a set of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as that generated by a compiler, and files containing high-level code executed by a computer, electronic components, or microprocessor using an interpreter.
[0181] While the above discussion primarily refers to microprocessors or multi-core processors that execute software, many of the functions and applications described above are performed by one or more integrated circuits, such as Application Specific Integrated Circuits (ASICs) or Field Programmable Gate Arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored within the circuit itself. Additionally, some embodiments execute software stored in Programmable Logic Devices (PLDs), ROMs, or RAM devices.
[0182] As used in this specification and the claims of this application, the terms “computer,” “server,” “processor,” and “memory” all refer to electronic or other technical devices. These terms exclude persons or groups of persons. For the purposes of this specification, the terms “display” or “displaying” mean displaying on an electronic device. As used in this specification and the claims of this application, the terms “computer-readable medium,” “computer-readable medium,” and “machine-readable medium” are entirely limited to physical objects of a type that store information in a computer-readable format. These terms exclude wireless signals, wired download signals, and other temporary signals.
[0183] Although the present disclosure has been described with reference to a number of specific details, those skilled in the art will recognize that the present disclosure may be embodied in other specific forms without departing from the spirit of the present disclosure. Also, a number of drawings ( Fig. 8 and Fig. 11(including) conceptually exemplifies a process. Specific actions of such a process may not be performed in the exact order shown and described. Specific actions may not be performed as a single continuous series of actions, and different specific actions may be performed in different embodiments. Additionally, the process may use multiple sub-processes or be implemented as part of a larger macro process. Accordingly, those skilled in the art will understand that the present disclosure is not limited by the exemplary details foregoing but should be defined by the appended claims.
[0184] Additional notes
[0185] The subject matter described herein illustrates different components that are sometimes contained within or connected to other components. It should be understood that such illustrated architectures are merely examples, and that many other architectures may actually be implemented to achieve the same function. Any arrangement of components to achieve the same function in a conceptual sense is effectively "associated" so that the desired function is achieved. Accordingly, any two components combined in this specification to achieve a specific function may be viewed as "associated" to each other so that the desired function is achieved, regardless of the architecture or intermediate components. Likewise, any two components so associated may also be viewed as "operably connected" or "operably coupled" to each other to achieve the desired function, and any two components that may be associated in this way may also be viewed as "operably coupled" to each other to achieve the desired function. Specific examples of coupledness include, but are not limited to, components that are physically coupled and / or physically interacting, components that are wirelessly interacting and / or wirelessly interacting, and / or components that are logically interacting and / or logically interacting.
[0186] Additionally, regarding the use of substantially any plural and / or singular terms in this specification, those skilled in the art may translate from plural to singular and / or singular to plural as appropriate to the context and / or specification. For clarity, various singular / plural permutations may be explicitly described in this specification.
[0187] Furthermore, it will be understood by those skilled in the art that terms used generally in this specification, particularly in the appended claims (e.g., the body of the appended claims), are generally intended as “open-ended” terms (e.g., the term “comprising” should be interpreted as “comprising but not limited thereto,” the term “having” should be interpreted as “having at least one,” and the term “comprising” should be interpreted as “comprising but not limited thereto)). If a specific number of introduced claim descriptions are intended, such intention will be explicitly stated in the claims, and it will also be understood by those skilled in the art that if such statement is absent, such intention does not exist. For example, for the sake of understanding, the following appended claims may include the use of introductory phrases such as “at least one” and “one or more” to introduce claim descriptions. However, even when the same claim includes an introductory phrase such as "one or more" or "at least one" and an indefinite article such as "a" or "an," the introduction of a claim description by the indefinite article "a" or "an" must not be interpreted to mean that any particular claim containing such introduced claim description is limited to an invention containing only one such description (e.g., "a" and / or "an" should generally be interpreted to mean "at least one" or "one or more"); the same applies when a definite article is used to introduce a claim description. Furthermore, even where a specific number of introduced claim descriptions are explicitly stated, those skilled in the art will recognize that such description should generally be interpreted to mean at least the number stated (e.g., without other modifiers, the basic description "2 descriptions" generally means at least two descriptions or two or more descriptions).In addition, where a convention similar to "at least one of A, B, and C, etc." is used, such configuration is generally intended so that a person skilled in the art will understand the convention (e.g., "a system having at least one of A, B, and C" includes, but is not limited to, a system having A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc.). Where a convention similar to "at least one of A, B, or C, etc." is used, such configuration is generally intended so that a person skilled in the art will understand the convention (e.g., "a system having at least one of A, B, or C" includes, but is not limited to, a system having A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc.). It will also be understood by those skilled in the art that virtually any disjunctive word and / or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood as considering the possibility of including one of the terms, one of the terms, or both of the terms. For example, the phrase "A or B" will be understood as including the possibility of "A" or "B" or "A and B".
[0188] From the foregoing, it will be understood that various embodiments of the present disclosure have been described herein for illustrative purposes, and that various modifications may be made without departing from the scope and spirit of the present disclosure. Accordingly, the various embodiments disclosed herein are not intended to be limiting, and the true scope and spirit are indicated by the following claims.
Claims
Claim 1 A video decoding method comprising: receiving data from a bitstream to be decoded as a current picture of a video (the current picture is decoded by using a plurality of scaling matrices); receiving a reference index offset for a first scaling matrix among the plurality of scaling matrices; applying the reference index offset to a first index identifying the first scaling matrix to derive a second index identifying a second scaling matrix among the plurality of scaling matrices (the second scaling matrix is previously reconstructed); reconstructing the first scaling matrix by referencing the second scaling matrix; and inversely quantizing the transform coefficients of a transform block of the current picture by using the plurality of scaling matrices. A video decoding method comprising the step of reconstructing the current picture by using the inversely quantized transform coefficients, wherein a first flag of the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, and a second flag of the bitstream indicates whether the first scaling matrix is determined by (i) adding a set of delta values as elements of the first scaling matrix to the elements of the second scaling matrix or (ii) being determined by explicit signaling in the bitstream. Claim 2 A video decoding method according to claim 1, wherein the first index and the second index are respectively assigned to the first scaling matrix and the second scaling matrix according to a one-dimensional indexing method that assigns indices to the scaling matrix according to their color components, block size, and prediction type. Claim 3 In paragraph 2, the scaling matrix for coding a 2x2 transform block of chroma components for an intra-prediction type is a video decoding method in which no index is assigned according to the one-dimensional indexing method. Claim 4 A video decoding method according to paragraph 2, wherein when the first index is greater than a threshold value, the first scaling matrix has a block size of 64. Claim 5 delete Claim 6 delete Claim 7 A video decoding method according to claim 1, wherein the reference index offset is not signaled in the bitstream when another scaling matrix of a specific size identical to the first scaling matrix has not previously been coded for the current picture. Claim 8 A video decoding method according to claim 7, wherein the first scaling matrix is determined by referring to a default quantization matrix. Claim 9 A video decoding method according to claim 1, wherein the reference index offset is not signaled in the bitstream when the first index is 0, 4, or 10. Claim 10 A video decoding method according to claim 1, wherein the reference index offset is not signaled in the bitstream when the first index is 2, 8, or 14. Claim 11 A video decoding method according to claim 1, wherein the bitstream comprises a first syntax element specifying the difference between two consecutive scaling matrix coefficients of the first scaling matrix and a second syntax element specifying the DC coefficient of the first scaling matrix, and wherein the first syntax element and the second syntax element are limited to -128 to 127. Claim 12 As an electronic device, the device includes a video decoder circuit configured to perform an operation, wherein the operation comprises: receiving data from a bitstream to be decoded as a current picture of video—the current picture is decoded by using a plurality of scaling matrices—; receiving a reference index offset for a first scaling matrix among the plurality of scaling matrices; applying the reference index offset to a first index identifying the first scaling matrix to derive a second index identifying a second scaling matrix among the plurality of scaling matrices—the second scaling matrix is previously reconstructed—; reconstructing the first scaling matrix by referencing the second scaling matrix; and inversely quantizing the transform coefficients of a transform block of the current picture by using the plurality of scaling matrices. An electronic device comprising an operation of reconstructing the current picture by using the inversely quantized transformation coefficients, wherein a first flag of the bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, and a second flag of the bitstream indicates whether the first scaling matrix is determined by (i) adding a set of delta values as elements of the first scaling matrix to the elements of the second scaling matrix or (ii) by explicitly signaling in the bitstream. Claim 13 A video encoding method comprising: receiving data to be encoded into a current picture of a video, wherein the current picture is encoded by using a plurality of scaling matrices; signaling a first scaling matrix among the plurality of scaling matrices by referencing a second scaling matrix that was previously signaled among the plurality of scaling matrices; determining a reference index offset between a first index identifying the first scaling matrix and a second index identifying the second scaling matrix; signaling the determined reference index offset; encoding the current picture into a transformation factor of a transformation block; and quantizing the transformation factor by using the plurality of scaling matrices, wherein a first flag of a bitstream indicates that the corresponding elements of the first scaling matrix and the second scaling matrix are not identical, and a second flag of the bitstream indicates whether the first scaling matrix is determined by (i) adding a set of delta values as an element of the first scaling matrix to the element of the second scaling matrix or (ii) being determined by explicit signaling in the bitstream.