WO2022191947A1 - State based dependent quantization and residual coding in video coding - Google Patents

State based dependent quantization and residual coding in video coding Download PDF

Info

Publication number
WO2022191947A1
WO2022191947A1 PCT/US2022/015862 US2022015862W WO2022191947A1 WO 2022191947 A1 WO2022191947 A1 WO 2022191947A1 US 2022015862 W US2022015862 W US 2022015862W WO 2022191947 A1 WO2022191947 A1 WO 2022191947A1
Authority
WO
WIPO (PCT)
Prior art keywords
current position
flag associated
quantization level
flag
block
Prior art date
Application number
PCT/US2022/015862
Other languages
French (fr)
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 CN202280018400.8A priority Critical patent/CN116918327A/en
Publication of WO2022191947A1 publication Critical patent/WO2022191947A1/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/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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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

  • Embodiments of the present disclosure relate to video coding.
  • Video coding techniques may be used to compress video data, such that coding on the video data can be performed using one or more video coding standards.
  • Exemplary video coding standards may include, but not limited to, versatile video coding (H.266/VVC), high-efficiency video coding (H.265/HEVC), advanced video coding (H.264/AVC), moving picture expert group (MPEG) coding, to name a few.
  • a method for encoding a picture of a video including a block is disclosed.
  • a coefficient of a current position in the block is quantized by a processor based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • a flag associated with the current position is determined based, at least in part, on the quantization level of the current position.
  • the quantization level of the current position is encoded into a bitstream based, at least in part, on the flag associated with the current position.
  • a system for encoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory.
  • the processor is configured to, upon executing the instructions, quantize a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • the processor is also configured to, upon executing the instructions, determine a flag associated with the current position based, at least in part, on the quantization level of the current position.
  • the processor is further configured to, upon executing the instructions, encode the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
  • a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for encoding a picture of a video including a block.
  • the process includes quantizing a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • the process also includes determining a flag associated with the current position based, at least in part, on the quantization level of the current position.
  • the process further includes encoding the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
  • a method for decoding a picture of a video including a block is disclosed.
  • a bitstream is decoded by a processor to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the quantization level of the current position is dequantized by the processor based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
  • a system for decoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory.
  • the processor is configured to, upon executing the instructions, decode a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the processor is also configured to, upon executing the instructions, dequantize the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
  • a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for decoding a picture of a video including a block.
  • the process includes decoding a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the process also includes dequantizing the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
  • FIG. 1 illustrates a block diagram of an exemplary encoding system, according to some embodiments of the present disclosure.
  • FIG. 2 illustrates a block diagram of an exemplary decoding system, according to some embodiments of the present disclosure.
  • FIG. 3 illustrates a detailed block diagram of an exemplary encoder in the encoding system in FIG. 1, according to some embodiments of the present disclosure.
  • FIG. 4 illustrates a detailed block diagram of an exemplary decoder in the decoding system in FIG. 2, according to some embodiments of the present disclosure.
  • FIG. 5 illustrates an exemplary picture divided into coding tree units (CTUs), according to some embodiments of the present disclosure.
  • FIG. 6 illustrates an exemplary CTU divided into coding units (CUs), according to some embodiments of the present disclosure.
  • FIG. 7 illustrates an exemplary scheme of dependent quantization, according to some embodiments of the present disclosure.
  • FIG. 8 illustrates an exemplary state machine for state transition and quantizer selection in dependent quantization, according to some embodiments of the present disclosure.
  • FIG. 9 illustrates a flow chart of an exemplary method of video encoding, according to some embodiments of the present disclosure.
  • FIG. 10 illustrates a flow chart of an exemplary method of determining the state flag for dependent quantization and residual coding, according to some embodiments of the present disclosure.
  • FIG. 11 illustrates a flow chart of another exemplary method of determining the state flag for dependent quantization and residual coding, according to some embodiments of the present disclosure.
  • FIG. 12 illustrates another exemplary state machine for state transition and quantizer selection in dependent quantization, according to some embodiments of the present disclosure.
  • FIG. 13 illustrates an exemplary 4x4 block and the coding scan order thereof, according to some embodiments of the present disclosure.
  • FIG. 14 illustrates a flow chart of an exemplary method of video decoding, according to some embodiments of the present disclosure.
  • references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “some embodiments,” “certain embodiments,” etc. indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of a person skilled in the pertinent art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
  • the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense.
  • terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context.
  • the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
  • video coding includes both encoding and decoding a video.
  • Encoding and decoding of a video can be performed by the unit of block.
  • an encoding/decoding process such as transform, quantization, prediction, in-loop filtering, reconstruction, or the like may be performed on a coding block, a transform block, or a prediction block.
  • a block to be encoded/decoded will be referred to as a “current block.”
  • the current block may represent a coding block, a transform block, or a prediction block according to a current encoding/decoding process.
  • unit indicates a basic unit for performing a specific encoding/decoding process
  • block indicates a sample array of a predetermined size. Unless otherwise stated, the “block” and “unit” may be used interchangeably.
  • quantization is used to reduce the dynamic range of transformed or non-transformed video signals so that fewer bits will be used to represent video signals.
  • 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 “level.”
  • a quantization level of a position refers to the quantization level of a coefficient at the position. Quantization typically involves division by a quantization step size and subsequent rounding, while inverse quantization involves multiplication by the quantization step size.
  • Such a 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.265/HEVC, H.264/AVC, etc. That is, for scalar quantization, the quantization of an individual coefficient is independent from the quantization of coefficients at different positions.
  • residual coding is used to convert the quantization level into the bitstream in video coding.
  • the performance and complexity involved in scalar quantization and subsequent residual coding may not be optimal.
  • a flag (referred to herein as “state flag” as well) associated with the quantization level at each specific position of the current block can reflect the general statistical information of the quantization levels in the current block, which are necessary for achieving optimal residual coding.
  • the meaning of the state flag can be preset differently depending on various video coding applications. For example, the value of the flag may be indicative of a subset of all possible quantization levels of the respective position.
  • the state flag can also be used for choosing the scalar quantizer in dependent quantization, for example, in combination with the state of the position, or different context model in level coding.
  • the state flag can be encoded using a state flag bin in residual coding (e.g., embedded in the bitstream) and thus, can be easily decoded and obtained at the decoder side, for example, for choosing the scalar quantizer, without the need of decoding all bins to obtain the quantization level or the coefficient.
  • residual coding e.g., embedded in the bitstream
  • FIG. 1 illustrates a block diagram of an exemplary encoding system 100, according to some embodiments of the present disclosure.
  • FIG. 2 illustrates a block diagram of an exemplary decoding system 200, according to some embodiments of the present disclosure.
  • Each system 100 or 200 may be applied or integrated into various systems and apparatus capable of data processing, such as computers and wireless communication devices.
  • system 100 or 200 may be the entirety or part of a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an argument reality (AR) device, or any other suitable electronic devices having data processing capability.
  • VR virtual reality
  • AR argument reality
  • system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as connected to one another by a bus, but other connection types are also permitted. It is understood that system 100 or 200 may include any other suitable components for performing functions described here.
  • Processor 102 may include microprocessors, such as graphic processing unit (GPU), image signal processor (ISP), central processing unit (CPU), digital signal processor (DSP), tensor processing unit (TPU), vision processing unit (VPU), neural processing unit (NPU), synergistic processing unit (SPU), or physics processing unit (PPU), microcontroller units (MCUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout the present disclosure.
  • GPU graphic processing unit
  • ISP image signal processor
  • CPU central processing unit
  • DSP digital signal processor
  • TPU tensor processing unit
  • VPU vision processing unit
  • NPU neural processing unit
  • SPU synergistic processing unit
  • PPU physics processing unit
  • MCUs microcontroller units
  • ASICs application-specific integrated circuits
  • FPGAs field-programmable gate array
  • Processor 102 may be a hardware device having one or more processing cores.
  • Processor 102 may execute software.
  • Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
  • Software can include computer instructions written in an interpreted language, a compiled language, or machine code. Other techniques for instructing hardware are also permitted under the broad category of software.
  • Memory 104 can broadly include both memory (a.k.a, primary/system memory) and storage (a.k.a., secondary memory).
  • memory 104 may include random-access memory (RAM), read-only memory (ROM), static RAM (SRAM), dynamic RAM (DRAM), ferro electric RAM (FRAM), electrically erasable programmable ROM (EEPROM), compact disc read only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage devices, Flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store desired program code in the form of instructions that can be accessed and executed by processor 102.
  • RAM random-access memory
  • ROM read-only memory
  • SRAM static RAM
  • DRAM dynamic RAM
  • FRAM ferro electric RAM
  • EEPROM electrically erasable programmable ROM
  • CD-ROM compact disc read only memory
  • HDD hard disk drive
  • HDD such as magnetic disk storage or other magnetic storage devices
  • Flash drive solid-
  • memory 104 may be embodied by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple memories can be included.
  • Interface 106 can broadly include a data interface and a communication interface that is configured to receive and transmit a signal in a process of receiving and transmitting information with other external network elements.
  • interface 106 may include input/output (I/O) devices and wired or wireless transceivers.
  • I/O input/output
  • FIGs. 1 and 2 it is understood that multiple interfaces can be included.
  • Processor 102, memory 104, and interface 106 may be implemented in various forms in system 100 or 200 for performing video coding functions.
  • processor 102, memory 104, and interface 106 of system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs).
  • SoCs system-on-chips
  • processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that handles application processing in an operating system (OS) environment, including running video encoding and decoding applications.
  • API application processor
  • processor 102, memory 104, and interface 106 may be integrated on a specialized processor chip for video coding, such as a GPU or ISP chip dedicated for image and video processing in a real-time operating system (RTOS).
  • RTOS real-time operating system
  • processor 102 may include one or more modules, such as an encoder 101.
  • FIG. 1 shows that encoder 101 is within one processor 102, it is understood that encoder 101 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other.
  • Encoder 101 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions.
  • the instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video encoding, such as picture partitioning, inter prediction, intra prediction, transformation, quantization, filtering, entropy encoding, etc., as described below in detail.
  • processor 102 may include one or more modules, such as a decoder 201.
  • FIG. 2 shows that decoder 201 is within one processor 102, it is understood that decoder 201 may include one or more sub-modules that - cl ean be implemented on different processors located closely or remotely with each other.
  • Decoder 201 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions.
  • the instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video decoding, such as entropy decoding, inverse quantization, inverse transformation, inter prediction, intra prediction, filtering, as described below in detail.
  • FIG. 3 illustrates a detailed block diagram of exemplary encoder 101 in encoding system 100 in FIG. 1, according to some embodiments of the present disclosure.
  • encoder 101 may include a partitioning module 302, an inter prediction module 304, an intra prediction module 306, a transform module 308, a quantization module 310, a state module 311, an inverse quantization module 312, an inverse transform module 314, a filter module 316, a buffer module 318, and an encoding module 320.
  • partitioning module 302 an inter prediction module 304
  • intra prediction module 306 e.g., a transform module 308
  • quantization module 310 e.g., a quantization module
  • state module 311 e.g., a state module
  • an inverse quantization module 312 e.g., inverse transform module
  • filter module 316 e.g., a buffer module 318
  • each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on encoder 101.
  • Partitioning module 302 may be configured to partition an input picture of a video into at least one processing unit.
  • a picture can be a frame of the video or a field of the video.
  • a picture includes an array of luma samples in monochrome format, or an array of luma samples and two corresponding arrays of chroma samples.
  • the processing unit may be a prediction unit (PU), a transform unit (TU), or a coding unit (CU).
  • Partitioning module 302 may partition a picture into a combination of a plurality of coding units, prediction units, and transform units, and encode a picture by selecting a combination of a coding unit, a prediction unit, and a transform unit based on a predetermined criterion (e.g., a cost function).
  • a predetermined criterion e.g., a cost function.
  • H.266/VVC is a block-based hybrid spatial and temporal predictive coding scheme. As shown in FIG. 5, during encoding, an input picture 500 is first divided into square blocks - CTUs 502, by partitioning module 302. For example, CTUs 502 can be blocks of 128x128 pixels. As shown in FIG.
  • each CTU 502 in picture 500 can be partitioned by partitioning module 302 into one or more CUs 602, which can be used for prediction and transformation.
  • CUs 602 can be rectangular or square, and can be coded without further partitioning into prediction units or transform units.
  • the partition of CTU 502 into CUs 602 may include quadtree splitting (indicated in solid lines), binary tree splitting (indicated in dashed lines), and ternary splitting (indicated in dash-dotted lines).
  • Each CU 602 can be as large as its root CTU 502 or be subdivisions of root CTU 502 as small as 4x4 blocks, according to some embodiments.
  • inter prediction module 304 may be configured to perform inter prediction on a prediction unit
  • intra prediction module 306 may be configured to perform intra prediction on the prediction unit. It may be determined whether to use inter prediction or to perform intra prediction for the prediction unit, and determine specific information (e.g., intra prediction mode, motion vector, reference picture, etc.) according to each prediction method.
  • a processing unit for performing prediction may be different from a processing unit for determining a prediction method and specific content. For example, a prediction method and a prediction mode may be determined in a prediction unit, and prediction may be performed in a transform unit. Residual coefficients in a residual block between the generated prediction block and the original block may be input into transform module 308.
  • prediction mode information, motion vector information, and the like used for prediction may be encoded by encoding module 320 together with the residual coefficients or quantization levels into the bitstream. It is understood that in certain encoding modes, an original block may be encoded as it is without generating a prediction block through prediction module 304 or 306. It is also understood that in certain encoding modes, prediction, transform, and/or quantization may be skipped as well.
  • inter prediction module 304 may predict a prediction unit based on information on at least one picture among pictures before or after the current picture, and in some cases, it may predict a prediction unit based on information on a partial area that has been encoded in the current picture.
  • Inter prediction module 304 may include sub-modules, such as a reference picture interpolation module, a motion prediction module, and a motion compensation module (not shown).
  • the reference picture interpolation module may receive reference picture information from buffer module 318 and generate pixel information of an integer number of pixels or less from the reference picture.
  • a discrete cosine transform (DCT)-based 8-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/4 pixels.
  • a DCT-based 4-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/8 pixels.
  • the motion prediction module may perform motion prediction based on the reference picture interpolated by the reference picture interpolation part.
  • Various methods such as a full search-based block matching algorithm (FBMA), a three-step search (TSS), and a new three- step search algorithm (NTS) may be used as a method of calculating a motion vector.
  • the motion vector may have a motion vector value of a unit of 1/2, 1/4, or 1/16 pixels or integer pel based on interpolated pixels.
  • the motion prediction module may predict a current prediction unit by varying the motion prediction method.
  • Various methods such as a skip method, a merge method, an advanced motion vector prediction (AMVP) method, an intra-block copy method, and the like may be used as the motion prediction method.
  • AMVP advanced motion vector prediction
  • intra prediction module 306 may generate a prediction unit based on the information on reference pixels around the current block, which is pixel information in the current picture.
  • the reference pixel is a pixel on which inter prediction has been performed
  • the reference pixel included in the block on which inter prediction has been performed may be used in place of reference pixel information of a block in the neighborhood on which intra prediction has been performed. That is, when a reference pixel is unavailable, at least one reference pixel among available reference pixels may be used in place of unavailable reference pixel information.
  • the prediction mode may have an angular prediction mode that uses reference pixel information according to a prediction direction, and a non-angular prediction mode that does not use directional information when performing prediction.
  • a mode for predicting luminance information may be different from a mode for predicting color difference information, and intra prediction mode information used to predict luminance information or predicted luminance signal information may be used to predict the color difference information.
  • the intra prediction may be performed for the prediction unit based on a pixel on the left side, a pixel on the top-left side, and a pixel on the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when the intra prediction is performed, the intra prediction may be performed using a reference pixel based on the transform unit.
  • the intra prediction method may generate a prediction block after applying an adaptive intra smoothing (AIS) filter to the reference pixel according to a prediction mode.
  • AIS adaptive intra smoothing
  • the type of the AIS filter applied to the reference pixel may vary.
  • the intra prediction mode of the current prediction unit may be predicted from the intra prediction mode of the prediction unit existing in the neighborhood of the current prediction unit.
  • prediction mode information of the current block may be encoded by performing entropy encoding.
  • a residual block including a prediction unit that has performed prediction based on the prediction unit generated by prediction module 304 or 306 and residual coefficient information, which is a difference value of the prediction unit with the original block, may be generated.
  • the generated residual block may be input into transform module 308.
  • Transform module 308 may be configured to transform the residual block including the original block and the residual coefficient information of the prediction unit generated through prediction modules 304 and 306 using a transform method, such as DCT, discrete sine transform (DST), Karhunen-Loeve transform (KLT), or transform skip. Whether to apply the DCT, the DST, or the KLT to transform the residual block may be determined based on intra prediction mode information of a prediction unit used to generate the residual block. Transform module 308 can transform the video signals in the residual block from the pixel domain to a transform domain (e.g., a frequency domain depending on the transform method). It is understood that in some examples, transform module 308 may be skipped, and the video signals may not be transformed to the transform domain.
  • a transform method such as DCT, discrete sine transform (DST), Karhunen-Loeve transform (KLT), or transform skip. Whether to apply the DCT, the DST, or the KLT to transform the residual block may be determined based on intra prediction mode information of
  • Quantization module 310 may be configured to quantize the coefficient of each position in the current block to generate quantization levels of the positions.
  • the current block may be the residual block. That is, quantization module 310 can perform a quantization process on each residual block.
  • the residual block may include NxM positions (samples) each associated with a transformed or non-transformed video signal/data, such as luma and/or chroma information, where N and are positive integers.
  • the transformed or non-transformed video signal at a specific position is referred to herein as a “coefficient.”
  • the quantized value of the coefficient is referred to herein as a “quantization level” or “level.”
  • Quantization can be used to reduce the dynamic range of transformed or non- transformed video signals so that fewer bits will be used to represent video signals. Quantization typically involves division by a quantization step size and subsequent rounding, while inverse quantization involves multiplication by the quantization step size. Such a quantization process is referred to as 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/AVC and H.265/HEVC.
  • a specific coding scan order may be used to convert the two- dimensional (2D) coefficients of a block into a one-dimensional (ID) order for coefficient quantization and coding.
  • the coding scan starts from the left-top corner and stops at the right-bottom comer of a block or the last non-zero coefficient/level in a right-bottom direction.
  • the coding scan order may include any suitable order, such as a zig-zag scan order, a vertical (column) scan order, a horizontal (row) scan order, a diagonal scan order, or any combinations thereof. Quantization of a coefficient within a block may make use of the coding scan order information.
  • quantization module 310 it may depend on the status of the previous quantization level along the coding scan order.
  • more than one quantizer e.g., two scalar quantizers
  • which quantizer will be used for quantizing the current coefficient may depend on the information preceding the current coefficient in coding scan order.
  • Such a quantization process is referred to as dependent quantization.
  • two quantizers namely Q0 and Ql, may be used for dependent quantization.
  • the quantization step size D may be determined by the quantization factor, which may be embedded in the bitstream. Both quantizers Q0 and Ql can quantize a coefficient to a level equal to zero.
  • the quantizer used for quantizing the current coefficient can be explicitly specified. However, the overhead to signal the quantizer will compromise the coding efficiency.
  • the quantizer for the current coefficient can be determined and derived by using the information of the previous quantization level of the previous coefficient, i.e., the information of the quantization level of the preceding position along the coding scan order of the current block.
  • the information used for determining the quantizer in dependent quantization includes at least the state flag associated with a position determined based on the quantization level, for example, the absolute value of the quantization level, as described below in detail.
  • state module 311 may be configured to determine the state flag associated with each position based, at least in part, on the quantization level of the position, such as the absolute value of the quantization level. For example, for each position, state module 311 may obtain the absolute value of the quantization level of the position and determine the state flag associated with the position based, at least in part, on the absolute value of the quantization level.
  • State module 311 may provide the determined state flag associate with the current position to quantization module 310, such that quantization module 310 can use the state flag associate with the current position to determine the quantizer used for performing dependent quantization at the following position.
  • state module 311 further determines the state of the following position based on both the state flag associated with the current position and the state of the current position, and use the state of the following position to determine the quantizer used for performing dependent quantization at the following position.
  • the state of the current position (and the quantizer determined therefrom) may be determined based on both the state flag of the preceding position and the state of the preceding position.
  • FIG. 8 and TABLE I below illustrate one example of parity-state transition and quantizer selection in dependent quantization.
  • the switching between the two scalar quantizers may be achieved using a state machine with four states.
  • the state can take four different values: 0, 1, 2, and 3. It may be uniquely determined by at least the parity of quantization level preceding the current coefficient in the coding scan order.
  • the state may be set equal to a default value, e.g., 0.
  • the coefficients may be reconstructed in a coding scan order (i.e., in the same order as they are entropy decoded).
  • the state may be updated as shown in FIG. 8, where k denotes the value of the level at a specific position along the coding scan order.
  • the following state may only depend on the current state and the parity state flag ( k& 1) of the current level.
  • k representing the value of the current coefficient level
  • the state transition process can be written as:
  • StateTransTable[ state ][ k & 1 ] (1) where stateTransTable represents the table in TABLE I, and the operator & specifies the bitwise “and” operator in two’s-complement arithmetic.
  • state transition can also be specified without a transition table as:
  • Next state ( 32040 » ( ( state ⁇ 2 ) + ( ( & & 1 ) « 1 ) ) ) & 3 (2), where the 16-bit value 32040 specifies the state transition table.
  • the state may uniquely specify 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 may be used. Otherwise (the state is equal to 2 or 3), the scalar quantizer Ql may be used. It is understood that in H.266/VCC, dependent quantization may be only allowed for regular residual coding (RRC), meaning that the quantization method is applied to the transform coefficients of the prediction residues instead of the prediction residues themselves.
  • RRC regular residual coding
  • encoding module 320 may be configured to encode the quantization level of each position in the current block into the bitstream based, at least in part, on the state flag of the respective position.
  • encoding module 320 may perform entropy encoding on the current block based on the quantization levels from quantization module 310 as well as the state flags determined by state module 311.
  • Entropy encoding may use various encoding methods, such as exponential-Golomb coding or context coding, for example, context- adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and the like.
  • encoding module 320 may encode various other information, such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information input from, for example, prediction modules 304 and 306.
  • encoding module 320 may perform residual coding on a residual block to convert the quantization level into the bitstream. For example, after quantization, there may be N*M quantization levels for an L ,c L7 block. These N*M levels may be zero or non zero values. The non-zero levels may be further binarized to binary bins if the levels are not binary, for example, using CABAC. For example, for an RRC block in H.266/VCC, the position of the last non-zero level may be 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 may be first coded.
  • An RRC block may include several pre-defmed sub-blocks.
  • the last non-zero sub block, which has the last non-zero level, may be derived from (last sig coeff x and last_sig_coeff_y) according to coding scan order.
  • RRC may code sub block by sub block starting from the last non-zero sub block with a reverse coding scan order. Within a sub block, RRC may code the level of each position with a reverse coding scan order.
  • abs level gtxX flag bins and a remainder bin may be used to allow conditionally parsing the syntax elements for level coding of a residual block, and its corresponding binarization of absolute value of level is shown in TABLE II below.
  • abs level gtxX flag describes if the absolute value of level is greater than X where X is an integer number, e.g., 0, 1, 2, .... or N. If abs_level_gtxX_flag is 0 where X is an integer between 0 and N- 1, abs_level_gtx(X+l)_flag will not be present. If abs_level_gtxX_flag is 1, abs_level_gtx(X+l)_flag will be present.
  • abs_level_gtxN_flag 0 if abs_level_gtxN_flag is 0, the remainder will not be present.
  • abs_level_gtxN_flag 1 if abs_level_gtxN_flag is 1, the remainder will be present, and it represents the value after removing (N +1) from the level.
  • the state information used for choosing the quantizer in dependent quantization is not directly coded in any bin by encoding module 320.
  • the absolute level of a position needs to be first obtained, for example, by parsing each syntax element (e.g., bin) in order to determine the state flag associated with the position for choosing the correct quantizer for dequantizing the quantization level of the following position, which is inefficient.
  • the state flag associated with each position determined by state module 311 is encoded by encoding module 320 as well, for example, using a dedicated syntax element, into the bitstream, such that the decoder can obtain the state flag directly from the state flag bin without first obtaining the quantization level of the position, thereby improving the efficiency of the video coding.
  • one of the abs level gtxX flag bins is replaced by the state flag bin in residual coding by encoding module 320.
  • a first bin - abs level gtxO flag (a.k.a. sig coeff flag) may be first coded into the bitstream to indicate if the level is zero or non-zero. If the level is non-zero, a second bin - abs level gtxl flag may be coded to indicate if the absolute level is 1 or greater than 1.
  • a parity-state flag bin - par level flag may replace the abs_level_gtx2_flag in TABLE II and may be coded to indicate if the level is odd or even number, and then abs_level_gtx3_flag may be present.
  • the par level flag and abs_level_gtx3_flag may be used together to indicate the level is 2, or 3 or greater than 3.
  • the absolute value of the level a.k.a., absolute level, abs(lvl)
  • one more syntax element - abs remainder may be coded based on the remainder.
  • the sign of each level within a block may also be coded in another sign bin to fully represent the quantization level.
  • dequantization module 312 may be configured to dequantize the quantization levels by dequantization module 312, and inverse transform module 314 may be configured to inversely transform the coefficients transformed by transform module 308.
  • the reconstructed residual block generated by dequantization module 312 and inverse transform module 314 may be combined with the prediction units predicted through prediction module 304 or 306 to generate a reconstructed block.
  • Filter module 316 may include at least one among a deblocking filter, an offset correction module, and an adaptive loop filter (ALF).
  • the deblocking filter may remove block distortion generated by the boundary between blocks in the reconstructed picture.
  • the offset correction module may correct an offset to the original video by the unit of pixel for a video on which the deblocking has been performed. ALF may be performed based on a value obtained by comparing the reconstructed and filtered video and the original video.
  • Buffer module 318 may be configured to store the reconstructed block or picture calculated through filter module 316, and the reconstructed and stored block or picture may be provided to inter prediction module 304 when inter prediction is performed.
  • FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure.
  • decoder 201 may include a decoding module 402, a dequantization module 404, an inverse transform module 406, an inter prediction module 408, an intra prediction module 410, a filter module 412, and a buffer module 414. It is understood that each of the elements shown in FIG. 4 is independently shown to represent characteristic functions different from each other in a video decoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software.
  • each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on decoder 201.
  • Decoding module 402 may be configured to decode the bitstream to obtain various information encoded into the bitstream, such as the quantization level and the state information of each position in the current block.
  • decoding module 402 may perform entropy decoding corresponding to the entropy encoding performed by the encoder, such as exponential-Golomb coding or context coding, for example, CAVLC, CABAC, and the like.
  • decoding module 402 may decode various other information, such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information. During the decoding process, decoding module 402 may perform rearrangement on the bitstream to reconstruct and rearrange the data from a ID order into a 2D rearranged block through a method of inverse scanning based on the coding scan order used by the encoder.
  • block type information of a coding unit such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information.
  • decoding module 402 may perform rearrangement on the bitstream to reconstruct and rearrange the data from a ID order into a 2D rearranged block through a method of inverse scanning based on the coding scan order used by the encoder.
  • decoding module 402 may obtain the state flag associated with each position directly from the bitstream without the need of first obtaining the quantization level of the position, thereby improving the coding efficiency.
  • decoding module 402 may obtain the state flag associated with each position from the state flag bin (par level flag) used for encoding the state flag by the encoder, e.g., as shown in TABLE III above.
  • Dequantization module 404 may be configured to dequantizing the quantization level of each position of the current block (e.g., the 2D reconstructed block) based, at least in part, on the state flag of the preceding position to obtain the coefficient of each position.
  • dequantization module 404 may perform dependent dequantization based on quantization parameters provided by the encoder as well, including the information related to the quantizers used in dependent quantization, for example, the quantization step size D used by each quantizer.
  • dequantization module 404 may choose the quantizer for dequantizing the quantization level of the current position based on the state flag associated with the preceding position obtained from decoding module 402 in conjunction with the same state transition rule (e.g., the state machine and/or state transition table shown in FIG. 8 and TABLE I) used by the encoder when performing the dependent quantization.
  • state transition rule e.g., the state machine and/or state transition table shown in FIG. 8 and TABLE I
  • Inverse transform module 406 may be configured to perform inverse transformation, for example, inverse DCT, inverse DST, and inverse KLT, for DCT, DST, and KLT performed by the encoder, respectively, to transform the data from the transform domain (e.g., coefficients) back to the pixel domain (e.g., luma and/or chroma information).
  • inverse transform module 406 may selectively perform a transform operation (e.g., DCT, DST, KLT) according to a plurality of pieces of information such as a prediction method, a size of the current block, a prediction direction, and the like.
  • Inter prediction module 408 and intra prediction module 410 may be configured to generate a prediction block based on information related to the generation of a prediction block provided by decoding module 402 and information of a previously decoded block or picture provided by buffer module 414. As described above, if the size of the prediction unit and the size of the transform unit are the same when intra prediction is performed in the same manner as the operation of the encoder, intra prediction may be performed on the prediction unit based on the pixel existing on the left side, the pixel on the top-left side, and the pixel on the top of the prediction unit. However, if the size of the prediction unit and the size of the transform unit are different when intra prediction is performed, intra prediction may be performed using a reference pixel based on a transform unit.
  • the reconstructed block or reconstructed picture combined from the outputs of inverse transform module 406 and prediction module 408 or 410 may be provided to filter module 412.
  • Filter module 412 may include a deblocking filter, an offset correction module, and an ALF.
  • Buffer module 414 may store the reconstructed picture or block and use it as a reference picture or a reference block for inter prediction module 408 and may output the reconstructed picture.
  • the parity of quantization level preceding the current position may be used to indicate the state flag to control the state transitions for dependent quantization, as well as in the corresponding residual coding.
  • the quantization of coefficient at the current position may depend on the parity of coefficient at the preceding position along the coding scan order, and the parity-state flag may be embedded in the bitstream to indicate the parity-state information.
  • the value of the state flag associated with the specific position may be indicative of a subset of possible quantization levels of the position.
  • the binary value (e.g., 0 or 1) of the flag may be indicative of either the odd quantization levels or the even quantization levels, i.e., one of the two subsets of all possible quantization levels.
  • the state flag is not limited to the parity-state flag, and may include any suitable non-parity state flag associated with a specific position. Thus, the value of the non-parity state flag may be indicative of a different subset of possible quantization levels, other than odd or even quantization levels, of the position.
  • the meaning of the state flag may be preset differently to further optimize the video coding performance. It is understood that since the parities of the absolute levels in a block may not well reflect the statistical information of the absolute levels to achieve optimal residual coding, consistent with the scope of the present disclosure, in some embodiments, the state flag associated with each position used for dependent quantization and residual coding is a non-parity state flag associated with the position, which can better reflect the statistical information of the absolute levels in the block. In other words, the way how all possible quantization levels of a position are divided into subsets may better reflect the statistical information of the absolute levels in the block, compared with dividing them based on the parity.
  • the state flag associated with each position used for dependent quantization and residual coding is a non-parity state flag associated with the position, which can better reflect the statistical information of the absolute levels in the block. In other words, the way how all possible quantization levels of a position are divided into subsets may better reflect the statistical information of the absolute levels in the block, compared with dividing them based on
  • FIG. 9 illustrates a flow chart of an exemplary method 900 of video encoding, according to some embodiments of the present disclosure.
  • Method 900 may be performed by encoder 101 of encoding system 100 or any other suitable video encoding systems.
  • Method 900 may include operations 902, 904, 906, and 908, as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 9.
  • a coefficient of a current position in the current block is quantized based, at least in part, on a state flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the state flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • quantization module 310 may be configured to quantize the coefficient of the current position in the current block to generate the quantization level of the current position.
  • the coefficient of the current position may be a transformed coefficient in a residual block provided by transform module 308 or a non-transformed coefficient.
  • the coefficient is quantized by performing dependent quantization using multiple quantizers (e.g., scalar quantizers) each having the same quantization step size or different quantization step sizes.
  • quantizers e.g., scalar quantizers
  • one of the quantizers is determined based, at least in part, on the state flag associated with the preceding position along the coding scan order, according to some embodiments. That is, the dependent quantization of the current position may be performed at least based on the state flag associated with the preceding position in the same block for choosing the corresponding quantizer.
  • the state of the preceding position is used in conjunction with the state flag associated with the preceding position to choose the corresponding quantizer for dependent quantization.
  • the quantizer may be determined based on the state flag associated with the preceding position and the state of the preceding position.
  • the state of the preceding position and the state flag associated with the preceding position may be used to determine the state of the current position based on a state transition rule (e.g., a state machine and/or a state transition table), which may be in turn used to choose the corresponding quantizer.
  • a state transition rule e.g., a state machine and/or a state transition table
  • Other factors that may be considered in quantizing the coefficient may include, for example, the information of the quantizers in dependent quantization (e.g., the number of the quantizers and their respective quantization step size).
  • a state flag associated with the current position is determined based, at least in part, on the quantization level of the current position.
  • state module 311 may be configured to determine the state flag associated with each position (including the current position and the preceding and following positions thereof along the coding scan order) based at least on the quantization level of the respective position.
  • the state flag associated with the current position is determined at least based on the absolute value of the quantization level (absolute level) of the current position.
  • the specific state flag, the corresponding method of determining the state flag, as well as the corresponding station transition rule for selecting the quantizer in dependent quantization may be preset depending on the specific video coding application, such as the statistical information of the data in the residual blocks, to achieve optimal coding performance. Other factors that may be considered in determining the state may include, for example, the preset state transition rules.
  • the quantization level of the current position is encoded into a bitstream based, at least in part, on the state flag associated with the current position.
  • a state flag bin is encoded based on the state flag associated with the current position using binary arithmetic coding, for example, CABAC.
  • encoding module 320 may be configured to encode the quantization level of each position (including the current position and the preceding and following positions thereof along the coding scan order) based at least on the state flag associated with the current position.
  • Level coding of a dedicated state flag bin indicative of the state flag associated with each position may be performed as part of the encoding process, such that the decoder can decode the state flag bin to obtain the state flag without first decoding the quantization level.
  • the state flag bin used for encoding the state flag into the bitstream may include any suitable syntax elements based on the specific state flag derived from the quantization level.
  • operations 902, 904, and 906 may be repeated for each position when it becomes the current position along the coding scan order in the current block. For example, at operation 908, a coefficient of a following position along the coding scan order of the block is quantized based, at least in part, on the state flag associated with the current position to generate a quantization level of the following position. That is, operation 902 may be repeated for the following position in operation 908. Similarly, operations 904 and 906 may be repeated after operation 908 (not shown for ease of description) for the following position as well, and the process may continue for each position in the current block along the coding scan order.
  • the state flag associated with the current position is a non-parity state flag associated with the current position.
  • the value of the state flag associated with the current position may be indicative of a subset of possible quantization levels, other than even or odd levels, of the current position.
  • the non-parity state flag may be determined based on the value of the level modulus a positive integer A.
  • FIG. 10 illustrates a flow chart of an exemplary method 1000 of determining the state flag (e.g., a non-parity state flag) for dependent quantization and residual coding, according to some embodiments of the present disclosure.
  • Method 1000 may be performed by quantization module 310 and state module 311 of encoder 101 or any other suitable video encoders.
  • Method 1000 may include operations 1002, 1004, 1006, and 1008 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 10.
  • the absolute value of the quantization level of the current position is obtained.
  • state module 311 may obtain the absolute level of each position from quantization module 310 after performing the quantization to the position.
  • a modulo operation is performed based on the absolute value of the quantization level of the current position and a positive integer N.
  • state module 311 may perform a modulo operation as: abs(lvl) % N (3) where abs(lvl) represents the absolute level, and operator % represents the modulo operation.
  • the state flag associated with the current position is determined based on the result of the modulo operation.
  • the state flag may be coded by a single bit to represent two possible values (indicative of two subsets of possible absolute levels) or by multiple bits to represent more than two values (indicative of more than two subsets of possible absolute levels).
  • state module 311 may determine the state flag associated with the current position based on the result of the modulo operation, e.g., the outcome of Equation (3), and further determine the state of the following position based on the state flag associated with the current position, the state of the current position, as well as the preset state transition rule.
  • the quantizer may be determined based, at least in part, on the state flag associated with the preceding position (and the state of the preceding position as well in some examples).
  • quantization module 310 may obtain the state flag associated with each position and use the state flag associated with the preceding position (and the state of the preceding position in conjunction with the preset state transition rule in some examples) to choose the quantizer used for quantization at the current position.
  • the positive integer N may be 3 as shown in TABLE IV below in detail.
  • the row of “abs(lvl) % 3” illustrates the result of the modulo operation on different absolute levels, and the rows of “State Flag A” and “State Flag B” illustrate two different ways to determine a state flag.
  • State Flag A if the value of absolute level modulo 3 is equal to 1, the value of the state flag is 0, i.e., the state flag is indicative of the first subset (e.g., the result being 1); if the value of absolute level modulo 3 is equal to either 0 or 2, the value of the state flag is 1, i.e., the state flag is indicative of the second subset (e.g., the result being 0 and 2).
  • State Flag B if the value of absolute level modulo 3 is equal to either 1 or 2, the value of the state flag is 0, i.e., the state flag is indicative the first subset (e.g., the result being 1 and 2); if the value of absolute level modulo 3 is equal to 0, the value of the state flag is 1, i.e., the state flag is indicative of the second subset (e.g., the result being 0).
  • two quantizers Q0 and Q1 are mapped to the two values 0 and 1 of the state flag, respectively, such that the suitable quantizer for quantization at the following position may be selected based on the state flag associated with the current position.
  • the state flag of a position may be used alone to choose the quantizer in dependent quantization for the following position.
  • the state flag associated with a current position is used in conjunction with the state of the current position to determine the state of the following position using a state transition rule, and the state of the following position is used in turn for choosing the quantizer in dependent quantization for the following position. That is, the state flag of a position may be used with the state of the position to choose the quantizer in dependent quantization for the following position.
  • the state flag associated with a position may be determined based on the positive integer A as well as the way to determine the state flag (e.g., State Flag A or State Flag B above).
  • the positive integer N and/or the way to determine the state flag is preset based on the statistical information of the absolute levels in the current block or picture, for example, the distribution of the absolute levels. For example, by changing the positive integer N and/or the way to determine the state flag, the distribution of the resulting values of the state flag for the same distribution of the absolute levels may vary as well.
  • the positive integer N and/or the way to determine the state flag may be preset such that the two values of the state flag occur as even as possible, i.e., the sizes of the two subsets being as the same as possible.
  • the positive integer N and/or the way to determine the state flag may be preset such that the distribution of the resulting values of the state flag matches the distribution of the absolute values as close as possible. It is understood that in some examples, the state flag may be coded using more than 1 bit to have more than two different values (subsets), such as 4 values (subsets) using two bits.
  • the modulo-state flag may be encoded using a specific bin (e.g., a state flag bin) into the bitstream, such that the decoder can obtain the modulo-state flag without first decoding the quantization level.
  • a specific bin e.g., a state flag bin
  • the parsing of abs_level_gtx(X+l) may be conditional and occurs only when the abs level gtxX for the same level is equal to 1.
  • the state flag may represent the state flag in State Flag A in TABLE IV and may replace one or more abs level gtxX flag in TABLE II, such as the abs level gtxl flag bin.
  • the state flag may be present, another one or more syntax elements may be present, making a special combination to represent some special states. For example, when the state_flag is present, the abs_level_gtx2_flag may always be present, as shown in TABLE V.
  • a first bin - abs level gtxO flag (a.k.a. sig coeff flag) may be first coded into the bitstream to indicate if the level is zero or non-zero. If the level is non zero, a modulo-state flag bin - state flag may be coded according to State Flag A in TABLE IV above, and then abs_level_gtx2_flag may be present. The state flag and abs_level_gtx2_flag may be used together to indicate the level is 1, or 2 or greater than 2.
  • a fourth bin - abs_level_gtx3_flag may be coded to indicate if the absolute level is 3 or greater than 3. If the absolute value of the level is greater than 3, one more bin - abs remainder may be coded based on the remainder. In addition, the sign of each level within a block may also be coded in another sign bin to fully represent the quantization level.
  • abs 1 + abs_level_gtxl_flag + abs_level_gtx2_flag + abs_level_gtx3_flag + Remainder; return;
  • abs level gtxX flag bins may vary in other examples for residual coding.
  • abs_level_gtx3_flag may not be used for encoding the quantization levels.
  • abs 1 + abs_level_gtxl_flag + abs_level_gtx2_flag + Remainder; return;
  • the state flag may replace other abs level gtxX flag, such as abs_level_gtx2_flag or abs_level_gtx3_flag. It is also understood that the state flag may be coded using multiple bits, e.g., two bits to represent up to four values (subsets), in other examples, and the residual coding can change accordingly.
  • the operation that can be applied to the quantization level is not limited to the modulo operation described above and may include any suitable arithmetic operations and/or logical operations, for example, based on the statistical information of the quantization levels in the block or picture.
  • the non-parity state flag may be determined based, at least in part, on whether the absolute value of the quantization level is within a preset range.
  • FIG. 11 illustrates a flow chart of an exemplary method 1100 of determining the state flag (e.g., a non-parity state flag) for dependent quantization and residual coding, according to some embodiments of the present disclosure.
  • Method 1100 may be performed by quantization module 310 and state module 311 of encoder 101 or any other suitable video encoders.
  • Method 1100 may include operations 1102, 1104, and 1106 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 11.
  • the absolute value of the quantization level of the current position is obtained.
  • state module 311 may obtain the absolute level of each position from quantization module 310 after performing the quantization to the position.
  • the state flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range.
  • state module 311 may compare the absolute level of each position with one or more preset ranges and determine the state flag associated with the respective position based on the comparison in view of a preset way to determine the state flag.
  • the state flag may be coded by a single bit to represent two possible values (subsets) or by multiple bits to represent more than two values (subsets).
  • a single preset range may be used to make a binary decision, i.e., within the range or not, to produce two outcomes, i.e., dividing all possible levels into two subsets.
  • two or more preset ranges may be used to produce three or more outcomes, i.e., dividing all possible levels into two or more subsets.
  • a preset range may include a single level, e.g., 1, 2, or 3, in some examples. It is understood that in some examples, instead of using the absolute level, the quantization level with sign may be compared with the preset range(s) directly to determine the state flag.
  • the quantizer may be determined based, at least in part, on the state flag associated with the preceding position (and the state of the preceding position as well in some examples). As shown in FIG. 3, quantization module 310 may obtain the state flag associated with each position and use the state flag associated with the preceding position (and the state of the preceding position in conjunction with the preset state transition rule in some examples) to choose the quantizer used for quantization at the current position.
  • FIG. 12 and TABLE III below illustrate one example of range-state transition and quantizer selection in dependent quantization.
  • the switching between the two scalar quantizers may be achieved using a state machine with four states.
  • the state can take four different values: 0, 1, 2, and 3. It may be uniquely determined by at least whether the quantization level preceding the current coefficient in the coding scan order is within a preset range.
  • the state may be set equal to a default value, e.g., 0.
  • the coefficients may be reconstructed in a coding scan order (i.e., in the same order as they are entropy decoded).
  • the state may be updated as shown in FIG. 12, where t denotes a range-state flag based on the condition of whether the absolute level of the current position is within a preset range. For example, t may be equal to 1 when the condition is met (e.g., the absolute level is within the preset range), or equal to 0 when the condition is not met (e.g., the absolute level is outside of the preset range).
  • the following state may only depend on the current state and the value of t (state flag) of the current level.
  • FIG. 13 illustrates an exemplary 4x4 block and the coding scan order thereof, according to some embodiments of the present disclosure.
  • residual coding may start from the bottom-right corner in FIG. 13. It is understood that in some examples, residual coding may start from the first non-zero position, e.g., the 3rd position following the coding scan order with the level of 1 in FIG. 13. The start state at scan position 0 may be set to 0. Q1 may not quantize the coefficients to zero level in this example (no zero position).
  • Each level may be coded using various bins, such as abs level gtxO flag, abs level gtxl flag, abs_level_gtx2_flag, and abs remainder accordingly.
  • TABLE VIII shows how state transition works by evaluating whether the level is 1 or not using state flag t as defined in Equation (4).
  • TABLE VIII also shows how to encode each bin into the bitstream at the encoder side as well as decode each bin from the bitstream at the decoder side. Based upon the state, the corresponding quantizer for each position may be selected, as shown in TABLE VIII.
  • non-parity state flags that can be used for dependent quantization and residual coding are not limited to the modulo-state flag and range-state flag described above and may include any suitable state flags that can be derived from the level of each position.
  • the last digit of the level may be used the determine the state flag of the position.
  • the last digit e.g., 0, 1, 2, 3, ..., 9 may be divided into one or more preset subsets, which may be mapped to one or more values of a state flag.
  • the last digit (e.g., 0, 1, 2, 3, ..., 9) may be applied with one or more arithmetic operations (e.g., a modulo operation) and/or one or more logical operations and the result of the operation(s) may be used for determining the corresponding state flag.
  • arithmetic operations e.g., a modulo operation
  • FIG. 14 illustrates a flow chart of an exemplary method 1400 of video decoding, according to some embodiments of the present disclosure.
  • Method 1400 may be performed by decoder 201 of decoding system 200 or any other suitable video decoding systems.
  • Method 1400 may include operations 1402, 1404, 1406, and 1408 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 14.
  • the bitstream is decoded to obtain a quantization level of a current position in the current block and a state flag associate with a preceding position along a coding scan order of the block.
  • the state flag associate with the preceding position is a non-parity state flag associate with the preceding position, such as the modulo-state flag or the range-state flag described herein, or any other suitable state flag used for dependent quantization and residual coding at the encoder side.
  • decoding module 402 may be configured to decode the input bitstream, for example, by parsing each syntax element (e.g., each bin in level coding), to acquire various types of information including the state flag and the quantization level of each position in the current block.
  • the state flag associate with the preceding position and the quantization level of the current position may be obtained from the bitstream by an entropy decoding process.
  • the state flag associate with the preceding position is obtained from a state flag bin that is dedicated to encoding the state information, such as the modulo-state flag, range-state flag, or any other suitable non-parity state flag disclosed herein. Since the state flag can be obtained from the state flag bin directly, the quantization level may not be needed for determining the state information.
  • the quantization level of the current position is dequantized based, at least in part, on the state flag associate with the preceding position to obtain a coefficient of the current position.
  • dequantization module 404 may be configured to dequantize the quantization level of each position based at least on the state flag associate with the respective preceding position to obtain the coefficient of the respective position.
  • the same state transition rule used for dependent quantization based on the state flag at the encoder side may be used for dequantization at the decoder side.
  • a quantizer is determined based, at least in part, on the state flag associate with the preceding position.
  • the suitable quantize for dequantization at the current position may be chosen at the decoder side based on the state flag associate with the preceding position in view of the preset state transition rule in the same manner as at the encoder side.
  • the state of the preceding position is used in conjunction with the state flag associated with the preceding position to choose the corresponding quantizer for dependent quantization. That is, the quantizer may be determined based on the state flag associated with the preceding position and the state of the preceding position.
  • the state of the preceding position and the state flag associated with the preceding position may be used to determine the state of the current position based on the state transition rule (e.g., a state machine and/or a state transition table), which may be in turn used to choose the corresponding quantizer.
  • the state transition rule e.g., a state machine and/or a state transition table
  • operations 1402 and 1404 may be repeated for each position when it becomes the current position along the coding scan order in the current block.
  • the bitstream is decoded to obtain the state flag associate with the current position and a quantization level of a following position along the coding scan order. That is, operation 1402 may be repeated for the following position in operation 1406.
  • the quantization level of the following position is dequantized based, at least in part, on the state flag associate with the current position to obtain a coefficient of the following position. That is, operation 1404 may be repeated for the following position in operation 1408.
  • the process may continue for each position in the current block along the coding scan order.
  • the flag associated with the current position may be determined based, at least in part, on the absolute value of the quantization level of the current position. In some embodiments, the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer, such as 3. In some embodiments, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range, such as 1.
  • the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium.
  • Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a processor, such as processor 102 in FIGs. 1 and 2.
  • such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD, such as magnetic disk storage or other magnetic storage devices, Flash drive, SSD, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processing system, such as a mobile device or a computer.
  • Disk and disc includes CD, laser disc, optical disc, digital video disc (DVD), and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
  • a method for encoding a picture of a video including a block is disclosed.
  • a coefficient of a current position in the block is quantized by a processor based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • a flag associated with the current position is determined based, at least in part, on the quantization level of the current position.
  • the quantization level of the current position is encoded into a bitstream based, at least in part, on the flag associated with the current position.
  • the flag associated with the current position is a non-parity flag associated with f the current position.
  • the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
  • a modulo operation is performed based on the absolute value of the quantization level of the current position and a positive integer, and the flag associated with the current position is determined based on a result of the modulo operation.
  • the positive integer is 3.
  • the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
  • a coefficient of a following position along the coding scan order of the block is quantized by the processor based, at least in part, on the flag associated with the current position.
  • a quantizer is determined based, at least in part, on the flag associated with the preceding position.
  • the quantizer is determined based on the flag associated with the preceding position and a state of the preceding position.
  • a flag bin is encoded based on the flag associated with the current position using binary arithmetic coding.
  • a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
  • a system for encoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory.
  • the processor is configured to, upon executing the instructions, quantize a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • the processor is also configured to, upon executing the instructions, determine a flag associated with the current position based, at least in part, on the quantization level of the current position.
  • the processor is further configured to, upon executing the instructions, encode the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
  • the flag associated with the current position is a non-parity flag associated with the current position.
  • the processor is further configured to determine the flag associated with the current position based, at least in part, on an absolute value of the quantization level of the current position.
  • the processor is further configured to perform a modulo operation based on the absolute value of the quantization level of the current position and a positive integer, and determine the flag associated with the current position based on a result of the modulo operation.
  • the positive integer is 3.
  • the processor is further configured to determine the flag associated with the current position based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
  • the processor is further configured to quantize a coefficient of a following position along the coding scan order of the block based, at least in part, on the flag associated with the current position.
  • the processor is further configured to determine a quantizer based, at least in part, on the flag associated with the preceding position.
  • the processor is further configured to determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
  • the processor is further configured to encode a flag bin based on the flag associated with the current position using binary arithmetic coding.
  • a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
  • a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for encoding a picture of a video including a block.
  • the process includes quantizing a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position.
  • the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position.
  • the process also includes determining a flag associated with the current position based, at least in part, on the quantization level of the current position.
  • the process further includes encoding the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
  • a method for decoding a picture of a video including a block is disclosed.
  • a bitstream is decoded by a processor to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the quantization level of the current position is dequantized by the processor based, at least in part, on the flag associated with f the preceding position to obtain a coefficient of the current position.
  • the flag associated with f the preceding position is a non parity flag associated with the preceding position.
  • the bitstream is decoded by the processor to obtain a flag associated with the current position and a quantization level of a following position along the coding scan order of the block, and the quantization level of the following position is dequantizing by the processor based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
  • a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
  • the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
  • the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer.
  • the positive integer is 3.
  • the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
  • a quantizer is determined based, at least in part, on the flag associated with the preceding position.
  • the quantizer is determined based on the flag associated with the preceding position and a state of the preceding position.
  • the flag associated with the preceding position is obtained from a flag bin.
  • a system for decoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory.
  • the processor is configured to, upon executing the instructions, decode a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the processor is also configured to, upon executing the instructions, dequantize the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
  • the flag associated with the preceding position is a non parity flag associated with the preceding position.
  • the processor is further configured to decode the bitstream to obtain a flag associated with the current position and a quantization level of a following position along the coding scan order of the block, and dequantize the quantization level of the following position based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
  • a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
  • the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
  • the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer. In some embodiments, the positive integer is 3. [0136] In some embodiments, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
  • the processor is further configured to determine a quantizer based, at least in part, on the flag associated with the preceding position.
  • the processor is further configured to determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
  • the processor is further configured to obtain the flag associated with the preceding position from a flag bin.
  • a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for decoding a picture of a video including a block.
  • the process includes decoding a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block.
  • the process also includes dequantizing the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.

Landscapes

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

Abstract

In certain aspects, a method for encoding a picture of a video including a block is disclosed. A coefficient of a current position in the block is quantized by a processor based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated 5 with the preceding position is determined based, at least in part, on a quantization level of the preceding position. A flag associated with the current position is determined based, at least in part, on the quantization level of the current position. The quantization level of the current position is encoded into a bitstream based, at least in part, on the flag associated with the current position.

Description

STATE BASED DEPENDENT QUANTIZATION AND RESIDUAL CODING
IN VIDEO CODING
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of priority to U.S. Provisional Application No.
63/158,764, entitled “RESIDUAL CODING METHODS FOR VIDEO CODING,” and filed on March 9, 2021, which is incorporated by reference herein in its entirety.
BACKGROUND
[0002] Embodiments of the present disclosure relate to video coding.
[0003] Digital video has become mainstream and is being used in a wide range of applications including digital television, video telephony, and teleconferencing. These digital video applications are feasible because of the advances in computing and communication technologies as well as efficient video coding techniques. Various video coding techniques may be used to compress video data, such that coding on the video data can be performed using one or more video coding standards. Exemplary video coding standards may include, but not limited to, versatile video coding (H.266/VVC), high-efficiency video coding (H.265/HEVC), advanced video coding (H.264/AVC), moving picture expert group (MPEG) coding, to name a few.
SUMMARY
[0004] According to one aspect of the present disclosure, a method for encoding a picture of a video including a block is disclosed. A coefficient of a current position in the block is quantized by a processor based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. A flag associated with the current position is determined based, at least in part, on the quantization level of the current position. The quantization level of the current position is encoded into a bitstream based, at least in part, on the flag associated with the current position.
[0005] According to another aspect of the present disclosure, a system for encoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory. The processor is configured to, upon executing the instructions, quantize a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. The processor is also configured to, upon executing the instructions, determine a flag associated with the current position based, at least in part, on the quantization level of the current position. The processor is further configured to, upon executing the instructions, encode the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
[0006] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for encoding a picture of a video including a block is disclosed. The process includes quantizing a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. The process also includes determining a flag associated with the current position based, at least in part, on the quantization level of the current position. The process further includes encoding the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
[0007] According to yet another aspect of the present disclosure, a method for decoding a picture of a video including a block is disclosed. A bitstream is decoded by a processor to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The quantization level of the current position is dequantized by the processor based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
[0008] According to yet another aspect of the present disclosure, a system for decoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory. The processor is configured to, upon executing the instructions, decode a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The processor is also configured to, upon executing the instructions, dequantize the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
[0009] According to yet another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for decoding a picture of a video including a block is disclosed. The process includes decoding a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The process also includes dequantizing the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
[0010] These illustrative embodiments are mentioned not to limit or define the present disclosure, but to provide examples to aid understanding thereof. Additional embodiments are described in the Detailed Description, and further description is provided there.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present disclosure and, together with the description, further serve to explain the principles of the present disclosure and to enable a person skilled in the pertinent art to make and use the present disclosure.
[0012] FIG. 1 illustrates a block diagram of an exemplary encoding system, according to some embodiments of the present disclosure.
[0013] FIG. 2 illustrates a block diagram of an exemplary decoding system, according to some embodiments of the present disclosure.
[0014] FIG. 3 illustrates a detailed block diagram of an exemplary encoder in the encoding system in FIG. 1, according to some embodiments of the present disclosure.
[0015] FIG. 4 illustrates a detailed block diagram of an exemplary decoder in the decoding system in FIG. 2, according to some embodiments of the present disclosure.
[0016] FIG. 5 illustrates an exemplary picture divided into coding tree units (CTUs), according to some embodiments of the present disclosure.
[0017] FIG. 6 illustrates an exemplary CTU divided into coding units (CUs), according to some embodiments of the present disclosure.
[0018] FIG. 7 illustrates an exemplary scheme of dependent quantization, according to some embodiments of the present disclosure. [0019] FIG. 8 illustrates an exemplary state machine for state transition and quantizer selection in dependent quantization, according to some embodiments of the present disclosure. [0020] FIG. 9 illustrates a flow chart of an exemplary method of video encoding, according to some embodiments of the present disclosure.
[0021] FIG. 10 illustrates a flow chart of an exemplary method of determining the state flag for dependent quantization and residual coding, according to some embodiments of the present disclosure.
[0022] FIG. 11 illustrates a flow chart of another exemplary method of determining the state flag for dependent quantization and residual coding, according to some embodiments of the present disclosure.
[0023] FIG. 12 illustrates another exemplary state machine for state transition and quantizer selection in dependent quantization, according to some embodiments of the present disclosure.
[0024] FIG. 13 illustrates an exemplary 4x4 block and the coding scan order thereof, according to some embodiments of the present disclosure.
[0025] FIG. 14 illustrates a flow chart of an exemplary method of video decoding, according to some embodiments of the present disclosure.
[0026] Embodiments of the present disclosure will be described with reference to the accompanying drawings.
DETAILED DESCRIPTION
[0027] Although some configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the pertinent art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the present disclosure. It will be apparent to a person skilled in the pertinent art that the present disclosure can also be employed in a variety of other applications.
[0028] It is noted that references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “some embodiments,” “certain embodiments,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of a person skilled in the pertinent art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
[0029] In general, terminology may be understood at least in part from usage in context.
For example, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
[0030] Various aspects of video coding systems will now be described with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively referred to as “elements”). These elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on the overall system.
[0031] The techniques described herein may be used for various video coding applications.
As described herein, video coding includes both encoding and decoding a video. Encoding and decoding of a video can be performed by the unit of block. For example, an encoding/decoding process such as transform, quantization, prediction, in-loop filtering, reconstruction, or the like may be performed on a coding block, a transform block, or a prediction block. As described herein, a block to be encoded/decoded will be referred to as a “current block.” For example, the current block may represent a coding block, a transform block, or a prediction block according to a current encoding/decoding process. In addition, it is understood that the term “unit” used in the present disclosure indicates a basic unit for performing a specific encoding/decoding process, and the term “block” indicates a sample array of a predetermined size. Unless otherwise stated, the “block” and “unit” may be used interchangeably.
[0032] In video coding, quantization is used to reduce the dynamic range of transformed or non-transformed video signals so that fewer bits will be used to represent video signals. 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 “level.” In the present disclosure, a quantization level of a position refers to the quantization level of a coefficient at the position. Quantization typically involves division by a quantization step size and subsequent rounding, while inverse quantization involves multiplication by the quantization step size. Such a 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.265/HEVC, H.264/AVC, etc. That is, for scalar quantization, the quantization of an individual coefficient is independent from the quantization of coefficients at different positions. After quantization, residual coding is used to convert the quantization level into the bitstream in video coding. However, the performance and complexity involved in scalar quantization and subsequent residual coding may not be optimal.
[0033] To improve the video coding efficiency and reduce the complexity, the present disclosure provides various schemes of state flag based dependent quantization and residual coding in video coding. As described below in detail, a flag (referred to herein as “state flag” as well) associated with the quantization level at each specific position of the current block can reflect the general statistical information of the quantization levels in the current block, which are necessary for achieving optimal residual coding. The meaning of the state flag can be preset differently depending on various video coding applications. For example, the value of the flag may be indicative of a subset of all possible quantization levels of the respective position. The state flag can also be used for choosing the scalar quantizer in dependent quantization, for example, in combination with the state of the position, or different context model in level coding. Moreover, the state flag can be encoded using a state flag bin in residual coding (e.g., embedded in the bitstream) and thus, can be easily decoded and obtained at the decoder side, for example, for choosing the scalar quantizer, without the need of decoding all bins to obtain the quantization level or the coefficient.
[0034] FIG. 1 illustrates a block diagram of an exemplary encoding system 100, according to some embodiments of the present disclosure. FIG. 2 illustrates a block diagram of an exemplary decoding system 200, according to some embodiments of the present disclosure. Each system 100 or 200 may be applied or integrated into various systems and apparatus capable of data processing, such as computers and wireless communication devices. For example, system 100 or 200 may be the entirety or part of a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an argument reality (AR) device, or any other suitable electronic devices having data processing capability. As shown in FIGs. 1 and 2, system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as connected to one another by a bus, but other connection types are also permitted. It is understood that system 100 or 200 may include any other suitable components for performing functions described here.
[0035] Processor 102 may include microprocessors, such as graphic processing unit (GPU), image signal processor (ISP), central processing unit (CPU), digital signal processor (DSP), tensor processing unit (TPU), vision processing unit (VPU), neural processing unit (NPU), synergistic processing unit (SPU), or physics processing unit (PPU), microcontroller units (MCUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout the present disclosure. Although only one processor is shown in FIGs. 1 and 2, it is understood that multiple processors can be included. Processor 102 may be a hardware device having one or more processing cores. Processor 102 may execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Software can include computer instructions written in an interpreted language, a compiled language, or machine code. Other techniques for instructing hardware are also permitted under the broad category of software.
[0036] Memory 104 can broadly include both memory (a.k.a, primary/system memory) and storage (a.k.a., secondary memory). For example, memory 104 may include random-access memory (RAM), read-only memory (ROM), static RAM (SRAM), dynamic RAM (DRAM), ferro electric RAM (FRAM), electrically erasable programmable ROM (EEPROM), compact disc read only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage devices, Flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store desired program code in the form of instructions that can be accessed and executed by processor 102. Broadly, memory 104 may be embodied by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple memories can be included. [0037] Interface 106 can broadly include a data interface and a communication interface that is configured to receive and transmit a signal in a process of receiving and transmitting information with other external network elements. For example, interface 106 may include input/output (I/O) devices and wired or wireless transceivers. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple interfaces can be included.
[0038] Processor 102, memory 104, and interface 106 may be implemented in various forms in system 100 or 200 for performing video coding functions. In some embodiments, processor 102, memory 104, and interface 106 of system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs). In one example, processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that handles application processing in an operating system (OS) environment, including running video encoding and decoding applications. In another example, processor 102, memory 104, and interface 106 may be integrated on a specialized processor chip for video coding, such as a GPU or ISP chip dedicated for image and video processing in a real-time operating system (RTOS).
[0039] As shown in FIG. 1, in encoding system 100, processor 102 may include one or more modules, such as an encoder 101. Although FIG. 1 shows that encoder 101 is within one processor 102, it is understood that encoder 101 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other. Encoder 101 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video encoding, such as picture partitioning, inter prediction, intra prediction, transformation, quantization, filtering, entropy encoding, etc., as described below in detail.
[0040] Similarly, as shown in FIG. 2, in decoding system 200, processor 102 may include one or more modules, such as a decoder 201. Although FIG. 2 shows that decoder 201 is within one processor 102, it is understood that decoder 201 may include one or more sub-modules that - cl ean be implemented on different processors located closely or remotely with each other. Decoder 201 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video decoding, such as entropy decoding, inverse quantization, inverse transformation, inter prediction, intra prediction, filtering, as described below in detail.
[0041] FIG. 3 illustrates a detailed block diagram of exemplary encoder 101 in encoding system 100 in FIG. 1, according to some embodiments of the present disclosure. As shown in FIG. 3, encoder 101 may include a partitioning module 302, an inter prediction module 304, an intra prediction module 306, a transform module 308, a quantization module 310, a state module 311, an inverse quantization module 312, an inverse transform module 314, a filter module 316, a buffer module 318, and an encoding module 320. It is understood that each of the elements shown in FIG. 3 is independently shown to represent characteristic functions different from each other in a video encoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on encoder 101.
[0042] Partitioning module 302 may be configured to partition an input picture of a video into at least one processing unit. A picture can be a frame of the video or a field of the video. In some embodiments, a picture includes an array of luma samples in monochrome format, or an array of luma samples and two corresponding arrays of chroma samples. At this point, the processing unit may be a prediction unit (PU), a transform unit (TU), or a coding unit (CU). Partitioning module 302 may partition a picture into a combination of a plurality of coding units, prediction units, and transform units, and encode a picture by selecting a combination of a coding unit, a prediction unit, and a transform unit based on a predetermined criterion (e.g., a cost function). [0043] Similar to H.265/HEVC, H.266/VVC is a block-based hybrid spatial and temporal predictive coding scheme. As shown in FIG. 5, during encoding, an input picture 500 is first divided into square blocks - CTUs 502, by partitioning module 302. For example, CTUs 502 can be blocks of 128x128 pixels. As shown in FIG. 6, each CTU 502 in picture 500 can be partitioned by partitioning module 302 into one or more CUs 602, which can be used for prediction and transformation. Unlike H.265/HEVC, in H.266/VVC, CUs 602 can be rectangular or square, and can be coded without further partitioning into prediction units or transform units. For example, as shown in FIG. 6, the partition of CTU 502 into CUs 602 may include quadtree splitting (indicated in solid lines), binary tree splitting (indicated in dashed lines), and ternary splitting (indicated in dash-dotted lines). Each CU 602 can be as large as its root CTU 502 or be subdivisions of root CTU 502 as small as 4x4 blocks, according to some embodiments.
[0044] Referring to FIG. 3, inter prediction module 304 may be configured to perform inter prediction on a prediction unit, and intra prediction module 306 may be configured to perform intra prediction on the prediction unit. It may be determined whether to use inter prediction or to perform intra prediction for the prediction unit, and determine specific information (e.g., intra prediction mode, motion vector, reference picture, etc.) according to each prediction method. At this point, a processing unit for performing prediction may be different from a processing unit for determining a prediction method and specific content. For example, a prediction method and a prediction mode may be determined in a prediction unit, and prediction may be performed in a transform unit. Residual coefficients in a residual block between the generated prediction block and the original block may be input into transform module 308. In addition, prediction mode information, motion vector information, and the like used for prediction may be encoded by encoding module 320 together with the residual coefficients or quantization levels into the bitstream. It is understood that in certain encoding modes, an original block may be encoded as it is without generating a prediction block through prediction module 304 or 306. It is also understood that in certain encoding modes, prediction, transform, and/or quantization may be skipped as well.
[0045] In some embodiments, inter prediction module 304 may predict a prediction unit based on information on at least one picture among pictures before or after the current picture, and in some cases, it may predict a prediction unit based on information on a partial area that has been encoded in the current picture. Inter prediction module 304 may include sub-modules, such as a reference picture interpolation module, a motion prediction module, and a motion compensation module (not shown). For example, the reference picture interpolation module may receive reference picture information from buffer module 318 and generate pixel information of an integer number of pixels or less from the reference picture. In the case of a luminance pixel, a discrete cosine transform (DCT)-based 8-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/4 pixels. In the case of a color difference signal, a DCT-based 4-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/8 pixels. The motion prediction module may perform motion prediction based on the reference picture interpolated by the reference picture interpolation part. Various methods such as a full search-based block matching algorithm (FBMA), a three-step search (TSS), and a new three- step search algorithm (NTS) may be used as a method of calculating a motion vector. The motion vector may have a motion vector value of a unit of 1/2, 1/4, or 1/16 pixels or integer pel based on interpolated pixels. The motion prediction module may predict a current prediction unit by varying the motion prediction method. Various methods such as a skip method, a merge method, an advanced motion vector prediction (AMVP) method, an intra-block copy method, and the like may be used as the motion prediction method.
[0046] In some embodiments, intra prediction module 306 may generate a prediction unit based on the information on reference pixels around the current block, which is pixel information in the current picture. When a block in the neighborhood of the current prediction unit is a block on which inter prediction has been performed and thus, the reference pixel is a pixel on which inter prediction has been performed, the reference pixel included in the block on which inter prediction has been performed may be used in place of reference pixel information of a block in the neighborhood on which intra prediction has been performed. That is, when a reference pixel is unavailable, at least one reference pixel among available reference pixels may be used in place of unavailable reference pixel information. In the intra prediction, the prediction mode may have an angular prediction mode that uses reference pixel information according to a prediction direction, and a non-angular prediction mode that does not use directional information when performing prediction. A mode for predicting luminance information may be different from a mode for predicting color difference information, and intra prediction mode information used to predict luminance information or predicted luminance signal information may be used to predict the color difference information. If the size of the prediction unit is the same as the size of the transform unit when intra prediction is performed, the intra prediction may be performed for the prediction unit based on a pixel on the left side, a pixel on the top-left side, and a pixel on the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when the intra prediction is performed, the intra prediction may be performed using a reference pixel based on the transform unit.
[0047] The intra prediction method may generate a prediction block after applying an adaptive intra smoothing (AIS) filter to the reference pixel according to a prediction mode. The type of the AIS filter applied to the reference pixel may vary. In order to perform the intra prediction method, the intra prediction mode of the current prediction unit may be predicted from the intra prediction mode of the prediction unit existing in the neighborhood of the current prediction unit. When a prediction mode of the current prediction unit is predicted using the mode information predicted from the neighboring prediction unit, if the intra prediction modes of the current prediction unit is the same as the prediction unit in the neighborhood, information indicating that the prediction modes of the current prediction unit is the same as the prediction unit in the neighborhood may be transmitted using predetermined flag information, and if the prediction modes of the current prediction unit and the prediction unit in the neighborhood are different from each other, prediction mode information of the current block may be encoded by performing entropy encoding.
[0048] As shown in FIG. 3, a residual block including a prediction unit that has performed prediction based on the prediction unit generated by prediction module 304 or 306 and residual coefficient information, which is a difference value of the prediction unit with the original block, may be generated. The generated residual block may be input into transform module 308.
[0049] Transform module 308 may be configured to transform the residual block including the original block and the residual coefficient information of the prediction unit generated through prediction modules 304 and 306 using a transform method, such as DCT, discrete sine transform (DST), Karhunen-Loeve transform (KLT), or transform skip. Whether to apply the DCT, the DST, or the KLT to transform the residual block may be determined based on intra prediction mode information of a prediction unit used to generate the residual block. Transform module 308 can transform the video signals in the residual block from the pixel domain to a transform domain (e.g., a frequency domain depending on the transform method). It is understood that in some examples, transform module 308 may be skipped, and the video signals may not be transformed to the transform domain.
[0050] Quantization module 310 may be configured to quantize the coefficient of each position in the current block to generate quantization levels of the positions. The current block may be the residual block. That is, quantization module 310 can perform a quantization process on each residual block. The residual block may include NxM positions (samples) each associated with a transformed or non-transformed video signal/data, such as luma and/or chroma information, where N and are positive integers. In the present disclosure, before quantization, the transformed or non-transformed video signal at a specific position is referred to herein as a “coefficient.” After quantization, the quantized value of the coefficient is referred to herein as a “quantization level” or “level.”
[0051] Quantization can be used to reduce the dynamic range of transformed or non- transformed video signals so that fewer bits will be used to represent video signals. Quantization typically involves division by a quantization step size and subsequent rounding, while inverse quantization involves multiplication by the quantization step size. Such a quantization process is referred to as 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/AVC and H.265/HEVC.
[0052] For an N^M block, a specific coding scan order may be used to convert the two- dimensional (2D) coefficients of a block into a one-dimensional (ID) order for coefficient quantization and coding. Typically, the coding scan starts from the left-top corner and stops at the right-bottom comer of a block or the last non-zero coefficient/level in a right-bottom direction. It is understood that the coding scan order may include any suitable order, such as a zig-zag scan order, a vertical (column) scan order, a horizontal (row) scan order, a diagonal scan order, or any combinations thereof. Quantization of a coefficient within a block may make use of the coding scan order information. For example, it may depend on the status of the previous quantization level along the coding scan order. In order to further improve the coding efficiency, more than one quantizer, e.g., two scalar quantizers, can be used by quantization module 310. Which quantizer will be used for quantizing the current coefficient may depend on the information preceding the current coefficient in coding scan order. Such a quantization process is referred to as dependent quantization. [0053] For example, as shown in FIG. 7, two quantizers, namely Q0 and Ql, may be used for dependent quantization. The quantization step size D may be determined by the quantization factor, which may be embedded in the bitstream. Both quantizers Q0 and Ql can quantize a coefficient to a level equal to zero. In other words, there are two possibilities to quantize a coefficient to zero, either from Q0 or Ql. Ideally, the quantizer used for quantizing the current coefficient can be explicitly specified. However, the overhead to signal the quantizer will compromise the coding efficiency. Alternatively, instead of explicit signaling, the quantizer for the current coefficient can be determined and derived by using the information of the previous quantization level of the previous coefficient, i.e., the information of the quantization level of the preceding position along the coding scan order of the current block.
[0054] Consistent with the scope of the present disclosure, in some embodiments, the information used for determining the quantizer in dependent quantization includes at least the state flag associated with a position determined based on the quantization level, for example, the absolute value of the quantization level, as described below in detail. As shown in FIG. 3, state module 311 may be configured to determine the state flag associated with each position based, at least in part, on the quantization level of the position, such as the absolute value of the quantization level. For example, for each position, state module 311 may obtain the absolute value of the quantization level of the position and determine the state flag associated with the position based, at least in part, on the absolute value of the quantization level. State module 311 may provide the determined state flag associate with the current position to quantization module 310, such that quantization module 310 can use the state flag associate with the current position to determine the quantizer used for performing dependent quantization at the following position. In some embodiments, state module 311 further determines the state of the following position based on both the state flag associated with the current position and the state of the current position, and use the state of the following position to determine the quantizer used for performing dependent quantization at the following position. In other words, the state of the current position (and the quantizer determined therefrom) may be determined based on both the state flag of the preceding position and the state of the preceding position.
[0055] For example, FIG. 8 and TABLE I below illustrate one example of parity-state transition and quantizer selection in dependent quantization.
Figure imgf000017_0001
TABLE I Parity-State Transition Table
As illustrated in the state machine in FIG. 8 and the state transition table in TABLE I, the switching between the two scalar quantizers (QO and Ql) may be achieved using a state machine with four states. The state can take four different values: 0, 1, 2, and 3. It may be uniquely determined by at least the parity of quantization level preceding the current coefficient in the coding scan order. At the start of the quantization at the encoding side or dequantization at the decoding side for a block, the state may be set equal to a default value, e.g., 0. The coefficients may be reconstructed in a coding scan order (i.e., in the same order as they are entropy decoded). After a current coefficient is reconstructed, the state may be updated as shown in FIG. 8, where k denotes the value of the level at a specific position along the coding scan order. The following state may only depend on the current state and the parity state flag ( k& 1) of the current level. With k representing the value of the current coefficient level, the state transition process can be written as:
Next state = stateTransTable[ state ][ k & 1 ] (1), where stateTransTable represents the table in TABLE I, and the operator & specifies the bitwise “and” operator in two’s-complement arithmetic. Alternatively, the state transition can also be specified without a transition table as:
Next state = ( 32040 » ( ( state << 2 ) + ( ( & & 1 ) « 1 ) ) ) & 3 (2), where the 16-bit value 32040 specifies the state transition table. The state may uniquely specify 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 may be used. Otherwise (the state is equal to 2 or 3), the scalar quantizer Ql may be used. It is understood that in H.266/VCC, dependent quantization may be only allowed for regular residual coding (RRC), meaning that the quantization method is applied to the transform coefficients of the prediction residues instead of the prediction residues themselves.
[0056] Referring to FIG. 3, encoding module 320 may be configured to encode the quantization level of each position in the current block into the bitstream based, at least in part, on the state flag of the respective position. In some embodiments, encoding module 320 may perform entropy encoding on the current block based on the quantization levels from quantization module 310 as well as the state flags determined by state module 311. Entropy encoding may use various encoding methods, such as exponential-Golomb coding or context coding, for example, context- adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and the like. Besides the quantization levels and states flags associated with the positions in the current block, encoding module 320 may encode various other information, such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information input from, for example, prediction modules 304 and 306.
[0057] In some embodiments, encoding module 320 may perform residual coding on a residual block to convert the quantization level into the bitstream. For example, after quantization, there may be N*M quantization levels for an L,cL7 block. These N*M levels may be zero or non zero values. The non-zero levels may be further binarized to binary bins if the levels are not binary, for example, using CABAC. For example, for an RRC block in H.266/VCC, the position of the last non-zero level may be 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 may be first coded. An RRC block may include several pre-defmed sub-blocks. The last non-zero sub block, which has the last non-zero level, may be derived from (last sig coeff x and last_sig_coeff_y) according to coding scan order. RRC may code sub block by sub block starting from the last non-zero sub block with a reverse coding scan order. Within a sub block, RRC may code the level of each position with a reverse coding scan order. For example, abs level gtxX flag bins and a remainder bin may be used to allow conditionally parsing the syntax elements for level coding of a residual block, and its corresponding binarization of absolute value of level is shown in TABLE II below. Here abs level gtxX flag describes if the absolute value of level is greater than X where X is an integer number, e.g., 0, 1, 2, .... or N. If abs_level_gtxX_flag is 0 where X is an integer between 0 and N- 1, abs_level_gtx(X+l)_flag will not be present. If abs_level_gtxX_flag is 1, abs_level_gtx(X+l)_flag will be present. Moreover, if abs_level_gtxN_flag is 0, the remainder will not be present. When abs_level_gtxN_flag is 1, the remainder will be present, and it represents the value after removing (N +1) from the level.
Figure imgf000019_0001
TABLE II Residual Coding Based On abs level gtxX flag Bins and Remainder Bin
[0058] In the example described above with respect to TABLE II, the state information used for choosing the quantizer in dependent quantization, however, is not directly coded in any bin by encoding module 320. Thus, at the decoder side, the absolute level of a position needs to be first obtained, for example, by parsing each syntax element (e.g., bin) in order to determine the state flag associated with the position for choosing the correct quantizer for dequantizing the quantization level of the following position, which is inefficient.
[0059] Consistent with the scope of the present disclosure, in some embodiments, the state flag associated with each position determined by state module 311 is encoded by encoding module 320 as well, for example, using a dedicated syntax element, into the bitstream, such that the decoder can obtain the state flag directly from the state flag bin without first obtaining the quantization level of the position, thereby improving the efficiency of the video coding.
[0060] In some embodiments, one of the abs level gtxX flag bins is replaced by the state flag bin in residual coding by encoding module 320. For example, as shown in TABLE III below, for each level, a first bin - abs level gtxO flag (a.k.a. sig coeff flag) may be first coded into the bitstream to indicate if the level is zero or non-zero. If the level is non-zero, a second bin - abs level gtxl flag may be coded to indicate if the absolute level is 1 or greater than 1. If the absolute level is greater than 1, a parity-state flag bin - par level flag may replace the abs_level_gtx2_flag in TABLE II and may be coded to indicate if the level is odd or even number, and then abs_level_gtx3_flag may be present. The par level flag and abs_level_gtx3_flag may be used together to indicate the level is 2, or 3 or greater than 3. If the absolute value of the level (a.k.a., absolute level, abs(lvl)) is greater than 3, one more syntax element - abs remainder may be coded based on the remainder. In addition, the sign of each level within a block may also be coded in another sign bin to fully represent the quantization level.
Figure imgf000020_0001
TABLE III Residual Coding Based On abs level gtxX flag Bins, Remainder Bin, and
Parity-State Flag Bin
[0061] As shown in FIG. 3 dequantization module 312 may be configured to dequantize the quantization levels by dequantization module 312, and inverse transform module 314 may be configured to inversely transform the coefficients transformed by transform module 308. The reconstructed residual block generated by dequantization module 312 and inverse transform module 314 may be combined with the prediction units predicted through prediction module 304 or 306 to generate a reconstructed block.
[0062] Filter module 316 may include at least one among a deblocking filter, an offset correction module, and an adaptive loop filter (ALF). The deblocking filter may remove block distortion generated by the boundary between blocks in the reconstructed picture. The offset correction module may correct an offset to the original video by the unit of pixel for a video on which the deblocking has been performed. ALF may be performed based on a value obtained by comparing the reconstructed and filtered video and the original video. Buffer module 318 may be configured to store the reconstructed block or picture calculated through filter module 316, and the reconstructed and stored block or picture may be provided to inter prediction module 304 when inter prediction is performed.
[0063] FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure. As shown in FIG. 4, decoder 201 may include a decoding module 402, a dequantization module 404, an inverse transform module 406, an inter prediction module 408, an intra prediction module 410, a filter module 412, and a buffer module 414. It is understood that each of the elements shown in FIG. 4 is independently shown to represent characteristic functions different from each other in a video decoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on decoder 201.
[0064] When a video bitstream is inputted from a video encoder (e.g., encoder 101), the input bitstream may be decoded by decoder 201 in a procedure opposite to that of the video encoder. Thus, some details of decoding that are described above with respect to encoding may be skipped for ease of description. Decoding module 402 may be configured to decode the bitstream to obtain various information encoded into the bitstream, such as the quantization level and the state information of each position in the current block. In some embodiments, decoding module 402 may perform entropy decoding corresponding to the entropy encoding performed by the encoder, such as exponential-Golomb coding or context coding, for example, CAVLC, CABAC, and the like. Besides the quantization levels and states of the positions in the current block, decoding module 402 may decode various other information, such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information. During the decoding process, decoding module 402 may perform rearrangement on the bitstream to reconstruct and rearrange the data from a ID order into a 2D rearranged block through a method of inverse scanning based on the coding scan order used by the encoder.
[0065] Consistent with the scope of the present disclosure, in some embodiments, decoding module 402 may obtain the state flag associated with each position directly from the bitstream without the need of first obtaining the quantization level of the position, thereby improving the coding efficiency. For example, decoding module 402 may obtain the state flag associated with each position from the state flag bin (par level flag) used for encoding the state flag by the encoder, e.g., as shown in TABLE III above.
[0066] Dequantization module 404 may be configured to dequantizing the quantization level of each position of the current block (e.g., the 2D reconstructed block) based, at least in part, on the state flag of the preceding position to obtain the coefficient of each position. In some embodiments, dequantization module 404 may perform dependent dequantization based on quantization parameters provided by the encoder as well, including the information related to the quantizers used in dependent quantization, for example, the quantization step size D used by each quantizer. Consistent with the scope of the present disclosure, in some embodiments, dequantization module 404 may choose the quantizer for dequantizing the quantization level of the current position based on the state flag associated with the preceding position obtained from decoding module 402 in conjunction with the same state transition rule (e.g., the state machine and/or state transition table shown in FIG. 8 and TABLE I) used by the encoder when performing the dependent quantization.
[0067] Inverse transform module 406 may be configured to perform inverse transformation, for example, inverse DCT, inverse DST, and inverse KLT, for DCT, DST, and KLT performed by the encoder, respectively, to transform the data from the transform domain (e.g., coefficients) back to the pixel domain (e.g., luma and/or chroma information). In some embodiments, inverse transform module 406 may selectively perform a transform operation (e.g., DCT, DST, KLT) according to a plurality of pieces of information such as a prediction method, a size of the current block, a prediction direction, and the like.
[0068] Inter prediction module 408 and intra prediction module 410 may be configured to generate a prediction block based on information related to the generation of a prediction block provided by decoding module 402 and information of a previously decoded block or picture provided by buffer module 414. As described above, if the size of the prediction unit and the size of the transform unit are the same when intra prediction is performed in the same manner as the operation of the encoder, intra prediction may be performed on the prediction unit based on the pixel existing on the left side, the pixel on the top-left side, and the pixel on the top of the prediction unit. However, if the size of the prediction unit and the size of the transform unit are different when intra prediction is performed, intra prediction may be performed using a reference pixel based on a transform unit.
[0069] The reconstructed block or reconstructed picture combined from the outputs of inverse transform module 406 and prediction module 408 or 410 may be provided to filter module 412. Filter module 412 may include a deblocking filter, an offset correction module, and an ALF. Buffer module 414 may store the reconstructed picture or block and use it as a reference picture or a reference block for inter prediction module 408 and may output the reconstructed picture.
[0070] As described above, by introducing the state flag derived from the quantization level of each position into dependent quantization and residual coding, the video coding performance, such as efficiency, can be improved. In the example described with respect to FIG. 8 and TABLE I, the parity of quantization level preceding the current position may be used to indicate the state flag to control the state transitions for dependent quantization, as well as in the corresponding residual coding. For dependent quantization, the quantization of coefficient at the current position may depend on the parity of coefficient at the preceding position along the coding scan order, and the parity-state flag may be embedded in the bitstream to indicate the parity-state information. The value of the state flag associated with the specific position may be indicative of a subset of possible quantization levels of the position. For the parity-state flag, the binary value (e.g., 0 or 1) of the flag may be indicative of either the odd quantization levels or the even quantization levels, i.e., one of the two subsets of all possible quantization levels. The state flag, however, is not limited to the parity-state flag, and may include any suitable non-parity state flag associated with a specific position. Thus, the value of the non-parity state flag may be indicative of a different subset of possible quantization levels, other than odd or even quantization levels, of the position. Depending on different video coding applications, for example, the statistical information (e.g., distribution) of the data (e.g., quantization levels or coefficients) in a block associated with each video coding application, the meaning of the state flag may be preset differently to further optimize the video coding performance. It is understood that since the parities of the absolute levels in a block may not well reflect the statistical information of the absolute levels to achieve optimal residual coding, consistent with the scope of the present disclosure, in some embodiments, the state flag associated with each position used for dependent quantization and residual coding is a non-parity state flag associated with the position, which can better reflect the statistical information of the absolute levels in the block. In other words, the way how all possible quantization levels of a position are divided into subsets may better reflect the statistical information of the absolute levels in the block, compared with dividing them based on the parity.
[0071] FIG. 9 illustrates a flow chart of an exemplary method 900 of video encoding, according to some embodiments of the present disclosure. Method 900 may be performed by encoder 101 of encoding system 100 or any other suitable video encoding systems. Method 900 may include operations 902, 904, 906, and 908, as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 9.
[0072] At operation 902, a coefficient of a current position in the current block is quantized based, at least in part, on a state flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. In some embodiments, the state flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. As shown in FIG. 3, quantization module 310 may be configured to quantize the coefficient of the current position in the current block to generate the quantization level of the current position. The coefficient of the current position may be a transformed coefficient in a residual block provided by transform module 308 or a non-transformed coefficient. In some embodiments, the coefficient is quantized by performing dependent quantization using multiple quantizers (e.g., scalar quantizers) each having the same quantization step size or different quantization step sizes. To quantize the coefficient of the current position, one of the quantizers is determined based, at least in part, on the state flag associated with the preceding position along the coding scan order, according to some embodiments. That is, the dependent quantization of the current position may be performed at least based on the state flag associated with the preceding position in the same block for choosing the corresponding quantizer. In some embodiments, the state of the preceding position is used in conjunction with the state flag associated with the preceding position to choose the corresponding quantizer for dependent quantization. That is, the quantizer may be determined based on the state flag associated with the preceding position and the state of the preceding position. For example, the state of the preceding position and the state flag associated with the preceding position may be used to determine the state of the current position based on a state transition rule (e.g., a state machine and/or a state transition table), which may be in turn used to choose the corresponding quantizer. Other factors that may be considered in quantizing the coefficient may include, for example, the information of the quantizers in dependent quantization (e.g., the number of the quantizers and their respective quantization step size).
[0073] At operation 904, a state flag associated with the current position is determined based, at least in part, on the quantization level of the current position. As shown in FIG. 3, state module 311 may be configured to determine the state flag associated with each position (including the current position and the preceding and following positions thereof along the coding scan order) based at least on the quantization level of the respective position. In some embodiments, the state flag associated with the current position is determined at least based on the absolute value of the quantization level (absolute level) of the current position. The specific state flag, the corresponding method of determining the state flag, as well as the corresponding station transition rule for selecting the quantizer in dependent quantization may be preset depending on the specific video coding application, such as the statistical information of the data in the residual blocks, to achieve optimal coding performance. Other factors that may be considered in determining the state may include, for example, the preset state transition rules.
[0074] At operation 906, the quantization level of the current position is encoded into a bitstream based, at least in part, on the state flag associated with the current position. In some embodiments, to encode the quantization level of the current position, a state flag bin is encoded based on the state flag associated with the current position using binary arithmetic coding, for example, CABAC. As shown in FIG. 3, encoding module 320 may be configured to encode the quantization level of each position (including the current position and the preceding and following positions thereof along the coding scan order) based at least on the state flag associated with the current position. Level coding of a dedicated state flag bin indicative of the state flag associated with each position may be performed as part of the encoding process, such that the decoder can decode the state flag bin to obtain the state flag without first decoding the quantization level. As described below in detail, the state flag bin used for encoding the state flag into the bitstream may include any suitable syntax elements based on the specific state flag derived from the quantization level.
[0075] It is understood that operations 902, 904, and 906 may be repeated for each position when it becomes the current position along the coding scan order in the current block. For example, at operation 908, a coefficient of a following position along the coding scan order of the block is quantized based, at least in part, on the state flag associated with the current position to generate a quantization level of the following position. That is, operation 902 may be repeated for the following position in operation 908. Similarly, operations 904 and 906 may be repeated after operation 908 (not shown for ease of description) for the following position as well, and the process may continue for each position in the current block along the coding scan order.
[0076] Consistent with the scope of the present disclosure, in some embodiments, the state flag associated with the current position is a non-parity state flag associated with the current position. The value of the state flag associated with the current position may be indicative of a subset of possible quantization levels, other than even or odd levels, of the current position. In some embodiments, the non-parity state flag may be determined based on the value of the level modulus a positive integer A. For example, FIG. 10 illustrates a flow chart of an exemplary method 1000 of determining the state flag (e.g., a non-parity state flag) for dependent quantization and residual coding, according to some embodiments of the present disclosure. Method 1000 may be performed by quantization module 310 and state module 311 of encoder 101 or any other suitable video encoders. Method 1000 may include operations 1002, 1004, 1006, and 1008 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 10.
[0077] At operation 1002, the absolute value of the quantization level of the current position is obtained. As shown in FIG. 3, state module 311 may obtain the absolute level of each position from quantization module 310 after performing the quantization to the position. At operation 1004, a modulo operation is performed based on the absolute value of the quantization level of the current position and a positive integer N. As shown in FIG. 3, state module 311 may perform a modulo operation as: abs(lvl) % N (3) where abs(lvl) represents the absolute level, and operator % represents the modulo operation. At operation 1006, the state flag associated with the current position is determined based on the result of the modulo operation. The state flag may be coded by a single bit to represent two possible values (indicative of two subsets of possible absolute levels) or by multiple bits to represent more than two values (indicative of more than two subsets of possible absolute levels). As shown in FIG. 3, state module 311 may determine the state flag associated with the current position based on the result of the modulo operation, e.g., the outcome of Equation (3), and further determine the state of the following position based on the state flag associated with the current position, the state of the current position, as well as the preset state transition rule. At operation 1008, the quantizer may be determined based, at least in part, on the state flag associated with the preceding position (and the state of the preceding position as well in some examples). As shown in FIG. 3, quantization module 310 may obtain the state flag associated with each position and use the state flag associated with the preceding position (and the state of the preceding position in conjunction with the preset state transition rule in some examples) to choose the quantizer used for quantization at the current position.
[0078] In one example, the positive integer N may be 3 as shown in TABLE IV below in detail. The row of “abs(lvl) % 3” illustrates the result of the modulo operation on different absolute levels, and the rows of “State Flag A” and “State Flag B” illustrate two different ways to determine a state flag. For “State Flag A,” if the value of absolute level modulo 3 is equal to 1, the value of the state flag is 0, i.e., the state flag is indicative of the first subset (e.g., the result being 1); if the value of absolute level modulo 3 is equal to either 0 or 2, the value of the state flag is 1, i.e., the state flag is indicative of the second subset (e.g., the result being 0 and 2). For “State Flag B,” if the value of absolute level modulo 3 is equal to either 1 or 2, the value of the state flag is 0, i.e., the state flag is indicative the first subset (e.g., the result being 1 and 2); if the value of absolute level modulo 3 is equal to 0, the value of the state flag is 1, i.e., the state flag is indicative of the second subset (e.g., the result being 0). In some embodiments, two quantizers Q0 and Q1 are mapped to the two values 0 and 1 of the state flag, respectively, such that the suitable quantizer for quantization at the following position may be selected based on the state flag associated with the current position. That is, the state flag of a position may be used alone to choose the quantizer in dependent quantization for the following position. In some embodiments, the state flag associated with a current position is used in conjunction with the state of the current position to determine the state of the following position using a state transition rule, and the state of the following position is used in turn for choosing the quantizer in dependent quantization for the following position. That is, the state flag of a position may be used with the state of the position to choose the quantizer in dependent quantization for the following position.
Figure imgf000027_0001
TABLE IV Modulo-State Transition Table
[0079] When using modulo-state, the state flag associated with a position may be determined based on the positive integer A as well as the way to determine the state flag (e.g., State Flag A or State Flag B above). In some embodiments, the positive integer N and/or the way to determine the state flag is preset based on the statistical information of the absolute levels in the current block or picture, for example, the distribution of the absolute levels. For example, by changing the positive integer N and/or the way to determine the state flag, the distribution of the resulting values of the state flag for the same distribution of the absolute levels may vary as well. In one example, the positive integer N and/or the way to determine the state flag may be preset such that the two values of the state flag occur as even as possible, i.e., the sizes of the two subsets being as the same as possible. In another example, the positive integer N and/or the way to determine the state flag may be preset such that the distribution of the resulting values of the state flag matches the distribution of the absolute values as close as possible. It is understood that in some examples, the state flag may be coded using more than 1 bit to have more than two different values (subsets), such as 4 values (subsets) using two bits.
[0080] As described above, to improve the video coding efficiency, for example, at the decoder side, the modulo-state flag may be encoded using a specific bin (e.g., a state flag bin) into the bitstream, such that the decoder can obtain the modulo-state flag without first decoding the quantization level. For example, as shown in TABLE V below, suppose the level coding in a residual block uses the above-defined structure of abs level gtxX flag and remainder, then the parsing of abs_level_gtx(X+l) may be conditional and occurs only when the abs level gtxX for the same level is equal to 1. The state flag may represent the state flag in State Flag A in TABLE IV and may replace one or more abs level gtxX flag in TABLE II, such as the abs level gtxl flag bin. Once the state flag is present, another one or more syntax elements may be present, making a special combination to represent some special states. For example, when the state_flag is present, the abs_level_gtx2_flag may always be present, as shown in TABLE V.
Figure imgf000028_0001
TABLE V Residual Coding Based On abs level gtxX flag Bins, Remainder Bin, and
Modulo-State Flag Bin
As shown in TABLE V, for each level, a first bin - abs level gtxO flag (a.k.a. sig coeff flag) may be first coded into the bitstream to indicate if the level is zero or non-zero. If the level is non zero, a modulo-state flag bin - state flag may be coded according to State Flag A in TABLE IV above, and then abs_level_gtx2_flag may be present. The state flag and abs_level_gtx2_flag may be used together to indicate the level is 1, or 2 or greater than 2. If the absolute value of the level is greater than 2, a fourth bin - abs_level_gtx3_flag may be coded to indicate if the absolute level is 3 or greater than 3. If the absolute value of the level is greater than 3, one more bin - abs remainder may be coded based on the remainder. In addition, the sign of each level within a block may also be coded in another sign bin to fully represent the quantization level.
[0081] The value of absolute level in TABLE V can be represented by using the following pseudo code, where the syntax elements are marked in bold.
// initialization abs = 0; // the absolute value of level abs_level_gtxX_flag = 0; // all great than X flag are 0 Remainder = 0; // remainder is 0
// residue coding abs level gtxO flag; if (!abs_level_gtxO_flag) { abs = 0; return;
} else { 11 abs_level_gtxO_flag == 1 state_flag; 11 state abs_level_gtx2 flag; if (state_flg == 0 && abs_level_gtx2_flag == 0) abs_level_gtxl_flag = 0; else abs_level_gtxl_flag = 1; if (abs_level_gtx2_flag) abs_level_gtx3_flag; if (abs_level_gtx3_flag)
Remainder; abs = 1 + abs_level_gtxl_flag + abs_level_gtx2_flag + abs_level_gtx3_flag + Remainder; return;
[0082] It is understood that the abs level gtxX flag bins may vary in other examples for residual coding. For example, in TABLE VI below, abs_level_gtx3_flag may not be used for encoding the quantization levels.
Figure imgf000029_0001
TABLE VI Residual Coding Based On abs level gtxX flag Bins, Remainder Bin, and
Modulo-State Flag Bin
[0083] Similarly, the value of absolute level in TABLE VI can be represented by using the following pseudo code, where the syntax elements are marked in bold. // initialization abs = 0; // The absolute value of level abs_level_gtxX_flag = 0; // all great than X flag are 0 Remainder = 0; // remainder is 0
// residue coding abs level gtxO flag; if (!abs_level_gtxO_flag) { abs = 0; return;
} else { // abs_level_gtxO_flag == 1 state_flag; // state abs_level_gtx2_flag; if (state_flg == 0 && abs_level_gtx2_flag == 0) abs_level_gtxl_flag = 0; else abs_level_gtxl_flag = 1; if (abs_level_gtx2_flag)
Remainder; abs = 1 + abs_level_gtxl_flag + abs_level_gtx2_flag + Remainder; return;
}
[0084] It is understood that although the state flag replaces abs level gtxl flag in
TABLEs V and VI, in other examples, the state flag may replace other abs level gtxX flag, such as abs_level_gtx2_flag or abs_level_gtx3_flag. It is also understood that the state flag may be coded using multiple bits, e.g., two bits to represent up to four values (subsets), in other examples, and the residual coding can change accordingly.
[0085] It is understood that the operation that can be applied to the quantization level is not limited to the modulo operation described above and may include any suitable arithmetic operations and/or logical operations, for example, based on the statistical information of the quantization levels in the block or picture.
[0086] In some embodiments, the non-parity state flag may be determined based, at least in part, on whether the absolute value of the quantization level is within a preset range. For example, FIG. 11 illustrates a flow chart of an exemplary method 1100 of determining the state flag (e.g., a non-parity state flag) for dependent quantization and residual coding, according to some embodiments of the present disclosure. Method 1100 may be performed by quantization module 310 and state module 311 of encoder 101 or any other suitable video encoders. Method 1100 may include operations 1102, 1104, and 1106 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 11.
[0087] At operation 1102, the absolute value of the quantization level of the current position is obtained. As shown in FIG. 3, state module 311 may obtain the absolute level of each position from quantization module 310 after performing the quantization to the position. At operation 1104, the state flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. As shown in FIG. 3, state module 311 may compare the absolute level of each position with one or more preset ranges and determine the state flag associated with the respective position based on the comparison in view of a preset way to determine the state flag. The state flag may be coded by a single bit to represent two possible values (subsets) or by multiple bits to represent more than two values (subsets). In some embodiments, a single preset range may be used to make a binary decision, i.e., within the range or not, to produce two outcomes, i.e., dividing all possible levels into two subsets. In some embodiments, two or more preset ranges may be used to produce three or more outcomes, i.e., dividing all possible levels into two or more subsets. It is understood that a preset range may include a single level, e.g., 1, 2, or 3, in some examples. It is understood that in some examples, instead of using the absolute level, the quantization level with sign may be compared with the preset range(s) directly to determine the state flag.
[0088] At operation 1106, the quantizer may be determined based, at least in part, on the state flag associated with the preceding position (and the state of the preceding position as well in some examples). As shown in FIG. 3, quantization module 310 may obtain the state flag associated with each position and use the state flag associated with the preceding position (and the state of the preceding position in conjunction with the preset state transition rule in some examples) to choose the quantizer used for quantization at the current position.
[0089] For example, FIG. 12 and TABLE III below illustrate one example of range-state transition and quantizer selection in dependent quantization.
Figure imgf000031_0001
TABLE VII Range-State Transition Table
As illustrated in the state machine in FIG. 12 and the state transition table in TABLE VII, the switching between the two scalar quantizers (Q0 and Ql) may be achieved using a state machine with four states. The state can take four different values: 0, 1, 2, and 3. It may be uniquely determined by at least whether the quantization level preceding the current coefficient in the coding scan order is within a preset range. At the start of the quantization at the encoding side or inverse quantization at the decoding side for a block, the state may be set equal to a default value, e.g., 0. The coefficients may be reconstructed in a coding scan order (i.e., in the same order as they are entropy decoded). After a current coefficient is reconstructed, the state may be updated as shown in FIG. 12, where t denotes a range-state flag based on the condition of whether the absolute level of the current position is within a preset range. For example, t may be equal to 1 when the condition is met (e.g., the absolute level is within the preset range), or equal to 0 when the condition is not met (e.g., the absolute level is outside of the preset range). The following state may only depend on the current state and the value of t (state flag) of the current level. In one example, the preset range is 1, and the state flag t may be defined as: t = ((abs_level_gtxO_flag == 1) && (abs_level_gtxl_flag == 0) (4)
[0090] FIG. 13 illustrates an exemplary 4x4 block and the coding scan order thereof, according to some embodiments of the present disclosure. One example is described below with respect to FIGs. 12 and 13, TABLE VII above and TABLE VIII below, as well as Equation (4) to show how the range-state may be used for dependent quantization and residual coding. In this example, residual coding may start from the bottom-right corner in FIG. 13. It is understood that in some examples, residual coding may start from the first non-zero position, e.g., the 3rd position following the coding scan order with the level of 1 in FIG. 13. The start state at scan position 0 may be set to 0. Q1 may not quantize the coefficients to zero level in this example (no zero position). Each level may be coded using various bins, such as abs level gtxO flag, abs level gtxl flag, abs_level_gtx2_flag, and abs remainder accordingly. TABLE VIII below shows how state transition works by evaluating whether the level is 1 or not using state flag t as defined in Equation (4). TABLE VIII also shows how to encode each bin into the bitstream at the encoder side as well as decode each bin from the bitstream at the decoder side. Based upon the state, the corresponding quantizer for each position may be selected, as shown in TABLE VIII.
Figure imgf000032_0001
TABLE VIII Range-State Based Dependent Quantization and Residual Coding [0091] In this example, since the level 0 at scan position 0 is not 1, the state flag t is 0, such that for scan position 1, the next state remains 0, and the next quantizer remains Q0 according to the state transition rule in FIG. 12 and TABLE VII. Residual coding may move to scan position 1 following the coding scan order as shown in FIG. 13, where the level is 0. Similar to scan position 0, since the level 0 at scan position 1 is not 1, the state flag t is 0, such that for scan position 2, the next state remains 0 and the next quantizer remains Q0 according to the state transition rule in FIG. 12 and TABLE VII. Residual coding may move to scan position 2 following the coding scan order as shown in FIG. 13, where the level becomes 1. At scan position 2, since the level is 1, the state flag t becomes 1, such that for scan position 3, the next state transits to 2, and the next quantizer becomes Q1 according to the state transition rule in FIG. 12 and TABLE VII.
[0092] It is understood that the non-parity state flags that can be used for dependent quantization and residual coding are not limited to the modulo-state flag and range-state flag described above and may include any suitable state flags that can be derived from the level of each position. In some embodiments, the last digit of the level may be used the determine the state flag of the position. In one example, the last digit (e.g., 0, 1, 2, 3, ..., 9) may be divided into one or more preset subsets, which may be mapped to one or more values of a state flag. In another example, the last digit (e.g., 0, 1, 2, 3, ..., 9) may be applied with one or more arithmetic operations (e.g., a modulo operation) and/or one or more logical operations and the result of the operation(s) may be used for determining the corresponding state flag.
[0093] FIG. 14 illustrates a flow chart of an exemplary method 1400 of video decoding, according to some embodiments of the present disclosure. Method 1400 may be performed by decoder 201 of decoding system 200 or any other suitable video decoding systems. Method 1400 may include operations 1402, 1404, 1406, and 1408 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 14.
[0094] At operation 1402, the bitstream is decoded to obtain a quantization level of a current position in the current block and a state flag associate with a preceding position along a coding scan order of the block. In some embodiments, the state flag associate with the preceding position is a non-parity state flag associate with the preceding position, such as the modulo-state flag or the range-state flag described herein, or any other suitable state flag used for dependent quantization and residual coding at the encoder side. As shown in FIG. 4, decoding module 402 may be configured to decode the input bitstream, for example, by parsing each syntax element (e.g., each bin in level coding), to acquire various types of information including the state flag and the quantization level of each position in the current block. In order to perform dequantization of the current position, the state flag associate with the preceding position and the quantization level of the current position may be obtained from the bitstream by an entropy decoding process. In some embodiments, to decode the bitstream, the state flag associate with the preceding position is obtained from a state flag bin that is dedicated to encoding the state information, such as the modulo-state flag, range-state flag, or any other suitable non-parity state flag disclosed herein. Since the state flag can be obtained from the state flag bin directly, the quantization level may not be needed for determining the state information.
[0095] At operation 1404, the quantization level of the current position is dequantized based, at least in part, on the state flag associate with the preceding position to obtain a coefficient of the current position. As shown in FIG. 4, dequantization module 404 may be configured to dequantize the quantization level of each position based at least on the state flag associate with the respective preceding position to obtain the coefficient of the respective position. The same state transition rule used for dependent quantization based on the state flag at the encoder side may be used for dequantization at the decoder side. In some embodiments, to dequantize the quantization level of the current position, a quantizer is determined based, at least in part, on the state flag associate with the preceding position. That is, for dependent quantization, the suitable quantize for dequantization at the current position may be chosen at the decoder side based on the state flag associate with the preceding position in view of the preset state transition rule in the same manner as at the encoder side. In some embodiments, the state of the preceding position is used in conjunction with the state flag associated with the preceding position to choose the corresponding quantizer for dependent quantization. That is, the quantizer may be determined based on the state flag associated with the preceding position and the state of the preceding position. For example, the state of the preceding position and the state flag associated with the preceding position may be used to determine the state of the current position based on the state transition rule (e.g., a state machine and/or a state transition table), which may be in turn used to choose the corresponding quantizer.
[0096] It is understood that operations 1402 and 1404 may be repeated for each position when it becomes the current position along the coding scan order in the current block. For example, at operation 1406, the bitstream is decoded to obtain the state flag associate with the current position and a quantization level of a following position along the coding scan order. That is, operation 1402 may be repeated for the following position in operation 1406. Similarly, at operation 1408, the quantization level of the following position is dequantized based, at least in part, on the state flag associate with the current position to obtain a coefficient of the following position. That is, operation 1404 may be repeated for the following position in operation 1408. The process may continue for each position in the current block along the coding scan order. [0097] As described above with respect to the encoder side, the flag associated with the current position may be determined based, at least in part, on the absolute value of the quantization level of the current position. In some embodiments, the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer, such as 3. In some embodiments, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range, such as 1.
[0098] In various aspects of the present disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a processor, such as processor 102 in FIGs. 1 and 2. By way of example, and not limitation, such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD, such as magnetic disk storage or other magnetic storage devices, Flash drive, SSD, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processing system, such as a mobile device or a computer. Disk and disc, as used herein, includes CD, laser disc, optical disc, digital video disc (DVD), and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0099] According to one aspect of the present disclosure, a method for encoding a picture of a video including a block is disclosed. A coefficient of a current position in the block is quantized by a processor based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. A flag associated with the current position is determined based, at least in part, on the quantization level of the current position. The quantization level of the current position is encoded into a bitstream based, at least in part, on the flag associated with the current position.
[0100] In some embodiments, the flag associated with the current position is a non-parity flag associated with f the current position. [0101] In some embodiments, to determine the state of the current position, the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
[0102] In some embodiments, to determine the flag associated with the current position, a modulo operation is performed based on the absolute value of the quantization level of the current position and a positive integer, and the flag associated with the current position is determined based on a result of the modulo operation. In some embodiments, the positive integer is 3.
[0103] In some embodiments, to determine the flag associated with the current position, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
[0104] In some embodiments, a coefficient of a following position along the coding scan order of the block is quantized by the processor based, at least in part, on the flag associated with the current position.
[0105] In some embodiments, to quantize the coefficient of the current position, a quantizer is determined based, at least in part, on the flag associated with the preceding position.
[0106] In some embodiments, to quantize the coefficient of the current position, the quantizer is determined based on the flag associated with the preceding position and a state of the preceding position.
[0107] In some embodiments, to encode the quantization level of the current position, a flag bin is encoded based on the flag associated with the current position using binary arithmetic coding.
[0108] In some embodiments, a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
[0109] According to another aspect of the present disclosure, a system for encoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory. The processor is configured to, upon executing the instructions, quantize a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. The processor is also configured to, upon executing the instructions, determine a flag associated with the current position based, at least in part, on the quantization level of the current position. The processor is further configured to, upon executing the instructions, encode the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
[0110] In some embodiments, the flag associated with the current position is a non-parity flag associated with the current position.
[0111] In some embodiments, to determine the flag associated with the current position, the processor is further configured to determine the flag associated with the current position based, at least in part, on an absolute value of the quantization level of the current position.
[0112] In some embodiments, to determine the flag associated with the current position, the processor is further configured to perform a modulo operation based on the absolute value of the quantization level of the current position and a positive integer, and determine the flag associated with the current position based on a result of the modulo operation. In some embodiments, the positive integer is 3.
[0113] In some embodiments, to determine the flag associated with the current position, the processor is further configured to determine the flag associated with the current position based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
[0114] In some embodiments, the processor is further configured to quantize a coefficient of a following position along the coding scan order of the block based, at least in part, on the flag associated with the current position.
[0115] In some embodiments, to quantize the coefficient of the current position, the processor is further configured to determine a quantizer based, at least in part, on the flag associated with the preceding position.
[0116] In some embodiments, to quantize the coefficient of the current position, the processor is further configured to determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
[0117] In some embodiments, to encode the quantization level of the current position, the processor is further configured to encode a flag bin based on the flag associated with the current position using binary arithmetic coding.
[0118] In some embodiments, a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
[0119] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for encoding a picture of a video including a block is disclosed. The process includes quantizing a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position. The flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position. The process also includes determining a flag associated with the current position based, at least in part, on the quantization level of the current position. The process further includes encoding the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
[0120] According to yet another aspect of the present disclosure, a method for decoding a picture of a video including a block is disclosed. A bitstream is decoded by a processor to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The quantization level of the current position is dequantized by the processor based, at least in part, on the flag associated with f the preceding position to obtain a coefficient of the current position.
[0121] In some embodiments, the flag associated with f the preceding position is a non parity flag associated with the preceding position.
[0122] In some embodiments, the bitstream is decoded by the processor to obtain a flag associated with the current position and a quantization level of a following position along the coding scan order of the block, and the quantization level of the following position is dequantizing by the processor based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
[0123] In some embodiments, a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
[0124] In some embodiments, the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
[0125] In some embodiments, the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer. In some embodiments, the positive integer is 3.
[0126] In some embodiments, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
[0127] In some embodiments, to dequantize the quantization level of the current position, a quantizer is determined based, at least in part, on the flag associated with the preceding position. [0128] In some embodiments, to dequantize the quantization level of the current position, the quantizer is determined based on the flag associated with the preceding position and a state of the preceding position.
[0129] In some embodiments, to decode the bitstream, the flag associated with the preceding position is obtained from a flag bin.
[0130] According to yet another aspect of the present disclosure, a system for decoding a picture of a video including a block includes a memory configured to store instructions and a processor coupled to the memory. The processor is configured to, upon executing the instructions, decode a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The processor is also configured to, upon executing the instructions, dequantize the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
[0131] In some embodiments, the flag associated with the preceding position is a non parity flag associated with the preceding position.
[0132] In some embodiments, the processor is further configured to decode the bitstream to obtain a flag associated with the current position and a quantization level of a following position along the coding scan order of the block, and dequantize the quantization level of the following position based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
[0133] In some embodiments, a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
[0134] In some embodiments, the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
[0135] In some embodiments, the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer. In some embodiments, the positive integer is 3. [0136] In some embodiments, the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range. In some embodiments, the preset range is 1.
[0137] In some embodiments, to dequantize the quantization level of the current position, the processor is further configured to determine a quantizer based, at least in part, on the flag associated with the preceding position.
[0138] In some embodiments, to dequantize the quantization level of the current position, the processor is further configured to determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
[0139] In some embodiments, to decode the bitstream, the processor is further configured to obtain the flag associated with the preceding position from a flag bin.
[0140] According to yet another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for decoding a picture of a video including a block is disclosed. The process includes decoding a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block. The process also includes dequantizing the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
[0141] The foregoing description of the embodiments will so reveal the general nature of the present disclosure that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such embodiments, without undue experimentation, without departing from the general concept of the present disclosure. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
[0142] Embodiments of the present disclosure have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. [0143] The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor(s), and thus, are not intended to limit the present disclosure and the appended claims in any way.
[0144] Various functional blocks, modules, and steps are disclosed above. The arrangements provided are illustrative and without limitation. Accordingly, the functional blocks, modules, and steps may be reordered or combined in different ways than in the examples provided above. Likewise, some embodiments include only a subset of the functional blocks, modules, and steps, and any such subset is permitted.
[0145] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims

WHAT IS CLAIMED IS:
1. A method for encoding a picture of a video, the picture comprising a block, the method comprising: quantizing, by a processor, a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position, wherein the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position; determining, by the processor, a flag associated with the current position based, at least in part, on the quantization level of the current position; and encoding, by the processor, the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
2. The method of claim 1, wherein the flag associated with the current position is a non-parity flag associated with the current position.
3. The method of claim 1, wherein determining the flag associated with the current position comprises: determining the flag associated with the current position based, at least in part, on an absolute value of the quantization level of the current position.
4. The method of claim 3, wherein determining the flag associated with the current position further comprises: performing a modulo operation based on the absolute value of the quantization level of the current position and a positive integer; and determining the flag associated with the current position based on a result of the modulo operation.
5. The method of claim 4, wherein the positive integer is 3.
6. The method of claim 3, wherein determining the flag associated with the current position further comprises: determining the flag associated with the current position based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range.
7. The method of claim 6, wherein the preset range is 1.
8. The method of claim 1, further comprising: quantizing, by the processor, a coefficient of a following position along the coding scan order of the block based, at least in part, on the flag associated with the current position.
9. The method of claim 1, wherein quantizing the coefficient of the current position comprises: determining a quantizer based, at least in part, on the flag associated with the preceding position.
10. The method of claim 9, wherein quantizing the coefficient of the current position comprises: determining the quantizer based on the flag associated with the preceding position and a state of the preceding position.
11. The method of claim 1, wherein encoding the quantization level of the current position comprises: encoding a flag bin based on the flag associated with the current position using binary arithmetic coding.
12. The method of claim 1, wherein a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
13. A system for encoding a picture of a video, the picture comprising a block, the system comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: quantize a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position, wherein the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position; determine a flag associated with f the current position based, at least in part, on the quantization level of the current position; and encode the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
14. The system of claim 13, wherein the flag associated with the current position is a non-parity flag associated with the current position.
15. The system of claim 13, wherein to determine the flag associated with the current position, the processor is further configured to: determine the flag associated with the current position based, at least in part, on an absolute value of the quantization level of the current position.
16. The system of claim 15, wherein to determine the flag associated with the current position, the processor is further configured to: perform a modulo operation based on the absolute value of the quantization level of the current position and a positive integer; and determine the flag associated with the current position based on a result of the modulo operation.
17. The system of claim 16, wherein the positive integer is 3.
18. The system of claim 15, wherein to determine the flag associated with the current position, the processor is further configured to: determine the flag associated with the current position based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range.
19. The system of claim 18, wherein the preset range is 1.
20. The system of claim 13, wherein the processor is further configured to: quantize a coefficient of a following position along the coding scan order of the block based, at least in part, on the flag associated with the current position.
21. The system of claim 13, wherein to quantize the coefficient of the current position, the processor is further configured to: determine a quantizer based, at least in part, on the flag associated with the preceding position.
22. The system of claim 21, wherein to quantize the coefficient of the current position, the processor is further configured to: determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
23. The system of claim 13, wherein to encode the quantization level of the current position, the processor is further configured to: encode a flag bin based on the flag associated with the current position using binary arithmetic coding.
24. The method of claim 13, wherein a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
25. A non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for encoding a picture of a video, the picture comprising a block, the process comprising: quantizing a coefficient of a current position in the block based, at least in part, on a flag associated with a preceding position along a coding scan order of the block to generate a quantization level of the current position, wherein the flag associated with the preceding position is determined based, at least in part, on a quantization level of the preceding position; determining a flag associated with the current position based, at least in part, on the quantization level of the current position; and encoding the quantization level of the current position into a bitstream based, at least in part, on the flag associated with the current position.
26. A method for decoding a picture of a video, the picture comprising a block, the method comprising: decoding, by a processor, a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block; and dequantizing, by the processor, the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
27. The method of claim 26, wherein the flag associated with the preceding position is a non-parity flag associated with the preceding position.
28. The method of claim 26, further comprising: decoding, by the processor, the bitstream to obtain a flag associated with the current position and a quantization level of a following position along the coding scan order of the block; and dequantizing, by the processor, the quantization level of the following position based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
29. The method of claim 28, wherein a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
30. The method of claim 29, wherein the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
31. The method of claim 30, wherein the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer.
32. The method of claim 31, wherein the positive integer is 3.
33. The method of claim 30, wherein the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range.
34. The method of claim 33, wherein the preset range is 1.
35. The method of claim 26, wherein dequantizing the quantization level of the current position comprises: determining a quantizer based, at least in part, on the flag associated with the preceding position.
36. The method of claim 35, wherein dequantizing the quantization level of the current position comprises: determining the quantizer based on the flag associated with the preceding position and a state of the preceding position.
37. The method of claim 26, wherein decoding the bitstream comprises: obtaining the flag associated with the preceding position from a flag bin.
38. A system for decoding a picture of a video, the picture comprising a block, the system comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: decode a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block; and dequantize the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
39. The system of claim 38, wherein the flag associated with the preceding position is a non-parity flag associated with the preceding position.
40. The system of claim 38, wherein the processor is further configured to: decode the bitstream to obtain a flag associated with f the current position and a quantization level of a following position along the coding scan order of the block; and dequantize the quantization level of the following position based, at least in part, on the flag associated with the current position to obtain a coefficient of the following position.
41. The system of claim 40, wherein a value of the flag associated with the current position is indicative of a subset of possible quantization levels of the current position.
42. The system of claim 41, wherein the flag associated with the current position is determined based, at least in part, on an absolute value of the quantization level of the current position.
43. The system of claim 42, wherein the flag associated with the current position is determined based, at least in part, on a result of a modulo operation performed based on the absolute value of the quantization level of the current position and a positive integer.
44. The system of claim 43, wherein the positive integer is 3.
45. The system of claim 42, wherein the flag associated with the current position is determined based, at least in part, on whether the absolute value of the quantization level of the current position is within a preset range.
46. The system of claim 45, wherein the preset range is 1.
47. The system of claim 38, wherein to dequantize the quantization level of the current position, the processor is further configured to: determine a quantizer based, at least in part, on the flag associated with the preceding position.
48. The system of claim 47, wherein to dequantize the quantization level of the current position, the processor is further configured to: determine the quantizer based on the flag associated with the preceding position and a state of the preceding position.
49. The system of claim 38, wherein to decode the bitstream, the processor is further configured to: obtain the flag associated with the preceding position from a flag bin.
50. A non-transitory computer-readable medium storing instructions that, when executed by a processor, perform a process for decoding a picture of a video, the picture comprising a block, the process comprising: decoding a bitstream to obtain a quantization level of a current position in the block and a flag associated with a preceding position along a coding scan order of the block; and dequantizing the quantization level of the current position based, at least in part, on the flag associated with the preceding position to obtain a coefficient of the current position.
PCT/US2022/015862 2021-03-09 2022-02-09 State based dependent quantization and residual coding in video coding WO2022191947A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202280018400.8A CN116918327A (en) 2021-03-09 2022-02-09 State-based quantization of dependencies and residual coding in video coding

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163158764P 2021-03-09 2021-03-09
US63/158,764 2021-03-09

Publications (1)

Publication Number Publication Date
WO2022191947A1 true WO2022191947A1 (en) 2022-09-15

Family

ID=83228308

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/015862 WO2022191947A1 (en) 2021-03-09 2022-02-09 State based dependent quantization and residual coding in video coding

Country Status (2)

Country Link
CN (1) CN116918327A (en)
WO (1) WO2022191947A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140086307A1 (en) * 2012-09-26 2014-03-27 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
US20170064336A1 (en) * 2015-09-01 2017-03-02 Qualcomm Incorporated Coefficient level coding in video coding
WO2020141159A2 (en) * 2019-01-02 2020-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Unified transform type signaling and transform type dependent transform coefficient level coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140086307A1 (en) * 2012-09-26 2014-03-27 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
US20170064336A1 (en) * 2015-09-01 2017-03-02 Qualcomm Incorporated Coefficient level coding in video coding
WO2020141159A2 (en) * 2019-01-02 2020-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Unified transform type signaling and transform type dependent transform coefficient level coding

Also Published As

Publication number Publication date
CN116918327A (en) 2023-10-20

Similar Documents

Publication Publication Date Title
US11044473B2 (en) Adaptive loop filtering classification in video coding
WO2020253828A1 (en) Coding and decoding method and device, and storage medium
JP2022008502A (en) Method and apparatus for encoding/decoding image information
AU2019249440A1 (en) Position dependent intra prediction combination extended with angular modes
KR20190029732A (en) Intra prediction mode based image processing method and apparatus therefor
CN114930817A (en) Signaling technique for quantizing related parameters
US10560704B2 (en) Scanning orders for non-transform coding
CN112425164A (en) Transform variants of multiple separable transform choices
CN114375582A (en) Method and system for processing luminance and chrominance signals
KR20200096227A (en) Method and apparatus for video encoding and decoding based on block shape
KR20190140820A (en) A method and an apparatus for processing a video signal based on reference between components
WO2022191947A1 (en) State based dependent quantization and residual coding in video coding
US20240064303A1 (en) Bypass alignment in video coding
US20240137567A1 (en) Method and system for decoding/encoding video including sequence pictures
WO2022217442A1 (en) Coefficient encoding/decoding method, encoder, decoder, and computer storage medium
CN117203960A (en) Bypass alignment in video coding
EP4349016A1 (en) Quantization level binarization in video coding
WO2023283336A1 (en) Sequence-level and slice-level syntax representation in video coding
WO2023244592A1 (en) System and method for chromaticity intra prediction
WO2024010635A1 (en) System and method for multiple-hypothesis prediction for video coding
WO2022213122A1 (en) State transition for trellis quantization in video coding
JP2024511272A (en) Intra prediction method, encoder, decoder and storage medium
EP3518542A1 (en) Methods and devices for picture encoding and decoding using multiple transforms
KR20230012218A (en) Image encoding/decoding method and apparatus using in-loop filter based on neural network and recording medium for stroing bitstream

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22767638

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202280018400.8

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: 22767638

Country of ref document: EP

Kind code of ref document: A1