Quantization offset for dependent quantization in video coding
By varying quantization offsets based on quantization levels and quantizers, the technique addresses suboptimal quantization in video coding, reducing signaling bandwidth while maintaining video quality.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- QUALCOMM INC
- Filing Date
- 2024-06-06
- Publication Date
- 2026-06-30
AI Technical Summary
Existing video coding techniques often apply the same quantization offset to all quantization levels, leading to suboptimal quantization that either increases signaling bandwidth or degrades video quality.
Implementing quantization offset schemes that vary based on the quantization level and quantizer, using different offsets for different quantization levels and quantizers to balance reduced signaling bandwidth with maintained video quality.
This approach reduces the amount of signaled information while preserving video quality by applying tailored offsets to each quantization level and quantizer, achieving a better balance than uniform offset application.
Smart Images

Figure 2026521338000001_ABST
Abstract
Description
[Technical Field]
[0001]
[0001] This application claims priority to U.S. Patent Application No. 18 / 734,509, filed on 5 June 2024, and to U.S. Provisional Patent Application No. 63 / 507,371, filed on 9 June 2023, the entire contents of which are incorporated herein by reference. U.S. Patent Application No. 18 / 734,509, filed on 5 June 2024, claims the benefit of U.S. Provisional Patent Application No. 63 / 507,371, filed on 9 June 2023. Technical field
[0002]
[0002] This disclosure relates to video coding and video decoding. [Background technology]
[0003]
[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite radio phones, so-called "smartphones," video teleconferencing devices, and video streaming devices. Digital video devices implement video coding techniques such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), ITU-T H.266 / Versatile Video Coding (VVC), and extensions of such standards, as well as proprietary video codecs / formats such as AOMedia Video 1 (AV1) developed by the Alliance for Open Media. By implementing such video coding techniques, video devices can transmit, receive, encode, decode, and / or store digital video information more efficiently.
[0004]
[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or eliminate redundancy inherent in video sequences. In block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) may also be divided into video blocks, which may also be called coding tree units (CTUs), coding units (CUs), and / or coding nodes. A video block in an intra-coded (I) slice of a picture is coded using spatial prediction to a reference sample in a neighboring block within the same picture. A video block in an intercoded (P or B) slice of a picture may use spatial prediction to a reference sample in a neighboring block within the same picture or temporal prediction to a reference sample in another reference picture. A picture may be called a frame, and a reference picture may be called a reference frame. [Overview of the project]
[0005]
[0005] Generally speaking, this disclosure describes techniques for quantization offset schemes for dependent quantization (e.g., trellis coding quantization). In quantization, a video encoder and a video decoder may determine one quantizer from at least two quantizers to perform quantization (e.g., by the video encoder) or inverse quantization (e.g., by the video decoder) of coefficient values. The quantizer may determine a multiplier by which the coefficient level value of the coefficient is multiplied to determine the quantization parameter or inverse quantization parameter. The at least two quantizers are referred to as the first quantizer (Q0) or the second quantizer (Q1).
[0006]
[0006] In quantization, the video encoder or video decoder may also determine one quantization level from a plurality of quantization levels in order to perform quantization (e.g., by the video encoder) or dequantization (e.g., by the video decoder) of the coefficient values. The quantization level may be a transformed coefficient level (e.g., based on the coefficient level of the coefficients). The coefficients may be transformed residual values, which may be based on the difference between the actual values of the block and the predicted signal.
[0007]
[0007] In one or more examples, the video encoder and video decoder may apply different offsets based on the quantization level and / or quantizer for a coefficient to determine the multiplier by which the coefficient level value of the coefficient is multiplied to determine the quantization parameter or inverse quantization parameter. That is, a first offset may be associated with a first quantization level and / or quantizer Q0, and a different second offset may be associated with a second quantization level and / or quantizer Q1. By applying different offsets based on the quantization level, the exemplary technique may result in quantization coefficient values that signal fewer bits while maintaining video quality, compared to other techniques in which the same offset is applied to each of the quantization levels or no offset is applied. In other words, by applying a first offset when the quantization level is a first quantization level, and a second offset when the quantization level is a second quantization level, the exemplary technique can reduce the amount of signaled information compared to a technique where the same offset is applied or no offset is applied when the quantization level is a first or second quantization level. In some examples, each quantization level may be associated with a different offset.
[0008]
[0008] In one example, the present disclosure describes a method for processing video data, the method comprising: determining a quantization level for the coefficients of a current block from a plurality of quantization levels; determining an offset value based on the quantization level, which is a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level; determining a quantization parameter or inverse quantization parameter for the coefficients based on the determined offset value; and performing one of quantization or inverse quantization on the coefficients based on the determined quantization parameter or inverse quantization parameter as part of encoding or decoding the current block.
[0009]
[0009] In one example, the present disclosure provides a device for processing video data, the device comprising one or more memories configured to store video data, and a processing circuit configuration coupled to one or more memories, wherein the processing circuit configuration is configured to determine a quantization level for a coefficient of a current block from a plurality of quantization levels, determine an offset value based on the quantization level which is a first offset value based on the quantization level which is a first quantization level, or a different second offset value based on the quantization level which is a second quantization level, determine a quantization parameter or inverse quantization parameter for a coefficient based on the determined offset value, and perform one of quantization or inverse quantization on the coefficient based on the determined quantization parameter or determined inverse quantization parameter as part of encoding or decoding the current block.
[0010] In one example, the present disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors to determine a quantization level for a coefficient of a current block from a plurality of quantization levels, and based on the quantization level, determine an offset value that is a first offset value based on the quantization level being a first quantization level or a different second offset value based on the quantization level being a second quantization level, and based on the determined offset value, determine a quantization parameter or an inverse quantization parameter for the coefficient, and as part of encoding or decoding the current block, perform one of quantization or inverse quantization on the coefficient based on the determined quantization parameter or the determined inverse quantization parameter.
[0011] Details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims.
Brief Description of the Drawings
[0012] [Figure 1] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system that can execute the techniques of the present disclosure. [Figure 2]
[0013] FIG. 2 is a block diagram illustrating an exemplary video encoder that can execute the techniques of the present disclosure. [Figure 3]
[0014] FIG. 3 is a block diagram illustrating an exemplary video decoder that can execute the techniques of the present disclosure. [Figure 4]
[0015] FIG. 4 is a flowchart illustrating an exemplary method for encoding a current block according to the techniques of the present disclosure. [Figure 5]
[0016] FIG. 5 is a flowchart illustrating an exemplary method for decoding a current block according to the techniques of the present disclosure. [Figure 6]
[0017] FIG. 6 is a conceptual diagram illustrating an example of the use of two scalar quantizers. [Figure 7]
[0018] This is a conceptual diagram illustrating the state transition scheme. [Figure 8]
[0019] This is a conceptual diagram illustrating another example of the use of two scalar quantizers. [Figure 9]
[0020] This flowchart shows how one or more examples of the techniques of this disclosure work. [Figure 10]
[0021] This flowchart shows how one or more examples of the techniques of this disclosure work. [Modes for carrying out the invention]
[0013]
[0022] In video coding, the video encoder determines the residual values between the currently coded block and the predicted block (for example, from samples in another picture for interpretation, or from samples in the same picture for intrapretation). The video encoder may perform a transformation on the residual values (e.g., a discrete cosine transform (DCT)) to generate coefficient values. Performing the transformation may be optional, and in cases where the transformation is skipped, the residual values may be considered coefficient values. The video encoder performs quantization on the coefficient values based on the quantization parameters. The video encoder signals the quantized coefficient values after entropy coding (as an example).
[0014]
[0023] The video decoder performs the reverse process. For example, the video decoder receives the quantized coefficient values (e.g., after entropy decoding) and dequantizes the coefficient values based on the dequantization parameter. The video decoder then performs the inverse transform (if necessary) to determine the residual values, which the video decoder adds to the predicted block (e.g., the predicted signal) to reconstruct the current block.
[0015]
[0024] This disclosure describes exemplary techniques relating to the use of quantization offsets to perform quantization or dequantization. Some quantization techniques include a quantizer, which is based on a state machine scheme. The quantizer may map coefficient-level values to multiples of the quantization step size. According to one or more examples described in this disclosure, there may be offsets associated with different quantizers. For example, suppose there are two quantizers Q0 and Q1. In some examples, the first offset may be associated with Q0, and a different second offset may be associated with Q1. There may be three or more quantizers.
[0016]
[0025] Furthermore, the quantization technique includes quantization levels (e.g., coefficient levels). According to one or more examples described herein, there may be offsets associated with different quantization levels. In some examples, a first offset may be associated with a first quantization level, and a different second offset may be associated with a second quantization level. There may be three or more quantization levels.
[0017]
[0026] Some other techniques may or may not depend on the same offset with respect to the quantizer or quantization level. In such other techniques, the amount of quantization applied to the coefficients may be suboptimal, resulting in either insufficient quantization and increased signaling bandwidth, or excessive quantization and degraded video quality. In the exemplary techniques described herein, the offsets based on the quantizer and / or quantization level may differ, so that the resulting amount of quantization can achieve a suitable balance of reduced signaling bandwidth while maintaining video quality.
[0018]
[0027] Figure 1 is a block diagram showing an exemplary video coding and decoding system 100 capable of performing the techniques of the present disclosure. The techniques of the present disclosure generally concern coding (encoding and / or decoding) video data. Generally, video data includes any data necessary for processing video. Thus, video data may include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata such as signaling data.
[0019]
[0028] As shown in Figure 1, in this example, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a destination device 116. Specifically, the source device 102 provides video data to the destination device 116 via a computer-readable medium 110. The source device 102 and destination device 116 may be any or include any of a wide range of devices, such as desktop computers, notebook (i.e., laptop) computers, mobile devices, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, and broadcast receiver devices. In some cases, the source device 102 and destination device 116 may be wireless communication devices, as they may be capable of wireless communication.
[0020]
[0029] In the example in Figure 1, the source device 102 includes a video source 104, memory 106, a video encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a video decoder 300, memory 120, and a display device 118. According to this disclosure, the video encoder 200 of the source device 102 and the video decoder 300 of the destination device 116 may be configured to apply quantization techniques, such as quantization offsets for dependent quantization. Thus, the source device 102 represents an example of a video encoding device, while the destination device 116 represents an example of a video decoding device. In other examples, the source and destination devices may include other components or configurations. For example, the source device 102 may receive video data from an external video source, such as an external camera. Similarly, the destination device 116 may interface with an external display device rather than including an integrated display device.
[0021]
[0030] System 100, as shown in Figure 1, is merely an example. In general, any digital video encoding and / or decoding device can perform quantization techniques, such as quantization offsets for dependent quantization. Source device 102 and destination device 116 are merely examples of coding devices, such that source device 102 generates coded video data to transmit to destination device 116. This disclosure refers to a device that performs coding (encoding and / or decoding) of data as a “coding” device. Thus, video encoder 200 and video decoder 300 represent examples of coding devices, specifically video encoder and video decoder, respectively. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes video encoding and decoding components. Thus, system 100 may support one-way or bi-way video transmission between source device 102 and destination device 116 for, for example, video streaming, video playback, video broadcasting, or video phone.
[0022]
[0031] Generally, the video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides the video encoder 200 with a sequence of pictures (also called "frames") of video data, which the video encoder 200 encodes the data of the pictures. The video source 104 of source device 102 may include a video capture device such as a video camera, a video archive containing previously captured raw video, and / or a video feed interface that receives video from a video content provider. As a further alternative, the video source 104 may generate computer graphics-based data as source video, or a combination of live video, archived video, and computer-generated video. In each case, the video encoder 200 encodes the captured video data, the previously captured video data, or the computer-generated video data. The video encoder 200 may rearrange the pictures from the order in which they were received (sometimes called the "display order") to a coding order for encoding. The video encoder 200 may generate a bitstream containing the encoded video data. The source device 102 may then output encoded video data to a computer-readable medium 110 via the output interface 108 for reception and / or retrieval by, for example, the input interface 122 of the destination device 116.
[0023]
[0032] Memory 106 of source device 102 and memory 120 of destination device 116 represent general-purpose memory. In some examples, memories 106 and 120 may store raw video data, for example, raw video from video source 104, and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 may store, for example, software instructions executable by video encoder 200 and video decoder 300, respectively. Although memories 106 and 120 are shown separately from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also contain internal memory for functionally similar or equivalent purposes. Furthermore, memories 106 and 120 may store, for example, encoded video data output from video encoder 200 and input to video decoder 300. In some examples, portions of memory 106, 120 may be allocated as one or more video buffers to store, for example, raw video data, decoded video data, and / or encoded video data.
[0024]
[0033] The computer-readable medium 110 may represent any type of medium or device capable of transferring encoded video data from the source device 102 to the destination device 116. For example, the computer-readable medium 110 may represent a communication medium that enables the source device 102 to directly transmit encoded video data to the destination device 116 in real time, for example, over a radio frequency network or a computer-based network. The output interface 108 may modulate the transmitted signal containing the encoded video data, and the input interface 122 may demodulate the received transmitted signal according to a communication standard such as a wireless communication protocol. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device 102 to the destination device 116.
[0025]
[0034] In some examples, the source device 102 may output encoded data to the storage device 112 via the output interface 108. Similarly, the destination device 116 may access encoded data from the storage device 112 via the input interface 122. The storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.
[0026]
[0035] In some examples, the source device 102 may output the encoded video data to a file server 114 or another intermediate storage device capable of storing the encoded video data generated by the source device 102. The destination device 116 may access the stored video data from the file server 114 via streaming or download.
[0027]
[0036] The file server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to the destination device 116. The file server 114 may represent a web server (for example, for a website), a server configured to provide a file transfer protocol service (such as the File Transfer Protocol (FTP) or File Delivery over Unidirectional Transport (FLUTE) protocol), a content delivery network (CDN) device, a hypertext transfer protocol (HTTP) server, a Multimedia Broadcast Multicast Service (MBMS) or Enhanced MBMS (eMBMS) server, and / or a network attached storage (NAS) device. The file server 114 may, as an addition or alternative, implement one or more HTTP streaming protocols, such as Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), Real Time Streaming Protocol (RTSP), and HTTP Dynamic Streaming.
[0028]
[0037] The destination device 116 may access the encoded video data from the file server 114 via any standard data connection, including an internet connection. This may include wireless channels (e.g., Wi-Fi connection), wired connections (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both suitable for accessing the encoded video data stored on the file server 114. The input interface 122 may be configured to operate according to one or more of the various protocols described above, or other such protocols for retrieving media data from or receiving media data from the file server 114.
[0029]
[0038] The output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired network component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and input interface 122 include wireless components, the output interface 108 and input interface 122 may be configured to transfer data such as encoded video data according to cellular communication standards such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, and 5G. In some examples where the output interface 108 includes a wireless transmitter, the output interface 108 and input interface 122 may be configured to transfer data such as encoded video data according to other wireless standards such as the IEEE 802.11 standard, the IEEE 802.15 standard (e.g., ZigBee®), and the Bluetooth® standard. In some examples, the source device 102 and / or the destination device 116 may include their respective system-on-a-chip (SoC) devices. For example, the source device 102 may include an SoC device that performs functionality resulting from the video encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device that performs functionality resulting from the video decoder 300 and / or the input interface 122.
[0030]
[0039] The techniques of this disclosure can be applied to video coding that supports any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, internet streaming video transmission such as Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0031]
[0040] The input interface 122 of the destination device 116 receives an encoded video bitstream from a computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200, which is also used by the video decoder 300, such as syntax elements having values that describe the characteristics and / or processing of video blocks or other coded units (e.g., slices, pictures, picture groups, sequences, etc.). The display device 118 displays the decoded picture of the decoded video data to the user. The display device 118 may represent any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.
[0032]
[0041] Although not shown in Figure 1, in some examples the video encoder 200 and video decoder 300 may be integrated with an audio encoder and / or audio decoder (e.g., an audio codec), and may include a suitable MUX-DEMUX unit or other hardware and / or software to handle multiplexed streams containing both audio and video in a common data stream. Examples of audio codecs include AAC, AC-3, AC-4, ALAC, ALS, AMBE, AMR, AMR-WB (G.722.2), AMR-WB+, aptX (various versions), ATRAC, BroadVoice (BV16, BV32), CELT, Enhanced AC-3 (E-AC-3), EVS, FLAC, G.711, G.722, G.722.1, G.722.2 (AMR-WB), G.723.1, G.726, G.728, G.729, G.729.1, GSM-FR, HE-AAC, iLBC, iSAC, LA Lyra, Monkey's Audio, MP1, MP2 (MPEG-1, 2 Audio Layer II), MP3, Musepack, and Nellymoser. This may include Asao, OptimFROG, Opus, Sac, Satin, SBC, SILK, Siren 7, Speex, SVOPC, True Audio (TTA), TwinVQ, USAC, Vorbis (Ogg), WavPack, and Windows Media Audio.
[0033]
[0042] The video encoder 200 and video decoder 300 can each be implemented as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof, among other suitable encoder and / or decoder circuit configurations. When the technique is performed in part in software, the device may store instructions for the software in a suitable non-temporary computer-readable medium and execute those instructions in hardware using one or more processors to perform the technique of the Disclosure. Each of the video encoder 200 and video decoder 300 may be contained within one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device. A device including a video encoder 200 and / or a video decoder 300 may have the video encoder 200 and / or video decoder 300 implemented in a processing circuit configuration such as an integrated circuit and / or a microprocessor. Such a device may be a wireless communication device such as a cellular telephone, or any other type of device described herein.
[0034]
[0043] The video encoder 200 and video decoder 300 may operate in accordance with a video coding standard such as ITU-T H.265, also known as High Efficiency Video Coding (HEVC), or its extensions, such as the Multiview and / or Scalable Video Coding Extension. Alternatively, the video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards, such as ITU-T H.266, also known as General-Purpose Video Coding (VVC). In other examples, the video encoder 200 and video decoder 300 may operate in accordance with a proprietary video codec / format, such as AOMedia Video 1 (AV1), extensions of AV1, and / or successor versions of AV1 (e.g., AV2). In other examples, the video encoder 200 and video decoder 300 may operate in accordance with other proprietary formats or industry standards. However, the techniques of this disclosure are not limited to any particular coding standard or format. In general, the video encoder 200 and video decoder 300 may be configured to perform the techniques of the present disclosure in conjunction with any video coding techniques that use quantization or dequantization.
[0035]
[0044] Generally, the video encoder 200 and video decoder 300 can perform block-based coding of pictures. The term “block” generally refers to a structure containing data to be processed (e.g., coding, decoding, or used in coding and / or decoding processes). For example, a block may contain a two-dimensional matrix of samples of luminance and / or chrominance data. Generally, the video encoder 200 and video decoder 300 can code video data represented in YUV (e.g., Y, Cb, Cr) format. That is, rather than coding red, green, and blue (RGB) data for samples of a picture, the video encoder 200 and video decoder 300 may code luminance and chrominance components, and the chrominance component may contain both red and blue chrominance components. In some examples, the video encoder 200 converts the received RGB format data to a YUV representation before coding it, and the video decoder 300 converts the YUV representation to RGB format. Alternatively, pre-processing units and post-processing units (not shown) may perform these conversions.
[0036]
[0045] This disclosure may refer to coding a picture (e.g., encoding and decoding) as generally including the process of encoding or decoding the data of a picture. Similarly, this disclosure may refer to coding a block of a picture as including the process of encoding or decoding the data for a block, e.g., predictive and / or residual coding. The encoded video bitstream generally includes a set of values for syntax elements representing coding decisions (e.g., coding modes) and divisions of the picture into blocks. Thus, references to coding a picture or a block should generally be understood as coding values for the syntax elements that make up the picture or block.
[0037]
[0046] HEVC defines various blocks, including coding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video coder (such as video encoder 200) divides a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video coder divides the CTU and CUs into four equal, non-overlapping squares, and each node of the quadtree has either zero or four child nodes. Nodes without child nodes are sometimes called "leaf nodes," and the CUs of such leaf nodes may contain one or more PUs and / or one or more TUs. The video coder may further divide the PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents a division of TUs. In HEVC, PUs represent intra-prediction data, and TUs represent residual data. Intra-predicted CUs contain intra-prediction information such as intra-mode indications.
[0038]
[0047] As another example, a video encoder 200 and a video decoder 300 may be configured to operate according to VVC. According to VVC, a video coder (such as the video encoder 200) divides a picture into multiple CTUs. The video encoder 200 may divide the CTUs according to a tree structure such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure eliminates the concept of multiple partition types, such as the separation between CU, PU, and TU in HEVC. The QTBT structure includes two levels: a first level divided according to quadtree partitioning and a second level divided according to binary tree partitioning. The root node of the QTBT structure corresponds to a CTU. The leaf nodes of the binary tree correspond to a CU.
[0039]
[0048] In MTT partitioning structures, blocks can be partitioned using quadtree (QT) partitions, binary tree (BT) partitions, and one or more types of triple tree (TT) partitions (also called ternary tree (TT) partitions). A triple tree or ternary tree partition is a partition in which a block is divided into three subblocks. In some examples, a triple tree or ternary tree partition divides a block into three subblocks without splitting the original block in the middle. The partition types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.
[0040]
[0049] When operating according to the AV1 codec, the video encoder 200 and video decoder 300 may be configured to code video data within blocks. In AV1, the largest coding block that can be processed is called the superblock. In AV1, the superblock may be either a 128x128 rumasamp or a 64x64 rumasamp. However, in successor video coding formats (e.g., AV2), the superblock may be defined by a different (e.g., larger) rumasamp size. In some examples, the superblock is the top level of a block quadtree. The video encoder 200 may further partition the superblock into smaller coding blocks. The video encoder 200 may partition the superblock and other coding blocks into smaller blocks using square or non-square partitioning. Non-square blocks may include N / 2xN, NxN / 2, N / 4xN, and NxN / 4 blocks. The video encoder 200 and video decoder 300 may perform separate prediction and transformation processes for each coding block.
[0041]
[0050] AV1 also defines tiles of video data. A tile is a rectangular array of superblocks that can be coded independently of other tiles. That is, the video encoder 200 and video decoder 300 can encode and decode coding blocks within a tile, respectively, without using video data from other tiles. However, the video encoder 200 and video decoder 300 can perform filtering across tile boundaries. Tiles can be uniform or non-uniform in size. Tile-based coding can enable parallel processing and / or multithreading for encoder and decoder implementations.
[0042]
[0051] In some examples, the video encoder 200 and video decoder 300 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, while in other examples, the video encoder 200 and video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luminance component and another QTBT / MTT structure for both chrominance components (or two QTBT / MTT structures for each chrominance component).
[0043]
[0052] The video encoder 200 and video decoder 300 may be configured to use a quadtree partition, a QTBT partition, an MTT partition, a superblock partition, or other partitioning structure.
[0044]
[0053] In some examples, a CTU includes a coding tree block (CTB) of a lumen sample, two corresponding CTBs of a chroma sample of a picture having three sample sequences, or a CTB of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. A CTB can be an N×N block of samples for some value of N, partitioned to divide the components into CTBs. A component is a single sample from one sequence or one of three sequences (lumen and two chroma) that make up a picture in a 4:2:0, 4:2:2, or 4:4:4 color format, or a single sample of a sequence or sequence that makes up a picture in a monochrome format. In some examples, a coding block is an M×N block of samples for some values of M and N, partitioned to divide the CTBs into coding blocks.
[0045]
[0054] Blocks (e.g., CTUs or CUs) can be grouped in various ways within a picture. For example, a brick may refer to a rectangular area of a row of CTUs within a particular tile in a picture. A tile can be a rectangular area of CTUs within a particular tile column and a particular tile row in a picture. A tile column refers to a rectangular area of CTUs having a height equal to the height of the picture and a width specified by a syntax element (e.g., within the picture parameter set). A tile row refers to a rectangular area of CTUs having a height specified by a syntax element (e.g., within the picture parameter set) and a width equal to the width of the picture.
[0046]
[0055] In some examples, a tile may be divided into multiple bricks, each brick potentially containing one or more CTU rows within the tile. Tiles that are not divided into multiple bricks may also be called bricks. However, bricks that are a true subset of a tile may not be called tiles. Bricks within a picture can also constitute slices. A slice can be an integer number of bricks in a picture that can be exclusively contained within a single network abstraction layer (NAL) unit. In some examples, a slice may contain either several complete tiles or only a contiguous sequence of complete bricks of a single tile.
[0047]
[0056] This disclosure may interchangeably use "N × N" and "N multiplied by N," e.g., 16 × 16 samples or 16 multiplied by 16 samples, to refer to the sample dimension of a block (such as a CU or other video block) in the vertical and horizontal dimensions. Generally, a 16 × 16 CU has 16 samples vertically (y=16) and 16 samples horizontally (x=16). Similarly, an N × N CU generally has N samples vertically and N samples horizontally, where N represents a non-negative integer. The samples within a CU may be arranged in rows and columns. Furthermore, a CU does not necessarily have to have the same number of samples horizontally as it does vertically. For example, a CU may contain N × M samples, where M is not necessarily equal to N.
[0048]
[0057] The video encoder 200 encodes video data relating to CUs that represent prediction and / or residual information, as well as other information. The prediction information indicates how the CUs will be predicted to form prediction blocks for the CUs. The residual information generally represents the sample-by-sample difference between the CU samples before encoding and the prediction blocks.
[0049]
[0058] To predict a CU, the video encoder 200 may generally form prediction blocks for the CU through inter-prediction or intra-prediction. Inter-prediction generally refers to predicting the CU from data of a previously coded picture, while intra-prediction generally refers to predicting the CU from data previously coded for the same picture. To perform inter-prediction, the video encoder 200 may generate prediction blocks using one or more motion vectors. The video encoder 200 may generally perform motion lookup to identify a reference block that exactly matches the CU with respect to the difference between the CU and the reference block. The video encoder 200 may calculate a difference metric using the sum of absolute difference (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared differences (MSD), or other such difference calculations to determine whether a reference block currently exactly matches the CU. In some examples, the video encoder 200 may predict the current CU using unidirectional or bidirectional prediction.
[0050]
[0059] Some examples of VVC also provide an affine motion compensation mode, which can be considered an interpredictive mode. In affine motion compensation mode, the video encoder 200 may determine two or more motion vectors representing non-translational motion, such as zooming in or out, rotation, perspective movement, or other irregular motion types.
[0051]
[0060] To perform intra-prediction, the video encoder 200 may select an intra-prediction mode to generate prediction blocks. Several examples of VVCs provide 67 intra-prediction modes, including various directional modes, as well as planar and DC modes. Generally, the video encoder 200 selects an intra-prediction mode that describes neighboring samples for the current block (e.g., the block of CU) and predicts samples for the current block from there. Assuming the video encoder 200 codes CTU and CU in raster scan order (left to right, top to bottom), such samples can generally be on top of the current block, above and to the left, or to the left of the current block, in the same picture as the current block.
[0052]
[0061] The video encoder 200 encodes data representing the prediction mode for the current block. For example, in interprediction mode, the video encoder 200 may encode data representing which of the various available interprediction modes is used, as well as motion information for the corresponding mode. In the case of unidirectional or bidirectional interprediction, for example, the video encoder 200 may encode the motion vectors using advanced motion vector prediction (AMVP) mode or merge mode. The video encoder 200 may use similar modes to encode the motion vectors in affine motion compensation mode.
[0053]
[0062] AV1 includes two common techniques for encoding and decoding coding blocks of video data. The two common techniques are intra-prediction (e.g., intra-frame prediction or spatial prediction) and inter-prediction (e.g., inter-frame prediction or temporal prediction). In the context of AV1, when predicting a block of the current frame of video data using the intra-prediction mode, the video encoder 200 and video decoder 300 do not use video data from other frames of the video data. In most intra-prediction modes, the video encoder 200 encodes the block of the current frame based on the difference between the sample value in the current block and the predicted value generated from a reference sample in the same frame. The video encoder 200 determines the predicted value generated from the reference sample based on the intra-prediction mode.
[0054]
[0063] Following predictions such as intra-prediction or inter-prediction of a block, the video encoder 200 may compute residual data for the block. Residual data, such as residual blocks, represents the sample-by-sample difference between a block and a predicted block for that block formed using the corresponding prediction mode. The video encoder 200 may apply one or more transformations to the residual block to produce transformation data in the transformation domain rather than the sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), integer transform, wavelet transform, or a conceptually similar transform to the residual video data. In addition, the video encoder 200 may apply secondary transforms such as mode-dependent non-separable secondary transform (MDNSST), signal-dependent transform, or Karhunen-Loeve transform (KLT) following the initial transformation. Following the application of one or more transformations, the video encoder 200 produces transformation coefficients.
[0055]
[0064] As described above, following any transformation that produces the transformation coefficients, the video encoder 200 may perform quantization of the transformation coefficients. Quantization generally refers to the process of quantizing the transformation coefficients to reduce the amount of data used to represent them as much as possible, thereby providing further compression. By performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all of the transformation coefficients. For example, the video encoder 200 may truncate an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 may perform a bitwise right shift of the values that will be quantized.
[0056]
[0065] Following quantization, the video encoder 200 may scan the transformation coefficients to create a one-dimensional vector from a two-dimensional matrix containing the quantized transformation coefficients. The scan may be designed to place higher-energy (and therefore lower-frequency) transformation coefficients at the beginning of the vector and lower-energy (and therefore higher-frequency) transformation coefficients at the end. In some examples, the video encoder 200 may utilize a predefined scan order to scan the quantized transformation coefficients in order to create a serialized vector and then entropy-code the quantized transformation coefficients of the vector. In other examples, the video encoder 200 may perform an adaptive scan. After scanning the quantized transformation coefficients to form a one-dimensional vector, the video encoder 200 may entropy-code the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 may also entropy-code values for syntax elements that describe metadata associated with the encoded video data, which the video decoder 300 uses when decoding the video data.
[0057]
[0066] To perform CABAC, the video encoder 200 may assign a context from the context model to the symbol to be transmitted. The context may relate, for example, to whether the symbol's neighboring values are zero-valued. Probability decisions may be based on the context assigned to the symbol.
[0058]
[0067] The video encoder 200 may further generate syntax data for the video decoder 300, such as block-based syntax data, picture-based syntax data, and sequence-based syntax data, within other syntax data such as a picture header, block header, slice header, or sequence parameter set (SPS), picture parameter set (PPS), or video parameter set (VPS). The video decoder 300 may similarly decode such syntax data to determine how the corresponding video data should be decoded.
[0059]
[0068] In this way, the video encoder 200 can generate a bitstream containing encoded video data, for example, syntax elements describing the division of a picture into blocks (e.g., CUs) and predictive and / or residual information for those blocks. Finally, the video decoder 300 can receive the bitstream and decode the encoded video data.
[0060]
[0069] Generally, the video decoder 300 performs a process that is the opposite of the process performed by the video encoder 200 in order to decode the encoded video data of the bitstream. For example, the video decoder 300 may decode values for syntax elements of the bitstream using CABAC in a manner that is the opposite but substantially similar to the CABAC encoding process of the video encoder 200. The syntax elements may define the division of the picture into CTUs and division information for each CTU division according to a corresponding division structure such as a QTBT structure, in order to define the CUs of the CTUs. The syntax elements may further define prediction information and residual information for blocks of video data (e.g., CUs).
[0061]
[0070] Residual information may be represented, for example, by quantized transformation coefficients. The video decoder 300 may dequantize and inverse transform the quantized transformation coefficients of a block in order to reconstruct the residual block for the block. The video decoder 300 uses a signaled prediction mode (intra-prediction or inter-prediction) and relevant prediction information (e.g., inter-prediction motion information) to form a predicted block for the block. The video decoder 300 may then combine the predicted block and the residual block (sample by sample) to reconstruct the original block. The video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along the block boundaries.
[0062]
[0071] This disclosure may generally refer to “signaling” any information, such as syntax elements. The term “signaling” may generally refer to the communication of values for syntax elements and / or other data used to decode the encoded video data. That is, the video encoder 200 may signal values for syntax elements within the bitstream. Generally, signaling refers to generating values within the bitstream. As described above, the source device 102 may transfer the bitstream to the destination device 116 substantially in real time or non-real time, which may occur, for example, when storing syntax elements in the storage device 112 for later retrieval by the destination device 116.
[0063]
[0072] According to the techniques of this disclosure, the video encoder 200 and the video decoder 300 may be configured to determine a quantization offset. For example, this disclosure describes an example of a quantization offset scheme for dependent quantization, such as Trellis Coded Quantization (TCQ). For simplicity, this disclosure describes the quantization or quantization parameters used for quantization as part of video coding. However, the video decoder 300 may perform the opposite operation of the video encoder 200 and therefore may perform inverse quantization using inverse quantization parameters. Thus, the exemplary techniques may be applicable to both quantization and inverse quantization, as long as the technique is not limited to the encoder side or the decoder side only.
[0064]
[0073] TCQ is a dependent quantization scheme in which multiple scalar quantizers are used to perform the quantization of coefficient values. One particular scheme is described in JVET-J0014: Schwarz et al., "Description of SDR, HDR, and 360° video coding technology proposal by Fraunhofer HHI," ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11 Joint Video Experts Team (JVET), 10th Meeting: San Diego, US, 10-20 April 2018. JVET-J0014 uses 4-state trellis coding quantization. Two scalar quantizers are used to perform the quantization, as shown in Figure 6.
[0065]
[0074] Figure 6 is a conceptual diagram illustrating an example of the use of two scalar quantizers. Figure 6 shows quantization level mapping 600. For example, in quantization level mapping 600 in Figure 6, of the two scalar quantizers used, the first quantizer Q0 maps the transformation coefficient levels (numbers below the point, such as -4, -3, etc.), also called quantization levels, to even integer multiples of the quantization step size Δ. The second quantizer Q1 maps the transformation coefficient levels to odd integer multiples of the quantization step size Δ or to zero.
[0066]
[0075] The transformation coefficients are quantized in coding order, and the quantizer used to perform the quantization is selected based on a state machine driven by its previous state and the parity of the levels of the previously coded coefficients. The state machine is illustrated in Figure 7.
[0067]
[0076] Table 1 provides the transition scheme for the state machine 700 in Figure 7.
[0068] [Table 1]
[0069]
[0077] The coefficients in states 0 and 1 use the Q0 quantizer (an even integer multiple of the step size). The coefficients in states 2 and 3 use the Q1 quantizer (an odd integer multiple of the step size). That is, when the state of the state machine 700 is 0 or 1, the video encoder 200 and video decoder 300 may, as appropriate, quantize or dequantize the coefficients using the quantizer Q0 (e.g., an even integer multiple of the step size Δ). When the state of the state machine 700 is 2 or 3, the video encoder 200 and video decoder 300 may, as appropriate, quantize or dequantize the coefficients using the quantizer Q1 (e.g., an odd integer multiple of the step size Δ).
[0070]
[0078] In JVET-Q0243:Schwarz et al., "Additional support of dependent quantization with 8 states," at the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 17th Meeting: Brussels, BE, 7-17 January 2020, an 8-state version of the TCQ was introduced and is now in the ECM-9.0 software. The 8-state TCQ still has two underlying quantizers (Q0 and Q1), but is driven via an 8-state transition scheme.
[0071]
[0079] The quantization offset scheme of the scalar quantizer has been previously studied, as in VCEG-Z13 (JVT-O066), JCTVC-G382, and JCTVC-F610. A fixed quantization offset has been proposed in JVET-AD0251: Balcilar et al., "AHG12 Shifting Quantizer Center," Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 30th Meeting: Antalya, TR, 21-28 April 2023. In JVET-AD0251, in effect, a fixed offset is introduced as the weighted average of two consecutive reconstruction levels of the quantizer (Q0 or Q1).
[0072]
[0080] This scheme is described in JVET-AD0251 as follows. To determine the reconstructed coefficient, Q ,
[0082] , , , , ,
[0081] (y i ) for the original reconstructed coefficient by, and the reconstructed value Q -1 (y’ i )(where y’ i = y i + (y i > 0? 1 : -1)) are used when the quantization index is shifted by one quantization index in the opposite direction from the zero center. Then, as the reconstructed coefficient, the weighted sum of Q -1 (y i )) and Q -1 (y’ i )) is obtained.
[0073]
Number
[0074]
[0081] In some cases, this shift for the reconstructed coefficient is performed only when the quantization index is not 0.
[0075]
[0082] The video decoder 300 may be configured to determine the reconstructed coefficients. As will be described in more detail, the video encoder 200 may also be configured to determine the reconstructed coefficients as part of a reconstruction loop for generating a reference sample.
[0076]
[0083] In the above equation, y i This can be considered a coefficient level, also called the quantization level, for the i-th coefficient. From the perspective of the video encoder 200, the video encoder 200 is y i The video decoder 300 may have signaled information used to determine the value, and from the perspective of the video decoder 300, the video decoder 300 first determines y based on the signaled information. i The value can be determined. y' i The value of y i If it is negative, only one coefficient level of y i It may be to the left of y i If it is positive, only one coefficient level of y i It can be to the right of. For example, referring to Figure 6, y i If y' is 2, i is 3, and y i If it is -4, then y' I It is -5.
[0077]
[0084] Q -1 'Q0' refers to either Q0 or Q1, and can be based on state machine 700 in Figure 7. The values 982 and 42 can be considered weights for averaging. For example, the operation >>10 is equivalent to dividing by 1024. Therefore, the above expression can be rewritten as follows:
[0078]
number
[0079] In other words, this weighted average is, in effect, a quantization offset between two consecutive reconstruction levels, determined by the weighting (982 / 1024, 42 / 1024).
[0080]
[0085] abs(Q -1 (y i )-Q -1 (y' i )) = stepsize, and in the formula, stepsize is y i If we assume that is the quantization step size when it is non-zero, then the reconstruction formula is as follows:
[0081]
number
[0082]
[0086] Due to precision and the fact that it is a shift operation rather than division, if all rounding offsets are ignored, the 42 / 1024 term is the quantization offset. In JVET-AD0251, this fixed offset is applied to the reconstruction of all transformed blocks (non-transformed skip blocks).
[0083]
[0087] In the example above, quantization level y i The offset added to the coefficient level (also called the coefficient level) is the same for both quantizers Q0 and Q1. That is, the quantization parameter is y i It can be considered as +42 / 1024, y i is the quantization level for the current block coefficients, and 42 / 1024 is the offset value. In the example above, the offset value of 42 / 1024 is the same for Q0 and Q1, the same for each quantization level, and the same for the lumen and chroma components. Also, the same offset value applies to all quantization levels (e.g., coefficient levels).
[0084]
[0088] Having a single, identical offset value for all quantization levels, and / or for both the lumern and chroma components, for both quantizer Q0 and quantizer Q1 can result in less efficient quantization (e.g., over-quantization resulting in poor video quality, or under-quantization resulting in increased signaling). This disclosure describes additional quantization offsets (e.g., for TCQ) based on the state-driven quantizer type (e.g., Q0 or Q1), quantization level, and / or component type (lumern / chroma). For TCQ, this corresponds to introducing quantization offsets to Q0 and Q1, which results in a reconfiguration level shift as shown in Figure 8. Quantizers having offsets and their reconfiguration levels are indicated by reconfiguration levels Q0' and Q1'.
[0085]
[0089] Figure 8 shows the quantization level mapping 800. Similar to Figure 6, in the quantization level mapping 800 of Figure 8, the first quantizer Q0' maps the transformation coefficient levels (the numbers below the points, but offset based on the offset value) to even integer multiples of the quantization step size Δ. The second quantizer Q1' maps the transformation coefficient levels to odd integer multiples of the quantization step size Δ or to zero.
[0086]
[0090] In one or more examples, with or without signaling, the video encoder 200 and video decoder 300 may use separate quantization offsets or inverse quantization offsets (e.g., offset values) for the two state-driven quantizers used in TCQ, instead of using one common quantization offset for both quantizers. In addition, in some examples, the lumern and chromar components may use separate offsets for their respective quantizations.
[0087]
[0091] According to one or more examples described herein, the video encoder 200 and video decoder 300 may determine a quantizer for coefficients for quantization or dequantization from at least a first quantizer and a second quantizer. For example, the video encoder 200 and video decoder 300 may utilize the state machine 700 in Figure 7 to determine quantizer Q0 or quantizer Q1.
[0088]
[0092] The video encoder 200 and video decoder 300 may determine an offset value based on the quantizer. In the techniques described herein, the offset value may be a first offset value based on the quantizer being a first quantizer, or a different second offset value based on the quantizer being a second quantizer. That is, if the video encoder 200 and video decoder 300 determine that the quantizer is Q0, the video encoder 200 and video decoder 300 may determine a first offset value, and if the video encoder 200 and video decoder 300 determine that the quantizer is Q1, the video encoder 200 and video decoder 300 may determine a second offset value.
[0089]
[0093] Furthermore, according to one or more examples described herein, the video encoder 200 and the video decoder 300 may determine a quantization level for the coefficients of the current block for quantization or dequantization from a plurality of quantization levels. The video encoder 200 may signal and the video decoder 300 may parse information for determining the quantization level.
[0090]
[0094] From the perspective of the video encoder 200, the coefficient of the current block may represent the residual value between the predicted block value and the current block value, which is either transformed or not (for example, if transformation skipping is enabled). From the perspective of the video decoder 300, the coefficient of the current block may represent a value that will be inversely quantized and inversely transformed in order to generate the residual value between the predicted block value and the current block value.
[0091]
[0095] In one or more examples, as part of encoding the current block, the video encoder 200 may perform quantization on the coefficients based on determined quantization parameters, which are determined based on the offset value, in order to generate quantization coefficients. The video encoder 200 may signal information indicating the quantized coefficients. As part of decoding the current block, the video decoder 300 may perform inverse quantization on the coefficients based on determined inverse quantization parameters, which are determined based on the offset value, in order to generate inverse quantized coefficients. The video decoder 300 may (where applicable) perform an inverse transform to generate residual values that the video decoder 300 adds to the predicted block in order to reconstruct the current block.
[0092]
[0096] The video encoder 200 and video decoder 300 may determine an offset value based on the quantization level. In the techniques described herein, the offset value may be a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level. That is, if the video encoder 200 and video decoder 300 determine that the quantization level is a first quantization level, the video encoder 200 and video decoder 300 may determine a first offset value, and if the video encoder 200 and video decoder 300 determine that the quantization level is a second quantization level, the video encoder 200 and video decoder 300 may determine a second offset value.
[0093]
[0097] As described above, in some examples, the quantizer may control the offset values (e.g., a first offset value for Q0 and a second offset value for Q1). In some examples, the quantization levels may control the offset values (e.g., a first offset value for the first quantization level and a second offset value for the second quantization level). In some examples, both the quantizer and the quantization levels may control the offset values. In some examples, each quantization level may be associated with a different offset value. In some examples, some of the quantization levels may share an offset value different from the offset values for the other quantization levels.
[0094]
[0098] In another method, as mentioned above, in techniques where the offset values are the same, one exemplary way to represent the reconstructed coefficients is:
[0095]
number
[0096] According to one or more examples described herein, the reconstructed coefficient is
[0097]
number
[0098] It can be expressed as follows, where the offset value is equal to a first offset value if the quantizer is Q0, equal to a different second offset value if the quantizer is Q1, and / or the offset value is equal to a first offset value if the quantization level is a first quantization level, and equal to a different second offset value if the quantization level is a second quantization level.
[0099]
[0099] The video encoder 200 and video decoder 300 may determine quantization parameters or inverse quantization parameters for the coefficients based on the determined offset value. For example, the video encoder 200 and video decoder 300 may determine y i+Offset value can be determined, y i The offset value is equal to the quantization parameter, and the offset value is based on whether the quantizer is Q0 or Q1, and / or whether the quantization level is the first quantization level or the second quantization level.
[0100]
[0100] Please understand that the above example illustrating the mathematical equation is provided for ease of understanding. In actual implementations, the video encoder 200 and video decoder 300 may perform different operations (for example, performing a right shift by 10 instead of dividing by 1024).
[0101]
[0101] The video encoder 200 and the video decoder 300 may perform one of quantization or dequantization on the coefficients based on the determined quantization parameters or the determined dequantization parameters. For example, in the case of quantization, the video encoder 200 may perform (y i (+ offset value) / (step size) can be determined. In the case of inverse quantization, the video decoder 300 can determine (y i (+offset value) * The (step size) can be determined.
[0102]
[0102] In the above example, the offset value is based on the quantizer. However, as explained above, in some examples, the offset value may be based on the quantization level. That is, different offset values may exist for different quantization levels. In some examples, the offset value may be based on both the quantizer and the quantization level.
[0103]
[0103] For example, the video encoder 200 and the video decoder 300 have a quantization level for the coefficient (e.g., y iThe video decoder 300 may determine the quantization level based on the signaled information. In one or more examples, to determine the offset value, the video encoder 200 and the video decoder 300 may determine the offset value based on the quantizer and the quantization level.
[0104]
[0104] As an example, suppose there is a first coefficient, an offset value for the first coefficient, a quantizer for the first coefficient, a first quantization parameter and a first inverse quantization parameter, and a first quantization level. The video encoder 200 and video decoder 300 can determine a quantizer for a second coefficient for quantization or inverse quantization from at least the first and second quantizers, and can determine a second quantization level for the second coefficient that is different from the first quantization level. For example, if the quantization level for the first coefficient is 2, the quantization level for the second coefficient may be a value other than 2.
[0105]
[0105] The video encoder 200 and the video decoder 300 may determine an offset value for the second coefficient based on the quantizer for the second coefficient and the second quantization level. In this example, the offset value for the second coefficient is either a third offset value based on the quantizer for the second coefficient being the first quantizer and the second quantization level being different from the first quantization level, or a different fourth offset value based on the quantizer for the second coefficient being the second quantizer and the second quantization level being different from the first quantization level.
[0106]
[0106] As an example, suppose the first quantizer is Q0 (for example, based on the state machine 700) and the first quantization level is 2. In this example, the video encoder 200 and video decoder 300 may determine an offset value of 30 / 1024. Suppose the second quantizer is also Q0 (for example, based on the state machine 700), but the second quantization level is 4. In this example, the video encoder 200 and video decoder 300 may determine an offset value of 50 / 1024. Thus, in addition to the quantizer, the quantization level can control the offset value used to determine the quantization parameter.
[0107]
[0107] The video encoder 200 and video decoder 300 may determine a second quantization parameter or a second inverse quantization parameter for the second coefficient based on the determined offset value for the second coefficient, as described above. The video encoder 200 and video decoder 300 may perform one of quantization or inverse quantization on the second coefficient based on the determined second quantization parameter or the determined second inverse quantization parameter.
[0108]
[0108] As another example, the video encoder 200 and video decoder 300 may determine a second quantizer for a second coefficient, which is a second quantizer for quantization or dequantization. The video encoder 200 and video decoder 300 may determine that the quantization level for the second coefficient is the first quantization level.
[0109]
[0109] The video encoder 200 and video decoder 300 can determine an offset value for the second coefficient based on the fact that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level. In this example, the offset value for the second coefficient is different from the offset value for the first coefficient based on the fact that the quantizers for the first and second coefficients are different, but the quantization levels for the first and second coefficients are the same. That is, the quantization levels for the first and second coefficients are the same, but the quantizers for the first and second coefficients are different, so the video encoder 200 and video decoder 300 can determine different offset values for the first and second coefficients.
[0110]
[0110] The video encoder 200 and video decoder 300 may determine a second quantization parameter or a second inverse quantization parameter for the second coefficient based on the determined offset value for the second coefficient. The video encoder 200 and video decoder 300 may perform one of quantization or inverse quantization on the second coefficient based on the determined second quantization parameter or the determined second inverse quantization parameter.
[0111]
[0111] The above is one exemplary way in which the quantization level can control the offset value. In addition, offsets that depend on the quantization level can be used in a variety of other ways. Generally, a first offset value may be associated with a first quantization level and quantizer. The first offset value may differ from the offset values associated with a first quantization level and other quantizers. That is, if the quantization level is the first quantization level, the offset value may differ between Q0 and Q1. A second offset value may be associated with a second quantization level and quantizer. The second offset value may differ from the offset values associated with a second quantization level and other quantizers. That is, if the quantization level is the second quantization level, the offset value may differ between Q0 and Q1.
[0112]
[0112] The following describes some exemplary ways in which the quantization level can control the offset. In one example, the video encoder 200 and video decoder 300 may assign a separate offset to the quantization level equal to 1 for the coefficients mapped to coefficient levels + / -1 (for example, as in Figure 8). Different quantization offsets are assigned to the remaining levels. This can be applied as separate or common offsets for Q0 and Q1. For example, the first offset may be for the case where the quantization level is 1 or -1. The second offset may be for the case where the quantization level is greater than 1 or less than -1.
[0113]
[0113] As an example, in order to determine the offset value, the video encoder 200 and video decoder 300 may determine that the offset value is a first offset value based on the quantization level being 1 or -1. The video encoder 200 and video decoder 300 may determine that the offset value is a second offset value based on the quantization level being greater than 1 or less than -1.
[0114]
[0114] In other words, the first offset value is associated with the first quantization level, and the first offset value is different from the offset values associated with the other quantization levels. For example, the quantization level is 1 or -1, and the other quantization levels are greater than 1 or less than -1. Similarly, the second offset value is associated with the second quantization level, and the second offset value is different from the offset values associated with the other quantization levels. As described above, for example, the quantization level is 1 or -1, and the other quantization levels are greater than 1 or less than -1.
[0115]
[0115] In another example, the video encoder 200 and video decoder 300 may assign separate offsets to absolute quantization levels smaller than a threshold (e.g., 4), and different quantization offsets to the rest of the levels. This may be applied as separate or common offsets for Q0 and Q1. Optionally, the threshold may be signaled at the sequence, picture, or slice levels.
[0116]
[0116] As an example, in order to determine the offset value, the video encoder 200 and video decoder 300 may determine that the offset value is a first offset value based on the fact that the absolute value of the quantization level is smaller than a threshold. The video encoder 200 and video decoder 300 may determine that the offset value is a second offset value based on the fact that the quantization level is larger than a threshold.
[0117]
[0117] As an example of using both a quantizer and a quantization level to determine an offset value, if the quantizer is a first quantizer (e.g., Q0), the first offset may be for the first quantizer and when the absolute value of the quantization level is less than a threshold (e.g., 4), and the first offset may be different from the offset for other quantization levels that have an absolute value greater than the threshold. Similarly, if the quantizer is a second quantizer (e.g., Q1), the second offset may be for the second quantizer and when the absolute value of the quantization level is less than a threshold, and the second offset may be different from the offset for other quantization levels that have an absolute value greater than the threshold.
[0118]
[0118] In other words, the first offset value is associated with the first quantizer and quantization level, and the first offset value is different from the offset values associated with the first quantizer and other quantization levels. In one example, the absolute value of the quantization level is less than the threshold, and the absolute values of other quantization levels are greater than the threshold. Similarly, the second offset value is associated with the second quantizer and quantization level, and the second offset value is different from the offset values associated with the second quantizer and other quantization levels. As described above, in one example, the absolute value of the quantization level is less than the threshold, and the absolute values of other quantization levels are greater than the threshold.
[0119]
[0119] In another example, the video encoder 200 and video decoder 300 may assign different quantization offsets to each level. That is, each of the multiple quantization levels is associated with (e.g., assigned) a different offset value. In such an example, in order to determine the offset value, the video encoder and video decoder 300 may determine the quantization level and then determine the offset value based on the quantization level.
[0120]
[0120] As an example of how both the quantizer and the quantized value control which offset value is selected, if the quantizer is a first quantizer (e.g., Q0), the first offset may be for the first quantizer and may be different from the offsets for other quantization levels. Similarly, if the quantizer is a second quantizer (e.g., Q1), the second offset may be for the second quantizer and may be different from the offsets for other quantization levels.
[0121]
[0121] In other words, the first offset value is different from the offset values associated with other quantization levels associated with the first quantizer (e.g., Q0). Also, the second offset value is different from the offset values associated with other quantization levels associated with the second quantizer (e.g., Q1).
[0122]
[0122] In one or more of the above examples, both the quantizer and the quantization level may control the offset value. However, the exemplary techniques are not limited in this way. In some examples, only the quantizer may control the offset value (e.g., different offset values for Q0 and Q1, but the same offset value for the quantization level). In some examples, only the quantization level may control the offset value (e.g., different offset values for at least two different quantization levels, but the same offset value for Q0 and Q1).
[0123]
[0123] For example, the video encoder 200 and video decoder 300 may determine the quantization level for the coefficients of the current block for quantization or dequantization from a plurality of quantization levels (e.g., integer values shown in Figures 6 and 8). The quantization level is as follows: i It can be expressed as follows.
[0124]
[0124] The video encoder 200 and video decoder 300 may determine an offset value based on the quantization level. The offset value is either a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level.
[0125]
[0125] For example, the first offset value may be obtained based on the quantization level being 1 or -1, and the second offset value may be obtained based on the quantization level being greater than 1 or less than -1. As another example, the first offset value may be obtained based on the absolute value of the quantization level being less than a threshold (e.g., 4), and the second offset value may be obtained based on the absolute value of the quantization level being greater than a threshold. As yet another example, the first and second offset values may always be different (e.g., each quantization level may be associated with a different offset value).
[0126]
[0126] The video encoder 200 and video decoder 300 can determine quantization parameters or inverse quantization parameters for the coefficients based on the determined offset value, and perform either quantization or inverse quantization on the coefficients based on the determined quantization parameters or inverse quantization parameters. Thus, in this example, the quantization level can control the offset value regardless of the quantizer. That is, with respect to the quantization level, the offset value is the same for Q0 and Q1, but the offset value may be different for different quantization levels.
[0127]
[0127] In other examples, such as those described above, both the quantizer and the quantization level can control the offset value. That is, the video encoder 200 and video decoder 300 can determine that the first offset value of the quantizer is Q0 and the quantization level is the first quantization level, the second offset value of the quantizer is Q1 and the quantization level is the first quantization level, the third offset value of the quantizer is Q0 and the quantization level is the second quantization level, and the fourth offset value of the quantizer is Q1 and the quantization level is the second quantization level. At least two of the first, second, third, and fourth offset values can be different.
[0128]
[0128] In one or more examples, as part of encoding or decoding the current block, the video encoder 200 and video decoder 300 may perform one of the following on the coefficients: quantization (e.g., by the video encoder 200) or dequantization (e.g., by the video decoder 300) based on determined quantization parameters or determined dequantization parameters. For example, to encode the current block, the video encoder 200 may determine a predicted block for the current block and determine the coefficients based on the difference between the predicted block and the current block. For example, the difference between the predicted block and the current block may be residual values that the video encoder 200 converts or does not convert (e.g., if conversion skipping is enabled) to generate the coefficients.
[0129]
[0129] In this example, to perform one of quantization or inverse quantization on the coefficients based on the determined quantization parameters, the video encoder 200 may perform quantization on the coefficients based on the determined quantization parameters to generate quantized coefficients. The video encoder 200 may signal information indicating the quantized coefficients.
[0130]
[0130] As another example, in order to perform one of quantization or dequantization on a coefficient based on a determined quantization parameter or a determined dequantization parameter, the video decoder 300 may perform dequantization on the coefficient based on a determined dequantization parameter to generate dequantized coefficients. In this example, the video decoder 300 may decode the current block. To decode the current block, the video decoder 300 may be configured to determine residual values for the current block based on the dequantized coefficients. For example, if transformation is enabled, the video decoder 300 may perform an inverse transformation on the dequantized coefficients to generate residual values. If transformation skipping is enabled, the dequantized coefficients may be residual values.
[0131]
[0131] In this example, the video decoder 300 may determine a predicted block for the current block. The video decoder 300 may add the predicted block to the residual value in order to reconstruct the current block.
[0132]
[0132] The exemplary techniques described above can be applied to rumor and chroma components. For example, a first offset value may be associated with a first quantizer (e.g., Q0) and the fact that the coefficients are for a rumor block. In this example, the first offset value may be different from the offset value associated with a first quantizer and the fact that the coefficients are for a chroma block. Similarly, a second offset value may be associated with a second quantizer and the fact that the coefficients are for a rumor block. In this example, the second offset value may be different from the offset value associated with a second quantizer and the fact that the coefficients are for a chroma block.
[0133]
[0133] The quantization offsets used in the above example may be employed using sequence-level, picture-level, and slice-level signaling of the quantization offsets. The offsets may be positive or negative. Signaling offsets may exist for each quantizer (Q0, Q1), each component (luma, chroma), and each level. For example, the video encoder 200 may signal in the bitstream, and the video decoder 300 may parse a first offset value and a second offset value from the bitstream. Alternatively or additionally, a predetermined (unsignaled) quantization offset may be used. A method may be used in which the offset is signaled only for interpictures (e.g., interpredictive pictures).
[0134]
[0134] Figure 2 is a block diagram showing an exemplary video encoder 200 capable of performing the techniques of the present disclosure. Figure 2 is provided for illustrative purposes and should not be considered as limiting the techniques that are more broadly illustrated and described in the present disclosure. For illustrative purposes, the present disclosure describes a video encoder 200 using VVC and HEVC techniques. However, the techniques of the present disclosure may be performed by other video coding standards, as well as by video encoding devices configured for video coding formats such as AV1 and successors to the AV1 video coding format.
[0135]
[0135] In the example shown in Figure 2, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a conversion processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse conversion processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any or all of the video data memory 230, mode selection unit 202, residual generation unit 204, conversion processing unit 206, quantization unit 208, inverse quantization unit 210, an inverse conversion processing unit 212, a reconstruction unit 214, a filter unit 216, a DPB 218, and an entropy coding unit 220 may be implemented in one or more processors or in a processing circuit configuration. For example, the video encoder 200 unit may be implemented as one or more circuit or logic elements as part of a hardware circuit configuration, or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 may include additional or alternative processor or processing circuit configurations that perform these and other functions.
[0136]
[0136] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. The video encoder 200 may receive video data stored in the video data memory 230 from, for example, the video source 104 (Figure 1). The DPB 218 may function as a reference picture memory that stores reference video data used by the video encoder 200 in predicting subsequent video data. The video data memory 230 and the DPB 218 may be formed by any of various memory devices, such as dynamic random access memory (DRAM), including synchronous dynamic random access memory (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and the DPB 218 may be provided by the same memory device or by separate memory devices. In various examples, the video data memory 230 may be on-chip along with the other components of the video encoder 200, as shown, or it may be off-chip relative to those components.
[0137]
[0137] In this disclosure, references to the video data memory 230 should not be construed as being limited to memory inside the video encoder 200 unless otherwise specifically stated, or to memory outside the video encoder 200 unless otherwise specifically stated. Rather, references to the video data memory 230 should be understood as a reference memory that stores video data received by the video encoder 200 for encoding (e.g., video data for the current block to be encoded). Memory 106 in Figure 1 may also provide temporary storage of outputs from various units of the video encoder 200.
[0138]
[0138] The various units in Figure 2 are shown to help understand the operations performed by the video encoder 200. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide a specific functionality and have predefined operations that they can perform. Programmable circuits refer to circuits that can be programmed to perform a variety of tasks and offer flexible functionality in the operations they can perform. For example, a programmable circuit may execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. Fixed-function circuits may execute software instructions (e.g., receiving or outputting parameters), but the type of operation that a fixed-function circuit performs is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0139]
[0139] The video encoder 200 may include a programmable core formed from arithmetic logic units (ALUs), elementary function units (EFUs), digital circuits, analog circuits, and / or programmable circuits. In an example where the operation of the video encoder 200 is performed using software executed by the programmable circuits, memory 106 (Figure 1) may store instructions (e.g., object code) of the software that the video encoder 200 receives and executes, or another memory (not shown) in the video encoder 200 may store such instructions.
[0140]
[0140] The video data memory 230 is configured to store the received video data. The video encoder 200 can retrieve a picture of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 may be raw video data to be encoded.
[0141]
[0141] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra-prediction unit 226. The mode selection unit 202 may include additional functional units that perform video prediction according to other prediction modes. For example, the mode selection unit 202 may include a palette unit, an intra-block copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, and the like.
[0142]
[0142] The mode selection unit 202 generally coordinates multiple coding paths to test combinations of coding parameters and the resulting rate distortion values for such combinations. The coding parameters may include the division of the CTU to the CU, the prediction mode for the CU, the transformation type for the residual data of the CU, and the quantization parameters for the residual data of the CU. The mode selection unit 202 can ultimately select a combination of coding parameters that has a better rate distortion value than other tested combinations.
[0143]
[0143] The video encoder 200 divides the picture retrieved from the video data memory 230 into a series of CTUs, and may encapsulate one or more CTUs within a slice. The mode selection unit 202 may divide the CTUs of the picture according to a tree structure, such as the MTT structure, QTBT structure, superblock structure, or quadtree structure described above. As described above, the video encoder 200 may form one or more CUs by dividing the CTUs according to a tree structure. Such CUs are sometimes generally referred to as “video blocks” or “blocks”.
[0144]
[0144] Generally, the mode selection unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intra-prediction unit 226) to generate a predictive block for the current block (e.g., the current CU, or in HEVC, the overlapping portion of PU and TU). For intra-prediction of the current block, the motion estimation unit 222 may perform a motion lookup to identify one or more exactly matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB 218). Specifically, the motion estimation unit 222 may calculate a value representing how similar a possible reference block is to the current block, for example, according to the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute deviation (MAD), mean squared deviation (MSD), etc. The motion estimation unit 222 may generally perform these calculations using the sample-by-sample difference between the current block and the reference block under consideration. The motion estimation unit 222 can identify the reference block that has the lowest value obtained from these calculations, which indicates the reference block that most closely matches the current block.
[0145]
[0145] The motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the position of a current block in a current picture. The motion estimation unit 222 may then provide the motion vectors to the motion compensation unit 224. For example, in the case of unidirectional interpretation, the motion estimation unit 222 may provide a single motion vector, while in the case of bidirectional interpretation, the motion estimation unit 222 may provide two motion vectors. The motion compensation unit 224 may then use the motion vectors to generate predicted blocks. For example, the motion compensation unit 224 may use the motion vectors to extract data for a reference block. As another example, if the motion vectors have fractional sample precision, the motion compensation unit 224 may interpolate the values for the predicted block according to one or more interpolation filters. Furthermore, in the case of bidirectional interpretation, the motion compensation unit 224 may extract data for two reference blocks identified by their respective motion vectors and combine the extracted data, for example, through a sample-by-sample average or a weighted average.
[0146]
[0146] The motion estimation unit 222 and the motion compensation unit 224 may be configured to encode coding blocks of video data (e.g., both lumane coding blocks and chromane coding blocks) using translational motion compensation, affine motion compensation, overlapped block motion compensation (OBMC), and / or synthetic inter-intra prediction when operating according to the AV1 video coding format.
[0147]
[0147] As another example, in the case of intra-prediction or intra-prediction coding, the intra-prediction unit 226 may generate a prediction block from samples neighboring the current block. For example, in the direction mode, the intra-prediction unit 226 may generally mathematically combine the values of neighboring samples to produce a prediction block and populate these calculated values in the direction defined across the current block. As another example, in the DC mode, the intra-prediction unit 226 may calculate the average of neighboring samples for the current block and generate a prediction block that includes this resulting average for each sample of the prediction block.
[0148]
[0148] When operating according to the AV1 video coding format, the intra prediction unit 226 may be configured to encode coding blocks of video data (e.g., both lumane coding blocks and chromane coding blocks) using directional intra prediction, non-directional intra prediction, recursive filter intra prediction, chroma-from-luma (CFL) prediction, intra block copy (IBC), and / or color palette modes. The mode selection unit 202 may include additional functional units that perform video prediction according to other prediction modes.
[0149]
[0149] The mode selection unit 202 provides the prediction block to the residual generation unit 204. The residual generation unit 204 receives the raw, unencoded version of the current block from the video data memory 230 and the prediction block from the mode selection unit 202. The residual generation unit 204 calculates the sample-by-sample difference between the current block and the prediction block. The resulting sample-by-sample difference defines the residual block relative to the current block. In some examples, the residual generation unit 204 may also determine the difference between sample values in the residual block in order to generate the residual block using residual differential pulse code modulation (RDPCM). In some examples, the residual generation unit 204 may be formed using one or more subtractor circuits that perform binary subtraction.
[0150]
[0150] In an example where the mode selection unit 202 divides the CU into PUs, each PU may be associated with a lumen prediction unit and a corresponding chroma prediction unit. The video encoder 200 and video decoder 300 may support PUs of various sizes. As previously mentioned, the size of the CU may refer to the size of the lumen coding block of the CU, and the size of the PU may refer to the size of the lumen prediction unit of the PU. Assuming that the size of a particular CU is 2N × 2N, the video encoder 200 may support PU sizes of 2N × 2N or N × N for intra prediction, and symmetric PU sizes of 2N × 2N, 2N × N, N × 2N, N × N, or similar for inter prediction. The video encoder 200 and video decoder 300 may also support asymmetric divisions of PU sizes of 2N × nU, 2N × nD, nL × 2N, and nR × 2N for inter prediction.
[0151]
[0151] In cases where the mode selection unit 202 does not further subdivide the CUs into PUs, each CU may be associated with a ruma coding block and a corresponding chroma coding block. As described above, the size of a CU may refer to the size of the ruma coding block of the CU. The video encoder 200 and video decoder 300 may support CU sizes of 2N×2N, 2N×N, or N×2N.
[0152]
[0152] In some examples, for other video coding techniques such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, the mode selection unit 202 generates a predicted block for the current block being coded via the respective unit associated with the coding technique. In some examples, such as palette mode coding, the mode selection unit 202 may not generate a predicted block, but instead may generate syntax elements that indicate a scheme for reconstructing the block based on the selected palette. In such modes, the mode selection unit 202 may provide these syntax elements to the entropy coding unit 220 to be coded.
[0153]
[0153] As described above, the residual generation unit 204 receives video data for the current block and the corresponding predicted block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample difference between the predicted block and the current block.
[0154]
[0154] The transformation processing unit 206 applies one or more transformations to the residual block in order to generate a block of transformation coefficients (referred to herein as a “transformation coefficient block”). The transformation processing unit 206 may apply various transformations to the residual block in order to form a transformation coefficient block. For example, the transformation processing unit 206 may apply a discrete cosine transform (DCT), a direction transform, a Carunenlobe transform (KLT), or a conceptually similar transformation to the residual block. In some examples, the transformation processing unit 206 may perform multiple transformations on the residual block, such as a linear transform and a quadratic transform such as a rotation transform. In some examples, the transformation processing unit 206 does not apply any transformations to the residual block.
[0155]
[0155] When the transformation processing unit 206 operates according to AV1, it may apply one or more transformations to the residual block to generate blocks of transformation coefficients (referred to herein as “transformation coefficient blocks”). The transformation processing unit 206 may apply various transformations to the residual block to form the transformation coefficient blocks. For example, the transformation processing unit 206 may apply a combination of horizontal / vertical transformations, which may include the discrete cosine transform (DCT), the asymmetric discrete sine transform (ADST), the inverted ADST (e.g., ADST in reverse order), and the identity transform (IDTX). When the identity transform is used, the transformation is skipped in either the vertical or horizontal direction. In some examples, the transformation process may be skipped.
[0156]
[0156] The quantization unit 208 may quantize the transformation coefficients in the transformation coefficient block in order to produce a quantized transformation coefficient block. The quantization unit 208 may quantize the transformation coefficients in the transformation coefficient block according to the quantization parameter (QP) value associated with the current block. The video encoder 200 may adjust the degree of quantization applied to the transformation coefficient block associated with the current block by adjusting the QP value associated with the CU (for example, via the mode selection unit 202). Quantization may result in a loss of information, and therefore the quantized transformation coefficients may be less precise than the original transformation coefficients produced by the transformation processing unit 206.
[0157]
[0157] The inverse quantization unit 210 and the inverse transform processing unit 212 can apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block in order to reconstruct the residual block from the transform coefficient block. The reconstruction unit 214 can create a reconstructed block corresponding to the current block (which may be with some distortion) based on the reconstructed residual block and the predicted block generated by the mode selection unit 202. For example, the reconstruction unit 214 can add samples from the reconstructed residual block to the corresponding samples from the predicted block generated by the mode selection unit 202 in order to create a reconstructed block.
[0158]
[0158] The filter unit 216 may perform one or more filtering operations on the reconstructed blocks. For example, the filter unit 216 may perform a deblocking operation to reduce block noise artifacts along the edges of the CU. The operations of the filter unit 216 may be skipped in some examples.
[0159]
[0159] When operating according to AV1, the filter unit 216 may perform one or more filtering operations on the reconstructed blocks. For example, the filter unit 216 may perform a deblocking operation to reduce block noise artifacts along the edges of the CU. In other examples, the filter unit 216 may apply a constrained directional enhancement filter (CDEF), which may be applied after deblocking and may include the application of an unseparated, nonlinear, low-pass directional filter based on the estimated edge direction. The filter unit 216 may also include a loop reconstruction filter, which may be applied after the CDEF and may include a separated symmetric normalized Wiener filter or a dual self-guided filter.
[0160]
[0160] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in cases where the filter unit 216 does not perform calculations, the reconstruction unit 214 may store the reconstructed blocks in the DPB 218. In cases where the filter unit 216 does perform calculations, the filter unit 216 may store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 may retrieve a reference picture formed from the reconstructed (and possibly filtered) blocks from the DPB 218 to interpret blocks of the picture to be encoded later. In addition, the intraprediction unit 226 may use the reconstructed blocks of the current picture in the DPB 218 to intrapret other blocks in the current picture.
[0161]
[0161] In general, the entropy coding unit 220 can entropy code syntax elements received from other functional components of the video encoder 200. For example, the entropy coding unit 220 can entropy code quantized conversion coefficient blocks from the quantization unit 208. As another example, the entropy coding unit 220 can entropy code prediction syntax elements from the mode selection unit 202 (e.g., motion information for inter-prediction or intra-mode information for intra-prediction). The entropy coding unit 220 can perform one or more entropy coding operations on syntax elements, which are another example of video data, to generate entropy coded data. For example, the entropy coding unit 220 may perform context-adaptive variable length coding (CAVLC), CABAC, variable-to-variable (V2V) coding, syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, exponential Golomb coding, or other types of entropy coding on the data. In some examples, the entropy coding unit 220 may operate in a bypass mode where syntax elements are not entropically coded.
[0162]
[0162] The video encoder 200 may output a bitstream containing entropy-encoded syntax elements required to reconstruct a slice or block of picture. Specifically, the entropy encoding unit 220 may output a bitstream.
[0163]
[0163] The entropy coding unit 220 may be configured as a symbol-to-symbol adaptive multi-symbol arithmetic coder according to AV1. The syntax elements in AV1 include an alphabet of N elements, and the context (e.g., a probability model) includes a set of N probabilities. The entropy coding unit 220 may store the probabilities as n-bit (e.g., 15-bit) cumulative distribution functions (CDFs). The entropy coding unit 220 may perform recursive scaling using an update factor based on the alphabet size to update the context.
[0164]
[0164] The operations described above are described in relation to blocks. Such descriptions should be understood as operations on rumacoding blocks and / or chromacoding blocks. As described above, in some examples the rumacoding blocks and chromacoding blocks are the ruma and chroma components of the CU. In some examples the rumacoding blocks and chromacoding blocks are the ruma and chroma components of the PU.
[0165]
[0165] In some cases, operations performed on a rumacoding block do not need to be repeated for a chromacoding block. For example, the operation of identifying the motion vector (MV) and reference picture for a rumacoding block does not need to be repeated to identify the MV and reference picture for a chromablock. Rather, the MV for a rumacoding block may be scaled to determine the MV for a chromablock, and the reference picture may be the same. In another example, the intra-prediction process may be the same for both rumacoding and chromacoding blocks.
[0166]
[0166] The video encoder 200 represents an example of a device configured to encode video data, the device including a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a quantization level for the coefficients of a current block for quantization or dequantization from a plurality of quantization levels, determine an offset value based on the quantization level which is a first offset value based on the quantization level which is a first quantization level, or a different second offset value based on the quantization level which is a second quantization level, determine quantization parameters for the coefficients based on the determined offset values, and perform quantization on the coefficients based on the determined quantization parameters.
[0167]
[0167] The video encoder 200 also represents an example of a device configured to encode video data, the device including a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a quantizer for a coefficient from at least a first quantizer and a second quantizer for quantization, determine an offset value based on the quantizer which is a first offset value based on the quantizer being a first quantizer, or a second different offset value based on the quantizer being a second quantizer, determine quantization parameters for the coefficient based on the determined offset values, and perform quantization on the coefficient based on the determined quantization parameters.
[0168]
[0168] The video encoder 200 also represents an example of a device configured to encode video data, the device including a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a first quantizer for a first coefficient of the lumen component of the current block for quantization, determine a first offset value for the first coefficient, determine a first quantization parameter for the first coefficient based on the determined first quantizer and first offset value, perform quantization on the first coefficient based on the determined first quantization parameter, determine a second quantizer for a second coefficient of the chroma component of the current block for quantization, determine a second offset value for the second coefficient which is different from the first offset value, determine a second quantization parameter for the second coefficient based on the determined second quantizer and second offset value, and perform quantization on the second coefficient based on the determined second quantization parameter.
[0169]
[0169] Figure 3 is a block diagram showing an exemplary video decoder 300 capable of performing the techniques of the present disclosure. Figure 3 is provided for illustrative purposes and is not limited to the techniques that are more broadly illustrated and described in the present disclosure. For illustrative purposes, the present disclosure describes a video decoder 300 using VVC and HEVC techniques. However, the techniques of the present disclosure may be performed by video coding devices configured for other video coding standards.
[0170]
[0170] In the example of Figure 3, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transformation processing unit 308, a reconstruction unit 310, a filter unit 312, and a DPB 314. Any or all of the CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transformation processing unit 308, reconstruction unit 310, filter unit 312, and DPB 314 may be implemented in one or more processors or processing circuit configurations. For example, the units of the video decoder 300 may be implemented as one or more circuit or logic elements as part of a hardware circuit configuration, or as part of a processor, ASIC, or FPGA. Furthermore, the video decoder 300 may include additional or alternative processor or processing circuit configurations that perform these and other functions.
[0171]
[0171] The prediction processing unit 304 includes a motion compensation unit 316 and an intra-prediction unit 318. The prediction processing unit 304 may include additional units that perform predictions according to other prediction modes. For example, the prediction processing unit 304 may include a pallet unit, an intra-block copy unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, and the like. In other examples, the video decoder 300 may include more, fewer, or different functional components.
[0172]
[0172] When operating according to AV1, the motion compensation unit 316 may be configured to decode coding blocks of video data (e.g., both lumane coding blocks and chromane coding blocks) using translational motion compensation, affine motion compensation, OBMC, and / or synthetic inter-intra prediction, as described above. The intra-prediction unit 318 may be configured to decode coding blocks of video data (e.g., both lumane coding blocks and chromane coding blocks) using directional intra-prediction, non-directional intra-prediction, recursive filter intra-prediction, CFL, IBC, and / or color palette mode, as described above.
[0173]
[0173] The CPB memory 320 may store video data, such as an encoded video bitstream, which will be decoded by the components of the video decoder 300. The video data stored in the CPB memory 320 may be retrieved, for example, from a computer-readable medium 110 (Figure 1). The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. The CPB memory 320 may also store video data other than syntax elements of the coded picture, such as temporary data representing the output from various units of the video decoder 300. The DPB 314 generally stores the decoded picture, which the video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures from the encoded video bitstream. The CPB memory 320 and DPB 314 may be formed by any of various memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB memory 320 and DPB 314 may be provided by the same memory device or by separate memory devices. In various examples, the CPB memory 320 may be on-chip together with the other components of the video decoder 300, or it may be off-chip relative to those components.
[0174]
[0174] In addition or alternatively, in some examples, the video decoder 300 may retrieve coded video data from memory 120 (Figure 1). That is, memory 120 may store data as described above for the CPB memory 320. Similarly, memory 120 may store instructions to be executed by the video decoder 300 when some or all of the functionality of the video decoder 300 is implemented in software which is performed by the processing circuit configuration of the video decoder 300.
[0175]
[0175] The various units shown in Figure 3 are shown to help understand the operations performed by the video decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to Figure 2, fixed-function circuits refer to circuits that provide a specific functionality and have predefined operations that they can perform. Programmable circuits refer to circuits that can be programmed to perform a variety of tasks and offer flexible functionality in the operations they can perform. For example, a programmable circuit may execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., receiving or outputting parameters), but the type of operation that a fixed-function circuit performs is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0176]
[0176] The video decoder 300 may include a programmable core formed from an ALU, an EFU, digital circuits, analog circuits, and / or programmable circuits. In an example where the operation of the video decoder 300 is performed by software running on the programmable circuits, on-chip memory or off-chip memory may store instructions (e.g., object code) of the software that the video decoder 300 receives and executes.
[0177]
[0177] The entropy decoding unit 302 can receive encoded video data from the CPB and entropy decode the video data in order to reconstruct the syntax elements. The prediction processing unit 304, the inverse quantization unit 306, the inverse transformation processing unit 308, the reconstruction unit 310, and the filter unit 312 can generate decoded video data based on the syntax elements extracted from the bitstream.
[0178]
[0178] Generally, the video decoder 300 reconstructs the picture block by block. The video decoder 300 may perform the reconstruction operation individually for each block (the block currently being reconstructed, i.e., decoded, is sometimes called the "current block").
[0179]
[0179] The entropy decoding unit 302 can entropy decode syntax elements that define the quantized transformation coefficients of the quantized transformation coefficient block, as well as transformation information such as quantization parameters (QP) and / or transformation mode indications (one or more). The inverse quantization unit 306 may use the QP associated with the quantized transformation coefficient block to determine the degree of quantization, and similarly the degree of inverse quantization that the inverse quantization unit 306 applies. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transformation coefficients. Thereafter, the inverse quantization unit 306 may form a transformation coefficient block containing the transformation coefficients.
[0180]
[0180] After the inverse quantization unit 306 has formed a transformation coefficient block, the inverse transformation processing unit 308 may apply one or more inverse transformations to the transformation coefficient block to generate a residual block associated with the current block. For example, the inverse transformation processing unit 308 may apply an inverse DCT, an inverse integer transformation, an inverse Carunenlebe transformation (KLT), an inverse rotational transformation, an inverse direction transformation, or another inverse transformation to the transformation coefficient block.
[0181]
[0181] Furthermore, the prediction processing unit 304 generates prediction blocks according to the prediction information syntax elements entropy-decoded by the entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is interpredicted, the motion compensation unit 316 may generate prediction blocks. In this case, the prediction information syntax elements may be a DPB 314, which will extract the reference block from the reference picture in the DPB 314, as well as motion vectors that identify the location of the reference block in the reference picture relative to the location of the current block in the current picture. The motion compensation unit 316 can generally perform the interprediction process in a manner substantially similar to the manner described with respect to the motion compensation unit 224 (Figure 2).
[0182]
[0182] As another example, if the prediction information syntax element indicates that the current block is to be intra-predicted, the intra-prediction unit 318 may generate a predicted block according to the intra-prediction mode indicated by the prediction information syntax element. In this case as well, the intra-prediction unit 318 may generally perform the intra-prediction process in a manner substantially similar to the manner described with respect to the intra-prediction unit 226 (Figure 2). The intra-prediction unit 318 may retrieve neighboring sample data for the current block from the DPB 314.
[0183]
[0183] The reconstruction unit 310 may reconstruct the current block using the predicted block and the residual block. For example, the reconstruction unit 310 may add the samples from the residual block to the corresponding samples from the predicted block in order to reconstruct the current block.
[0184]
[0184] The filter unit 312 may perform one or more filtering operations on the reconstructed block. For example, the filter unit 312 may perform a deblocking operation to reduce block noise artifacts along the edges of the reconstructed block. The operations of the filter unit 312 are not necessarily performed in all examples.
[0185]
[0185] The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in cases where the filter unit 312 does not perform calculations, the reconstruction unit 310 may store the reconstructed blocks in the DPB 314. In cases where the filter unit 312 performs calculations, the filter unit 312 may store the filtered reconstructed blocks in the DPB 314. As described above, the DPB 314 may provide the prediction processing unit 304 with reference information such as the current picture for intra-prediction and samples of previously decoded pictures for subsequent motion compensation. Furthermore, the video decoder 300 may output the decoded picture (e.g., decoded video) from the DPB 314 for later display on a display device such as the display device 118 in Figure 1.
[0186]
[0186] Thus, the video decoder 300 represents an example of a video decoding device, which includes a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a quantization level for the coefficients of a current block for quantization or dequantization from a plurality of quantization levels, determine an offset value based on the quantization level which is a first offset value based on the quantization level which is a first quantization level, or a different second offset value based on the quantization level which is a second quantization level, determine dequantization parameters for the coefficients based on the determined offset values, and perform dequantization on the coefficients based on the determined dequantization parameters.
[0187]
[0187] The video decoder 300 also represents an example of a video decoding device, which includes a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a quantizer for a coefficient from at least a first quantizer and a second quantizer for inverse quantization, determine an offset value based on the quantizer which is a first offset value based on the quantizer being a first quantizer, or a second different offset value based on the quantizer being a second quantizer, determine inverse quantization parameters for the coefficient based on the determined offset values, and perform inverse quantization on the coefficient based on the determined inverse quantization parameters.
[0188]
[0188] Furthermore, the video decoder 300 represents an example of a video decoding device, the video decoding device includes a memory configured to store video data, and one or more processing units implemented in the circuit configuration, which are configured to determine a first quantizer for a first coefficient of the lumen component of the current block for inverse quantization, determine a first offset value for the first coefficient, determine a first inverse quantization parameter for the first coefficient based on the determined first quantizer and first offset value, perform inverse quantization on the first coefficient based on the determined first inverse quantization parameter, determine a second quantizer for a second coefficient of the chroma component of the current block for inverse quantization, determine a second offset value for the second coefficient that is different from the first offset value, determine a second inverse quantization parameter for the second coefficient based on the determined second quantizer and second offset value, and perform inverse quantization on the second coefficient based on the determined second inverse quantization parameter.
[0189]
[0189] Figure 4 is a flowchart illustrating an exemplary method for encoding a current block using the technique of the present disclosure. The current block may be or contain a current CU. While the description is made with respect to a video encoder 200 (Figures 1 and 2), it should be understood that other devices may be configured to perform a method similar to that of Figure 4.
[0190]
[0190] In this example, the video encoder 200 first predicts the current block (400). For example, the video encoder 200 may form a predicted block for the current block. The video encoder 200 may then compute the residual block for the current block (402). To compute the residual block, the video encoder 200 may compute the difference between the original unencoded block and the predicted block for the current block. The video encoder 200 may then transform the residual block and quantize the transformation coefficients of the residual block (for example, using the techniques described herein) (404). The video encoder 200 may then scan the quantized transformation coefficients of the residual block (406). During or following the scan, the video encoder 200 may entropy encode the transformation coefficients (408). For example, the video encoder 200 may encode the transformation coefficients using CAVLC or CABAC. The video encoder 200 may then output the entropy encoded data of the block (410).
[0191]
[0191] Figure 5 is a flowchart illustrating an exemplary method for decoding the current block of video data using the technique of the present disclosure. The current block may be or contain the current CU. While the video decoder 300 (Figures 1 and 3) is described in reference, it should be understood that other devices may be configured to perform a method similar to that of Figure 5.
[0192]
[0192] The video decoder 300 may receive entropy-encoded data for the current block, such as entropy-encoded prediction information and entropy-encoded data for the transformation coefficients of the residual block corresponding to the current block (500). The video decoder 300 may entropy-decode the entropy-encoded data to determine the prediction information for the current block and to reconstruct the transformation coefficients of the residual block (502). The video decoder 300 may predict the current block, for example, using an intra-prediction mode or inter-prediction mode as indicated by the prediction information for the current block, in order to compute a prediction block for the current block (504). The video decoder 300 may then inversely scan the reconstructed transformation coefficients to create a block of quantized transformation coefficients (506). The video decoder 300 may then inversely quantize the transformation coefficients and apply an inverse transform to the transformation coefficients (for example, using the techniques described herein) to generate a residual block (508). The video decoder 300 can finally decode the current block by combining the predicted block and the residual block (510).
[0193]
[0193] Figure 9 is a flowchart illustrating the operation method by one or more examples. For ease of illustration, the examples in Figure 9 are described with respect to a video encoder 200 and a video decoder 300. For example, one or more memories (e.g., memory 106, memory 120, video data memory 230, DPB218, CPB memory 320, DPB314, or any other memory) may be configured to store video data. The processing circuit configuration of the video encoder 200 or the video decoder 300 may be coupled to one or more memories and configured to perform the exemplary technique of Figure 9.
[0194]
[0194] The processing circuit configuration of the video encoder 200 or video decoder 300 can determine the quantizer for the coefficients of the current block for quantization or dequantization from at least a first quantizer and a second quantizer (900). Examples of the first and second quantizers are Q0 and Q1. The processing circuit configuration may be configured to determine the quantizer based on the state machine 700 in Figure 7.
[0195]
[0195] The processing circuit configuration of the video encoder 200 or video decoder 300 may determine the offset value based on the quantizer (902). The offset value may be a first offset value based on the quantizer being a first quantizer, or a different second offset value based on the quantizer being a second quantizer. In some examples, the video encoder 200 may signal in the bitstream, and the video decoder 300 may parse the first and second offset values from the bitstream. In other examples, the first and second offset values may be stored in advance.
[0196]
[0196] In one or more examples, the quantization level can also control which offset value is selected. For example, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine the quantization level for the coefficients of the current block. Examples of quantization levels for coefficients include integer values as shown in Figures 6 and 8. The quantization level is y i It can be expressed as follows. The video encoder 200 calculates y based on rate distortion calculation. i It can be determined that y i The information used by the video decoder 300 to determine this can be signaled.
[0197]
[0197] To determine the offset value, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine the offset value based on the quantizer and the quantization value. For example, a first offset value may be associated with a first quantizer and a quantization level (e.g., a coefficient), and the first offset value may be different from the offset value associated with the first quantizer and other quantization levels. A second offset value may be associated with a second quantizer and a quantization level (e.g., a coefficient), and the second offset value may be different from the offset value associated with the second quantizer and other quantization levels.
[0198]
[0198] As an example, the quantization level of a coefficient can be 1 or -1, and other quantization levels can be greater than 1 or less than -1. Therefore, in this example, if the quantizer is Q0 and the quantization level for the coefficient is 1 or -1, the offset value can be a first offset value. This first offset value may be different from the offset value for a coefficient that has a quantization level other than 1 or -1 but has quantizer Q0. Similarly, if the quantizer is Q1 and the quantization level for the coefficient is 1 or -1, the offset value can be a second offset value. This second offset value may be different from the offset value for a coefficient that has a quantization level other than 1 or -1 but has quantizer Q1. In this way, the processing circuit configuration of the video encoder 200 and video decoder 300 may assign a separate offset for the quantization level equal to 1 for coefficients mapped to coefficient levels + / -1, and different quantization offsets are assigned to the remaining levels.
[0199]
[0199] As another example, the absolute value of a quantization level may be less than the threshold, while the absolute value of other quantization levels may be greater than the threshold. Therefore, in this example, if the quantizer is Q0 and the quantization level for a coefficient is less than the threshold, the offset value may be a first offset value. This first offset value may be different from the offset value for a coefficient that has a quantization level greater than the threshold but has quantizer Q0. Similarly, if the quantizer is Q1 and the quantization level for a coefficient is less than the threshold, the offset value may be a second offset value. This second offset value may be different from the offset value for a coefficient that has a quantization level greater than the threshold but has quantizer Q1. In this way, the processing circuit configuration of the video encoder 200 and video decoder 300 can assign separate offsets to absolute quantization levels less than the threshold (e.g., 4), and different quantization offsets are assigned to the remaining levels.
[0200]
[0200] As another example, the first offset value and the offset values associated with other quantization levels associated with the first quantizer are each different, and the second offset value and the offset values associated with other quantization levels associated with the second quantizer are each different. Thus, in this example, if the quantizer is Q0 and the quantization level is at a specific quantization level, the offset value may be the first offset value. This first offset value may be different from the offset value for a coefficient that has a quantization level different from the specific quantization level but has quantizer Q0. Similarly, if the quantizer is Q1 and the quantization level is at a specific quantization level, the offset value may be the second offset value. This second offset value may be different from the offset value for a coefficient that has a quantization level different from the specific quantization level but has quantizer Q1. In this way, the processing circuit configuration of the video encoder 200 and video decoder 300 can assign different quantization offset values to each quantization level (i.e., each level is assigned a different quantization offset).
[0201]
[0201] In some examples, the first offset value is associated with the first quantizer and the fact that the coefficients are relative to the rumab block, and the first offset value is different from the offset value associated with the first quantizer and the fact that the coefficients are relative to the chromab block. The second offset value is associated with the second quantizer and the fact that the coefficients are relative to the rumab block, and the second offset value is different from the offset value associated with the second quantizer and the fact that the coefficients are relative to the chromab block.
[0202]
[0202] The processing circuit configuration of the video encoder 200 or video decoder 300 may determine quantization parameters or inverse quantization parameters for the coefficients based on the determined offset value (904). For example, the processing circuit configuration may use y as the quantization parameter or inverse quantization parameter. i The offset value can be determined.
[0203]
[0203] The processing circuit configuration of the video encoder 200 or video decoder 300 may perform one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter as part of encoding or decoding the current block (906). For example, the video encoder 200 may (y i Quantization can be performed by determining (y offset value) / (step size). The video decoder 300 determines (y i (+offset value) * Inverse quantization can be performed by determining the step size. The step size can be signaled or determined using non-signaling techniques.
[0204]
[0204] For example, in order to encode the current block, the video encoder 200 may determine a predicted block for the current block and determine a coefficient based on the difference between the predicted block and the current block. For example, the difference between the predicted block and the current block may be a residual value that the video encoder 200 converts or does not convert (for example, if conversion skipping is enabled) in order to generate the coefficient.
[0205]
[0205] In this example, to perform one of quantization or inverse quantization on the coefficients based on the determined quantization parameters, the video encoder 200 may perform quantization on the coefficients based on the determined quantization parameters to generate quantized coefficients. The video encoder 200 may signal information indicating the quantized coefficients.
[0206]
[0206] As another example, in order to perform one of quantization or dequantization on a coefficient based on a determined quantization parameter or a determined dequantization parameter, the video decoder 300 may perform dequantization on the coefficient based on a determined dequantization parameter to generate dequantized coefficients. In this example, the video decoder 300 may decode the current block. To decode the current block, the video decoder 300 may be configured to determine residual values for the current block based on the dequantized coefficients. For example, if transformation is enabled, the video decoder 300 may perform an inverse transformation on the dequantized coefficients to generate residual values. If transformation skipping is enabled, the dequantized coefficients may be residual values.
[0207]
[0207] In this example, the video decoder 300 may determine a predicted block for the current block. The video decoder 300 may add the predicted block to the residual value in order to reconstruct the current block.
[0208]
[0208] Figure 10 is a flowchart illustrating the operation method by one or more examples. For ease of illustration, the examples in Figure 10 are described with respect to a video encoder 200 and a video decoder 300. For example, one or more memories (e.g., memory 106, memory 120, video data memory 230, DPB218, CPB memory 320, DPB314, or any other memory) may be configured to store video data. The processing circuit configuration of the video encoder 200 or the video decoder 300 may be coupled to one or more memories and configured to perform the exemplary technique of Figure 10.
[0209]
[0209] In the example of Figure 9, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine the offset value based on the quantizer. That is, whether the quantizer is Q0 or Q1 controlled whether the offset value was a first offset value or a second offset value. In Figure 9, the quantization level may be an additional factor in determining whether the offset value is a first offset value or a second offset value. Also in Figure 9, whether the coefficient is for a rumor block or a chroma block may be another factor (for example, in addition to or instead of the quantization level) in determining whether the offset value is a first offset value or a second offset value.
[0210]
[0210] In the example of Figure 10, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine the offset value based on the quantization level. That is, in Figure 10, the quantization level may control whether the offset value is a first offset value, a second offset value, or possibly some other offset value. In Figure 10, the quantizer (e.g., Q0 or Q) may then be an additional factor in determining whether the offset value is a first offset value, a second offset value, or some other offset value. In Figure 10, whether the coefficient is for a rumor block or a chroma block may be another factor (e.g., added to or replacing the quantizer) in determining whether the offset value is a first offset value or a second offset value.
[0211]
[0211] For example, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine the quantization level for the coefficients of the current block for quantization or dequantization from a plurality of quantization levels (1000). Examples of quantization levels for coefficients include integer values as shown in Figures 6 and 8. The quantization level is y i It can be expressed as follows. The video encoder 200 calculates y based on rate distortion calculation. i It can be determined that y i The information used by the video decoder 300 to determine this can be signaled.
[0212]
[0212] The video encoder 200 and video decoder 300 may determine an offset value based on the quantization level (1002). The offset value is either a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level. Other offset values for other quantization levels are also possible.
[0213]
[0213] For example, the first offset value can be obtained based on the quantization level being 1 or -1, and the second offset value can be obtained based on the quantization level being greater than 1 or less than -1. That is, if the quantization level of the coefficient is 1 or -1, the processing circuit configuration of the video encoder 200 or video decoder 300 can determine that the offset value is equal to the first offset value. If the quantization level of the coefficient is not 1 or -1, the processing circuit configuration of the video encoder 200 or video decoder 300 can determine that the offset value is equal to the second offset value.
[0214]
[0214] As another example, the first offset value may be obtained based on the absolute value of the quantization level being less than a threshold (e.g., 4), and the second offset value may be obtained based on the absolute value of the quantization level being greater than a threshold. That is, if the absolute value of the quantization level of the coefficient is less than a threshold, the processing circuit configuration of the video encoder 200 or video decoder 300 may determine that the offset value is equal to the first offset value. If the absolute value of the quantization level of the coefficient is greater than a threshold, the processing circuit of the video encoder 200 or video decoder 300 may determine that the offset value is equal to the second offset value.
[0215]
[0215] As another example, the first offset value and the second offset value can always be different (for example, each quantization level is associated with a different offset value). That is, when the quantization level of the coefficient is at the first quantization level, the processing circuit configuration of the video encoder 200 or video decoder 300 can determine that the offset value is equal to the first offset value. When the quantization level of the coefficient is at the second quantization level, the processing circuit configuration of the video encoder 200 or video decoder 300 can determine that the offset value is equal to the second offset value, and so on.
[0216]
[0216] In one or more of the above examples described with respect to Figure 10, the quantization level can control the offset value regardless of the quantizer. With respect to the quantization level, the offset value is the same for Q0 and Q1, but the offset value may be different for different quantization levels.
[0217]
[0217] However, in some cases, whether the processing circuit configuration of the video encoder 200 or video decoder 300 determines a first offset value or a second offset value may depend on whether the quantizer is Q0 or Q1. For example, both the quantizer and the quantization level may control the offset value. The processing circuit configuration of the video encoder 200 or video decoder 300 may determine that the first offset value of the quantizer is Q0 and the quantization level is the first quantization level, that the second offset value of the quantizer is Q1 and the quantization level is the first quantization level, that the third offset value of the quantizer is Q0 and the quantization level is the second quantization level, and that the fourth offset value of the quantizer is Q1 and the quantization level is the second quantization level. At least two of the first, second, third, and fourth offset values may be different.
[0218]
[0218] For example, suppose that coefficient is the first coefficient, offset value is the offset value for the first coefficient, quantization level is the first quantization level for the first coefficient, quantizer for the first coefficient is the first quantizer, quantization parameter is the first quantization parameter, and inverse quantization parameter is the first inverse quantization parameter. In this example, the video encoder 200 and video decoder 300 may be configured to determine a quantizer for the second coefficient, which is a second quantizer for quantization or inverse quantization.
[0219]
[0219] The video encoder 200 and video decoder 300 can determine that the quantization level for the second coefficient is the first quantization level, and that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level, and can determine the offset value for the second coefficient. In this example, the offset value for the second coefficient is different from the offset value for the first coefficient, based on the fact that the quantizers for the first and second coefficients are different, but the quantization levels for the first and second coefficients are the same. That is, the quantization levels for the first and second coefficients are the same, but the quantizers for the first and second coefficients are different, so the offset values for the first and second coefficients can be different.
[0220]
[0220] The processing circuit configuration of the video encoder 200 or video decoder 300 can determine quantization parameters or inverse quantization parameters for the coefficients based on the determined offset value (1004). For example, the processing circuit configuration may use y as the quantization parameter or inverse quantization parameter. i The offset value can be determined.
[0221]
[0221] The processing circuit configuration of the video encoder 200 or video decoder 300 may perform one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter as part of encoding or decoding the current block (1006). For example, the video encoder 200 may (y i Quantization can be performed by determining (y offset value) / (step size). The video decoder 300 determines (y i (+offset value) * Inverse quantization can be performed by determining the step size. The step size can be signaled or determined using non-signaling techniques.
[0222]
[0222] For example, in order to encode the current block, the video encoder 200 may determine a predicted block for the current block and determine a coefficient based on the difference between the predicted block and the current block. For example, the difference between the predicted block and the current block may be a residual value that the video encoder 200 converts or does not convert (for example, if conversion skipping is enabled) in order to generate the coefficient.
[0223]
[0223] In this example, to perform one of quantization or inverse quantization on the coefficients based on the determined quantization parameters, the video encoder 200 may perform quantization on the coefficients based on the determined quantization parameters to generate quantized coefficients. The video encoder 200 may signal information indicating the quantized coefficients.
[0224]
[0224] As another example, in order to perform one of quantization or dequantization on a coefficient based on a determined quantization parameter or a determined dequantization parameter, the video decoder 300 may perform dequantization on the coefficient based on a determined dequantization parameter to generate dequantized coefficients. In this example, the video decoder 300 may decode the current block. To decode the current block, the video decoder 300 may be configured to determine residual values for the current block based on the dequantized coefficients. For example, if transformation is enabled, the video decoder 300 may perform an inverse transformation on the dequantized coefficients to generate residual values. If transformation skipping is enabled, the dequantized coefficients may be residual values.
[0225]
[0225] In this example, the video decoder 300 may determine a predicted block for the current block. The video decoder 300 may add the predicted block to the residual value in order to reconstruct the current block.
[0226]
[0226] The following numbered clauses exemplify one or more aspects of the devices and techniques described herein.
[0227]
[0227] Clause 1A: A method for encoding or decoding video data, comprising: determining a quantizer for coefficients for quantization or dequantization from at least a first quantizer and a second quantizer; determining an offset value based on the quantizer, which is a first offset value based on the quantizer being a first quantizer, or a different second offset value based on the quantizer being a second quantizer; determining a quantization parameter or dequantization parameter for coefficients based on the determined offset value; and performing one of quantization or dequantization on the coefficients based on the determined quantization parameter or dequantization parameter.
[0228]
[0228] Clause 2A: The method according to Clause 1A, wherein determining the offset value includes one of the following: determining the offset value based on signaling, determining the offset value based on derived information without signaling, or determining the offset value based on pre-stored information.
[0229]
[0229] Clause 3A. A method for encoding or decoding video data, comprising: determining a first quantizer for a first coefficient of the luma component of a current block for quantization or dequantization; determining a first offset value for the first coefficient; determining a first quantization parameter or a first dequantization parameter for the first coefficient based on the determined first quantizer and the first offset value; and performing one of quantization or dequantization on the first coefficient based on the determined first quantization parameter or the determined first dequantization parameter. A method comprising: determining a second quantizer for a second coefficient of the chromatic component of the current block for quantization or dequantization; determining a second offset value for the second coefficient that is different from a first offset value; determining a second quantization parameter or a second dequantization parameter for the second coefficient based on the determined second quantizer and second offset value; and performing one of quantization or dequantization on the second coefficient based on the determined second quantization parameter or the determined second dequantization parameter.
[0230]
[0230] The method according to Clause 4A, wherein determining a first offset value for a first coefficient includes determining a first offset value on the basis that the first coefficient is for a lumen component, and determining a second offset value for a second coefficient includes determining a second offset value on the basis that the second coefficient is for a chroma component.
[0231]
[0231] Clause 5A. A method that includes any combination of Clauses 1A to 4A.
[0232]
[0232] Clause 6A. A device for encoding or decoding video data, comprising: a memory configured to store video data; and a processing circuit configuration coupled to the memory, configured to perform any one or a combination of the methods described in Clauses 1A to 5A.
[0233]
[0233] Clause 7A. The device described in Clause 6, further comprising a display configured to display decoded video data.
[0234]
[0234] Clause 8A. A device as described in either Clause 6A or 7A, comprising one or more of a camera, computer, mobile device, broadcast receiver device, or set-top box.
[0235]
[0235] Clause 9A. A device as described in any of Clauses 6A to 8A, wherein the device comprises a video decoder.
[0236]
[0236] Clause 10A. A device according to any of Clauses 6A to 9A, wherein the device comprises a video encoder.
[0237]
[0237] Clause 11A. A computer-readable storage medium in which instructions are stored, wherein, when the instructions are executed, one or more processors cause one or more processors to execute any one or a combination of the methods described in Clauses 1A to 5A.
[0238]
[0238] Clause 12A. A device for encoding or decoding video data, comprising means for performing any one or a combination of the methods described in Clauses 1A to 5A.
[0239]
[0239] Clause 1. A method for processing video data, comprising: determining a quantization level for the coefficients of a current block from a plurality of quantization levels; determining an offset value based on the quantization level, which is a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level; determining a quantization parameter or dequantization parameter for the coefficients based on the determined offset value; and performing one of quantization or dequantization on the coefficients based on the determined quantization parameter or dequantization parameter as part of encoding or decoding the current block.
[0240]
[0240] Clause 2. Further includes determining the quantizer for the coefficient from at least a first quantizer and a second quantizer,
[0241] The method according to Clause 1, wherein determining the offset value includes determining the offset value based on the quantization level and the quantizer.
[0241]
[0242] Clause 3. The coefficient is the first coefficient, the offset value is the offset value for the first coefficient, the quantization level is the first quantization level for the first coefficient, the quantizer for the first coefficient is the first quantizer, the quantization parameter is the first quantization parameter, the inverse quantization parameter is the first inverse quantization parameter, and the method determines the quantizer for the second coefficient, which is the second quantizer for quantization or inverse quantization, and determines that the quantization level for the second coefficient is the first quantization level, and based on the fact that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level, the method determines the quantizer for the second coefficient, which is the second quantizer for quantization or inverse quantization, and determines that the quantization level for the second coefficient is the first quantization level, and the method determines the quantizer for the second coefficient, which is the second quantizer and the quantization level is the first quantization level. The method according to Clause 2, further comprising: determining an offset value for a second coefficient, which is different from the offset value for a first coefficient, based on the fact that the quantizer for a first coefficient and the quantizer for a second coefficient are different, while the quantization level for a first coefficient and the quantization level for a second coefficient are the same; determining a second quantization parameter or a second inverse quantization parameter for a second coefficient based on the determined offset value for a second coefficient; and performing one of quantization or inverse quantization on the second coefficient based on the determined second quantization parameter or the determined second inverse quantization parameter.
[0242]
[0243] Clause 4. The method according to any of Clauses 1 to 3, wherein each of the multiple quantization levels is associated with a different offset value.
[0243]
[0244] Clause 5. The method of any one of Clauses 1 to 3, wherein determining the offset value includes determining that the offset value is a first offset value based on the quantization level being 1 or -1, or determining that the offset value is a second offset value based on the quantization level being greater than 1 or less than -1.
[0244]
[0245] Clause 6. The method of any one of Clauses 1 to 3, wherein determining the offset value includes determining that the offset value is a first offset value based on the absolute value of the quantization level being less than a threshold, or determining that the offset value is a second offset value based on the absolute value of the quantization level being greater than a threshold.
[0245]
[0246] Clause 7. The method according to any one of Clauses 1 to 6, wherein the first offset value is associated with a first quantization level and the coefficient being relative to a rumab block, and the first offset value is different from the offset value associated with a first quantization level and the coefficient being relative to a chromab block, and the second offset value is associated with a second quantization level and the coefficient being relative to a rumab block, and the second offset value is different from the offset value associated with a second quantization level and the coefficient being relative to a chromab block.
[0246]
[0247] Clause 8. The method according to any one of Clauses 1 to 7, further comprising encoding a current block, wherein encoding a current block comprises determining a predicted block for the current block and determining coefficients based on the difference between the predicted block and the current block, and performing one of quantization or inverse quantization on the coefficients based on the determined quantization parameter or determined inverse quantization parameter, which comprises performing quantization on the coefficients based on the determined quantization parameter to produce quantized coefficients, and further comprising signaling information indicating the quantized coefficients.
[0247]
[0248] Clause 9. The method according to any one of Clauses 1 to 7, wherein performing one of quantization or dequantization on a coefficient based on a determined quantization parameter or a determined dequantization parameter includes performing dequantization on a coefficient based on a determined dequantization parameter to produce a dequantized coefficient, the method further includes decoding the current block, and decoding the current block includes determining the residual value of the current block based on the dequantized coefficient, determining a predicted block for the current block, and adding the predicted block to the residual value in order to reconstruct the current block.
[0248]
[0249] Clause 10. A device for processing video data, the device comprising one or more memories configured to store video data, and a processing circuit configuration coupled to one or more memories, wherein the processing circuit configuration is configured to determine a quantization level for the coefficients of a current block from a plurality of quantization levels, determine an offset value based on the quantization level which is a first offset value based on the quantization level which is a first quantization level, or a different second offset value based on the quantization level which is a second quantization level, determine a quantization parameter or inverse quantization parameter for the coefficients based on the determined offset value, and perform one of quantization or inverse quantization on the coefficients based on the determined quantization parameter or determined inverse quantization parameter as part of encoding or decoding the current block.
[0249]
[0250] Clause 11. The device according to Clause 10, wherein the processing circuit configuration is configured to determine a quantizer for a coefficient from at least a first quantizer and a second quantizer, and to determine an offset value, the processing circuit configuration is configured to determine an offset value based on the quantization level and the quantizer.
[0250]
[0251] Clause 12. Determine a quantizer for the second coefficient, which is a second quantizer for quantization or inverse quantization, and determine that the quantization level for the second coefficient is the first quantization level for the first coefficient, the quantizer for the second coefficient is the first quantizer, the quantization parameter is the first quantization parameter, the inverse quantization parameter is the first inverse quantization parameter, and the processing circuit configuration determines that the quantization level for the second coefficient is the first quantization level, and based on the fact that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level, determine the quantizer for the second coefficient The device according to Clause 11, configured to determine an offset value for a second coefficient, which is different from the offset value for a first coefficient, based on the fact that the quantizer for a first coefficient and the quantizer for a second coefficient are different, while the quantization level for a first coefficient and the quantization level for a second coefficient are the same; to determine a second quantization parameter or a second inverse quantization parameter for a second coefficient based on the determined offset value for a second coefficient; and to perform one of quantization or inverse quantization on a second coefficient based on the determined second quantization parameter or the determined second inverse quantization parameter.
[0251]
[0252] Clause 13. A device as described in any of Clauses 10-12, wherein each of the multiple quantization levels is associated with a different offset value.
[0252]
[0253] Clause 14. A device according to any one of Clauses 10 to 12, wherein the processing circuit configuration is configured to determine an offset value, such that the offset value is a first offset value based on the quantization level being 1 or -1, or the offset value is a second offset value based on the quantization level being greater than 1 or less than -1.
[0253]
[0254] Clause 15. A device according to any one of Clauses 10 to 12, wherein the processing circuit configuration is configured to determine an offset value, such that the offset value is a first offset value based on the absolute value of the quantization level being less than a threshold, or the offset value is a second offset value based on the absolute value of the quantization level being greater than a threshold.
[0254]
[0255] A device according to any of the clauses 10 to 15, wherein the first offset value is associated with a first quantization level and the coefficient being relative to a rumab block, and the first offset value is different from the offset value associated with a first quantization level and the coefficient being relative to a chromab block, and the second offset value is associated with a second quantization level and the coefficient being relative to a rumab block, and the second offset value is different from the offset value associated with a second quantization level and the coefficient being relative to a chromab block.
[0255]
[0256] Clause 17. A device according to any one of Clauses 10 to 16, wherein the processing circuit configuration is configured to encode a current block, to determine a predicted block relative to the current block in order to encode a current block, and to determine coefficients based on the difference between the predicted block and the current block, and to perform one of the quantization or inverse quantization on the coefficients based on the determined quantization parameters to produce quantized coefficients, and to encode a current block, the processing circuit configuration is further configured to signal information indicating the quantized coefficients.
[0256]
[0257] Clause 18. A device according to any one of Clauses 10 to 16, wherein the processing circuit configuration is configured to perform one of quantization or dequantization on a coefficient based on a determined quantization parameter or determined dequantization parameter, and to perform dequantization on the coefficient based on a determined dequantization parameter, and to perform dequantization on the coefficient, it is configured to perform dequantization on the coefficient based on a determined dequantization parameter, and to decode the current block, the processing circuit configuration is configured to determine the residual value of the current block based on the dequantized coefficient, determine the predicted block relative to the current block, and to reconstruct the current block, it is configured to add the predicted block to the residual value.
[0257]
[0258] Clause 19. A computer-readable storage medium storing instructions, wherein, when the instructions are executed, one or more processors cause one or more processors to determine a quantization level for the coefficients of a current block from a plurality of quantization levels; determine an offset value based on the quantization level, which is a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level; determine a quantization parameter or dequantization parameter for the coefficients based on the determined offset value; and, as part of encoding or decoding the current block, perform one of quantization or dequantization on the coefficients based on the determined quantization parameter or dequantization parameter.
[0258]
[0259] Clause 20. A computer-readable storage medium as described in Clause 19, in which each of the multiple quantization levels is associated with a different offset value.
[0259]
[0260] It should be noted that, in some cases, some actions or events of any of the techniques described herein may be performed in a different order, added, merged, or completely excluded (for example, not all actions or events described may be necessary for the practice of the technique). Furthermore, in some cases, actions or events may be performed not sequentially, but concurrently, for example, through multithreading, interrupt handling, or across multiple processors.
[0260]
[0261] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on a computer-readable medium, transmitted through a computer-readable medium, or executed by a hardware-based processing unit. The computer-readable medium may include computer-readable storage media corresponding to tangible media such as data storage media, or communication media including any medium that facilitates the transfer of computer programs from one location to another, for example, according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) non-transient tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementation of the techniques described herein. A computer program product may include computer-readable media.
[0261]
[0262] As an example, and not an limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media used to store desired program code in the form of instructions or data structures and accessible by a computer. Any connection is also appropriately referred to as computer-readable media. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary tangible storage media. As used herein, the terms "disk" and "disc" include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where a disk typically reproduces data magnetically, while a disc reproduces data optically using a laser. Any combination of these should also be included within the scope of computer-readable media.
[0262]
[0263] The commands can be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent integrated logic circuit configurations or discrete logic circuit configurations. Thus, the terms "processor" and "processing circuit configuration" as used herein may refer to either the structures described above or any other structure suitable for implementation of the techniques described herein. Additionally, in some aspects, the functions described herein may be provided within dedicated hardware modules and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Also, these techniques may be implemented entirely in one or more circuits or logic elements.
[0263]
[0264] The techniques of the present disclosure can be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chip sets). To emphasize the functional aspects of devices configured to execute the disclosed techniques, various components, modules, or units have been described in this disclosure, but they do not necessarily require implementation by different hardware units. Rather, as described above, the various units may be combined in codec hardware units, or provided by a set of interoperable hardware units that include one or more of the processors described above in conjunction with suitable software and / or firmware.
[0264]
[0265] Various embodiments have been described. These and other embodiments fall within the scope of the following claims.
Claims
1. A method for processing video data, Currently, the quantization level for the coefficients of a block is determined from multiple quantization levels, Determining an offset value based on the quantization level, wherein the offset value is either a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level. Based on the determined offset value, determine the quantization parameter or inverse quantization parameter for the coefficient, A method comprising, as part of encoding or decoding the current block, performing one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter.
2. The quantizer for the coefficient is further determined from at least a first quantizer and a second quantizer, The method according to claim 1, wherein determining the offset value includes determining the offset value based on the quantization level and the quantizer.
3. The coefficient is a first coefficient, the offset value is an offset value for the first coefficient, the quantization level is a first quantization level for the first coefficient, the quantizer for the first coefficient is a first quantizer, the quantization parameter is a first quantization parameter, the inverse quantization parameter is a first inverse quantization parameter, and the method is Determining a quantizer for a second coefficient for quantization or dequantization, wherein the quantizer for the second coefficient is the second quantizer, The quantization level for the second coefficient is determined to be the first quantization level, Determining an offset value for the second coefficient based on the fact that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level, wherein the offset value for the second coefficient is different from the offset value for the first coefficient based on the fact that the quantizer for the first coefficient and the quantizer for the second coefficient are different, while the quantization level for the first coefficient and the quantization level for the second coefficient are the same. Based on the determined offset value for the second coefficient, a second quantization parameter or a second inverse quantization parameter for the second coefficient is determined, The method according to claim 2, further comprising performing quantization or dequantization on the second coefficient based on the determined second quantization parameter or the determined second dequantization parameter.
4. The method according to claim 1, wherein each of the plurality of quantization levels is associated with a different offset value.
5. Determining the aforementioned offset value Based on the quantization level being 1 or -1, the offset value is determined to be the first offset value, or The method according to claim 1, comprising determining that the offset value is the second offset value based on the quantization level being greater than 1 or less than -1.
6. Determining the aforementioned offset value Based on the fact that the absolute value of the quantization level is smaller than the threshold, the offset value is determined to be the first offset value, or The method according to claim 1, comprising determining that the offset value is the second offset value based on the fact that the absolute value of the quantization level is greater than the threshold.
7. Unlike the offset value associated with the first quantization level and the coefficient being relative to a rumor block, the first offset value associated with the first quantization level and the coefficient being relative to a chroma block, The method according to claim 1, wherein the second offset value is associated with the second quantization level and the fact that the coefficient is with respect to the rumor block, and the second offset value is different from the offset value associated with the second quantization level and the fact that the coefficient is with respect to the chroma block.
8. The method further includes encoding the current block, and encoding the current block is To determine the predicted block for the current block, and This includes determining the coefficient based on the difference between the predicted block and the current block, Performing one of quantization or inverse quantization on the coefficients based on the determined quantization parameter or the determined inverse quantization parameter includes performing quantization on the coefficients based on the determined quantization parameter in order to produce quantized coefficients. The method according to claim 1, further comprising encoding the current block by signaling information indicating the quantized coefficients.
9. Performing one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter includes performing dequantization on the coefficients based on the determined dequantization parameter to generate dequantized coefficients, the method further includes decoding the current block, and decoding the current block is The residual value of the current block is determined based on the inversely quantized coefficients, Determining the predicted block for the current block, The method according to claim 1, comprising adding the predicted block to the residual value in order to reconstruct the current block.
10. A device for processing video data, wherein the device is One or more memories configured to store the aforementioned video data, and The processing circuit configuration comprises one or more of the above-mentioned memory-coupled processing circuits, and the processing circuit configuration comprises Currently, the quantization level for the coefficients of a block is determined from multiple quantization levels, Determining an offset value based on the quantization level, wherein the offset value is either a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level. Based on the determined offset value, determine the quantization parameter or inverse quantization parameter for the coefficient, A device configured to perform, as part of encoding or decoding the current block, one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter.
11. The aforementioned processing circuit configuration is The quantizer for the coefficient is configured to be determined from at least a first quantizer and a second quantizer. The device according to claim 10, wherein the processing circuit configuration is configured to determine the offset value based on the quantization level and the quantizer in order to determine the offset value.
12. The coefficient is the first coefficient, the offset value is the offset value for the first coefficient, the quantization level is the first quantization level for the first coefficient, the quantizer for the first coefficient is the first quantizer, the quantization parameter is the first quantization parameter, the inverse quantization parameter is the first inverse quantization parameter, and the processing circuit configuration is Determining a quantizer for a second coefficient for quantization or dequantization, wherein the quantizer for the second coefficient is the second quantizer, The quantization level for the second coefficient is determined to be the first quantization level, Determining an offset value for the second coefficient based on the fact that the quantizer for the second coefficient is the second quantizer and the quantization level is the first quantization level, wherein the offset value for the second coefficient is different from the offset value for the first coefficient based on the fact that the quantizer for the first coefficient and the quantizer for the second coefficient are different, while the quantization level for the first coefficient and the quantization level for the second coefficient are the same. Based on the determined offset value for the second coefficient, a second quantization parameter or a second inverse quantization parameter for the second coefficient is determined, The device according to claim 11, configured to perform one of the following on the second coefficients: quantization or dequantization based on the determined second quantization parameter or the determined second dequantization parameter.
13. The device according to claim 10, wherein each of the plurality of quantization levels is associated with a different offset value.
14. In order to determine the offset value, the processing circuit configuration is: Based on the quantization level being 1 or -1, the offset value is determined to be the first offset value, or The device according to claim 10, configured to determine that the offset value is the second offset value based on whether the quantization level is greater than 1 or less than -1.
15. In order to determine the offset value, the processing circuit configuration is: Based on the fact that the absolute value of the quantization level is smaller than the threshold, the offset value is determined to be the first offset value, or The device according to claim 10, configured to determine that the offset value is the second offset value based on the fact that the absolute value of the quantization level is greater than the threshold.
16. Unlike the offset value associated with the first quantization level and the coefficient being relative to a rumor block, the first offset value associated with the first quantization level and the coefficient being relative to a chroma block, The device according to claim 10, wherein the second offset value is associated with the second quantization level and the coefficient being relative to the rumor block, and the second offset value is different from the offset value associated with the second quantization level and the coefficient being relative to the chroma block.
17. The processing circuit configuration is configured to encode the current block, and the processing circuit configuration is configured to encode the current block, Determine the predicted block for the current block, The system is configured to determine the coefficient based on the difference between the prediction block and the current block. The processing circuit configuration is configured to perform quantization or inverse quantization on the coefficients based on the determined quantization parameters or the determined inverse quantization parameters in order to generate quantized coefficients. The device according to claim 10, wherein the processing circuit configuration is further configured to signal signal information indicating the quantized coefficients in order to encode the current block.
18. Based on the determined quantization parameter or the determined inverse quantization parameter, the processing circuit configuration is configured to perform one of quantization or inverse quantization on the coefficients, to generate inverse quantized coefficients, based on the determined inverse quantization parameter, and the processing circuit configuration is further configured to decode the current block, and in order to decode the current block, the processing circuit configuration is configured Based on the inversely quantized coefficients, the residual value of the current block is determined. Determine the predicted block for the current block, The device according to claim 10, configured to add the predicted block to the residual value in order to reconstruct the current block.
19. A computer-readable storage medium storing instructions, wherein when an instruction is executed, one or more processors, Currently, the quantization level for the coefficients of a block is determined from multiple quantization levels, Determining an offset value based on the quantization level, wherein the offset value is either a first offset value based on the quantization level being a first quantization level, or a different second offset value based on the quantization level being a second quantization level. Based on the determined offset value, determine the quantization parameter or inverse quantization parameter for the coefficient, A computer-readable storage medium that, as part of encoding or decoding the current block, performs one of quantization or dequantization on the coefficients based on the determined quantization parameter or the determined dequantization parameter.
20. The computer-readable storage medium according to claim 19, wherein each of the plurality of quantization levels is associated with a different offset value.