WO2022187026A2 - Dependent quantization state transition method for video coding - Google Patents

Dependent quantization state transition method for video coding Download PDF

Info

Publication number
WO2022187026A2
WO2022187026A2 PCT/US2022/017272 US2022017272W WO2022187026A2 WO 2022187026 A2 WO2022187026 A2 WO 2022187026A2 US 2022017272 W US2022017272 W US 2022017272W WO 2022187026 A2 WO2022187026 A2 WO 2022187026A2
Authority
WO
WIPO (PCT)
Prior art keywords
quantization level
current
state
level
flag
Prior art date
Application number
PCT/US2022/017272
Other languages
French (fr)
Other versions
WO2022187026A3 (en
Inventor
Yue Yu
Haoping Yu
Original Assignee
Innopeak Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopeak Technology, Inc. filed Critical Innopeak Technology, Inc.
Priority to CN202280015847.XA priority Critical patent/CN116965021A/en
Publication of WO2022187026A2 publication Critical patent/WO2022187026A2/en
Publication of WO2022187026A3 publication Critical patent/WO2022187026A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • the present disclosure relates, in general, to methods, systems, and apparatuses for multimedia encoding and decoding.
  • Dependent quantization is a technique used in video coding to reduce the dynamic range of a video signal such that fewer bits are used to represent the video signal.
  • Quantization typically involves division by a quantization step size and subsequent rounding while inverse quantization involves multiplication by the quantization step size.
  • Such quantization process is also called scalar quantization.
  • the quantization of all coefficients within a block can be done independently and this kind of quantization method is used in some existing video compression standards, such as H.264 and high efficiency video coding (HEVC).
  • HEVC high efficiency video coding
  • multiple quantizers may be used. Determining which of the multiple quantizers will be used to quantize a given coefficient typically depends on the information preceding the current coefficient in coding scan order.
  • Such quantization approach is also referred to as dependent quantization, and is used, for example, in versatile video coding (VVC) or H.266.
  • Information used to determine the next quantizer is determined through state transitions. Conventional state transition algorithms may impact performance and complexity for the quantization process.
  • a method for state transition in dependent quantization may include obtaining a current quantization level of a block of video data from an encoded bit stream, and entering a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state.
  • the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag a significant coefficient flag
  • the method may further include selecting one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantizing the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • an apparatus for state transition in dependent quantization may include a processor, and a non- transitory computer readable medium in communication with the processor, the non- transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions.
  • the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state.
  • a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag significant coefficient flag
  • the set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • a media coding subsystem is provided.
  • the media coding subsystem may include two or more quantizers comprising a first quantizer and a second quantizer, and a decoder comprising a processor, and a non- transitory computer-readable medium in communication with the processor, the non- transitory computer-readable medium having encoded thereon a set of instructions executable by the processor to perform various functions.
  • the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state.
  • a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag significant coefficient flag
  • the set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • Fig. 1 is a schematic diagram of a coding tree unit (CTU), in accordance with various embodiments
  • Fig. 2 is a schematic diagram of a CTU divided into multiple coding units
  • FIG. 3 is a schematic diagram of two sets of quantization level outputs produced by different quantizers in dependent quantization, in accordance with various embodiments;
  • Fig. 4 is a schematic diagram of a state machine and corresponding state table for state transition and quantizer selection, in accordance with various embodiments;
  • Fig. 5 is a flow diagram of a method for state transition during encoding of a video block via dependent quantization, in accordance with various embodiments;
  • FIG. 6 is a flow diagram of a method for state transition during decoding of a video block via dependent quantization, in accordance with various embodiments
  • FIG. 7 is a block diagram of a media encoding system, in accordance with various embodiments.
  • Fig. 8 is a block diagram of a media decoding system, in accordance with various embodiments.
  • Fig. 9 is a schematic block diagram of a computer system for state transition in dependent quantization, in accordance with various embodiments.
  • a method for state transition in dependent quantization may include obtaining a current quantization level of a block of video data from an encoded bit stream, and entering a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state.
  • the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag a significant coefficient flag
  • the method may further include selecting one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantizing the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • the first and second quantizers may comprise one of: one zero quantizer and one non-zero quantizer, two zero, or two non-zero quantizers.
  • the encoded bit stream may represent respective quantization levels in binary bins representing a value of the respective quantization levels and the significant coefficient flag.
  • the method may further include, for the first non-zero quantization level, determining a scan order position of the first non-zero quantization level.
  • the method may include determining a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
  • the method may include determining the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises generating a four state model, and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
  • the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
  • the transition condition may further be based on the abs_level_gtxX_flag.
  • an apparatus for state transition in dependent quantization may include a processor, and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions.
  • the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state.
  • a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag significant coefficient flag
  • the set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • the set of instructions may be executable by the processor to determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
  • the set of instructions may be executable by the processor to determine the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises generating a four state model, and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
  • the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
  • a media coding subsystem may include two or more quantizers comprising a first quantizer and a second quantizer, and a decoder comprising a processor, and a non-transitory computer- readable medium in communication with the processor, the non-transitory computer- readable medium having encoded thereon a set of instructions executable by the processor to perform various functions.
  • the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state.
  • the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value.
  • sig_coeff_flag a significant coefficient flag
  • the set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
  • the set of instructions may be executable by the processor to determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
  • the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
  • the various embodiments include, without limitation, methods, systems, apparatuses, and/or software products.
  • a method might comprise one or more procedures, any or all of which may be executed by a computer system.
  • an embodiment might provide a computer system configured with instructions to perform one or more procedures in accordance with methods provided by various other embodiments.
  • a computer program might comprise a set of instructions that are executable by a computer system (and/or a processor therein) to perform such operations.
  • such software programs are encoded on physical, tangible, and/or non-transitory computer-readable media (such as, to name but a few examples, optical media, magnetic media, and/or the like).
  • FIG. 1 Various embodiments described herein, embodying software products and computer-performed methods, represent tangible, concrete improvements to existing technological areas, including, without limitation, multimedia coding and signal processing. In some aspects, implementations of various embodiments improve the functioning of multimedia coding systems/subsystems by enabling more efficient dependent quantization and residual coding techniques. It is to be understood that the term "coding" may be used to refer to encoding, decoding, or both encoding and decoding. [0037] To the extent any abstract concepts are present in the various embodiments, those concepts can be implemented as described herein by devices, software, systems, and methods that involve functionality (e.g., steps or operations), such as using an algorithm to select quantization modes in a media coding system and/or subsystem.
  • functionality e.g., steps or operations
  • Fig. 1 is a schematic diagram of an image (e.g., frame 100) divided into blocks called coding tree units (CTUs). Accordingly, an image, such as a frame 100 of a video signal, may be divided into one or more CTUs 105a-105n (collectively CTUs 105). According to various embodiments, during coding, an input image (such as frame 100) may be divided into one or more CTUs 105a-105n. The CTUs 105 may each individually be square blocks of pixels, as shown in Fig. 1. In some embodiments, an individual CTU of the CTUs 105 may be a block 128 x 128 pixels. In some embodiments, as depicted, frame 100 may be divided into CTUs 105. The one or more CTUs 105a-105n may, in some examples, be scanned in a raster scan order, as depicted. In other embodiments, a different scan order, such as a z-scan order, may be used.
  • CTUs
  • Each CTU 105a-105n of a frame 100 may respectively be partitioned into one or more CUs.
  • Fig. 2 is a schematic diagram of a CTU 200 divided into one or more coding units (CUs) 205a-205m (collectively CUs 205).
  • CUs 205 may be sub-units of a CTU, which may be used for prediction and transform during coding operations.
  • CUs 205a-205m may be rectangular or square in arrangement, and further may be coded without further partitioning into prediction units or transform units.
  • Each CU 205a-205m may be as large as its root CTU 200 and/or a subdivision of the CTU 200.
  • the CTU may be divided into subdivisions of up to 4x4 blocks (e.g., up to 16 total blocks).
  • a CU 205 such as CU 205j, 205i may be the size of a single subdivision of the CTU 200.
  • the CU 205 may further be smaller than the root CTU 200 and/or subdivision of the CTU 200, as shown by the CUs 205a-205h, 205k-2051.
  • the CUs 205a-205m may be coded, for example, in a Z- scan order, in the order labeled 205a-205m. It should be noted that the various CUs 205 of the CTU 200 are schematically illustrated in Fig.
  • Fig. 3 is a schematic diagram of two sets of quantization level outputs 300 produced by different quantizers in a dependent quantization scheme.
  • quantization is a technique used to reduce the dynamic range of a transformed or non-transformed video signal. Thus, fewer bits may be used to represent the video signal.
  • the transformed or non-transformed video signal at a specific position is referred to as a "coefficient.”
  • the quantized value of the coefficient is referred to as a quantization level or simply "level.”
  • quantization comprises division of a coefficient by a quantization step size, and subsequent rounding of the resulting quantization level.
  • Inverse quantization comprises multiplication of the quantization level by the quantization step size.
  • Such a quantization process is referred to as scalar quantization.
  • quantization of all coefficients in a block e.g., a CTU 105, 200 and/or a subdivision of a CTU 105, 200 may be performed independently.
  • a specific coding scan order may be used to convert 2-D coefficients of a block into a 1-D order for coefficient quantization and coding.
  • the scan starts from the left-top corner and stops at the right bottom corner of a block, or last non-zero coefficient / level in a right bottom direction. This is also referred to as a z-scan order.
  • Quantization of a coefficient within a block may make use of the scan order information (e.g., it may depend on the status of the previous quantization level along the scan order).
  • more than one quantizer may be used for quantization.
  • a quantizer may refer to a device and/or a programmed function of a device that performs quantization. A determination of which quantizer to use for a given coefficient depends on information preceding the current coefficient in the coding scan order. This is referred to as dependent quantization.
  • two quantizers may be utilized in a dependent quantization scheme in which both sets of quantization levels output by the quantizers may include a zero level.
  • both quantizers may be zero quantizers.
  • a sig_coeff_flag is coded during residual coding. For each level, the sig_coeff_flag is used to indicate whether the level is zero or non-zero. The sig_coeff_flag may be coded even in the case of non-zero quantizers.
  • a quantization step size may be represented by 2D , which may be determined by a quantization factor embedded in the bitstream.
  • Two sets of quantization level outputs 300 are provided.
  • a first set of quantization levels is output by a first quantizer Q0.
  • the first quantizer Q0 is configured to produce a value, which may include both zero and non- zero levels.
  • the quantizer is configured with both zero and non-zero quantization levels.
  • Q0 may be a zero quantizer.
  • a second set of quantization levels is output by Ql, which may not quantize the coefficient as zero.
  • Ql may be a non-zero quantizer.
  • a dependent quantization scheme utilizing at least one non-zero quantizer and at least one zero quantizer.
  • Each set of quantization levels may further be divided into respective subsets.
  • a first subset SO may include quantization levels corresponding to even integer multiples of 2D, as well as a 0.
  • a second subset S2 may include quantization levels corresponding to odd integer multiples of 2 D .
  • the second set of quantization levels produced by Ql may respectively include a first subset SI and second subset S3.
  • the first subset SI may include positive quantization levels corresponding to M x (2D DD D DD, and negative quantization levels corresponding to M x (2DDDDD DD D where M is an odd integer.
  • a second subset S3 may include positive quantization levels corresponding to N x (2DD D DD D, and negative quantization levels corresponding to N x (2DD D DD D, where N is an even integer.
  • Q0 and Ql may be configured to capture, together, all quantization levels for all sets of quantization levels representing the integer multiples of the quantization step size.
  • a dependent quantization scheme in which both quantizers Q0 and Ql are zero quantizers may be used.
  • Fig. 4 is a schematic diagram of state transitions 400 with a 4 x 4 residual block.
  • the state transitions 400 includes a 4 x 4 residual block 405, which further includes 16 respective coefficients.
  • the coefficients may include either transformed or non-transformed image data.
  • the state transitions 400 further include a state machine 410, and state table 415 for state transitions and quantizer selection.
  • the transition condition, "t,” is used to express the algorithm for controlling state transitions.
  • the parity of a previous quantization level of the coefficient can be used to decide a state transition, and therefore the quantizer to be used to quantize the current coefficient.
  • switching between the two quantizers Q0 and Q1 may be determined via a state machine with four states: 0, 1, 2, and 3.
  • the state may be determined by the parity of the quantization level produced by a preceding coefficient (or prediction residue) and the preceding state in the coding (e.g., encoding/decoding) scan order.
  • state 0 and state 1 may correspond to a selection of the first quantizer
  • Q0 and state 2 and state 3 may correspond to a selection of the second quantizer, Ql.
  • the state is typically set equal to a start state, e.g. 0.
  • the coefficients are reconstructed in a coding scan order (e.g., in the same order as they are entropy decoded). After a current coefficient is reconstructed, the state is updated as shown in Fig. 4.
  • a state transition algorithm where k denotes the value of the level at a specific position along the coding scan order, the next state may depend on the current state and the parity ( k & 1) of the current level k, with k representing the value of the current coefficient level.
  • the state transition process can be written as:
  • stateTransTable represents the state table 410, and the operator & specifies a bitwise "AND" operator in two's-complement arithmetic.
  • state transition can also be specified without a lookup table as follows:
  • the state uniquely specifies the scalar quantizer used for quantizing the current coefficient. For example, if the state for a current coefficient is equal to 0 or 1, the scalar quantizer Q0 is used. Otherwise, if the state is equal to 2 or 3, the scalar quantizer Q1 is used.
  • VVC versatile video coding
  • dependent quantization is allowed only for regular residual coding (RRC), which means that the dependent quantization is applied to the transform coefficients of the prediction residues and scalar quantization is applied to the prediction residues.
  • RRC regular residual coding
  • dependent quantization may be applied to both RRC and transform skip residual coding, in which case dependent quantization may be applied to the prediction residues.
  • parity of quantization level at the previous position in the coding scan order is used to direct state transition.
  • a parity flag was introduced to indicate whether the level is odd or even (e.g., par_level_flag).
  • the dequantization process can use the parity information of quantization level even before fully parsing all syntax elements and recovering the level.
  • various embodiments set forth an algorithm making use of the sig_coeff_flag, instead of the parity flag, to control state transition.
  • Table 1 is a state transition table showing state transitions using sig_coeff_flag.
  • Other state transition maps can also be made similarly based on sig_coeff_flag.
  • the state transition can also be controlled by other syntax elements.
  • abs_level_gtxl_flag, abs_level_gtx2_flag, abs_level_gtx3_flag, ... abs_level_gtxN_flag may indicate an absolute level at a specific position greater than 1, 2, 3 to integer number N.
  • an abs_level_gtxX_flag may be used, where X is an integer number between 1 and N, to direct the state transition.
  • Table 2 shows the details on how state transits when using abs_level_gtxX_flag.
  • Other state transition maps can also be made similarly based on abs_level_gtxX_flag.
  • t may be defined accordingly using an abs_level_gtxX_flag.
  • Residual coding is used to convert the quantization level into a bit stream in video coding.
  • N x M quantization levels for an N x M sized block.
  • These N x M levels may be zero or non-zero values, which may further be binarized to binary bins.
  • Context modeling based binary arithmetic coding can further compress bins into bits.
  • the position of a last non-zero level is defined as the position of the last non-zero level along the coding scan order.
  • the 2D coordinates (last_sig_coeff_x and last_sig_coeff_y) of the last non-zero level are first coded.
  • An RRC block may consist of several pre-defined sub-blocks (e.g., a CU or subdivision of a CTU).
  • the last non-zero sub_block which has the last non-zero level is derived from (last_sig_coeff_x and last_sig_coeff_y) according to coding scan order.
  • the RRC will code sub_block by sub_block starting from the last non-zero sub_block in reverse scan order. Within each sub_block, RRC will code the level of each position in a reverse coding scan order, with the following syntax elements.
  • sig_coeff_flag For each level, a flag named as sig_coeff_flag is coded into the bitstream.
  • the sig_coeff_flag indicates whether the level is zero (in which case the sig_coeff_flag is set to 0) or non-zero (in which case the sig_coeff_flag is set to 1). If the level is non-zero, the first abs_level_gtx_flag[0] will be coded to indicate if the absolute level is 1 (set to 0) or greater than 1 (set to 1). If the absolute level is greater than 1, the par_level_flag will be coded to indicate if the level is odd (set to 1) or even number (set to 0).
  • abs_level_gtx_flag[0] and par_level_flag it may be determined whether the level is equal to 2 or 3.
  • an abs_level_gtxX_flag may be set, in this case, abs_level_gtxl_flag.
  • the second abs_level_gtx_flag[l] is also coded to indicate if the absolute level is greater than 3 (set to 1) or not (set to 0). In this case, the abs_level_gtx2_flag may alternatively be set.
  • abs_remainder and dec_abs_level may be coded, or alternatively an abs_level_gtx3_flag . . . abs_level_gtxN_flag may be set.
  • the sign of each level within a block will also be coded to fully represent the quantization level.
  • a video coder such as an encoder, may be configured to perform residual coding more efficiently.
  • coding of the sig_coeff_flag may be made more efficient.
  • the coding of the sig_coeff_flag may be skipped altogether.
  • all levels quantized from the non-zero quantizer will have an absolute value greater than or equal to 1.
  • the sig_coeff_flag is always 1 for all quantization level outputs from the non-zero quantizer.
  • the sig_coeff_flag when a level is produced by the non-zero quantizer.
  • the other syntax elements of the residual coding for the non-zero quantizer may remain unchanged from the previously described.
  • residual coding of a quantization level of a zero quantizer may remain unchanged, with the sig_coeff_flag still being coded as both 0 and non-zero levels may be produced by quantizing with the zero quantizer.
  • the above described modifications dependent quantization and residual coding scheme may be adopted in one or more different video coding standards, and is not limited to any single coding standard.
  • the usage of a non-zero quantizer and corresponding residual coding may be used, for example, and without limitation, in advanced video coding (AVC), high-efficiency video coding (HEVC), and/or VVC-based codecs, or further adapted to other types of suitable codec designs.
  • AVC advanced video coding
  • HEVC high-efficiency video coding
  • VVC-based codecs or further adapted to other types of suitable codec designs.
  • Fig. 5 is a flow diagram of a method 500 for state transition during encoding of a video block in dependent quantization, in accordance with various embodiments.
  • the method 500 begins, at block 505, by receiving a video data block.
  • a block of video data may include, without limitation, a CTU, subdivision of a CTU, or CU.
  • the block of video data may further include transformed and/or non-transformed video data.
  • method 500 continues by transforming the block of video data to produce a block of transform coefficients.
  • the transform may be a discrete cosine transform.
  • the block may be transformed, while in others, the block of video data may not be transformed, and instead a prediction residue may be quantized.
  • method 500 continues by determining whether a first non-zero level in the scan order has been or is produced by the current coefficient. If it is determined that the first non-zero level has been or is produced, the method 500 may continue, at block 520, by selecting a quantizer based on the current state. In some examples, if it is determined that the current coefficient will produce the first non-zero level of a block, the current state may be set to a "default" or a "start" state (e.g., state 0).
  • a quantizer may be selected according to the current state, which may further be determined based on a transition condition and a previous state preceding the current state.
  • the state transition may be determined by a transition condition, t.
  • the transition condition may be based, at least in part, on a sig_coeff_flag.
  • the transition condition may be based on an abs_level_gtxX_flag, such that the transition condition t may be set when the level is equal to an integer between 1-N.
  • a state for a subsequent coefficient may depend on the level of the current coefficient as determined by the sig_coeff_flag, or alternatively an abs_level_gtxX_flag. It follows that the state of the current coefficient is determined by the level of the preceding coefficient.
  • the method 500 may continue by checking whether the first non-zero level is (or has been) produced for the next coefficient. In some examples, if it is determined for a current coefficient that the first non-zero level in the scan order is not (and has not been) produced, quantization of the current coefficient may be skipped, and the check for a non-zero level performed for a succeeding coefficient.
  • the current coefficient is then quantized by the selected quantizer, which is determined based on the current state of the current coefficient, as determined by the state transition algorithm.
  • a first quantizer Q0
  • a second quantizer Ql
  • a quantizer may be selected as one of the first quantizer or a second quantizer.
  • the first quantizer may be a zero quantizer.
  • a zero quantizer for example, may be a quantizer configured to quantize a coefficient to a 0 value.
  • a non-zero quantizer does not output a 0 quantization level and thus, does not quantize a coefficient to a 0 value. Accordingly, the current coefficient may be quantized via the selected quantizer.
  • the method 500 may further include setting a significant coefficient flag (e.g., sig_coeff_flag) and/or additional flags (e.g., abs_level_gtxX_flag or other flags).
  • a significant coefficient flag e.g., sig_coeff_flag
  • additional flags e.g., abs_level_gtxX_flag or other flags.
  • the significant coefficient flag and/or additional flags may be set according to the quantization level. For example, for each level, the sig_coeff_flag may be used to indicate whether the level is zero or non zero.
  • the abs_level_gtxX_flag may be coded if the magnitude of the quantization level (e.g., the absolute level) is greater than X, where X is an integer number between 1 and N.
  • method 500 further comprises determining a subsequent state for a subsequent coefficient based on a transition condition.
  • the determination of the subsequent state for the subsequent coefficient may be based on the transition condition.
  • the transition condition may be based, at least in part, on a current state.
  • the transition condition may further be based, at least in part, on one or more of a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4.
  • the method 500 may, in some examples, further include processing a subsequent coefficient (or alternatively prediction residue) in the scan order, as described above, until all coefficients in the scan order have been coded.
  • Fig. 6 is a flow diagram of a method 600 for state transition during decoding of a video block via dependent quantization, in accordance with various embodiments.
  • the method 600 begins, at block 605, by accessing quantization levels for a video block.
  • quantization levels may converted via residual coding into a bit stream.
  • a bit stream of encoded video data may include a sequence of quantization levels.
  • the quantization levels of a video block may thus be accessed by extracting respective quantization levels for each element of a video block.
  • the element of a video block may depend on whether RRC was utilized, in which case a transform is applied to a prediction residue to produce a coefficient, or TSRC applied, in which case no transform is applied.
  • the dequantized element may, in the case of RRC, be a coefficient, and in the case of a TSRC encoded bit stream, the dequantized element may be a prediction residue.
  • each element may further correspond to a respective position of the video block in a coding scan order (e.g., encoding / decoding scan order).
  • the method 600 includes processing a quantization level for each element, such that a respective quantization level may be extracted from the bit stream of encoded video data, for each respective element of the video block.
  • a quantizer may be selected to dequantize the quantization level.
  • the method 600 continues by determining whether a current quantization level is the first non-zero quantization level. If it is determined that it is the first non-zero quantization level, at block 640, a scan order position of the first non-zero quantization level and a current state may be determined.
  • the first non zero quantization level during dequantization may correspond to the position of the last non-zero level during quantization.
  • the 2D coordinates, last_sig_coeff_x and last_sig_coeff_y may be used to determine the scan order position of the first non-zero quantization level.
  • the current state for the first-non-zero quantization level may be set to a "default” or a "start” state (e.g., state 0).
  • the method 600 may continue, at block 620, by selecting a quantizer based on the current state for the quantization level. As it is determined that the current quantization level is the first non-zero level, the current state may, in some examples, be set to a "default” or a "start” state (e.g., state 0).
  • the method 600 may continue, at block 620, selecting a quantizer based on the current state for the quantization level.
  • a quantizer may be selected based on a current state for the current quantization level.
  • a current state may be determined during the dequantization of a preceding quantization level, and further, based on a transition condition.
  • the transition condition may be determined, for example, based on the preceding state, which would be the "current" state for the preceding quantization level, and a flag (or one or more flags), such as a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4.
  • the method 600 continues by dequantizing the current quantization level using the selected quantizer.
  • the first non-zero quantization level may be quantized with a first quantizer (associated with state 0).
  • the method 600 continues by reconstructing the video block based on the dequantized element produced by dequantizing the current quantization level.
  • the dequantized element may be a quantized coefficient (e.g., transformed prediction residue), or in some examples, a quantized prediction residue where transform skip residual coding is used (e.g., a prediction residue is not transformed before quantization on the encode side).
  • the quantized coefficient may refer to the coefficient after it has been quantized, and subsequently dequantized.
  • quantized prediction residue may refer to the prediction residue after it has been quantized, and subsequently dequantized.
  • the dequantized element may differ from the original (e.g., the original coefficient may be different from the dequantized "quantized coefficient", and similarly the original prediction residue may differ from the dequantized "quantized prediction residue").
  • the method 600 further includes, at block 635, determining a subsequent state based on the transition condition.
  • the determination of the subsequent state for the subsequent coefficient may be based on the transition condition.
  • the transition condition may be based, at least in part, on a current state.
  • the transition condition may further be based, at least in part, on one or more of a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4.
  • the method 600 may further include processing the subsequent quantization level, in the coding scan order, as described above, until all quantization levels have been dequantized.
  • Fig. 7 is a block diagram of a media encoding subsystem 700, in accordance with various embodiments.
  • the media encoding subsystem 700 may include transform processing logic 705, quantization unit 710, residual coding logic 730, dequantization and inverse transform transform logic 735, and coding mode selection logic 740.
  • the quantization unit 710 may further include state transition logic 715, a first quantizer 720 and a second quantizer 725.
  • the coding mode selection logic 740 may include motion estimation logic 745, motion compensation logic 750, and prediction logic 755. It should be noted that the various components of the media encoding subsystem 700 are schematically illustrated in Fig. 7, and that modifications to the media encoding subsystem 700 may be possible in accordance with the various embodiments.
  • the media encoding subsystem 700 may be implemented on any suitable hardware, such as one or more microprocessors, digital signal processors (DSP), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, or a combination of software and hardware.
  • DSP digital signal processors
  • ASICs application specific integrated circuits
  • FPGAs field programmable gate arrays
  • features and logic implemented in software may be stored in corresponding non-transitory computer-readable media and/or storage devices. This is discussed in greater detail below with respect to Fig. 9.
  • the video data may include an image (e.g., a frame) of the video data, also referred to as a block or macroblock.
  • the video data may be provided to the coding mode selection logic 740, which may be configured to produce a predicted image (e.g., a predicted block).
  • the predicted image may be subtracted from an actual subsequent image of the frame to produce a residual frame (e.g., a residual block), and transform processing logic 705 may transform the residual block to produce a block of transformed video data from the residual frame.
  • the block of transformed video data may be provided to the quantization unit 710.
  • the video data may be provided directly to the quantization unit 710, without undergoing transformation.
  • a block may include a CTU, subdivision of a CTU, or CU.
  • Quantization unit 710 may be configured to quantize the transformed or non-transformed video data to produce a block of quantization levels.
  • the state transition logic 715 may be configured to determine state transitions between each coefficient of the residual block, and thereby determining which quantizer of the first quantizer 720 or second quantizer 725 will be used to quantize the coefficient.
  • the state transition logic 715 may, for example, determine state transitions based on a transition condition, as described above with respect to Figs. 4-6.
  • a subsequent state may be determined based, at least in part, on a sig_coeff_flag indicative whether a level of a coefficient is zero or non-zero, or alternatively based on an abs_IeveI_gtxX_flag indicative of whether the level of the coefficient is greater than an integer X, where X is an integer between 1-N.
  • the quantization unit 710 may, in some examples, produce sets of quantization levels.
  • the quantized block may be processed by the residual coding logic 730.
  • the residual coding logic 730 may be configured to convert the data of the quantized block into a bit stream. For example, in some embodiments, data in the block may be binarized into binary bins, as previously described.
  • the quantized block may further be provided to the dequantization & inverse transform logic 735 for further processing.
  • the dequantization and inverse transform logic may be used to generate a reconstructed residual block.
  • the reconstructed residual block may be added to the next predicted frame and used for motion estimation logic 745, motion compensation logic 750, and prediction logic 755 to produce a predicted frame.
  • Fig. 8 is a block diagram of a media decoding system 800, in accordance with various embodiments.
  • the media decoding system 800 may include entropy decoding logic 805, dequantization unit 810, state transition logic 815, first quantizer 820, second quantizer 825, inverse transform logic 830, coding mode selection logic 835, motion estimation logic 840, motion compensation logic 845, and prediction logic 850.
  • entropy decoding logic 805 dequantization unit 810
  • state transition logic 815 first quantizer 820
  • second quantizer 825 inverse transform logic 830
  • coding mode selection logic 835 coding mode selection logic 835
  • motion estimation logic 840 motion compensation logic 845
  • prediction logic 850 prediction logic
  • the media decoding system 800 may be implemented on any suitable hardware, such as one or more microprocessors, DSP, ASIC, FPGA, discrete logic, software, hardware, or a combination of software and hardware.
  • the encoded video data may include a bit stream of encoded video blocks.
  • entropy decoding logic 805 may be configured to decode the encoded bit stream of video data.
  • the encoded bit stream may be decoded and quantized elements extracted from the encoded bit stream for further processing.
  • the quantized elements may then be inverse quantized
  • state transition logic 815 may select a quantizer based on a current state for a current quantized element (which, as previously explained, may be a coefficient or prediction residue), and a sig_coeff_flag and/or abs_level_gtxX_flag.
  • a subsequent state may be determined according to a state transition table, as described above with respect to Fig. 4. As previously described, in some embodiments, for example, a subsequent state may be determined based, at least in part, on a current state and a sig_coeff_flag indicative whether a level of a coefficient is zero or non-zero, or alternatively based on an abs_level_gtxX_flag indicative of whether the level of the coefficient is greater than an integer X, where X is an integer between 1 -N. [0086] In some examples, the dequantized elements may further be inverse transformed by inverse transform logic 830.
  • the dequantized element may be a quantized coefficient produced by transforming a prediction residue.
  • the inverse transform logic 830 may inverse transform the coefficient produced by the dequantization unit 810. In some examples, for blocks where the transform is skipped, the inverse transform module 830 is not applied to those blocks. [0087] In further examples, the residual block, produced by the dequantization unit
  • the de-quantized elements produced by the dequantization unit 810 may be used to generate the reconstructed block, with a decoded video may be produced.
  • the prediction block may be generated according to a coding mode and parameters of the block, and according to motion estimation logic 840, motion compensation logic 845, and prediction logic 850.
  • Fig. 9 is a schematic block diagram of a computer system 900 for state transitioning in dependent quantization, in accordance with various embodiments.
  • Fig. 9 provides a schematic illustration of one embodiment of a computer system 900, such as a media coding system, media encoding subsystem 700, media decoding subsystem 800, or subsystems thereof, such as an encoder, decoder, transform processing logic, residual codign logic, quantization unit, coding mode selection logic, dequantization and inverse transform logic, state transition logic, or combinations thereof, which may perform the methods provided by various other embodiments, as described herein.
  • Fig. 9 only provides a generalized illustration of various components, of which one or more of each may be utilized as appropriate.
  • Fig. 9, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.
  • the computer system 900 includes multiple hardware elements that may be electrically coupled via a bus 905 (or may otherwise be in communication, as appropriate).
  • the hardware elements may include one or more processors 910, including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers); one or more input devices 915, which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like; and one or more output devices 920, which can include, without limitation, a display device, and/or the like.
  • processors 910 including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers)
  • input devices 915 which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like
  • output devices 920 which can include, without limitation, a
  • the computer system 900 may further include (and/or be in communication with) one or more storage devices 925, which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random-access memory (“RAM”) and/or a read-only memory (“ROM”), which can be programmable, flash-updateable, and/or the like.
  • RAM random-access memory
  • ROM read-only memory
  • Such storage devices may be configured to implement any appropriate data stores, including, without limitation, various file systems, database structures, and/or the like.
  • the computer system 900 might also include a communications subsystem
  • the computer system 900 may include, without limitation, a modem, a network card (wireless or wired), an IR communication device, a wireless communication device and/or chipset (such as a BluetoothTM device, an 802.11 device, a WiFi device, a WiMax device, a WWAN device, a Z-Wave device, a ZigBee device, cellular communication facilities, etc.), and/or an LP wireless device as previously described.
  • the communications subsystem 930 may permit data to be exchanged with a network (such as the network described below, to name one example), with other computer or hardware systems, between data centers or different cloud platforms, and/or with any other devices described herein.
  • the computer system 900 further comprises a working memory 935, which can include a RAM or ROM device, as described above.
  • the computer system 900 also may comprise software elements, shown as being currently located within the working memory 935, including an operating system 940, device drivers, executable libraries, and/or other code, such as one or more application programs 945, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein.
  • an operating system 940 operating system 940
  • device drivers executable libraries
  • application programs 945 which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein.
  • code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.
  • a set of these instructions and/or code might be encoded and/or stored on a non-transitory computer-readable storage medium, such as the storage device(s) 925 described above.
  • the storage medium might be incorporated within a computer system, such as the system 900.
  • the storage medium might be separate from a computer system (i.e., a removable medium, such as a compact disc, etc.), and/or provided in an installation package, such that the storage medium can be used to program, configure, and/or adapt a general purpose computer with the instructions/code stored thereon.
  • These instructions might take the form of executable code, which is executable by the computer system 900 and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system 900 (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.
  • some embodiments may employ a computer or hardware system (such as the computer system 900) to perform methods in accordance with various embodiments of the invention.
  • some or all of the procedures of such methods are performed by the computer system 900 in response to processor 910 executing one or more sequences of one or more instructions (which might be incorporated into the operating system 940 and/or other code, such as an application program 945) contained in the working memory 935.
  • Such instructions may be read into the working memory 935 from another computer readable medium, such as one or more of the storage device(s) 925.
  • execution of the sequences of instructions contained in the working memory 935 might cause the processor(s) 910 to perform one or more procedures of the methods described herein.
  • machine -readable medium and “computer-readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion.
  • various computer-readable media might be involved in providing instructions/code to processor(s) 910 for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals).
  • a computer- readable medium is a non-transitory, physical, and/or tangible storage medium.
  • a computer-readable medium may take many form , including, but not limited to, non-volatile media, volatile media, or the like.
  • Non-volatile media includes, for example, optical and/or magnetic disks, such as the storage device(s) 925.
  • Volatile media includes, without limitation, dynamic memory, such as the working memory 935.
  • a computer-readable medium may take the form of transmission media, which includes, without limitation, coaxial cables, copper wire, and fiber optics, including the wires that comprise the bus 905, as well as the various components of the communication subsystem 930 (and/or the media by which the communications subsystem 930 provides communication with other devices).
  • transmission media can also take the form of waves (including, without limitation, radio, acoustic, and/or light waves, such as those generated during radio-wave and infra-red data communications) .
  • Common forms of physical and/or tangible computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH- EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.
  • Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 910 for execution.
  • the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer.
  • a remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system 900.
  • These signals which might be in the form of electromagnetic signals, acoustic signals, optical signals, and/or the like, are all examples of carrier waves on which instructions can be encoded, in accordance with various embodiments of the invention.
  • the communications subsystem 930 (and/or components thereof) generally receives the signals, and the bus 905 then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory 935, from which the processor(s) 910 retrieves and executes the instructions.
  • the instructions received by the working memory 935 may optionally be stored on a storage device 925 either before or after execution by the processor(s) 910.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Tools and techniques are provided for dependent quantization and residual coding. A system includes two or more quantizers, a decoder, a processor, and a non-transitory computer-readable medium in communication with the processor. The system may be configured to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition. The transition condition determines a state transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block, the current state is determined based on a significant coefficient flag and a preceding state of the preceding quantization level.

Description

DEPENDENT QUANTIZATION STATE TRANSITION METHOD FOR VIDEO
CODING
COPYRIGHT STATEMENT
[0001] A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
FIELD
[0002] The present disclosure relates, in general, to methods, systems, and apparatuses for multimedia encoding and decoding.
BACKGROUND
[0003] Dependent quantization is a technique used in video coding to reduce the dynamic range of a video signal such that fewer bits are used to represent the video signal. Quantization typically involves division by a quantization step size and subsequent rounding while inverse quantization involves multiplication by the quantization step size. Such quantization process is also called scalar quantization. The quantization of all coefficients within a block can be done independently and this kind of quantization method is used in some existing video compression standards, such as H.264 and high efficiency video coding (HEVC). To further improve the coding efficiency, multiple quantizers may be used. Determining which of the multiple quantizers will be used to quantize a given coefficient typically depends on the information preceding the current coefficient in coding scan order. Such quantization approach is also referred to as dependent quantization, and is used, for example, in versatile video coding (VVC) or H.266. Information used to determine the next quantizer is determined through state transitions. Conventional state transition algorithms may impact performance and complexity for the quantization process.
[0004] Therefore, methods, systems, and apparatuses for improving inefficiencies in conventional dependent quantization schemes are provided. SUMMARY
[0005] Tools and techniques for state transition in dependent quantization are provided.
[0006] According to an embodiment, a method for state transition in dependent quantization is provided. The method may include obtaining a current quantization level of a block of video data from an encoded bit stream, and entering a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The method may further include selecting one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantizing the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0007] According to another embodiment, an apparatus for state transition in dependent quantization is provided. The apparatus may include a processor, and a non- transitory computer readable medium in communication with the processor, the non- transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions. For example, the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0008] According to a further embodiment, a media coding subsystem is provided.
The media coding subsystem may include two or more quantizers comprising a first quantizer and a second quantizer, and a decoder comprising a processor, and a non- transitory computer-readable medium in communication with the processor, the non- transitory computer-readable medium having encoded thereon a set of instructions executable by the processor to perform various functions. For example, the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0009] These illustrative embodiments are mentioned not to limit or define the disclosure, but to provide examples to aid understanding thereof. Additional embodiments are discussed in the Detailed Description, and further description is provided therein.
BRIEF DESCRIPTION OF THE DRAWINGS [0010] A further understanding of the nature and advantages of particular embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used to refer to similar components. In some instances, a sub-label is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
[0011] Fig. 1 is a schematic diagram of a coding tree unit (CTU), in accordance with various embodiments;
[0012] Fig. 2 is a schematic diagram of a CTU divided into multiple coding units
(CU), in accordance with various embodiments;
[0013] Fig. 3 is a schematic diagram of two sets of quantization level outputs produced by different quantizers in dependent quantization, in accordance with various embodiments;
[0014] Fig. 4 is a schematic diagram of a state machine and corresponding state table for state transition and quantizer selection, in accordance with various embodiments; [0015] Fig. 5 is a flow diagram of a method for state transition during encoding of a video block via dependent quantization, in accordance with various embodiments;
[0016] Fig. 6 is a flow diagram of a method for state transition during decoding of a video block via dependent quantization, in accordance with various embodiments;
[0017] Fig. 7 is a block diagram of a media encoding system, in accordance with various embodiments; [0018] Fig. 8 is a block diagram of a media decoding system, in accordance with various embodiments; and
[0019] Fig. 9 is a schematic block diagram of a computer system for state transition in dependent quantization, in accordance with various embodiments.
DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS [0020] Various embodiments provide tools and techniques for dependent quantization and state transitioning for video coding.
[0021] In some embodiments, a method for state transition in dependent quantization is provided. The method may include obtaining a current quantization level of a block of video data from an encoded bit stream, and entering a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The method may further include selecting one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantizing the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0022] In some examples, the first and second quantizers may comprise one of: one zero quantizer and one non-zero quantizer, two zero, or two non-zero quantizers. In some examples, the encoded bit stream may represent respective quantization levels in binary bins representing a value of the respective quantization levels and the significant coefficient flag. In some examples, the method may further include, for the first non-zero quantization level, determining a scan order position of the first non-zero quantization level.
[0023] In some examples, the method may include determining a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level. [0024] In yet further examples, the method may include determining the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises generating a four state model, and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
[0025] In some examples, the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer. In some examples, the transition condition may further be based on the abs_level_gtxX_flag. In further examples, the transition condition may be given by: (sig_coeff_flag == 1) && (abs_level_gtxl==0); wherein the X in the absolute level greater than X flag is 1. In yet further examples, the transition condition may be given by: (sig_coeff_flag == 1).
[0026] In some embodiments, an apparatus for state transition in dependent quantization is provided. The apparatus may include a processor, and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions. For example, the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0027] In some examples, the set of instructions may be executable by the processor to determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
[0028] In some examples, the set of instructions may be executable by the processor to determine the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises generating a four state model, and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
[0029] In further examples, the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer. In further examples, the transition condition may be given by: (sig_coeff_flag == 1) && (abs_level_gtxl==0), wherein the X in the absolute level greater than X flag is 1. In yet further examples, the transition condition may be given by: (sig_coeff_flag == 1).
[0030] In some embodiments, a media coding subsystem is provided. The media coding subsystem may include two or more quantizers comprising a first quantizer and a second quantizer, and a decoder comprising a processor, and a non-transitory computer- readable medium in communication with the processor, the non-transitory computer- readable medium having encoded thereon a set of instructions executable by the processor to perform various functions. For example, the set of instructions may be executed by the processor to obtain a current quantization level of a block of video data from an encoded bit stream, and enter a current state for a current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state. If the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state. If the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value. The set of instructions may further be executable by the processor to select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level, and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
[0031] In some examples, the set of instructions may be executable by the processor to determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level. [0032] In yet further examples, the transition condition of the preceding quantization level may be determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer. In further examples, the transition condition may be given by one of: (sig_coeff_flag == 1) && (abs_level_gtxl==0), wherein the X in the absolute level greater than X flag is 1, or (sig_coeff_flag == 1).
[0033] In the following description, for the purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the described embodiments. It will be apparent to one skilled in the art, however, that other embodiments may be practiced without some of these details. In other instances, structures and devices are shown in block diagram form. Several embodiments are described herein, and while various features are ascribed to different embodiments, it should be appreciated that the features described with respect to one embodiment may be incorporated with other embodiments as well. By the same token, however, no single feature or features of any described embodiment should be considered essential to every embodiment of the invention, as other embodiments of the invention may omit such features.
[0034] Unless otherwise indicated, all numbers used herein to express quantities, dimensions, and so forth used should be understood as being modified in all instances by the term "about." In this application, the use of the singular includes the plural unless specifically stated otherwise, and use of the terms "and" and "or" means "and/or" unless otherwise indicated. Moreover, the use of the term "including," as well as other forms, such as "includes" and "included," should be considered non-exclusive. Also, terms such as "element" or "component" encompass both elements and components comprising one unit and elements and components that comprise more than one unit, unless specifically stated otherwise.
[0035] The various embodiments include, without limitation, methods, systems, apparatuses, and/or software products. Merely by way of example, a method might comprise one or more procedures, any or all of which may be executed by a computer system. Correspondingly, an embodiment might provide a computer system configured with instructions to perform one or more procedures in accordance with methods provided by various other embodiments. Similarly, a computer program might comprise a set of instructions that are executable by a computer system (and/or a processor therein) to perform such operations. In many cases, such software programs are encoded on physical, tangible, and/or non-transitory computer-readable media (such as, to name but a few examples, optical media, magnetic media, and/or the like).
[0036] Various embodiments described herein, embodying software products and computer-performed methods, represent tangible, concrete improvements to existing technological areas, including, without limitation, multimedia coding and signal processing. In some aspects, implementations of various embodiments improve the functioning of multimedia coding systems/subsystems by enabling more efficient dependent quantization and residual coding techniques. It is to be understood that the term "coding" may be used to refer to encoding, decoding, or both encoding and decoding. [0037] To the extent any abstract concepts are present in the various embodiments, those concepts can be implemented as described herein by devices, software, systems, and methods that involve functionality (e.g., steps or operations), such as using an algorithm to select quantization modes in a media coding system and/or subsystem.
[0038] Fig. 1 is a schematic diagram of an image (e.g., frame 100) divided into blocks called coding tree units (CTUs). Accordingly, an image, such as a frame 100 of a video signal, may be divided into one or more CTUs 105a-105n (collectively CTUs 105). According to various embodiments, during coding, an input image (such as frame 100) may be divided into one or more CTUs 105a-105n. The CTUs 105 may each individually be square blocks of pixels, as shown in Fig. 1. In some embodiments, an individual CTU of the CTUs 105 may be a block 128 x 128 pixels. In some embodiments, as depicted, frame 100 may be divided into CTUs 105. The one or more CTUs 105a-105n may, in some examples, be scanned in a raster scan order, as depicted. In other embodiments, a different scan order, such as a z-scan order, may be used.
[0039] Each CTU 105a-105n of a frame 100 may respectively be partitioned into one or more CUs. For example, Fig. 2 is a schematic diagram of a CTU 200 divided into one or more coding units (CUs) 205a-205m (collectively CUs 205). In various embodiments, CUs 205 may be sub-units of a CTU, which may be used for prediction and transform during coding operations. CUs 205a-205m may be rectangular or square in arrangement, and further may be coded without further partitioning into prediction units or transform units. Each CU 205a-205m may be as large as its root CTU 200 and/or a subdivision of the CTU 200. For example, the CTU may be divided into subdivisions of up to 4x4 blocks (e.g., up to 16 total blocks). Thus, a CU 205, such as CU 205j, 205i may be the size of a single subdivision of the CTU 200. The CU 205 may further be smaller than the root CTU 200 and/or subdivision of the CTU 200, as shown by the CUs 205a-205h, 205k-2051. In some embodiments, the CUs 205a-205m may be coded, for example, in a Z- scan order, in the order labeled 205a-205m. It should be noted that the various CUs 205 of the CTU 200 are schematically illustrated in Fig. 2, and that modifications to the partitioning of a CTU 200 may be possible in accordance with the various embodiments. [0040] Fig. 3 is a schematic diagram of two sets of quantization level outputs 300 produced by different quantizers in a dependent quantization scheme. As previously described, quantization is a technique used to reduce the dynamic range of a transformed or non-transformed video signal. Thus, fewer bits may be used to represent the video signal. Before quantization, the transformed or non-transformed video signal at a specific position is referred to as a "coefficient." After quantization, the quantized value of the coefficient is referred to as a quantization level or simply "level."
[0041] As previously described, quantization comprises division of a coefficient by a quantization step size, and subsequent rounding of the resulting quantization level. Inverse quantization comprises multiplication of the quantization level by the quantization step size. Such a quantization process is referred to as scalar quantization. Conventionally, quantization of all coefficients in a block (e.g., a CTU 105, 200 and/or a subdivision of a CTU 105, 200) may be performed independently.
[0042] For example, for an N x M size block, a specific coding scan order may be used to convert 2-D coefficients of a block into a 1-D order for coefficient quantization and coding. Typically, the scan starts from the left-top corner and stops at the right bottom corner of a block, or last non-zero coefficient / level in a right bottom direction. This is also referred to as a z-scan order. Quantization of a coefficient within a block may make use of the scan order information (e.g., it may depend on the status of the previous quantization level along the scan order).
[0043] In some embodiments, to improve the coding efficiency, more than one quantizer (e.g., two quantizers) may be used for quantization. A quantizer may refer to a device and/or a programmed function of a device that performs quantization. A determination of which quantizer to use for a given coefficient depends on information preceding the current coefficient in the coding scan order. This is referred to as dependent quantization.
[0044] In some conventional examples, two quantizers may be utilized in a dependent quantization scheme in which both sets of quantization levels output by the quantizers may include a zero level. In other words, both quantizers may be zero quantizers. Thus, as will be explained in further detail below, a sig_coeff_flag is coded during residual coding. For each level, the sig_coeff_flag is used to indicate whether the level is zero or non-zero. The sig_coeff_flag may be coded even in the case of non-zero quantizers.
[0045] As depicted in Fig. 3, a quantization step size may be represented by 2D , which may be determined by a quantization factor embedded in the bitstream. Two sets of quantization level outputs 300 are provided. A first set of quantization levels is output by a first quantizer Q0. In various embodiments, the first quantizer Q0 is configured to produce a value, which may include both zero and non- zero levels. In other words, the quantizer is configured with both zero and non-zero quantization levels. Thus, in some examples, Q0 may be a zero quantizer. A second set of quantization levels is output by Ql, which may not quantize the coefficient as zero. Thus, in some examples, Ql may be a non-zero quantizer.
[0046] Accordingly, in various embodiments, a dependent quantization scheme utilizing at least one non-zero quantizer and at least one zero quantizer is provided. Each set of quantization levels may further be divided into respective subsets. For the first set of quantization levels produced by Q0, a first subset SO may include quantization levels corresponding to even integer multiples of 2D, as well as a 0. A second subset S2 may include quantization levels corresponding to odd integer multiples of 2 D . Similarly, the second set of quantization levels produced by Ql may respectively include a first subset SI and second subset S3. The first subset SI may include positive quantization levels corresponding to M x (2D DD D DD, and negative quantization levels corresponding to M x (2DDDDD DD D where M is an odd integer. A second subset S3 may include positive quantization levels corresponding to N x (2DD D DD D, and negative quantization levels corresponding to N x (2DD D DD D, where N is an even integer. Thus, in various embodiments, Q0 and Ql may be configured to capture, together, all quantization levels for all sets of quantization levels representing the integer multiples of the quantization step size. In some further embodiments, a dependent quantization scheme in which both quantizers Q0 and Ql are zero quantizers may be used.
[0047] Although the quantizer used for quantizing a given coefficient may be signaled explicitly, the overhead to do so may compromise coding efficiency. Thus, an algorithmic approach for quantizer selection may be utilized. In one example, a four-state model is proposed. [0048] Fig. 4 is a schematic diagram of state transitions 400 with a 4 x 4 residual block. The state transitions 400 includes a 4 x 4 residual block 405, which further includes 16 respective coefficients. As previously described, the coefficients may include either transformed or non-transformed image data. The state transitions 400 further include a state machine 410, and state table 415 for state transitions and quantizer selection. The transition condition, "t," is used to express the algorithm for controlling state transitions. [0049] Conventionally, the parity of a previous quantization level of the coefficient can be used to decide a state transition, and therefore the quantizer to be used to quantize the current coefficient. For example, in some embodiments, switching between the two quantizers Q0 and Q1 may be determined via a state machine with four states: 0, 1, 2, and 3. The state may be determined by the parity of the quantization level produced by a preceding coefficient (or prediction residue) and the preceding state in the coding (e.g., encoding/decoding) scan order. In some examples, state 0 and state 1 may correspond to a selection of the first quantizer, Q0, and state 2 and state 3 may correspond to a selection of the second quantizer, Ql.
[0050] In some embodiments, at the start of quantization at the encoding side, or inverse quantization at the decoding side of a block, the state is typically set equal to a start state, e.g. 0. The coefficients are reconstructed in a coding scan order (e.g., in the same order as they are entropy decoded). After a current coefficient is reconstructed, the state is updated as shown in Fig. 4.
[0051] In one example, a state transition algorithm where k denotes the value of the level at a specific position along the coding scan order, the next state may depend on the current state and the parity ( k & 1) of the current level k, with k representing the value of the current coefficient level. Thus, the state transition process can be written as:
Next State = stateTransTable [state] [k & 1] (Eq. 1)
Where stateTransTable represents the state table 410, and the operator & specifies a bitwise "AND" operator in two's-complement arithmetic. Alternatively, the state transition can also be specified without a lookup table as follows:
Next State (state (Eq. 2)
Figure imgf000015_0001
Figure imgf000015_0002
Where the 16-bit value 32040 specifies the state transition table, and the operators "«" and "»" represent bitwise shift operators.
[0052] Thus, the state uniquely specifies the scalar quantizer used for quantizing the current coefficient. For example, if the state for a current coefficient is equal to 0 or 1, the scalar quantizer Q0 is used. Otherwise, if the state is equal to 2 or 3, the scalar quantizer Q1 is used. In versatile video coding (VVC), dependent quantization is allowed only for regular residual coding (RRC), which means that the dependent quantization is applied to the transform coefficients of the prediction residues and scalar quantization is applied to the prediction residues. In further examples, dependent quantization may be applied to both RRC and transform skip residual coding, in which case dependent quantization may be applied to the prediction residues.
[0053] The parity of quantization level at the previous position in the coding scan order is used to direct state transition. To facilitate the decoding process, one extra flag, a parity flag, was introduced to indicate whether the level is odd or even (e.g., par_level_flag). Thus, the dequantization process can use the parity information of quantization level even before fully parsing all syntax elements and recovering the level. [0054] In order to improve performance, various embodiments set forth an algorithm making use of the sig_coeff_flag, instead of the parity flag, to control state transition. In one example, Table 1 is a state transition table showing state transitions using sig_coeff_flag. Other state transition maps can also be made similarly based on sig_coeff_flag. Thus, in some embodiments, t may be given by the condition sig_coeff_flag == 1.
Figure imgf000016_0001
Table 1. State Transition Table based on sig_coeff_flag
[0055] Alternatively, the state transition can also be controlled by other syntax elements. For example, abs_level_gtxl_flag, abs_level_gtx2_flag, abs_level_gtx3_flag, ... abs_level_gtxN_flag may indicate an absolute level at a specific position greater than 1, 2, 3 to integer number N. Thus, an abs_level_gtxX_flag may be used, where X is an integer number between 1 and N, to direct the state transition. As one example, Table 2 shows the details on how state transits when using abs_level_gtxX_flag. Other state transition maps can also be made similarly based on abs_level_gtxX_flag. Thus, in some embodiments, t may be given by the condition abs_level_gtxN_flag == 1 , or alternatively abs_level_gtxX_flag == 1.
Figure imgf000017_0001
Table 2. State transition based on abs_level_gtxX_flag
[0056] The following table shows the state transitions through the residual block
405, based on a transition condition, "t."
Figure imgf000017_0002
Table 3. State transition in a 4 x 4 residual block [0057] In Table 3 above, "sigflag" is used to denote the sig_coeff_flag in shortened form. Similarly, "gtl" is used to denote the abs_level_gtxl_flag (or alternatively an abs_level_gtx_flag) in shortened form, and "gt2" is used to denote the abs_level_gtx2_flag in shortened form. The remainder denotes a remainder value to be coded as appropriate (whether via an abs_level_gtxX_flag, abs_remainder, dec_abs_level, or other similar flag). [0058] In the example above with respect to Table 3, the transition condition is set when the level is equal to 1. Therefore, the transition condition t may be defined as: t = ((sig_coeff_flag == 1) && (abs_level_gtxl_flag == 0)) (Eq. 3)
[0059] In further embodiments, it may be desired to select a different integer, in which case t may be defined accordingly using an abs_level_gtxX_flag.
[0060] Residual coding is used to convert the quantization level into a bit stream in video coding. After quantization, there are N x M quantization levels for an N x M sized block. These N x M levels may be zero or non-zero values, which may further be binarized to binary bins. Context modeling based binary arithmetic coding can further compress bins into bits.
[0061] For an RRC block, the position of a last non-zero level is defined as the position of the last non-zero level along the coding scan order. The 2D coordinates (last_sig_coeff_x and last_sig_coeff_y) of the last non-zero level are first coded. An RRC block may consist of several pre-defined sub-blocks (e.g., a CU or subdivision of a CTU). The last non-zero sub_block which has the last non-zero level is derived from (last_sig_coeff_x and last_sig_coeff_y) according to coding scan order. The RRC will code sub_block by sub_block starting from the last non-zero sub_block in reverse scan order. Within each sub_block, RRC will code the level of each position in a reverse coding scan order, with the following syntax elements.
[0062] For each level, a flag named as sig_coeff_flag is coded into the bitstream.
The sig_coeff_flag indicates whether the level is zero (in which case the sig_coeff_flag is set to 0) or non-zero (in which case the sig_coeff_flag is set to 1). If the level is non-zero, the first abs_level_gtx_flag[0] will be coded to indicate if the absolute level is 1 (set to 0) or greater than 1 (set to 1). If the absolute level is greater than 1, the par_level_flag will be coded to indicate if the level is odd (set to 1) or even number (set to 0). Using abs_level_gtx_flag[0] and par_level_flag, it may be determined whether the level is equal to 2 or 3. Alternatively, as described above, an abs_level_gtxX_flag may be set, in this case, abs_level_gtxl_flag. Another syntax element, the second abs_level_gtx_flag[l] is also coded to indicate if the absolute level is greater than 3 (set to 1) or not (set to 0). In this case, the abs_level_gtx2_flag may alternatively be set. If the level is greater than 3, two syntax elements, abs_remainder and dec_abs_level may be coded, or alternatively an abs_level_gtx3_flag . . . abs_level_gtxN_flag may be set. In addition, the sign of each level within a block will also be coded to fully represent the quantization level.
[0063] Thus, in various embodiments, a video coder, such as an encoder, may be configured to perform residual coding more efficiently. Utilizing a zero quantizer and non zero quantizer, coding of the sig_coeff_flag may be made more efficient. For example, in various embodiments, when using a non-zero quantizer Ql, the coding of the sig_coeff_flag may be skipped altogether. When using a non-zero quantizer, all levels quantized from the non-zero quantizer will have an absolute value greater than or equal to 1. Thus, the sig_coeff_flag is always 1 for all quantization level outputs from the non-zero quantizer. Therefore, it may not be necessary to code the sig_coeff_flag when a level is produced by the non-zero quantizer. The other syntax elements of the residual coding for the non-zero quantizer may remain unchanged from the previously described. Similarly, residual coding of a quantization level of a zero quantizer may remain unchanged, with the sig_coeff_flag still being coded as both 0 and non-zero levels may be produced by quantizing with the zero quantizer.
[0064] In various embodiments, the above described modifications dependent quantization and residual coding scheme may be adopted in one or more different video coding standards, and is not limited to any single coding standard. For example, the usage of a non-zero quantizer and corresponding residual coding may be used, for example, and without limitation, in advanced video coding (AVC), high-efficiency video coding (HEVC), and/or VVC-based codecs, or further adapted to other types of suitable codec designs.
[0065] Fig. 5 is a flow diagram of a method 500 for state transition during encoding of a video block in dependent quantization, in accordance with various embodiments. The method 500 begins, at block 505, by receiving a video data block. As previously described, in some embodiments, a block of video data may include, without limitation, a CTU, subdivision of a CTU, or CU. The block of video data may further include transformed and/or non-transformed video data. Thus, in some embodiments, at block 510, method 500 continues by transforming the block of video data to produce a block of transform coefficients. In one example, the transform may be a discrete cosine transform. In some embodiments, the block may be transformed, while in others, the block of video data may not be transformed, and instead a prediction residue may be quantized. [0066] At decision block 515, method 500 continues by determining whether a first non-zero level in the scan order has been or is produced by the current coefficient. If it is determined that the first non-zero level has been or is produced, the method 500 may continue, at block 520, by selecting a quantizer based on the current state. In some examples, if it is determined that the current coefficient will produce the first non-zero level of a block, the current state may be set to a "default" or a "start" state (e.g., state 0).
In other embodiments, if it is determined that the first non-zero level has been previously produced, a quantizer may be selected according to the current state, which may further be determined based on a transition condition and a previous state preceding the current state. For example, in some embodiments, the state transition may be determined by a transition condition, t. In some embodiments, the transition condition may be based, at least in part, on a sig_coeff_flag. In one example, t may be defined as the condition: sig_coeff_flag ==
1. In further examples, the transition condition may be based on an abs_level_gtxX_flag, such that the transition condition t may be set when the level is equal to an integer between 1-N. As previously described, in one example, t may be defined as the condition: (sig_coeff_flag == 1) && (abs_level_gtxX_flag == 0), where the "X" in gtxX is an integer between 1-N. Thus, in various embodiments, a state for a subsequent coefficient may depend on the level of the current coefficient as determined by the sig_coeff_flag, or alternatively an abs_level_gtxX_flag. It follows that the state of the current coefficient is determined by the level of the preceding coefficient.
[0067] If it is determined, at block 515, that the first non-zero level in the scan order has not yet been produced, the method 500 may continue by checking whether the first non-zero level is (or has been) produced for the next coefficient. In some examples, if it is determined for a current coefficient that the first non-zero level in the scan order is not (and has not been) produced, quantization of the current coefficient may be skipped, and the check for a non-zero level performed for a succeeding coefficient.
[0068] At block 525, the current coefficient is then quantized by the selected quantizer, which is determined based on the current state of the current coefficient, as determined by the state transition algorithm. In some embodiments, for example, when in state 0 or state 1, a first quantizer, Q0, may be selected. When in state 2 or state 3, a second quantizer, Ql, may be selected. In various embodiments, a quantizer may be selected as one of the first quantizer or a second quantizer. As described above, the first quantizer may be a zero quantizer. A zero quantizer, for example, may be a quantizer configured to quantize a coefficient to a 0 value. In contrast, a non-zero quantizer does not output a 0 quantization level and thus, does not quantize a coefficient to a 0 value. Accordingly, the current coefficient may be quantized via the selected quantizer.
[0069] At block 530, the method 500 may further include setting a significant coefficient flag (e.g., sig_coeff_flag) and/or additional flags (e.g., abs_level_gtxX_flag or other flags). As previously described, in various embodiments, the significant coefficient flag and/or additional flags may be set according to the quantization level. For example, for each level, the sig_coeff_flag may be used to indicate whether the level is zero or non zero. Similarly, the abs_level_gtxX_flag may be coded if the magnitude of the quantization level (e.g., the absolute level) is greater than X, where X is an integer number between 1 and N.
[0070] At block 535, method 500 further comprises determining a subsequent state for a subsequent coefficient based on a transition condition. As with the determination of the current state, the determination of the subsequent state for the subsequent coefficient may be based on the transition condition. In some examples, the transition condition may be based, at least in part, on a current state. In further examples, the transition condition may further be based, at least in part, on one or more of a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4.
[0071] The method 500 may, in some examples, further include processing a subsequent coefficient (or alternatively prediction residue) in the scan order, as described above, until all coefficients in the scan order have been coded.
[0072] Fig. 6 is a flow diagram of a method 600 for state transition during decoding of a video block via dependent quantization, in accordance with various embodiments. The method 600 begins, at block 605, by accessing quantization levels for a video block. As previously described, quantization levels may converted via residual coding into a bit stream. Thus, a bit stream of encoded video data may include a sequence of quantization levels. In some embodiments, the quantization levels of a video block may thus be accessed by extracting respective quantization levels for each element of a video block. In some examples, the element of a video block may depend on whether RRC was utilized, in which case a transform is applied to a prediction residue to produce a coefficient, or TSRC applied, in which case no transform is applied. Thus, the dequantized element may, in the case of RRC, be a coefficient, and in the case of a TSRC encoded bit stream, the dequantized element may be a prediction residue. Thus, each element may further correspond to a respective position of the video block in a coding scan order (e.g., encoding / decoding scan order). Accordingly, at block 610, the method 600 includes processing a quantization level for each element, such that a respective quantization level may be extracted from the bit stream of encoded video data, for each respective element of the video block.
[0073] Furthermore, a quantizer may be selected to dequantize the quantization level. At decision block 615, the method 600 continues by determining whether a current quantization level is the first non-zero quantization level. If it is determined that it is the first non-zero quantization level, at block 640, a scan order position of the first non-zero quantization level and a current state may be determined. In some examples, the first non zero quantization level during dequantization may correspond to the position of the last non-zero level during quantization. Thus, in some examples, the 2D coordinates, last_sig_coeff_x and last_sig_coeff_y, may be used to determine the scan order position of the first non-zero quantization level. In some further examples, the current state for the first-non-zero quantization level may be set to a "default" or a "start" state (e.g., state 0). The method 600 may continue, at block 620, by selecting a quantizer based on the current state for the quantization level. As it is determined that the current quantization level is the first non-zero level, the current state may, in some examples, be set to a "default" or a "start" state (e.g., state 0).
[0074] Similarly, if it is determined that the current quantization level is not the first non-zero level, the method 600 may continue, at block 620, selecting a quantizer based on the current state for the quantization level. As previously described, in some embodiments, a quantizer may be selected based on a current state for the current quantization level. A current state may be determined during the dequantization of a preceding quantization level, and further, based on a transition condition. As previously described, the transition condition may be determined, for example, based on the preceding state, which would be the "current" state for the preceding quantization level, and a flag (or one or more flags), such as a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4.
[0075] At block 625, the method 600 continues by dequantizing the current quantization level using the selected quantizer. In some examples, the first non-zero quantization level may be quantized with a first quantizer (associated with state 0). At block 630, the method 600 continues by reconstructing the video block based on the dequantized element produced by dequantizing the current quantization level. In some examples, the dequantized element may be a quantized coefficient (e.g., transformed prediction residue), or in some examples, a quantized prediction residue where transform skip residual coding is used (e.g., a prediction residue is not transformed before quantization on the encode side). In each case, the quantized coefficient may refer to the coefficient after it has been quantized, and subsequently dequantized. Similarly, quantized prediction residue may refer to the prediction residue after it has been quantized, and subsequently dequantized. In various examples, the dequantized element may differ from the original (e.g., the original coefficient may be different from the dequantized "quantized coefficient", and similarly the original prediction residue may differ from the dequantized "quantized prediction residue").
[0076] The method 600 further includes, at block 635, determining a subsequent state based on the transition condition. As with the determination of the current state, the determination of the subsequent state for the subsequent coefficient may be based on the transition condition. In some examples, the transition condition may be based, at least in part, on a current state. In further examples, the transition condition may further be based, at least in part, on one or more of a sig_coeff_flag and/or abs_level_gtxX_flag, as described with respect to Fig. 4. After determination of the subsequent state, the method 600 may further include processing the subsequent quantization level, in the coding scan order, as described above, until all quantization levels have been dequantized.
[0077] The process of dependent quantization and state transition for dependent quantization may be performed by a media coding system, which may include an encoder and/or decoder. Fig. 7 is a block diagram of a media encoding subsystem 700, in accordance with various embodiments. The media encoding subsystem 700 may include transform processing logic 705, quantization unit 710, residual coding logic 730, dequantization and inverse transform transform logic 735, and coding mode selection logic 740. The quantization unit 710 may further include state transition logic 715, a first quantizer 720 and a second quantizer 725. The coding mode selection logic 740 may include motion estimation logic 745, motion compensation logic 750, and prediction logic 755. It should be noted that the various components of the media encoding subsystem 700 are schematically illustrated in Fig. 7, and that modifications to the media encoding subsystem 700 may be possible in accordance with the various embodiments.
[0078] In various embodiments, the media encoding subsystem 700 may be implemented on any suitable hardware, such as one or more microprocessors, digital signal processors (DSP), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, or a combination of software and hardware. Features and logic implemented in software may be stored in corresponding non-transitory computer-readable media and/or storage devices. This is discussed in greater detail below with respect to Fig. 9.
[0079] In various embodiments, the video data may include an image (e.g., a frame) of the video data, also referred to as a block or macroblock. The video data may be provided to the coding mode selection logic 740, which may be configured to produce a predicted image (e.g., a predicted block). In some embodiments, the predicted image may be subtracted from an actual subsequent image of the frame to produce a residual frame (e.g., a residual block), and transform processing logic 705 may transform the residual block to produce a block of transformed video data from the residual frame. The block of transformed video data may be provided to the quantization unit 710. In other examples, the video data may be provided directly to the quantization unit 710, without undergoing transformation. As previously described, in some examples, a block may include a CTU, subdivision of a CTU, or CU.
[0080] Quantization unit 710 may be configured to quantize the transformed or non-transformed video data to produce a block of quantization levels. The state transition logic 715 may be configured to determine state transitions between each coefficient of the residual block, and thereby determining which quantizer of the first quantizer 720 or second quantizer 725 will be used to quantize the coefficient. The state transition logic 715 may, for example, determine state transitions based on a transition condition, as described above with respect to Figs. 4-6. As previously described, in some embodiments, for example, a subsequent state may be determined based, at least in part, on a sig_coeff_flag indicative whether a level of a coefficient is zero or non-zero, or alternatively based on an abs_IeveI_gtxX_flag indicative of whether the level of the coefficient is greater than an integer X, where X is an integer between 1-N. Accordingly, the quantization unit 710 may, in some examples, produce sets of quantization levels. In some embodiments, the quantized block may be processed by the residual coding logic 730. The residual coding logic 730 may be configured to convert the data of the quantized block into a bit stream. For example, in some embodiments, data in the block may be binarized into binary bins, as previously described.
[0081] In some embodiments, the quantized block may further be provided to the dequantization & inverse transform logic 735 for further processing. For example, in some embodiments, the dequantization and inverse transform logic may be used to generate a reconstructed residual block. The reconstructed residual block may be added to the next predicted frame and used for motion estimation logic 745, motion compensation logic 750, and prediction logic 755 to produce a predicted frame.
[0082] Fig. 8 is a block diagram of a media decoding system 800, in accordance with various embodiments. The media decoding system 800 may include entropy decoding logic 805, dequantization unit 810, state transition logic 815, first quantizer 820, second quantizer 825, inverse transform logic 830, coding mode selection logic 835, motion estimation logic 840, motion compensation logic 845, and prediction logic 850. It should be noted that the various components of the media decoding system 800 are schematically illustrated in Fig. 8, and that modifications to the media encoding system 800 may be possible in accordance with the various embodiments.
[0083] In various embodiments, like the media encoding system 700, the media decoding system 800 may be implemented on any suitable hardware, such as one or more microprocessors, DSP, ASIC, FPGA, discrete logic, software, hardware, or a combination of software and hardware. In various embodiments, the encoded video data may include a bit stream of encoded video blocks. Accordingly, entropy decoding logic 805 may be configured to decode the encoded bit stream of video data. Specifically, the encoded bit stream may be decoded and quantized elements extracted from the encoded bit stream for further processing.
[0084] In some examples, the quantized elements may then be inverse quantized
(or dequantized) by the dequantization unit 810, using one of the first quantizer 820 or second quantizer 825. As previously described, selection of the first or second quantizer 820, 825 may be determined according to state transition logic 815. In various embodiments, state transition logic 815 may select a quantizer based on a current state for a current quantized element (which, as previously explained, may be a coefficient or prediction residue), and a sig_coeff_flag and/or abs_level_gtxX_flag.
[0085] In some examples, a subsequent state may be determined according to a state transition table, as described above with respect to Fig. 4. As previously described, in some embodiments, for example, a subsequent state may be determined based, at least in part, on a current state and a sig_coeff_flag indicative whether a level of a coefficient is zero or non-zero, or alternatively based on an abs_level_gtxX_flag indicative of whether the level of the coefficient is greater than an integer X, where X is an integer between 1 -N. [0086] In some examples, the dequantized elements may further be inverse transformed by inverse transform logic 830. As previously described, in some examples, the dequantized element may be a quantized coefficient produced by transforming a prediction residue. Accordingly, the inverse transform logic 830 may inverse transform the coefficient produced by the dequantization unit 810. In some examples, for blocks where the transform is skipped, the inverse transform module 830 is not applied to those blocks. [0087] In further examples, the residual block, produced by the dequantization unit
810 may be added to a corresponding predicted block, produced by the coding mode selection logic 835, to generate a reconstructed block. The reconstructed block may then be provided to the coding mode selection logic 835 to produce a subsequent predicted block. Thus, the de-quantized elements produced by the dequantization unit 810 may be used to generate the reconstructed block, with a decoded video may be produced. As discussed above with respect to Fig. 7, the prediction block may be generated according to a coding mode and parameters of the block, and according to motion estimation logic 840, motion compensation logic 845, and prediction logic 850.
[0088] Fig. 9 is a schematic block diagram of a computer system 900 for state transitioning in dependent quantization, in accordance with various embodiments. Fig. 9 provides a schematic illustration of one embodiment of a computer system 900, such as a media coding system, media encoding subsystem 700, media decoding subsystem 800, or subsystems thereof, such as an encoder, decoder, transform processing logic, residual codign logic, quantization unit, coding mode selection logic, dequantization and inverse transform logic, state transition logic, or combinations thereof, which may perform the methods provided by various other embodiments, as described herein. It should be noted that Fig. 9 only provides a generalized illustration of various components, of which one or more of each may be utilized as appropriate. Fig. 9, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.
[0089] The computer system 900 includes multiple hardware elements that may be electrically coupled via a bus 905 (or may otherwise be in communication, as appropriate). The hardware elements may include one or more processors 910, including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers); one or more input devices 915, which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like; and one or more output devices 920, which can include, without limitation, a display device, and/or the like. [0090] The computer system 900 may further include (and/or be in communication with) one or more storage devices 925, which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random-access memory ("RAM") and/or a read-only memory ("ROM"), which can be programmable, flash-updateable, and/or the like. Such storage devices may be configured to implement any appropriate data stores, including, without limitation, various file systems, database structures, and/or the like.
[0091] The computer system 900 might also include a communications subsystem
930, which may include, without limitation, a modem, a network card (wireless or wired), an IR communication device, a wireless communication device and/or chipset (such as a Bluetooth™ device, an 802.11 device, a WiFi device, a WiMax device, a WWAN device, a Z-Wave device, a ZigBee device, cellular communication facilities, etc.), and/or an LP wireless device as previously described. The communications subsystem 930 may permit data to be exchanged with a network (such as the network described below, to name one example), with other computer or hardware systems, between data centers or different cloud platforms, and/or with any other devices described herein. In many embodiments, the computer system 900 further comprises a working memory 935, which can include a RAM or ROM device, as described above.
[0092] The computer system 900 also may comprise software elements, shown as being currently located within the working memory 935, including an operating system 940, device drivers, executable libraries, and/or other code, such as one or more application programs 945, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above might be implemented as code and/or instructions executable by a computer (and/or a processor within a computer); in an aspect, then, such code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.
[0093] A set of these instructions and/or code might be encoded and/or stored on a non-transitory computer-readable storage medium, such as the storage device(s) 925 described above. In some cases, the storage medium might be incorporated within a computer system, such as the system 900. In other embodiments, the storage medium might be separate from a computer system (i.e., a removable medium, such as a compact disc, etc.), and/or provided in an installation package, such that the storage medium can be used to program, configure, and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computer system 900 and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system 900 (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.
[0094] It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware (such as programmable logic controllers, single board computers, FPGAs, ASICs, and SoCs) might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed.
[0095] As mentioned above, in one aspect, some embodiments may employ a computer or hardware system (such as the computer system 900) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the computer system 900 in response to processor 910 executing one or more sequences of one or more instructions (which might be incorporated into the operating system 940 and/or other code, such as an application program 945) contained in the working memory 935. Such instructions may be read into the working memory 935 from another computer readable medium, such as one or more of the storage device(s) 925. Merely by way of example, execution of the sequences of instructions contained in the working memory 935 might cause the processor(s) 910 to perform one or more procedures of the methods described herein.
[0096] The terms "machine -readable medium" and "computer-readable medium," as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion. In an embodiment implemented using the computer system 900, various computer-readable media might be involved in providing instructions/code to processor(s) 910 for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals). In many implementations, a computer- readable medium is a non-transitory, physical, and/or tangible storage medium. In some embodiments, a computer-readable medium may take many form , including, but not limited to, non-volatile media, volatile media, or the like. Non-volatile media includes, for example, optical and/or magnetic disks, such as the storage device(s) 925. Volatile media includes, without limitation, dynamic memory, such as the working memory 935. In some alternative embodiments, a computer-readable medium may take the form of transmission media, which includes, without limitation, coaxial cables, copper wire, and fiber optics, including the wires that comprise the bus 905, as well as the various components of the communication subsystem 930 (and/or the media by which the communications subsystem 930 provides communication with other devices). In an alternative set of embodiments, transmission media can also take the form of waves (including, without limitation, radio, acoustic, and/or light waves, such as those generated during radio-wave and infra-red data communications) .
[0097] Common forms of physical and/or tangible computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH- EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.
[0098] Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 910 for execution. Merely by way of example, the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer. A remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system 900. These signals, which might be in the form of electromagnetic signals, acoustic signals, optical signals, and/or the like, are all examples of carrier waves on which instructions can be encoded, in accordance with various embodiments of the invention.
[0099] The communications subsystem 930 (and/or components thereof) generally receives the signals, and the bus 905 then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory 935, from which the processor(s) 910 retrieves and executes the instructions. The instructions received by the working memory 935 may optionally be stored on a storage device 925 either before or after execution by the processor(s) 910. [0100] While some features and aspects have been described with respect to the embodiments, one skilled in the art will recognize that numerous modifications are possible. For example, the methods and processes described herein may be implemented using hardware components, software components, and/or any combination thereof. Further, while various methods and processes described herein may be described with respect to particular structural and/or functional components for ease of description, methods provided by various embodiments are not limited to any particular structural and/or functional architecture but instead can be implemented on any suitable hardware, firmware and/or software configuration. Similarly, while some functionality is ascribed to one or more system components, unless the context dictates otherwise, this functionality can be distributed among various other system components in accordance with the several embodiments.
[0101] Moreover, while the procedures of the methods and processes described herein are described in a particular order for ease of description, unless the context dictates otherwise, various procedures may be reordered, added, and/or omitted in accordance with various embodiments. Moreover, the procedures described with respect to one method or process may be incorporated within other described methods or processes; likewise, system components described according to a particular structural architecture and/or with respect to one system may be organized in alternative structural architectures and/or incorporated within other described systems. Hence, while various embodiments are described with or without some features for ease of description and to illustrate aspects of those embodiments, the various components and/or features described herein with respect to a particular embodiment can be substituted, added and/or subtracted from among other described embodiments, unless the context dictates otherwise. Consequently, although several embodiments are described above, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims.

Claims

WHAT IS CLAIMED IS:
1. A method comprising: obtaining a current quantization level of a block of video data from an encoded bit stream; entering a current state for the current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state, wherein if the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state; wherein if the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value; selecting one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level; and dequantizing the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
2. The method of claim 1, wherein the first and second quantizers comprise one of: one zero quantizer and one non-zero quantizer; or two zero quantizers.
3. The method of claim 1, wherein the encoded bit stream represents respective quantization levels in binary bins representing a value of the respective quantization levels and the significant coefficient flag.
4. The method of claim 1 , further comprising, for the first non-zero quantization level, determining a scan order position of the first non-zero quantization level.
5. The method of claim 1 further comprising: determining a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
6. The method of claim 1, further comprising: determining the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises: generating a four state model; and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
7. The method of claim 1, wherein the transition condition of the preceding quantization level is determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
8. The method of claim 7, wherein the transition condition is further based on the abs_level_gtxX_flag.
9. The method of claim 8, wherein the transition condition is given by: (sig_coeff_flag == 1) && (abs_level_gtxl==0); wherein the X in the absolute level greater than X flag is 1.
10. The method of claim 1, wherein the transition condition is given by: (sig_coeff_flag == 1).
11. An apparatus, comprising: a processor; and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to: obtain a current quantization level of a block of video data from an encoded bit stream; enter a current state for the current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state, wherein if the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state; wherein if the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value; select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level; and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
12. The apparatus of claim 11, wherein the set of instructions is further executable by the processor to: determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
13. The apparatus of claim 11, wherein the set of instructions is further executable by the processor to: determine the current state of the current quantization level, wherein determining the current state of the current quantization level further comprises: generating a four state model; and determining, during dequantization of the preceding quantization level, the current state of the current quantization level based at least in part on the preceding state of the preceding quantization level, wherein the four state model indicates the state transition from the preceding state to the current state.
14. The apparatus of claim 11, wherein the transition condition of the preceding quantization level is determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
15. The apparatus of claim 14, wherein the transition condition is given by: (sig_coeff_flag == 1) && (abs_level_gtxl==0); wherein the X in the absolute level greater than X flag is 1.
16. The apparatus of claim 11, wherein the transition condition is given by: (sig_coeff_flag == 1).
17. A media coding subsystem, comprising: two or more quantizers comprising a first quantizer and a second quantizer; a decoder configured to encode coefficient values to bit stream; a processor; and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to: obtain a current quantization level of a block of video data from an encoded bit stream; enter a current state for the current quantization level based on a transition condition, wherein the transition condition determines a state transition, wherein a state transition is a transition from one state to another state, wherein if the current quantization level is a first non-zero quantization level of the block in a coding scan order, a start state is entered as the current state; wherein if the current quantization level is not the first non-zero quantization level of the current block in the coding scan order, the current state is determined based on the transition condition of a preceding quantization level in the coding scan order and a preceding state of the preceding quantization level, wherein the preceding quantization level immediately precedes the current quantization level in the coding scan order, wherein the transition condition of the preceding quantization level is determined, at least in part, by a significant coefficient flag (sig_coeff_flag) in an encoded bit stream representing the preceding quantization level, wherein the significant coefficient flag indicates whether the preceding quantization level is a zero value or non-zero value; select one of a first quantizer or a second quantizer to dequantize the current quantization level based on the current state of the current quantization level; and dequantize the current quantization level via a selected quantizer of the one of the first quantizer or the second quantizer to produce a current dequantized element.
18. The media coding subsystem of claim 17, wherein the set of instructions is further executable by the processor to: determine a subsequent state for the subsequent quantization level immediately succeeding the current quantization level in the coding scan order, wherein the subsequent state is determined based, at least in part, on the transition condition of the current quantization level, wherein the transition condition of the current quantization level is determined, at least in part, by the significant coefficient flag in the encoded bit stream representing the the current quantization level.
19. The media coding subsystem of claim 17, wherein the transition condition of the preceding quantization level is determined, at least in part, by an absolute level greater than X flag (abs_level_gtxX_flag) in the encoded bit stream representing the preceding quantization level, wherein the absolute level greater than X flag indicates whether the absolute level of a given quantization level is greater than X, wherein X is an integer.
20. The media coding subsystem of claim 19, wherein the transition condition is given by one of:
(sig_coeff_flag == 1) && (abs_level_gtxl==0), wherein the X in the absolute level greater than X flag is 1 ; or
(sig_coeff_flag == 1).
PCT/US2022/017272 2021-02-25 2022-02-22 Dependent quantization state transition method for video coding WO2022187026A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202280015847.XA CN116965021A (en) 2021-02-25 2022-02-22 Method for converting relative quantization state of video coding and decoding

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163153664P 2021-02-25 2021-02-25
US63/153,664 2021-02-25

Publications (2)

Publication Number Publication Date
WO2022187026A2 true WO2022187026A2 (en) 2022-09-09
WO2022187026A3 WO2022187026A3 (en) 2022-10-13

Family

ID=83155613

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/017272 WO2022187026A2 (en) 2021-02-25 2022-02-22 Dependent quantization state transition method for video coding

Country Status (2)

Country Link
CN (1) CN116965021A (en)
WO (1) WO2022187026A2 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11019346B2 (en) * 2018-07-02 2021-05-25 Qualcomm Incorporated Coefficient coding with grouped bypass remaining levels for dependent quantization
BR112021005558A2 (en) * 2018-09-24 2021-06-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. apparatus for encoding and decoding a block of transform coefficients, encoder for encoding and decoder for decoding a block of transform coefficient, method for encoding and decoding a block of transform coefficients, data stream
US11523136B2 (en) * 2019-01-28 2022-12-06 Hfi Innovation Inc. Methods and apparatuses for coding transform blocks

Also Published As

Publication number Publication date
CN116965021A (en) 2023-10-27
WO2022187026A3 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
US11750841B2 (en) Methods and apparatuses for coding transform blocks
US11765342B2 (en) Multi-component picture or video coding concept
JP5733590B2 (en) A context modeling technique for encoding transform coefficient levels.
US8208543B2 (en) Quantization and differential coding of alpha image data
CN105409218B (en) Decoder and decoding method
US9270988B2 (en) Method of determining binary codewords for transform coefficients
WO2020259631A1 (en) Signaling coding of transform-skipped blocks
GB2519070A (en) Data encoding and decoding
CN110650349B (en) Image encoding method, decoding method, encoder, decoder and storage medium
US10652541B2 (en) Method and device for encoding video data
CN114930817A (en) Signaling technique for quantizing related parameters
KR20220030999A (en) Encoder, decoder, method and computer program with improved transform based on scaling
TW202131681A (en) Determining a parametrization for context-adaptive binary arithmetic coding
CN110944179A (en) Video data decoding method and device
KR20140131352A (en) Method for coding and an apparatus
WO2022187026A2 (en) Dependent quantization state transition method for video coding
WO2022178405A1 (en) Dependent quantization and residual coding method
KR102551317B1 (en) Send optional quantization parameters
CN108206950B (en) Code stream length calculation method and device
JP2024516358A (en) Coefficient encoding/decoding method, encoder, decoder, and computer storage medium
WO2022191947A1 (en) State based dependent quantization and residual coding in video coding
TW202041032A (en) Use-case driven context model selection for hybrid video coding tools
WO2023129918A9 (en) Intra prediction with multiple reference lines

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 202280015847.X

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 22763773

Country of ref document: EP

Kind code of ref document: A2