Messaging technology for quantization-related parameters
By analyzing and using slave quantization and symbol hiding techniques in video decoder, the inefficiency problem in existing video encoding technologies is solved, achieving more efficient video encoding and better video quality.
Patent Information
- Application Number
- CN202180008369.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-01-07
- Filing Date
- 2021-01-08
- Publication Date
- 2025-06-20
- Estimated Expiration
- 2041-01-08
AI Technical Summary
In the existing video encoding technology, the method of transmitting and quantizing related parameters has problems of inefficiency, especially when dealing with transformation coefficients in efficient video encoding and decoding systems.
A method is proposed to determine whether to use slave quantization and symbol hiding techniques to quantify slices of video images by analyzing slave quantization flags and symbol hiding flags in sequence parameter sets (SPSs) in a video decoder. The method includes determining the quantization step size and symbol bits based on parity of the transform coefficients using a pure quantizer and a symbol bit hiding technique.
By enabling slave quantization and symbol hiding, the bit rate efficiency of video encoding is improved, encoding artifacts are reduced, and the subjective quality of video content is improved.
Smart Images

Figure CN114930817B_ABST
Abstract
Description
[0001]
Cross - reference to Related Applications
[0002] This invention is part of a non - provisional application that claims priority to U.S. Provisional Patent Application No. 62 / 959,694, filed on January 10, 2020, and U.S. Provisional Patent Application No. 62 / 962,077, filed on January 16, 2020. The content of the above applications is incorporated herein by reference in its entirety.
Technical Field
[0003] This disclosure generally relates to video coding. In particular, this disclosure relates to methods for signaling transform and quantization - related parameters.
Background Art
[0004] Unless otherwise specified herein, the methods described in this section are not prior art to the claims listed below and cannot be admitted as prior art by inclusion in this section.
[0005] In a video codec system implementing High - Efficiency Video Coding (HEVC), an input video signal is predicted from a reconstructed signal, which is derived from coded picture regions. The prediction residual signal is processed by a linear transform. The transform coefficients are quantized and entropy - coded together with other auxiliary information in the bitstream. The reconstructed signal is generated based on the prediction signal and the reconstructed residual signal after inverse - transforming the inverse - quantized transform coefficients. The reconstructed signal is further processed by loop filtering to remove coding artifacts. The decoded pictures are stored in a frame buffer for output and for predicting future pictures in the input video signal.
[0006] In HEVC, a coded picture is partitioned into non - overlapping square - block regions represented by associated coding tree units (CTUs). A coded picture can be represented by a set of slices, each slice containing an integer number of CTUs. The individual CTUs in a slice are processed in raster - scan order. Up to two motion vectors and reference indices can be used to decode bi - predictive (B) slices using intra - prediction or inter - prediction to predict the sample values of each block. Up to one motion vector and reference index are used to decode predictive (P) slices using intra - prediction or inter - prediction to predict the sample values of each block. Only intra - prediction is used to decode intra (I) slices.
[0007] A recursive quadtree (QT) structure can be used to divide a CTU into multiple non - overlapping coding units (CUs) to adapt to various local motion and texture characteristics. One or more prediction units (PUs) are assigned to each CU. The prediction unit, together with the associated CU syntax, is used as the basic unit for communicating prediction sub - information. The specified prediction process is used to predict the values of the relevant pixel samples within the PU. A residual quadtree (RQT) structure can be used to further divide the CU to represent the associated prediction residual signal. The leaf nodes of the RQT correspond to transform units (TUs). The transform unit includes a transform block (TB) of luminance samples of size 8x8, 16x16, or 32x32, or four transform blocks of luminance samples of size 4x4, and two corresponding transform blocks of chrominance samples for a picture in 4:2:0 color format. An integer transform is applied to the transform block, and the level value of the quantization coefficients, along with other side information, is entropy - coded in the bitstream.
[0008] The terms coding tree block (CTB), coding block (CB), prediction block (PB), and transform block (TB) are defined as 2D sample arrays specifying one color component associated with the CTU, CU, PU, and TU, respectively. Thus, a CTU consists of a luminance CTB, two chrominance CTBs, and associated syntax elements. Similar relationships apply to the CU, PU, and TU. Tree partitioning is typically applied to luminance and chrominance simultaneously, with exceptions when the chrominance reaches certain minimum sizes. In some other coding standards, each CTU can be quadtree - divided into one or more coding units (CUs) of smaller sizes, using a nested multi - type tree with binary and ternary splits. The resulting CU partitions can be square or rectangular.
[0009] To achieve uniform quantization across spatial frequencies, a quantization matrix (QM) weights each frequency channel associated with the transform coefficients according to the perceptual sensitivity within its associated frequency range, such that the lower - frequency coefficients in the transform block are quantized with a finer quantization step size than the high - frequency coefficients. At the decoder, the corresponding quantization matrix reversely weights the inverse - quantized transform coefficients for each frequency channel. Quantization matrices have been successfully applied 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 improve the subjective quality of video content. SUMMARY OF THE INVENTION
[0010] The following summary is illustrative only 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-obvious techniques described herein. Not all implementations are described in the following detailed description. Thus, 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.
[0011] Some embodiments of the present disclosure provide a method for signaling or parsing quantization-related parameters. In some embodiments, a video decoder receives data from a bitstream to be decoded into a current picture including one or more slices. The decoder parses a sequence parameter set (SPS) from the bitstream applicable to the current sequence of video pictures including the current picture, the SPS including a first dependent quantization flag and a first sign hiding flag. When the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence, the video decoder parses a second dependent quantization flag from the bitstream to indicate whether to use dependent quantization to quantize one or more slices of the current picture. When the second dependent quantization flag indicates that dependent quantization is not used for one or more slices of the current picture and the first sign hiding flag indicates that sign hiding is enabled for the current sequence, the video decoder parses a second sign hiding flag from the bitstream for indicating whether to use sign hiding to quantize one or more slices of the current picture. The video decoder reconstructs the current picture based on the inverse quantization transform coefficients of one or more slices of the current picture based on whether dependent quantization is used and whether sign hiding is used.
[0012] When sign hiding is used to quantize one or more slices of the current picture, the sign bit of the first non-zero transform coefficient of a subset of coefficients in the one or more slices is determined based on the parity of the sum of all non-zero coefficients in the coefficient subset. When dependent quantization is used for one or more slices of the current picture, the current transform coefficients in the one or more slices of the current picture are restricted to a set of allowed (reconstructed) values determined based on a grid structure based on transform coefficients prior to the current transform coefficient in the reconstruction order. The transform coefficients of the one or more slices are quantized by a scalar quantizer determined by the parity of transform coefficients prior to the current transform coefficient in the reconstruction order.
[0013] In some embodiments, only one of dependent quantization and sign hiding is enabled for one or more slices of the current picture. In other words, dependent quantization and sign hiding are signaled specifically in the bitstream. In some embodiments, the first dependent quantization flag and the first sign hiding flag are signaled exclusively in the SPS, and when the first dependent quantization flag is signaled explicitly in the SPS to enable dependent quantization, the first sign hiding flag is not signaled in the SPS and is inferred to be disabled.
[0014] In some embodiments, a second dependent quantization flag is signaled in a picture header for one or more slices applicable to a current picture. In some embodiments, a second sign hiding flag is signaled in a picture header for one or more slices applicable to a current picture. In some embodiments, when the second dependent quantization flag indicates that dependent quantization is used for one or more slices of a current picture, the decoder infers that sign hiding will be disabled for the one or more slices of the current picture and does not parse the second sign hiding flag. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] The drawings are included to provide a further understanding of the present disclosure and are incorporated in and constitute a part of this disclosure. The drawings illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. It is understood that the drawings are not necessarily drawn to scale, as in actual implementations, some components may be shown out of proportion to their size for the purpose of clearly illustrating the concepts of the present disclosure.
[0016] Figure 1 Two scalar quantizers for dependent quantization are shown.
[0017] Figure 2 A finite state machine corresponding to the lattice structure used in dependent scalar quantization is shown.
[0018] Figure 3 The trellis structure used in the quantization process is shown.
[0019] Figure 4 A four-channel syntax signaling method for coefficients in each coding group is illustrated.
[0020] Figure 5 The selection of a probability model for scan positions in a coding group is shown.
[0021] Figure 6 An example video encoder that can implement sign hiding and dependent quantization is shown.
[0022] Figure 7 Parts of a video encoder that implement sign hiding and dependent quantization are shown.
[0023] Figure 8 Conceptually illustrates the process of a video encoder for dependent quantization and sign hiding.
[0024] Figure 9 An example video decoder that can implement sign hiding and dependent quantization is shown.
[0025] Figure 10 Parts of a video decoder that implement sign hiding and dependent quantization are shown.
[0026] Figure 11Conceptually illustrate the process of a video decoder for dependent quantization and sign hiding.
[0027] Figure 12 Conceptually illustrate an electronic system implementing some embodiments of the present disclosure.
DETAILED DESCRIPTION
[0028] In the following detailed description, numerous specific details are set forth by way of example in order to provide a thorough understanding of the relevant teachings. Any variations, derivations, and / or extensions based on the teachings described herein are within the scope of the present disclosure. In some instances, well-known methods, procedures, components, and / or circuits related to one or more example implementations disclosed herein may be described at a relatively high level without details in order to avoid unnecessarily obscuring aspects of the teachings of the present disclosure.
[0029] I. Sign Data Hiding
[0030] Sign data (or sign bit or sign) hiding is a bit rate reduction technique used when quantizing transform coefficients. Specifically, instead of explicitly signaling in the bitstream, the sign bit of the first non-zero transform coefficient of a coefficient subset (e.g., a 4x4 coding / decoding group of transform coefficients) is inferred based on the parity of the sum of all non-zero coefficients in the coefficient subset.
[0031] In some embodiments, the sign hiding technique is applied as follows: If a 4x4 coefficient subset satisfies a specific condition, the sign bit (e.g., coeff_sign_flag) of the first non-zero coefficient (of the 4x4 coefficient subset) is not encoded, and the decoder infers the sign bit from the parity of the sum of all non-zero coefficients in the coefficient subset. (For certain coding / decoding standards, the syntax element coeff_sign_flag[n] specifies the sign of the transform coefficient level at scan position n in the coefficient subset.)
[0032] In HEVC, sign hiding is applied only when the following condition is true:
[0033] (last_non_zero_position_in_subset - first_non_zero_position_in_subset) >= threshold
[0034] If sign hiding is applied to a coefficient subset, the encoder of the bitstream ensures that the parity of the sum of all non-zero coefficients in the coefficient subset matches the sign bit of the first non-zero coefficient.
[0035] II. Trellis Coded Quantization (TCQ)
[0036] Trellis Coded Quantization (TCQ) is a combination of trellis structure and set partitioning. By finding the path with the minimum distortion along the trellis structure, the coded and decoded output of several samples with the minimum distortion (measured by, for example, mean square error or MSE) can be found.
[0037] In some embodiments, TCQ is applied to implement dependent scalar quantization. Specifically, the set of admissible reconstruction values of the transform coefficients depends on the values of the transform coefficient levels before the current transform coefficient level in the reconstruction order. Figure 1 Two pure dependent scalar quantizers for TCQ dependent quantization are shown, denoted by Q0 and Q1. The positions of the available reconstruction levels are uniquely specified by the quantization step Δ. The characteristics of the two fixed pure quantizers Q0 and Q1 are as follows:
[0038] Q0: The reconstruction levels of the first quantizer Q0 are given by even integer multiples of the quantization step Δ. When using this quantizer, the reconstructed transform coefficient t' is calculated according to t' = 2·k·Δ, where k represents the relevant transform coefficient level (the transmitted quantization index).
[0039] Q1: The reconstruction levels of the second quantizer Q1 are given by odd integer multiples of the quantization step Δ, and in addition, the reconstruction level is equal to 0. The reconstruction levels of the second quantizer Q1 are given by odd integer multiples of the quantization step Δ and an additional reconstruction level equal to 0. The mapping from the transform coefficient level k to the reconstructed transform coefficient t' is specified according to t' = (2·k – sgn(k))·Δ, where sgn(·) represents the sign function sgn(x) = (k == 0? 0 : (k < 0? -1 : 1)).
[0040] The scalar quantizer (Q0 or Q1) used is not explicitly signaled in the bitstream. It is determined by the parity check of the transform coefficient levels before the current transform coefficient in the coding / decoding order. The switching is done by a finite state machine with four states. Figure 2 A finite state machine corresponding to the trellis structure used in dependent scalar quantization is shown.
[0041] During the quantization process, the video encoder / decoder traverses the trellis structure using the Viterbi algorithm. Figure 3 The trellis structure used in the quantization process is shown. At each stage, the path with the smaller distortion for each state remains unchanged. Therefore, the path can be uniquely determined during the backward traversal. Finding the levels of several samples with the minimum distortion is equivalent to finding the path that ends with the minimum distortion.
[0042] For some embodiments, Figure 4Illustrated is a four - pass syntax signaling method for coefficients in each coding group (CG) as follows:
[0043] · Pass 1: Transmit the following flags for each scan position (using the regular mode in entropy coding): sig_coeff_flag and, when sig_coeff_flag equals 1, par_level_flag and rem_abs_gt1_flag;
[0044] · Pass 2: For all scan positions where rem_abs_gt1_flag equals 1, decode rem_abs_gt2_flag using the regular mode of the arithmetic coding engine;
[0045] · Pass 3: For all scan positions where rem_abs_gt2_flag equals 1, decode the non - binary syntax element abs_remainder in the bypass mode of the arithmetic coding engine; and
[0046] · Pass 4: For all scan positions where sig_coeff_flag equals 1, decode the syntax element sign_flag in the bypass mode of the arithmetic coding engine.
[0047] Figure 5 Illustrated is the selection of the probability model for scan positions in the coding group. The figure shows a transform block 500 divided into multiple coding groups (CGs). Each CG includes transform coefficients at 4x4 scan positions. For example, for CG 510, the black square represents the current scan position and the hashed square represents its local neighbourhood. The local neighbourhood is used to select the probability model for the current scan position. Context modeling and binarization depend on the following measures of the local neighbourhood:
[0048] · numSig: The number of non - zero layers in the local neighbourhood;
[0049] · sumAbs1: The sum of the absolute levels (absLevel1) of the post - reconstruction in the first pass in the local neighbourhood;
[0050] · sumAbs: The sum of the absolute levels of the reconstruction in the local neighbourhood
[0051] · d = x + y, where x and y are the positions on the x - axis and y - axis in the current TU respectively.
[0052] The context model of sig_flag depends on the current state and can be derived as follows:
[0053] For the luminance component:
[0054] ctxIdSig = 18 * max(0, state - 1)+min(sumAbs1, 5)+(d < 2? 12 : (d < 5? 6 : 0));
[0055] For the chrominance component:
[0056] ctxIdSig = 12 * max(0, state - 1)+min(sumAbs1, 5)+(d < 2? 6 : 0));
[0057] The context model of par_level_flag is described as follows:
[0058] If the current scan position is equal to the position of the last non - zero level (indicated by the transmitted x and y coordinates), then ctxIdPar is set to be equal to 0.
[0059] Otherwise, if the current color component is the luminance component, the context index is set to
[0060] ctxIdPar = 1+min(sumAbs1 – numSig, 4)+(d == 0? 15 : (d < 3? 10 : (d < 10? 5 : 0)))
[0061] Otherwise (the current color component is the chrominance component), the context index is set to
[0062] ctxIdPar = 1+min(sumAbs1 – numSig, 4)+(d == 0? 5 : 0)
[0063] The context description of rem_abs_gtx_flag is as follows:
[0064] ctxIdGt1 = ctxIdPar
[0065] ctxIdGt2 = ctxIdPar
[0066] The non - binary syntax element abs_remainder is binarized using the same category of Rice code as in HEVC. The Rice parameter RicePar is determined as follows:
[0067] · If sumAbs – numSig is less than 12, then RicePar is set to be equal to 0.
[0068] · Otherwise, if sumAbs – numSig is less than 25, then RicePar is set to be equal to 1.
[0069] · Otherwise, set RicePar to be equal to 2.
[0070] III. Dependent Quantization and Sign-Hiding Signaling
[0071] For some embodiments, a sequence parameter set (SPS) applicable to a coded layer video sequence (CLVS) including a video picture sequence is specified according to Table 1:
[0072] Table 1: Example Sequence Parameter Set (SPS)
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083] In some embodiments, an SPS flag is added for dependent quantization. The related syntax and semantics are shown in Table 2:
[0084] Table 2: SPS with Added Flag for Dependent Quantization:
[0085]
[0086]
[0087] A value of 1 for sps_dep_quant_enabled_flag specifies that dependent quantization is available for picture decoding in the CLVS. A value of 0 for sps_dep_quant_enabled_flag specifies that dependent quantization is not used in the CLVS. When sps_dep_quant_enabled_flag does not exist, it is inferred to be equal to 0.
[0088] In some embodiments, the picture parameter set (PPS) referred to by the current picture includes syntax elements for enabling dependent quantization. Table 3 shows an example picture header where the SPS flag for dependent quantization is used to determine whether dependent quantization is enabled in picture level signaling.
[0089] Table 3: Picture Header Using SPS Flag for Dependent Quantization
[0090]
[0091]
[0092] A value of pic_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for slices associated with the picture header. A value of pic_dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled for slices associated with the PH. When pic_dep_quant_enabled_flag is absent and sps_dep_quant_enabled_flag is 0, pic_dep_quant_enabled_flag is inferred to be 0. Otherwise, when pic_dep_quant_enabled_flag is absent and sps_dep_quant_enabled_flag is 1, the value of pic_dep_quant_enabled_flag is inferred to be pps_dep_quant_enable_idc – 1.
[0093] A value of pps_dep_quant_enabled_idc equal to 0 specifies that the syntax element pic_dep_quant_enabled_flag may be present in the picture header referring to the PPS. A value of pps_dep_quant_enabled_idc equal to 1 or 2 specifies that the syntax element pic_dep_quant_enabled_flag is not present in the PH referring to the PPS. (A value of pps_dep_quant_enabled_idc equal to 3 is reserved for future use.)
[0094] In some embodiments, SPS flags are added for dependent quantization and sign hiding, and the flags for dependent quantization and the flags for sign hiding are signaled exclusively. Specifically, the sps_sign_data_hiding_enabled_flag is signaled only when dependent quantization is disabled (sps_dep_quant_enabled_flag is 0). The relevant syntax and semantics are shown in Table 4.
[0095] Table 4: SPS with flags for dependent quantization and sign hiding
[0096]
[0097]
[0098] A value of 0 for the syntax element sps_sign_data_hiding_enabled_flag specifies that sign hiding is disabled in the CLVS. A value of 1 for sign_data_hiding_enabled_flag indicates that sign hiding is enabled in the CLVS. When sps_sign_data_hiding_enabled_flag is absent, it is inferred to be equal to 0. Table 5 shows an example picture header where the SPS flags for dependent quantization and sign hiding are used to determine whether dependent quantization is enabled and sign hiding is enabled for picture level signaling (applicable to slices of the picture).
[0099] Table 5: Picture header using SPS flags for dependent quantization and sign hiding
[0100]
[0101] In some embodiments, the flag for sign hiding is signaled in the SPS before the flag for dependent quantization, and the flag for dependent quantization and the flag for sign hiding are signaled exclusively. Specifically, sps_dep_quant_enabled_flag is signaled only when sign hiding is disabled (sps_sign_data_hiding_enabled_flag is 0). Table 6 shows the corresponding example SPS.
[0102] Table 6: SPS signaling sign hiding before dependent quantization
[0103]
[0104]
[0105] In some embodiments, the SPS flags for both dependent quantization and sign hiding are signaled in the SPS, but they are restricted to be enabled exclusively. The related syntax and semantics are shown in Table 7.
[0106] Table 7: SPS signaling sign hiding and dependent quantization
[0107]
[0108]
[0109] If sps_sign_data_hidigin_enabled_flag is equal to 1, the value of sps_dep_quant_enabled_flag is constrained to be equal to 0, and if sps_dep_quant_enabled_flag is equal to 1, the value of sps_sign_data_hidigin_enabled_flag is constrained to be equal to 0.
[0110] In some embodiments, a joint dependent quantization / sign data hiding indicator exists in the SPS to indicate the switch of dependent quantization and sign data hiding. The related syntax and semantics are shown in Table 8.
[0111] Table 8: SPS with joint dependent quantization / sign data hiding indicator
[0112]
[0113]
[0114] The syntax element sps_dp_sh_enabled_idc is the joint dependent quantization / sign data hiding indicator. A value of 0 for sps_dp_sh_enabled_idc specifies that pps_dep_quant_enabled_idc is 0 and pic_dep_quant_enabled_flag and sign_data_hiding_enabled_flag do not exist in the picture header. A value of 1 for sps_dp_sh_enabled_idc specifies that sign_data_hiding_enabled_flag does not exist in the picture header. A value of 2 for sps_dp_sh_enabled_idc specifies that pps_dep_quant_enabled_idc is equal to 0 and pic_dep_quant_enabled_flag does not exist in the picture header. A value of 3 for sps_dp_sh_enabled_idc is reserved for future use. When sps_dp_sh_enabled_idc does not exist, it is inferred to be 0. Table 9 shows the picture header using the sps_dp_sh_enabled_idc indicator.
[0115] Table 9: Picture header using the SPS dependent quantization / sign data hiding indicator
[0116]
[0117]
[0118] In some embodiments, there are SPS flags for dependent quantization and sign hiding, but there is no conditional signalling between these two flags. In some embodiments, the two SPS flags for dependent quantization and sign hiding are restricted such that they are not both 1, i.e., they are enabled exclusively. The relevant syntax and semantics in the SPS are shown in Table 10.
[0119] Table 10: SPS for flags of dependent quantization and sign hiding
[0120]
[0121]
[0122] In the picture header as shown in Table 5 above, the relevant syntax for dependent quantization and sign hiding cannot appear simultaneously, and if the corresponding SPS enable flag is not enabled, they should not appear in the picture header. In some embodiments, if the dependent quantization enable flag in the SPS is equal to 0, there should be no dependent quantization-related syntax in the picture header, regardless of whether the sign hiding flag indicates on or off.
[0123] In some embodiments, if sps_dep_quant_enabled_flag is equal to 1, pic_dep_quant_enabled_flag is signalled in the picture header. The signalling condition does not include the PPS flag (e.g., pps_dep_quant_enabled_flag). For example, if sps_dep_quant_enabled_flag is equal to 0, pic_dep_quant_enabled_flag should not exist.
[0124] In some embodiments, sign_data_hiding_enabled_flag is signalled before pic_dep_quant_enabled_flag. There is no conditional signalling between these two flags. In some embodiments, these two flags cannot both be 1, i.e., they should be enabled exclusively. If sign_data_hiding_enabled_flag is equal to 1, pic_dep_quant_enabled_flag shall not appear in the picture header.
[0125] IV. Example video encoder
[0126] Figure 6Describe an example video encoder 600 that can implement symbol hiding and dependent quantization. As shown in the figure, 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 the signal from the video source 605, including at least some components selected from the following: 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-frame prediction module 625, a motion compensation module 630, a motion estimation module 635, a 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-frame prediction module 640.
[0127] In some embodiments, the modules 610 - 690 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device or electronic device. In some embodiments, the modules 610 - 690 are hardware circuit modules implemented by one or more integrated circuits (ICs) of an electronic device. Although the modules 610 - 690 are shown as separate modules, some modules can be combined into a single module.
[0128] The video source 605 provides an original video signal that presents uncompressed pixel data for each video frame. A subtractor 608 calculates the difference between the original video pixel data of the video source 605 and the predicted pixel data 613 from the motion compensation module 630 or the intra-frame prediction module 625. The transform module 610 converts the difference (or residual pixel data or residual signal 609) into transform coefficients (e.g., by performing a discrete cosine transform or DCT) 616. The quantization module 611 quantizes the transform coefficients into quantized data (or quantized coefficients) 612, which are encoded by the entropy encoder 690 into the bitstream 695.
[0129] The inverse quantization module 614 inverse quantizes the quantized data (or quantized coefficients) 612 to obtain transform coefficients, and the inverse transform module 615 performs an inverse transform on the transform coefficients to generate a reconstructed residual 619. The reconstructed residual 619 is added to the predicted pixel data 613 to generate 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 the loop filter 645 and stored in the reconstructed picture buffer 650. In some embodiments, the reconstructed picture buffer 650 is a memory external to the video encoder 600. In some embodiments, the reconstructed picture buffer 650 is a memory internal to the video encoder 600.
[0130] The in-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 to be encoded into the bitstream 695. The intra prediction data is also used by the intra prediction module 625 to generate predicted pixel data 613.
[0131] The motion estimation module 635 performs inter prediction by generating MVs to reference the pixel data of previously decoded frames stored in the reconstructed picture buffer 650. These MVs are provided to the motion compensation module 630 to generate predicted pixel data.
[0132] Instead of encoding the complete actual MVs in the bitstream, the video encoder 600 uses MV prediction to generate predicted MVs, and the difference between the MVs used for motion compensation and the predicted MVs is encoded as residual motion data and stored in the bitstream 695.
[0133] The MV prediction module 675 generates predicted MVs based on the reference MVs generated for encoding previous video frames, i.e., the motion compensation MVs used for performing motion compensation. The MV prediction module 675 extracts the reference MVs from the previous video frames in the MV buffer 665. The video encoder 600 stores the MVs generated for the current video frame in the MV buffer 665 as reference MVs for generating predicted MVs.
[0134] The MV prediction module 675 uses the reference MVs to create predicted MVs. The predicted MVs can be calculated by spatial MV prediction or temporal MV prediction. The difference (residual motion data) between the predicted MVs of the current frame and the motion compensation MVs (MC MVs) is encoded by the entropy encoder 690 into the bitstream 695.
[0135] The entropy encoder 690 encodes various parameters and data into the bitstream 695 by using entropy encoding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman coding. The entropy encoder 690 encodes various header elements, flags together with the quantized transform coefficients 612 and the residual motion data as syntax elements into the bitstream 695. The bitstream 695 is then stored in a storage device or transmitted via a communication medium such as a network to a decoder.
[0136] The loop filter 645 performs filtering or smoothing operations on the reconstructed pixel data 617 to reduce coding artifacts, especially at the boundaries of pixel blocks. In some embodiments, the filtering operations performed include sample adaptive offset (SAO). In some embodiments, the filtering operations include an adaptive loop filter (ALF).
[0137] Figure 7Shows a portion of video encoder 600 that implements sign hiding and dependent quantization. Specifically, the figure illustrates components of encoder 600 that generate, quantize, and entropy code transform coefficients into bitstream 695. As shown, transform module 610 transforms the original pixel data into transform coefficients to be quantized by quantizer 611. Coefficient parity check module 700 calculates a parity check 710 of the sum of all non-zero coefficients in a subset of coefficients (e.g., a 4x4 coding group). When sign hiding is enabled for the subset, encoder 600 ensures that the parity check of the sum of all non-zero coefficients in the coefficient subset matches the sign bit of the first non-zero coefficient by, for example, changing the least significant bit of the coefficients in the coefficient subset, or by forcing sign hiding to be disabled.
[0138] Quantizer 611 quantizes the received coefficients based on whether dependent quantization is enabled and whether sign hiding is enabled. When sign hiding is enabled, the sign bit of the first non-zero coefficient is not part of the quantized coefficients 612 provided to entropy encoder 690. When dependent quantization is enabled, the quantization of the current transform coefficient is restricted to a set of admissible values that are determined based on the transform coefficients preceding the current transform coefficient according to the reconstruction order of the grid structure.
[0139] Entropy encoder 690 entropy codes the quantized coefficients 612 into bitstream 695 along with flags indicating whether dependent quantization and / or sign hiding is enabled. In some embodiments, the dependent quantization and / or sign hiding flags are signaled exclusively, e.g., the sign hiding flag is explicitly signaled only when the flag for dependent quantization indicates that dependent quantization is disabled, otherwise it is inferred that sign hiding is disabled. In some embodiments, the flags for dependent quantization and / or sign hiding are signaled at the sequence level (e.g., in the SPS) applicable to pictures in the sequence and at the picture level (e.g., in the PH) applicable to slices of the picture.
[0140] Figure 8 Conceptually illustrates process 800 that video encoder 600 uses for dependent quantization and sign hiding. In some embodiments, one or more processing units (e.g., processors) of a computing device implement encoder 600 by executing instructions stored in a computer-readable medium to perform process 800. In some embodiments, an electronic device that implements encoder 600 performs process 800.
[0141] The encoder receives (at block 810) data to be encoded as a current picture having one or more slices into the bitstream.
[0142] The encoder (at block 820) encodes a sequence parameter set (SPS) applicable to a video picture sequence including the current picture into the bitstream. The SPS includes a first dependent quantization flag (e.g., sps_dep_quant_enabled_flag as shown in Table 4) and a first sign hiding flag (e.g., sps_sign_data_hiding_enabled_flag as shown in Table 4). In some embodiments, only one of dependent quantization and sign hiding is enabled for one or more slices of the current picture. In other words, dependent quantization and sign hiding are signaled specifically in the bitstream. In some embodiments, the first dependent quantization flag and the first sign hiding flag are signaled exclusively in the SPS, and when the first dependent quantization flag is signaled explicitly in the SPS to enable dependent quantization, the first sign hiding flag is not signaled in the SPS and is inferred to disable sign hiding.
[0143] The encoder determines (at block 830) whether the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence. If dependent quantization is enabled, the process proceeds to 840. Otherwise, the process proceeds to 860.
[0144] The encoder signals (at block 840) a second dependent quantization flag (e.g., pic_dep_quant_enabled_flag as shown in Table 5) to the bitstream to indicate whether dependent quantization is used to quantize one or more slices of the current picture. In some embodiments, the second dependent quantization flag is signaled in the picture header applicable to one or more slices of the current picture.
[0145] The encoder determines (at block 850) whether the second dependent quantization flag indicates that dependent quantization is used for one or more slices of the current picture. If dependent quantization is used, the process proceeds to block 855. If dependent quantization is not used, the process proceeds to block 860. When dependent quantization is used for one or more slices of the current picture, the current transform coefficients in one or more slices of the current picture are restricted to a set of allowable (reconstructed) values that are determined based on transform coefficients that are in the reconstruction order and are prior to the current transform coefficients according to a grid structure. The transform coefficients of one or more slices are quantized by a scalar quantizer that is determined by the parity of transform coefficients that are in the reconstruction order and are prior to the current transform coefficients.
[0146] The encoder infers (at block 855) that sign hiding will be disabled for one or more slices of the current picture and does not parse the second sign hiding flag. Then the process proceeds to 880.
[0147] The encoder determines (at block 860) whether the first symbol hiding flag indicates that symbol hiding is enabled for the current sequence. If symbol hiding is enabled for the current sequence, the process proceeds to block 870. If symbol hiding is not enabled for the current sequence, the process proceeds to 865.
[0148] The encoder infers (at block 865) that symbol hiding is disabled for one or more slices of the current picture and does not parse the second symbol hiding flag. Then the process proceeds to 880.
[0149] The encoder signals (at block 870) the second symbol hiding flag (e.g., sign_data_hiding_enable_flag as shown in Table 5) to the bitstream to indicate whether symbol hiding is used to quantize one or more slices of the current picture. In some embodiments, the second symbol hiding flag is signaled in a picture header applicable to one or more slices of the current picture. When symbol hiding is used to quantize one or more slices of the current picture, the sign bit of the first non-zero transform coefficient of a subset of coefficients in one or more slices is determined based on the parity of the sum of all non-zero coefficients in the coefficient subset. Then the process proceeds to 880.
[0150] The encoder encodes (at block 880) the quantized transform coefficients of one or more slices of the current picture into the bitstream. The quantization of the transform coefficients is performed based on whether dependent quantization is used and whether symbol hiding is used.
[0151] V. Example Video Decoder
[0152] Figure 9 An example video decoder 900 that can implement symbol hiding and dependent quantization is described. As shown, video decoder 900 is a picture decoding or video decoding circuit that receives bitstream 995 and decodes the content of the bitstream into pixel data of video frames for display. Video decoder 900 has several components or modules for decoding bitstream 995, including some components selected from inverse quantization module 911, inverse transform module 910, intra prediction module 925, motion compensation module 930, loop filter 945, decoded picture buffer 950, MV buffer 965, MV prediction module 975, and parser 990. Motion compensation module 930 is part of inter prediction module 940.
[0153] In some embodiments, modules 910 - 990 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device. In some embodiments, modules 910 - 990 are hardware circuit modules implemented by one or more ICs of an electronic device. Although modules 910 - 990 are shown as separate modules, some modules can be combined into a single module.
[0154] The parser 990 (or entropy decoder) receives the bitstream 995 and performs an initial parsing according to the syntax defined by the video coding or picture coding standard. The parsed syntax elements include various header elements, flags, and quantized data (or quantized coefficients) 912. The parser 990 parses out each syntax element by using, for example, context adaptive binary arithmetic coding (CABAC) or Huffman coding.
[0155] The inverse quantization module 911 inverse quantizes the quantized data (or quantized coefficients) 912 to obtain transform coefficients, and the inverse transform module 910 inverse transforms the transform coefficients 916 to generate a reconstructed residual signal 919. The reconstructed residual signal 919 is added to the predicted pixel data 913 from the intra prediction module 925 or the motion compensation module 930 to generate decoded pixel data 917. The decoded pixel data is filtered by the loop filter 945 and stored in the decoded picture buffer 950. In some embodiments, the decoded picture buffer 950 is a memory external to the video decoder 900. In some embodiments, the decoded picture buffer 950 is a memory internal to the video decoder 900.
[0156] The intra prediction module 925 receives intra prediction data from the bitstream 995 and generates predicted pixel data 913 from the decoded pixel data 917 stored in the decoded picture buffer 950 according to the data. 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 content of the decoded picture buffer 950 is used for display. The display device 955 either extracts the content of the decoded picture buffer 950 for direct display or extracts the content of the decoded picture buffer into a display buffer. In some embodiments, the display device receives pixel values from the decoded picture buffer 950 through pixel transport.
[0158] The motion compensation module 930 generates predicted pixel data 913 from the decoded pixel data 917 stored in the decoded picture buffer 950 according to the motion compensation MV (MC MV). These motion compensation MVs are decoded by adding the residual motion data received from the bitstream 995 to the predicted MV received from the MV prediction module 975.
[0159] The MV prediction module 975 generates a predicted MV based on the reference MVs generated for decoding previous video frames, for example, the motion compensation MVs used for performing motion compensation. The MV prediction module 975 retrieves the reference MVs of the previous video frames from the MV buffer 965. The video decoder 900 stores the motion compensation MVs generated for decoding the current video frame in the MV buffer 965 as reference MVs for generating predicted MVs.
[0160] The loop filter 945 performs filtering or smoothing operations on the decoded pixel data 917 to reduce coding artifacts, especially at the boundaries of pixel blocks. In some embodiments, the filtering operations performed include sample adaptive offset (SAO). In some embodiments, the filtering operations include an adaptive loop filter (ALF).
[0161] Figure 10 Illustrates a portion of the video decoder 900 that implements sign hiding and dependent quantization. Specifically, the figure illustrates components of the decoder 900 that parse, dequantize, and inverse-transform coefficients from the bitstream 995. As shown, the entropy decoder 990 provides the quantized transform coefficients 912 parsed from the bitstream 995 to the inverse quantizer 911.
[0162] The entropy decoder 990 also parses the bitstream 995 to obtain flags indicating whether dependent quantization and / or sign hiding is enabled. In some embodiments, the dependent quantization and / or sign hiding flags are signaled exclusively. For example, the flag for sign hiding is explicitly signaled only when the flag for dependent quantization indicates that dependent quantization is disabled; otherwise, it is inferred that sign hiding is disabled. In some embodiments, the flags for dependent quantization and / or sign hiding are signaled at the sequence level (e.g., in the SPS) applicable to pictures in the sequence and at the picture level (e.g., in the PH) applicable to slices of the picture.
[0163] The inverse quantizer 911 inverse-quantizes the transform coefficients based on whether dependent quantization is enabled and whether sign hiding is enabled. When sign hiding is enabled, the sign bit of the first non-zero coefficient is not explicitly signaled in the bitstream but is inferred from the parity 1010 calculated by the coefficient parity checker 1000 based on the sum of all non-zero coefficients in a coefficient subset (e.g., a 4x4 coding / decoding group). When dependent quantization is enabled, the inverse quantization of the current transform coefficient is restricted to a set of admissible values that are determined based on transform coefficients that are in the reconstruction order and are located before the current transform coefficient according to a grid structure.
[0164] The inverse transform module 910 then receives the inverse-quantized coefficients 916 provided by the inverse quantizer 911 and performs an inverse transform to reconstruct the pixel data of the current block.
[0165] Figure 11 Conceptually illustrates the process 1100 of the video decoder 900 for dependent quantization and sign hiding. In some embodiments, one or more processing units (e.g., processors) of a computing device implement the decoder 900 to execute the process 1100 by executing instructions stored in a computer-readable medium. In some embodiments, an electronic device implementing the decoder 900 executes the process 1100.
[0166] The decoder receives (at block 1110) data from a bitstream to be decoded into a current picture having one or more slices.
[0167] The decoder parses (at block 1120) a sequence parameter set (SPS) from the bitstream applicable to a video picture sequence including the current picture. The SPS includes a first dependent quantization flag (e.g., sps_dep_quant_enabled_flag as shown in Table 4) and a first sign data hiding flag (e.g., sps_sign_data_hiding_enabled_flag as shown in Table 4). In some embodiments, only one of dependent quantization and sign data hiding is enabled for one or more slices of the current picture. In other words, dependent quantization and sign data hiding are signaled exclusively in the bitstream. In some embodiments, the first dependent quantization flag and the first sign data hiding flag are signaled exclusively in the SPS, and when the first dependent quantization flag is signaled explicitly in the SPS to enable dependent quantization, the first sign data hiding flag is not signaled in the SPS and is inferred to disable sign data hiding.
[0168] The decoder determines (at block 1130) whether the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence. If dependent quantization is enabled, the process proceeds to 1140. Otherwise, the process proceeds to 1160.
[0169] The decoder parses (at block 1140) a second dependent quantization flag (e.g., pic_dep_quant_enabled_flag as shown in Table 5) from the bitstream to indicate whether to use dependent quantization to quantize one or more slices of the current picture. In some embodiments, the second dependent quantization flag is signaled in a picture header applicable to one or more slices of the current picture.
[0170] The decoder determines (at block 1150) whether the second dependent quantization flag indicates that dependent quantization is used for one or more slices of the current picture. If dependent quantization is used, the process proceeds to block 1155. If dependent quantization is not used, the process proceeds to block 1160. When dependent quantization is used for one or more slices of the current picture, the current transform coefficients in one or more slices of the current picture are restricted to a set of allowable (reconstructed) values that are determined based on transform coefficients that are in the reconstruction order and are before the current transform coefficients according to a grid structure. The transform coefficients of one or more slices are quantized by a scalar quantizer that is determined by the parity of the transform coefficients that are in the reconstruction order and are before the current transform coefficients.
[0171] The decoder infers (at block 1155) that sign data hiding will be disabled for one or more slices of the current picture and does not parse a second sign data hiding flag. The process then proceeds to 1180.
[0172] The decoder determines (at block 1160) whether the first symbol hiding flag indicates that symbol hiding is enabled for the current sequence. If symbol hiding is enabled for the current sequence, the process proceeds to block 1170. If symbol hiding is not enabled for the current sequence, the process proceeds to 1165.
[0173] The decoder infers (at block 1165) that symbol hiding is disabled for one or more slices of the current picture and does not parse the second symbol hiding flag. The process then proceeds to 1180.
[0174] The decoder parses (at block 1170) the second symbol hiding flag (e.g., sign_data_hiding_enable_flag as shown in Table 5) from the bitstream to indicate whether symbol hiding is used to quantize one or more slices of the current picture. In some embodiments, the second symbol hiding flag is signaled in the picture header applicable to one or more slices of the current picture. When symbol hiding is used to quantize one or more slices of the current picture, the sign bit of the first non-zero transform coefficient of a subset of coefficients in one or more slices is determined based on the parity of the sum of all non-zero coefficients in that coefficient subset. The process then proceeds to block 1180.
[0175] The decoder reconstructs (at block 1180) the current picture based on the inverse-quantized transform coefficients of one or more slices of the current picture. The transform coefficients are inverse-quantized based on whether dependent quantization is used and whether symbol hiding is used.
[0176] VI. Example Electronic Systems
[0177] Many of the above features and applications are implemented as software processes specified as a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When these instructions are executed by one or more computing or processing units (e.g., one or more processors, cores of a processor, or other processing units), they cause the processing unit to perform the actions indicated in the instructions. Examples of computer-readable media include, but are not limited to, CD-ROMs, flash drives, random access memory (RAM) chips, hard disk drives, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc. Computer-readable media do not include carrier waves and electronic signals transmitted wirelessly or via a wired connection.
[0178] In this specification, the term "software" is intended to include firmware residing in read-only memory or application programs stored in magnetic memory, which can be read into memory for processing by a processor. Additionally, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while retaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement the software inventions described herein is within the scope of this disclosure. In some embodiments, when a software program is installed to run on one or more electronic systems, the software program defines one or more specific machine implementations that execute and implement the operations of the software program.
[0179] Figure 12 Conceptually illustrated is an electronic system 1200 that implements some embodiments of the present disclosure. The electronic system 1200 can 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 for 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, a read-only memory 1230, a permanent storage device 1235, an input device 1240, and an output device 1245.
[0180] The bus 1205 collectively represents all system, peripheral, and chipset buses that communicatively connect numerous internal devices of the electronic system 1200. For example, the bus 1205 communicatively connects the processing unit 1210 to the GPU 1215, the read-only memory 1230, the system memory 1220, and the permanent storage device 1235.
[0181] To execute the processes of the present disclosure, the processing unit 1210 retrieves the instructions to be executed and the data to be processed from these different memory units. In different embodiments, the processing unit can 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 can offload various computations or supplement the picture processing provided by the processing unit 1210.
[0182] The read-only memory (ROM) 1230 stores static data and instructions for use by the processing unit 1210 and other modules of the electronic system. On the other hand, the permanent storage device 1235 is a read-write storage device. This device is a non-volatile memory unit that can store instructions and data even when the electronic system 1200 is turned off. Some embodiments of the present disclosure use a mass storage device (such as a magnetic disk or an optical disk and its corresponding disk drive) as the permanent storage device 1235.
[0183] Other embodiments use removable storage devices (such as floppy disks, flash memory devices, etc., and their corresponding disk drives) as the permanent storage device. Like the permanent storage device 1235, the system memory 1220 is a read-write storage device. However, unlike the storage device 1235, the system memory 1220 is a volatile read-write memory, such as random access memory. The system memory 1220 stores some instructions and data used by the processor during operation. In some embodiments, the processes according to the present disclosure are stored in the system memory 1220, the permanent storage device 1235, and / or the read-only memory 1230. For example, various storage units include instructions for processing multimedia clips according to the present disclosure and some embodiments. From these different memory units, the processing unit 1210 retrieves the instructions to be executed and the data to be processed in order to execute the processes of some embodiments.
[0184] The bus 1205 is also connected to the input and output devices 1240 and 1245. The input device 1240 enables a user to transmit information to and select commands for the electronic system. The input device 1240 includes an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"), a camera (e.g., a webcam), a microphone, or a similar device for receiving voice commands, etc. The output device 1245 displays data output by the electronic system or otherwise. The output device 1245 includes a printer and a display device, such as a cathode ray tube (CRT) or a liquid crystal display (LCD), as well as a speaker or a similar audio output device. Some embodiments include devices that serve as both input and output devices, such as a touch screen.
[0185] Finally, in Figure 12 the bus 1205 also couples the electronic system 1200 to a network 1225 via a network adapter (not shown). In this way, the computer can be a computer network (such as 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 can be used in combination with the present disclosure.
[0186] Some embodiments include storing computer program instructions in a machine-readable or computer-readable medium (or referred to as a computer-readable storage medium, a machine-readable medium, or a machine-readable storage medium). Some examples of such computer-readable media include RAM, ROM, a compact disc read-only memory (CD-ROM), a recordable compact disc (CD-R), a rewritable compact disc (CD-RW), a read-only digital versatile disc (e.g., DVD-ROM, dual-layer DVD-ROM), various recordable / rewritable DVDs (such as DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (such as SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and / or solid state disk drives, read-only and recordable Optical discs, ultra-dense optical discs, any other optical or magnetic medium, and floppy disks. A computer-readable medium can store a computer program executable by at least one processing unit and including an instruction set for performing various operations. Examples of computer programs or computer code include machine code such as that produced by a compiler, and files including high-level code executable by a computer, an electronic component, or a microprocessor using an interpreter.
[0187] Although the foregoing discussion mainly relates to a microprocessor or multi-core processor that executes software, many of the above features and applications are performed by one or more integrated circuits, such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA). In some embodiments, such an integrated circuit executes instructions stored on the circuit itself. Additionally, some embodiments execute software stored in a programmable logic device (PLD), a ROM, or a RAM device.
[0188] As used in this specification and in any claims of this application, the terms "computer", "server", "processor", and "memory" all refer to electronic or other technical devices. These terms do not include a person or a group of people. For the purposes of the specification, the term display or displaying means displaying on an electronic device. The terms "computer-readable medium", "computer-readable media", and "machine-readable medium" as used in this specification and in any claims of this application are entirely limited to tangible physical objects that store information in a form readable by a computer. These terms do not include any wireless signals, wired download signals, and any other transient signals.
[0189] Although the present disclosure has been described with reference to many specific details, those skilled in the art will recognize that the present disclosure can be embodied in other specific forms without departing from the spirit of the present disclosure. Additionally, many of the figures (including Figure 8 and Figure 11 ) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in a continuous series of operations, and different specific operations may be performed in different embodiments. Additionally, the process can be implemented using several sub-processes, or as part of a larger macro-process. Accordingly, those skilled in the art will understand that the present disclosure is not limited by the foregoing illustrative details, but is defined by the appended claims.
[0190] The subject matter described herein sometimes shows different components that are included within or connected to other different components. It should be understood that the architectures so depicted are merely exemplary, and in fact, many other architectures that achieve the same functionality can be implemented. In a conceptual sense, any arrangement of components that achieve the same functionality is effectively "associated" so as to achieve the desired functionality. Thus, any two components that are combined in the text to obtain a particular functionality can be regarded as "associated" with each other to achieve the desired functionality, regardless of the architecture or intermediate components. Similarly, any two such associated components can also be regarded as "operatively connected" or "operatively coupled" to each other to achieve the desired functionality, and any two components that can be so associated can also be regarded as "operatively couplable" to each other to achieve the desired functionality. Specific examples of "operatively couplable" include, but are not limited to: physically connectable and / or physically interacting components, and / or wirelessly interacting and / or wirelessly interacting components, and / or logically interacting and / or logically interactable components.
[0191] Moreover, with regard to the use of substantially any plural and / or singular terms herein, as long as it is appropriate for the context and / or application, those skilled in the art can transform the plural into the singular and / or the singular into the plural. For clarity, various singular / plural permutations may be explicitly set forth herein.
[0192] Those skilled in the art will understand that, generally, the terms used in the text, especially the terms used in the appended claims (e.g., the subject matter in the appended claims), are generally intended to be "open" terms (e.g., the term "comprising" should be interpreted as "comprising but not limited to", the term "having" should be interpreted as "having at least", the term "including" should be interpreted as "including but not limited to", etc.). Those skilled in the art will also understand that if the specific number of the claimed subject matter is intended, such an intention will be clearly stated in the claims. In the absence of such a statement, there is no such intention. For example, for the sake of understanding, the appended claims may include the use of introductory phrases such as "at least one" and "one or more" to introduce the claimed subject matter. However, the use of such phrases should not be construed as: the introduction of a claimed subject matter with the indefinite article "a" or "an" limits any claim containing such introduced claimed subject matter to an invention that only includes one such subject matter, even when the same claim contains an introductory phrase such as "one or more" or "at least one" and an indefinite article such as "a" or "an" (e.g., "a" and / or "an" should generally be interpreted as meaning "at least one" or "one or more"); the same applies to the case of introducing a claimed subject matter with a definite article. Additionally, even if the specific number of the introduced claimed subject matter is clearly stated, those skilled in the art will also recognize that such a statement should generally be interpreted as meaning at least the stated number (e.g., a statement of "only two subject matters" without other modifiers generally means at least two subject matters, or two or more subject matters). Furthermore, in the case of using idiomatic expressions such as "at least one of A, B, and C, etc.", generally such a structure is intended to have the meaning understood by those skilled in the art of such an idiomatic expression (e.g., "a system having at least one of A, B, and C" will include but not be 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.). In the case of using idiomatic expressions such as "at least one of A, B, or C, etc.", generally such a structure is intended to have the meaning understood by those skilled in the art of such an idiomatic expression (e.g., "a system having at least one of A, B, or C" will include but not be 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.). Those skilled in the art will further understand that, regardless of whether in the specification, claims, or drawings, almost any disjunctive word and / or phrase representing two or more alternative terms should be understood to contemplate the possibility of including one of the terms, any one of the terms, or all two terms.For example, the phrase "A or B" should be understood to include the possibilities of "A", "B", or "A and B".
[0193] From the foregoing, it can be understood that the present disclosure has been described for purposes of illustration, and various modifications can 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 appended claims.
Claims
1. A video decoding method, comprising: Receive data from a bitstream and decode it into a current picture including one or more slices; Determine a first dependent quantization flag and a first sign hiding flag based on at least one syntax element in a sequence parameter set of the bitstream applicable to a current video picture sequence including the current picture, wherein the first dependent quantization flag indicates whether dependent quantization is enabled for the current sequence, and the first sign hiding flag indicates whether sign hiding is enabled for the current sequence; When the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence, parse a second dependent quantization flag from the bitstream, the second dependent quantization flag indicating whether the one or more slices of the current picture are quantized using the dependent quantization; When the second dependent quantization flag indicates that the one or more slices of the current picture are not quantized using the dependent quantization and the first sign hiding flag indicates that sign hiding is enabled for the current sequence, parse a second sign hiding flag from the bitstream, the second sign hiding flag indicating whether the one or more slices of the current picture are quantized using sign hiding; And Reconstruct the current picture based on transform coefficients of the one or more slices of the current picture, the transform coefficients being generated based on whether the dependent quantization is used and whether the quantized coefficients of the one or more slices of the current picture are inverse quantized using the sign hiding.
2. The video decoding method according to claim 1, wherein, When the second dependent quantization flag indicates that the dependent quantization is used for the one or more slices, infer that sign hiding is disabled for the one or more slices of the current picture, and the second sign hiding flag is not parsed.
3. The video decoding method according to claim 1, wherein when the first symbol concealment flag indicates that symbol concealment is disabled for the current sequence, it is inferred that symbol concealment is disabled for the one or more slices of the current picture, and the second symbol concealment flag is not parsed.
4. The video decoding method according to claim 1, wherein for the one or more slices of the current picture, only one of the dependent quantization and the symbol concealment is used or neither the dependent quantization nor the symbol concealment is used.
5. The video decoding method according to claim 1, wherein, When the one or more slices of the current picture are quantized using the sign hiding, the sign bit of the first non-zero transform coefficient of a subset of coefficients in the one or more slices is determined based on the parity of the sum of all non-zero coefficients in the coefficient subset.
6. The video decoding method according to claim 1, wherein when the dependent quantization is used to quantize the one or more slices of the current picture, the current transform coefficients in the one or more slices of the current picture are restricted to a set of admissible values, and the set of admissible values is determined based on the transform coefficients before the current transform coefficient in the reconstruction order of decoding the bitstream.
7. The video decoding method according to claim 6, wherein, The transform coefficients of the one or more slices are quantized by a scalar quantizer, the scalar quantizer being determined by the parity of the transform coefficients that are in the reconstruction order before the current transform coefficient when decoding the bitstream.
8. The video decoding method according to claim 1, wherein the second dependent quantization flag is signaled in a picture header applicable to the one or more slices of the current picture.
9. The video decoding method according to claim 1, wherein the second symbol concealment flag is signaled in a picture header applicable to the one or more slices of the current picture.
10. The video decoding method according to claim 1, wherein, Only one of the first dependent quantization flag and the first sign hiding flag is signaled in the sequence parameter set applied to the current sequence, wherein when the first dependent quantization flag is explicitly signaled in the sequence parameter set to enable the dependent quantization for the current sequence, the first sign hiding flag is not signaled in the sequence parameter set applied to the current sequence and is inferred to be disabled for the current sequence.
11. A video encoding method, comprising: Receive raw pixel data and encode it into a current picture including one or more slices into a bitstream; Encode a sequence parameter set applicable to a current sequence of video pictures including the current picture into the bitstream, the sequence parameter set including at least one syntax element indicating a first dependent quantization flag and a first sign hiding flag, wherein the first dependent quantization flag indicates whether dependent quantization is enabled for the current sequence, and the first sign hiding flag indicates whether sign hiding is enabled for the current sequence; When the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence, a second dependent quantization flag is signaled in the bitstream, the second dependent quantization flag being used to indicate whether dependent quantization is used to quantize the one or more slices of the current picture; When the second dependent quantization flag indicates that the one or more slices of the current picture are not quantized using dependent quantization and the first symbol concealment flag indicates that symbol concealment is enabled for the current sequence, a second symbol concealment flag is signaled in the bitstream, the second symbol concealment flag indicating whether symbol concealment is used to quantize the one or more slices of the current picture; and encoding quantization coefficients of the one or more slices of the current picture into the bitstream, the quantization coefficients being generated based on whether dependent quantization and whether symbol concealment are used to quantize transform coefficients of the one or more slices of the current picture.
12. The video encoding method according to claim 11, wherein for one or more slices of the current picture, only one of the subordinate quantization and the symbol hiding is used or neither the subordinate quantization nor the symbol hiding is used.
13. An electronic device, comprising: A video decoder circuit configured to perform operations including the following: receiving data from a bitstream to decode it into a current picture including one or more slices; determining a first dependent quantization flag and a first symbol concealment flag based on at least one syntax element in a sequence parameter set of the bitstream applicable to a current video picture sequence including the current picture, wherein the first dependent quantization flag indicates whether dependent quantization is enabled for the current sequence, and the first symbol concealment flag indicates whether symbol concealment is enabled for the current sequence; when the first dependent quantization flag indicates that dependent quantization is enabled for the current sequence, parsing a second dependent quantization flag from the bitstream, the second dependent quantization flag indicating whether dependent quantization is used to quantize the one or more slices of the current picture; when the second dependent quantization flag indicates that the one or more slices of the current picture are not quantized using dependent quantization and the first symbol concealment flag indicates that symbol concealment is enabled for the current sequence, parsing a second symbol concealment flag from the bitstream, the second symbol concealment flag indicating whether symbol concealment is used to quantize the one or more slices of the current picture; and reconstructing the current picture based on transform coefficients of the one or more slices of the current picture, the transform coefficients being generated based on whether dependent quantization and whether symbol concealment are used to inverse quantize quantization coefficients of the one or more slices of the current picture.
14. The electronic device according to claim 13, wherein for one or more slices of the current picture, only one of the subordinate quantization and the symbol hiding is used or neither the subordinate quantization nor the symbol hiding is used.
Citation Information
Patent Citations
Trellis coded quantization coefficient coding
US20190387259A1