Quantization parameter identification in video processing

By employing an adaptive resolution change and fixed phase interpolation pixel refinement process, the problem of high bandwidth requirements for high-definition video storage and transmission is solved, thereby improving video encoding efficiency.

CN121814948APending Publication Date: 2026-04-07ALIBABA (CHINA) CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2020-08-21
Publication Date
2026-04-07

AI Technical Summary

Technical Problem

High-definition video applications require high bandwidth and storage space for storage and transmission. Existing video coding technologies struggle to effectively reduce bitrates, especially since I-frames have a low bitrate ratio, and traditional coding methods have negligible effect on reducing bitrates.

Method used

The method of adaptive resolution variation (ARC) is used to process video content, combined with a pixel thinning process of fixed phase interpolation, which reduces the complexity of the algorithm and hardware while maintaining the encoding accuracy.

Benefits of technology

It effectively reduces video encoding bitrate, improves encoding efficiency, and reduces storage space and transmission bandwidth requirements, making it suitable for high-definition video applications such as online video streaming and video surveillance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121814948A_ABST
    Figure CN121814948A_ABST
Patent Text Reader

Abstract

The present disclosure provides a method of processing video content. An exemplary method includes receiving a bitstream including encoded video data; determining a first parameter of the coding block; determining one or more second parameters associated with a delta quantization parameter (QP) value or a chroma quantization parameter offset value from the first parameter; and, according to the one or more second parameters, determining at least one of the delta quantization parameter value or the chroma quantization parameter offset value.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese invention patent application No. 202080065346.3, filed on August 21, 2020, entitled "Quantization Parameter Identification in Video Processing".

[0002] Cross-reference to related applications This disclosure claims priority to U.S. Provisional Application No. 62 / 903,251, filed September 20, 2019, the entire contents of which are incorporated herein by reference. Technical Field

[0003] This disclosure relates primarily to video processing, and more specifically, to methods and systems for processing video content using quantization parameters. Background Technology

[0004] Video is a set of still images (or "frames") that capture visual information. To reduce storage memory and transmission bandwidth, video can be compressed before storage or transmission and decompressed before display. The compression process is usually called encoding, and the decompression process is usually called decoding. Currently, there are various video coding formats that use standardized video coding technologies, the most common being those based on prediction, transform, quantization, entropy coding, and in-loop filtering. These video coding standards, such as HEVC / H.265 (High Efficiency video coding), VVC / H.266 (Versatile video coding), and AVS (AVS standards), are defined by standardization organizations that develop specific video coding formats. With the application of more and more advanced video coding technologies in these standards, the coding efficiency of new video coding standards is also increasing. Summary of the Invention

[0005] Embodiments of this disclosure provide a computer-implemented method for processing video content, comprising: receiving a bitstream containing encoded video data; determining a first parameter of an encoded block; determining one or more second parameters associated with an incremental quantization parameter (QP) value or a colorimetric quantization parameter offset value based on the first parameter; and determining at least one of the incremental quantization parameter value or the colorimetric quantization parameter offset value based on the one or more second parameters.

[0006] Embodiments of this disclosure also provide a system for processing video content, comprising: a memory storing a set of instructions; and at least one processor configured to execute the set of instructions, causing the system to: receive a bitstream containing encoded video data; determine a first parameter of an encoded block; determine one or more second parameters associated with an incremental quantization parameter (QP) value or a colorimetric quantization parameter offset value based on the first parameter; and determine at least one of the incremental quantization parameter value or the colorimetric quantization parameter offset value based on the one or more second parameters.

[0007] Embodiments of this disclosure also provide a non-volatile computer-readable medium storing an instruction set executed by at least one processor of a computer system, wherein execution of the instruction set causes the computer system to perform a method comprising: receiving a bitstream containing encoded video data; determining a first parameter of an encoded block; determining, based on the first parameter, one or more second parameters associated with an incremental quantization parameter (QP) value or a colorimetric quantization parameter offset value; and determining, based on the one or more second parameters, at least one of the incremental quantization parameter value or the colorimetric quantization parameter offset value. Attached Figure Description

[0008] Embodiments and aspects of this disclosure are illustrated in the following detailed description and accompanying drawings. The various features shown in the figures are not drawn to scale.

[0009] FIG. 1 The structure of an exemplary video sequence consistent with the embodiments disclosed in this invention is shown.

[0010] FIG. 2A A schematic diagram illustrating an exemplary encoding process of a hybrid video encoding system consistent with embodiments of this disclosure is shown.

[0011] FIG. 2B A schematic diagram of another exemplary encoding process of a hybrid video encoding system consistent with embodiments of this disclosure is shown.

[0012] FIG. 3A A schematic diagram illustrating an exemplary decoding process of a hybrid video coding system consistent with embodiments of the present invention is shown.

[0013] FIG. 3B A schematic diagram of another exemplary decoding process of a hybrid video coding system consistent with embodiments of this disclosure is shown.

[0014] FIG. 4 This is a block diagram of an exemplary apparatus for encoding or decoding video, consistent with embodiments of this disclosure.

[0015] FIG. 5An example of a Picture Parameter Set (PPS) syntax for incremental quantization parameters (QP) of coding units (CUs) consistent with embodiments of the present invention is shown.

[0016] FIG. 6-1 , FIG. 6-2 and FIG. 6-3 An example of a coding tree-level syntax for incremental quantization parameters of coding units, consistent with embodiments of the present invention, is shown.

[0017] FIG. 7-1 , FIG. 7-2 and FIG. 7-3 An example of a transform unit-level syntax for incremental quantization parameters of an encoding unit, consistent with embodiments of this disclosure, is shown.

[0018] FIG. 8 An example of a title sequence syntax consistent with embodiments of this disclosure is shown.

[0019] FIG. 9 Another example of a title sequence syntax consistent with embodiments of this disclosure is shown.

[0020] FIG. 10 Another example of a title sequence syntax consistent with embodiments of this disclosure is shown.

[0021] FIG. 11 Another example of frame header syntax consistent with embodiments of this disclosure is shown.

[0022] FIG. 12 Examples of PPS syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv consistent with embodiments of this disclosure are shown.

[0023] FIG. 13 An example of the intro syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv, consistent with embodiments of this disclosure, is shown.

[0024] FIG. 14 An example of the syntax for sps_max_mtt_depth_luma consistent with embodiments of this disclosure is shown.

[0025] FIG. 15 An example of the syntax for pps_max_mtt_depth_luma consistent with embodiments of this disclosure is shown.

[0026] FIG. 16Examples of SPS syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv consistent with embodiments of this disclosure are shown.

[0027] FIG. 17 An example of the intro syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv, consistent with embodiments of this disclosure, is shown.

[0028] FIG. 18 An example of the syntax for sps_max_mtt_depth_luma consistent with embodiments of this disclosure is shown.

[0029] FIG. 19 Another example of the syntax for sps_max_mtt_depth_luma, consistent with embodiments of this disclosure, is shown.

[0030] FIG. 20 An example of the syntax for pps_max_mtt_depth_luma consistent with embodiments of this disclosure is shown.

[0031] FIG. 21 This is a flowchart of an exemplary computer implementation method for processing video content, consistent with embodiments of this disclosure. Detailed Implementation

[0032] Video encoding systems are commonly used to compress digital video signals, for example, to reduce the storage space or transmission bandwidth consumption associated with these signals. With the increasing popularity of high-definition video (such as 1920×1080 pixel resolution) in various video compression applications—such as online video streaming, video conferencing, and video surveillance—the development of video encoding tools that can improve the efficiency of video data compression is an ongoing need.

[0033] For example, video surveillance applications are increasingly widely used in many scenarios such as security, traffic, and environmental monitoring, and the number and resolution of monitoring devices are also growing rapidly. Many video surveillance applications prefer to provide users with high-definition video to obtain more information, as high-definition video has more pixels per frame to capture this information. However, high-definition video bitstreams may have higher bitrates, requiring high-bandwidth transmission and large storage space. For example, a surveillance video stream with an average resolution of 1920×1080 may require up to 4Mbps of bandwidth for real-time transmission. In addition, video surveillance typically involves continuous 24 / 7 monitoring, and storing video data poses a significant challenge to storage systems. The high bandwidth and large-capacity storage requirements of high-definition video have become the main limitations for its large-scale deployment in video surveillance.

[0034] Video is a series of still images (or "frames") arranged chronologically to store visual information. Video capture devices (such as cameras) can be used to capture and store these images in a time series, and video playback devices (such as televisions, computers, smartphones, tablets, video players, or any end-user terminal with a display capability) can be used to display these images in a time series. Furthermore, in some applications, video capture devices can transmit captured video to video playback devices (e.g., computers with monitoring capabilities) in real time, for purposes such as surveillance, conferencing, or live streaming.

[0035] To reduce the storage space and transmission bandwidth required for such applications, the video can be compressed before storage and transmission, and decompressed before display. Compression and decompression can be implemented by software executed by a processor (e.g., a processor in a general-purpose computer) or dedicated hardware. The module used for compression is typically called an "encoder," and the module used for decompression is typically called a "decoder." Encoders and decoders can be collectively referred to as "codecs." Encoders and decoders can be implemented in any of a variety of suitable hardware, software, or combinations thereof. For example, hardware implementations of encoders and decoders can include circuitry such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, or any combination thereof. Software implementations of encoders and decoders can include program code, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process embedded in a computer-readable medium. Video compression and decompression can be implemented using various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, H.26x series, etc. In some applications, a codec can decompress a video from a first encoding standard and then recompress the decompressed video using a second encoding standard. In this case, the codec can be called a "transcoder".

[0036] Video encoding processes identify and retain useful information that can be used to reconstruct images, while ignoring unimportant information during reconstruction. If the ignored, unimportant information cannot be fully reconstructed, such an encoding process can be called "lossy." Otherwise, it can be called "lossless." Most encoding processes are lossy, a trade-off to reduce required storage space and transmission bandwidth.

[0037] Useful information about an image frame being encoded (referred to as the "current frame") includes changes relative to a reference frame (e.g., an image frame that has been previously encoded and reconstructed). These changes can include changes in pixel position, brightness, or color, with positional changes being of most interest. The positional changes of a set of pixels representing an object can reflect the movement of that object between the reference frame and the current frame.

[0038] A frame that does not reference any other frame (i.e., it is its own reference frame) is called an "I-frame". A frame that uses a previous frame as a reference frame is called a "P-frame". A picture frame that uses both a previous frame and a future frame as reference frames (i.e., the reference is "bidirectional") is called a "B-frame".

[0039] As mentioned earlier, video surveillance using high-definition video faces the challenge of requiring high bandwidth and large storage. To address this issue, the bit rate of video encoding can be reduced. Among I-, P-, and B-frames, I-frames have the highest bit rate. Since the background of most surveillance videos is almost static, one way to reduce the overall bit rate of the encoded video is to use fewer I-frames for video encoding.

[0040] However, the improvement from using fewer I-frames is likely negligible because I-frames are typically not a major component in encoded video. For example, in a typical video bitstream, the ratio of I-, B-, and P-frames might be 1:20:9, with I-frames accounting for less than 10% of the total bitrate. In other words, in the example above, even if all I-frames were removed, the bitrate reduction would not exceed 10%.

[0041] This disclosure provides methods, apparatus, and systems for processing video content using adaptive resolution variation (ARC). Unlike inaccurate phase caused by phase rounding, embodiments of this disclosure provide a pixel thinning process based on fixed phase interpolation to reduce algorithmic and hardware complexity while maintaining accuracy.

[0042] FIG. 1 The structure of an exemplary video sequence 100 consistent with embodiments of this disclosure is shown. The video sequence 100 can be live video or video that has already been acquired and archived. The video 100 can be real-life video, computer-generated video (such as computer game video), or a combination of both (such as real-life video with augmented reality effects). The video sequence 100 can be input from a video acquisition device (such as a camera), a video archive containing previously acquired video (such as a video file stored on a storage device), or a video feed interface (such as a video broadcast transceiver) receiving video from a video content provider.

[0043] like FIG. 1As shown, video sequence 100 may include a series of frames arranged along the time axis, including frames 102, 104, 106, and 108. Frames 102-106 are consecutive, with more frames between frames 106 and 108. FIG. 1 In the figure, frame 102 is an I-frame, and its reference frame is frame 102 itself. Frame 104 is a P-frame, and its reference frame is frame 102, as shown by the arrows in the figure. Figure 106 is a B-frame, and its reference frames are frames 104 and 108, as shown by the arrows in the figure. In some embodiments, the reference frame of a frame (e.g., frame 104) may not be directly before or after the frame. For example, the reference frame of frame 104 may be a frame preceding frame 102. It should be noted that the reference frames of frames 102-106 are merely examples, and the embodiments of reference frames in this disclosure are not limited to these examples. FIG. 1 The example shown.

[0044] Typically, due to the computational complexity of such tasks, video codecs do not encode or decode the entire frame at once. Instead, they segment the frame into basic segments and encode or decode the image segment by segment. These basic segments are referred to herein as Basic Processing Units (BPUs). For example, FIG. 1 Structure 110 in the figure shows an example structure of frames of video sequence 100 (e.g., any of frames 102-108). In structure 110, a frame is divided into 4×4 basic processing units, the boundaries of which are indicated by dashed lines. In some embodiments, basic processing units may be referred to as “macroblocks” in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC), or as “coding tree units” (“CTUs”) in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The size of the basic processing unit in the figure can be a variable size in an image frame, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or pixels of arbitrary shape and size. The size and shape of the basic processing units can be chosen for a frame based on a balance between coding efficiency and the degree of detail to be preserved in the basic processing units.

[0045] A basic processing unit can be a logical unit, which comprises a set of different types of video data stored in computer memory (such as a video frame buffer). For example, a basic processing unit for a color picture frame might contain a luma component (Y) representing colorless luminance information, one or more chrominance components (e.g., Cb and Cr) representing color information, and associated syntax elements. The luma and chrominance components can have the same basic processing unit size. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luma and chrominance components can be referred to as “code tree blocks” (CTBs). Any operation performed on a basic processing unit can be repeatedly performed on its luma and chrominance components.

[0046] Video encoding involves multiple stages; see detailed examples below. FIG. 2A-2B and FIG. 3A-3B For each stage, the size of the basic processing unit may still be too large to process, and therefore can be further divided into segments referred to herein as "basic processing subunits". In some embodiments, the basic processing subunit may be referred to as a "block" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC), or as a "coding unit" ("CUs") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing subunit may have the same or smaller size as the basic processing unit. Similar to the basic processing unit, the basic processing subunit is also a logical unit, which may comprise a set of different types of video data (e.g., Y, Cb, Cr, and associated syntax elements) stored in computer memory (e.g., a video frame buffer). Any operation performed on the basic processing subunit can be repeatedly performed on its luminance and chrominance components. It should be noted that this division can be further implemented to more advanced levels as processing needs require. It should also be noted that different stages may use different schemes to divide the basic processing units.

[0047] For example, in the pattern decision-making stage (see details) FIG. 2B As shown, the encoder can determine the prediction mode (e.g., intra-frame prediction or inter-frame prediction) for a basic processing unit, but may be unable to make such a decision due to the unit being too large. The encoder can break down the basic processing unit into multiple basic processing subunits (e.g., CUs in H.265 / HEVC or H.266 / VVC) and determine a prediction type for each basic processing subunit.

[0048] To give another example, in the prediction phase (such as...) FIG. 2AAs shown, the encoder can perform prediction operations at the level of basic processing subunits (such as CUs). However, in some cases, the basic processing subunits may still be too large to handle. The encoder can further divide the basic processing subunits into smaller segments (e.g., referred to as "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC), at which prediction operations can be performed.

[0049] To give another example, in the transformation phase (see details...) FIG. 2A The encoder can perform transform operations on residual basic processing subunits (such as CUs). However, in some cases, the basic processing subunits may still be too large to process. The encoder can further divide the basic processing subunits into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC), at which level transform operations can be performed. It is important to note that the partitioning scheme of the same basic processing subunit may differ between the prediction and transform phases. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU can have different sizes and numbers.

[0050] exist FIG. 1 In structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, and the boundaries of the sub-units are indicated by dashed lines. In different schemes, different basic processing units of the same image frame can be divided into different basic processing sub-units.

[0051] In some implementations, to provide parallel processing and fault tolerance for video encoding and decoding, image frames can be divided into multiple regions for processing. This allows the encoding or decoding of a specific region of the image frame to be independent of information from any other region of the frame. In other words, each region in the frame can be processed independently. This allows the codec to process different regions of the image in parallel, thereby improving encoding efficiency. Furthermore, when data in one region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image frame without relying on the corrupted or lost data, thus providing fault tolerance. In some video coding standards, an image frame can be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles." It should also be noted that different image frames in video sequence 100 can have different division schemes for dividing an image frame into multiple regions.

[0052] For example, in FIG. 1In the diagram, structure 110 is divided into three regions: 114, 116, and 118. The boundaries of these regions are represented by solid lines within structure 110. Region 114 includes four basic processing units. Regions 116 and 118 each include six basic processing units. It should be noted that... FIG. 1 The basic processing unit, basic processing subunit, and region of the structure 110 are merely examples, and this disclosure does not limit its specific implementation.

[0053] FIG. 2A A schematic diagram of an exemplary encoding process 200A consistent with an embodiment of the present invention is shown. According to process 200A, the encoder can encode video sequence 202 into video bitstream 228. FIG. 1 Similar to video sequence 100, video sequence 202 may include a set of picture frames arranged in chronological order (referred to as the "initial frame"). And... FIG. 1 Similar to structure 110, each initial frame of video sequence 202 can be divided by the encoder into basic processing units, basic processing subunits, or regions for processing. In some embodiments, the encoder is capable of performing process 200A on each raw frame of video sequence 202 at the basic processing unit level. For example, the encoder can perform process 200A iteratively, wherein the encoder can encode one basic processing unit in one iteration of process 200A. In some embodiments, the encoder can perform process 200A in parallel on regions (e.g., regions 114-118) of each initial frame of video sequence 202.

[0054] exist FIG. 2AIn this process, the encoder can input the basic processing unit (referred to as the "initial BPU") of the initial frame of the video sequence 202 into the prediction stage 204 to generate prediction data 206 and prediction BPU 208. The encoder can subtract prediction BPU 208 from the initial BPU to obtain residual BPU 210. The encoder can provide residual BPU 210 to the transform stage 212 and quantization stage 214 to generate quantized transform coefficients 216. The encoder can input prediction data 206 and quantized transform coefficients 216 into the binary encoding stage 226 to generate video bitstream 228. Components 202, 204, 206, 208, 210, 212, 214, 216, 226, and 228 can be referred to as the "forward path". In process 200A, after quantization stage 214, the encoder can provide the quantized transform coefficients 216 to the inverse quantization stage 218 and inverse transform stage 220 to generate reconstructed residual BPU 222. The encoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224, which is used in the prediction stage 204 of the next iteration of process 200A. Components 218, 220, 222, and 224 of process 200A can be referred to as "reconstruction paths". Reconstruction paths can be used to ensure that the encoder and decoder use the same reference data for prediction.

[0055] The encoder can iteratively execute process 200A to encode each initial BPU of the initial frame (in the forward path) and generate a prediction reference 224 for encoding the next initial BPU of the initial frame (in the reconstruction path). After encoding all the initial BPUs of the initial frame, the encoder can continue to encode the next picture frame in the video sequence 202.

[0056] Referring to process 200A, the encoder can receive a video sequence 202 generated by a video acquisition device (such as a camera). The term "receive" as used herein can refer to any action of receiving, inputting, acquiring, retrieving, obtaining, reading, accessing, or otherwise inputting data.

[0057] In prediction phase 204, during the current iteration, the encoder may receive an initial BPU and prediction reference 224, and perform prediction operations to generate prediction data 206 and prediction BPU 208. Prediction reference 224 can be obtained from the reconstruction path of the previous iteration of process 200A. The purpose of prediction phase 204 is to reduce information redundancy by extracting prediction data 206, which can be used to reconstruct the initial BPU into prediction BPU 208 from prediction data 206 and prediction reference 224.

[0058] Ideally, the predicted BPU 208 should be identical to the initial BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 is typically slightly different from the initial BPU 208. To record these differences, after generating the predicted BPU 208, the encoder can subtract it from the initial BPU to generate a residual BPU 210. For example, the encoder can subtract the corresponding pixel values ​​(such as grayscale or RGB values) of the predicted BPU 208 from the pixel values ​​of the initial BPU. Each pixel in the residual BPU 210 can have a residual value, which is the result of subtracting the corresponding pixel of the predicted BPU 208 from the initial BPU. Compared to the initial BPU, the predicted data 206 and the residual BPU 210 can have fewer bits, but can be used for the reconstruction of the initial BPU without a significant loss of quality. Therefore, the initial BPU is compressed.

[0059] To further compress the residual BPU 210, in the transform phase 212, the encoder can reduce its spatial redundancy by decomposing the residual BPU 210 into a set of two-dimensional “basic patterns,” each of which is associated with a “transform coefficient.” The basic patterns can have the same size (e.g., the size of the residual BPU 210). Each basic pattern can represent a variational frequency component of the residual BPU 210 (e.g., the brightness variation frequency). No basic pattern can be replicated from any combination of any other basic patterns (e.g., a linear combination). In other words, the decomposition decomposes the variation of the residual BPU 210 into a frequency domain. This decomposition is analogous to the discrete Fourier transform of a function, where the basic patterns are analogous to the basis functions of the discrete Fourier transform (e.g., trigonometric functions), and the transform coefficients are analogous to the coefficients associated with the basis functions.

[0060] Different transform algorithms can use different base patterns. Various transform algorithms can be used in transform stage 212, such as discrete cosine transform, discrete sine transform, or similar transforms. The transform in transform stage 212 is reversible. That is, the encoder can recover the residual BPU210 through the inverse operation of the transform (called the "inverse transform"). For example, to recover a pixel of the residual BPU210, the value of the corresponding pixel in the base pattern can be multiplied by its respective correlation coefficient, and then the products are summed to obtain a weighted sum. For a given video coding standard, both the encoder and the decoder can use the same transform algorithm (and therefore the same base pattern). Therefore, the encoder can record only the transform coefficients, and the decoder can reconstruct the residual BPU210 without receiving the encoder's base pattern. Compared to the residual BPU210, the transform coefficients can have fewer bits, but they can be used to reconstruct the residual BPU210 without significant quality degradation. Thus, the residual BPU210 is further compressed.

[0061] The encoder can further compress the transform coefficients in the quantization stage 214. During the transform process, different fundamental patterns can represent different frequencies of change (e.g., brightness change frequencies). Since the human eye is generally better at recognizing low-frequency changes, the encoder can ignore information about high-frequency changes without causing a significant degradation in decoding quality. For example, in the quantization stage 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (called a "quantization parameter") and rounding the quotient to its nearest integer. This operation converts some transform coefficients of the high-frequency fundamental patterns to zero and the transform coefficients of the low-frequency fundamental patterns to smaller integers. The encoder can ignore the zero-valued quantized transform coefficients 216, thereby further compressing the transform coefficients. The quantization process is also reversible, where the quantized transform coefficients 216 can be reconstructed back to the transform coefficients through the inverse operation of quantization (referred to as "inverse quantization").

[0062] Because the encoder ignores the remainders of these divisions during rounding operations, quantization stage 214 can be lossy. Typically, quantization stage 214 causes the most information loss in process 200A. The greater the information loss, the fewer bits are required for the quantization transform coefficients 216. To obtain different levels of information loss, the encoder can use different quantization parameter values ​​or any other parameter values ​​during the quantization process.

[0063] In the binary encoding stage 226, the encoder may encode the prediction data 206 and the quantization transform coefficients 216 using binary encoding techniques, such as entropy coding, variable-length coding, arithmetic coding, Huffman coding, background-adaptive binary arithmetic coding, or any other lossless or lossy compression algorithm. In some embodiments, in addition to the prediction data 206 and the quantization transform coefficients 216, the encoder may also encode other information in the binary encoding stage 226, such as the prediction mode used in the prediction stage 204, the parameters of the prediction operation, the type of change in the transform stage 212, the parameters of the quantization process (e.g., quantization parameters), the encoder control parameters (e.g., bitrate control parameters), or similar parameters. The encoder may use the output data of the binary encoding stage 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 may be further packaged for network transmission.

[0064] Referring to the reconstruction path of process 200A, in the inverse quantization stage 218, the encoder can perform inverse quantization on the quantization transform coefficients 216 to generate reconstruction transform coefficients. In the inverse transform stage 220, the encoder can generate reconstruction residual BPU222 based on the reconstruction transform coefficients. The encoder can add the reconstruction residual BPU222 to the prediction BPU208 to generate prediction reference 224, which is used in the next iteration of process 200A.

[0065] It should be noted that other variations of process 200A can also be used to encode video sequence 202. In some embodiments, the various stages of process 200A can be executed by the encoder in different orders. In some embodiments, one or more stages of process 200A can be combined into a single stage. In some embodiments, a single stage of process 200A can be divided into multiple stages. For example, transform stage 212 and quantization stage 214 can be combined into a single stage. In some embodiments, process 200A may include additional stages. In some embodiments, process 200A may be omitted. FIG. 2A One or more stages in the process.

[0066] FIG. 2B A schematic diagram of another exemplary encoding process 200B consistent with embodiments of this disclosure is shown. Process 200B can be modified from process 200A. For example, process 200B can be used with an encoder conforming to hybrid video coding standards (such as the H.26x series). Compared to process 200A, the forward path of process 200B adds a mode decision stage 230 and divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044. The reconstruction path of process 200B also includes a loop filter stage 232 and a buffer 234.

[0067] Generally, prediction techniques can be divided into two categories: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-frame prediction or "internal prediction") can use pixels from one or more encoded neighboring BPUs in the same frame to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include the neighboring BPUs. The spatial prediction can reduce the inherent spatial redundancy of the image frame. Temporal prediction (e.g., inter-frame prediction or "inter-prediction") can use one or more regions from an encoded frame to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include the encoded frame. The temporal prediction can reduce the inherent temporal redundancy of the frame.

[0068] Referring to process 200B, in the forward path, the encoder performs prediction operations in both the spatial prediction phase 2042 and the temporal prediction phase 2044. For example, in the spatial prediction phase 2042, the encoder can perform the intraprediction. For the initial BPU of the image frame being encoded, prediction reference 224 can include one or more adjacent BPUs that have been encoded (in the forward path) and reconstructed (in the reconstruction path) in the same image frame. The encoder can generate a predicted BPU 208 by extrapolating from the adjacent BPUs. The extrapolation technique can include, for example, linear extrapolation or interpolation, polynomial extrapolation or interpolation, or similar methods. In some embodiments, the encoder can perform the extrapolation at the pixel level, for example, extrapolating the value of the corresponding pixel for each pixel of the predicted BPU 208. The adjacent BPUs used for prediction can be located in different directions relative to the initial BPU, such as in the vertical direction (e.g., above the initial BPU), the horizontal direction (e.g., to the left of the initial BPU), the diagonal direction (e.g., the lower left, lower right, upper left, or upper right of the initial BPU), or any direction defined in the video coding standard used. For the intraprediction, the prediction data 206 may include, for example, the positions (e.g., coordinates) of the adjacent BPUs used, the sizes of the adjacent BPUs used, the predicted parameters, the orientation of the adjacent BPUs used relative to the initial BPU, etc.

[0069] For example, in the timing prediction phase 2044, the encoder can perform inter-frame prediction. For an initial BPU of a current frame, the prediction reference 224 can contain one or more encoded (in the forward path) and reconstructed (in the reconstruction path) picture frames (referred to as "reference frames"). In some embodiments, a reference frame can be encoded and reconstructed one by one using BPUs. For example, the encoder can add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a reconstructed BPU. Once all reconstructed BPUs for the same picture frame have been generated, the encoder can generate a reconstructed picture frame as a reference frame. The encoder can perform a "motion estimation" operation, searching for a matching region within the scope of the reference frame (referred to as a "search window"). The position of the search window in the reference frame can be determined based on the position of the initial BPU in the current frame. For example, the search window can be located in the middle of the reference frame at a position with the same coordinates as the initial BPU of the current frame, and can extend outwards by a predetermined distance. When the encoder identifies a region similar to the initial BPU within the search window (e.g., using a recursive algorithm, block matching algorithm, or similar method), the encoder can determine that region as a matching region. The matching region may have a different size (e.g., less than, equal to, greater than, or different in shape) from the initial BPU. Since the reference frame and the current frame are temporally separated on the timeline (e.g., ...), ...FIG. 1 As shown), the matching region can be considered to have "moved" to the initial BPU position over time. The encoder can record the direction and distance of this movement as a "motion vector." When using multiple reference frames (such as...), FIG. 1 In frame 106 of the reference frame, the encoder can search for a matching region for each reference frame and determine its associated motion vector. In some embodiments, the encoder can assign weights to the pixel values ​​of the matching regions of the respective matching reference frames.

[0070] Motion estimation can be used to identify a wide variety of motions, such as translation, rotation, scaling, etc. For inter-regional prediction, prediction data 206 may include, for example, the location (e.g., coordinates) of the matching region, the motion vector associated with the matching region, the number of reference frames, the weights associated with the reference frames, etc.

[0071] To generate the predicted BPU 208, the encoder can perform a "motion compensation" operation. This motion compensation can reconstruct the predicted BPU 208 based on the predicted data 206 (e.g., motion vectors) and the predicted reference 224. For example, the encoder can move the matching region of the reference frame according to the motion vector, and the initial BPU of the current frame can be predicted through the motion vector encoder. When using multiple reference frames (e.g....) FIG. 1 In frame 106 of the reference frame, the encoder can move the matching region of the reference frame according to the corresponding motion vector and the average pixel value of the matching region. In some embodiments, if the encoder has assigned weights to the pixel values ​​of the matching regions of their respective matching reference frames, the encoder can perform a weighted summation of the pixel values ​​of the moved matching region.

[0072] In some embodiments, the inter-prediction can be unidirectional or bidirectional. Unidirectional inter-prediction can use one or more reference frames in the same time direction relative to the current frame. For example, FIG. 1 Figure 104 in the figure is a one-way prediction frame, where the reference frame (i.e., frame 102) precedes Figure 104. Two-way prediction can use one or more reference frames in two time directions relative to the current frame. For example, FIG. 1 Frame 106 in the image is a bidirectional prediction frame, wherein the reference frames (i.e., frames 104 and 108) are in two time directions relative to frame 104.

[0073] Continuing with the forward path of process 200B, after spatial prediction stage 2042 and temporal prediction stage 2044, in mode decision stage 230, the encoder can select a prediction mode (e.g., one of intra-prediction or inter-prediction) for the current iteration of process 200B. For example, the encoder can perform rate-distortion optimization techniques, by which, based on the bit rate of the candidate prediction modes and the distortion of the reconstructed reference frame under the candidate prediction modes, the encoder can select a prediction mode to minimize the value of the cost function. According to the selected prediction mode, the encoder can generate the corresponding prediction BPU 208 and prediction data 206.

[0074] In the reconstruction path of process 200B, if the intra-prediction mode is selected in the forward path, after generating prediction reference 224 (e.g., the current BPU has already been encoded and reconstructed in the current frame), the encoder can directly input prediction reference 224 into spatial prediction stage 2042 for later use (e.g., to extrapolate the next BPU in the current frame). If the inter-prediction mode is selected in the forward path, after generating prediction reference 224 (e.g., the current frame where all BPUs have been encoded and reconstructed), the encoder can provide prediction reference 224 to loop filter stage 232, whereby the encoder can apply a loop filter to prediction reference 224 to reduce or eliminate distortion (e.g., blockiness) introduced by the inter-prediction. The encoder can apply various loop filter techniques in loop filter stage 232, such as deblocking, adaptive sampling offset, adaptive loop filter, or similar techniques. The loop-filtered reference frame can be stored in buffer 234 (or "decoded frame buffer") for later use (e.g., as an inter-prediction reference frame for a future frame of video sequence 202). The encoder can store one or more reference frames in buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the encoder can encode parameters of the loop filter (e.g., loop filter strength), as well as quantization transform coefficients 216, prediction data 206, and other information in the binary encoding stage 226.

[0075] FIG. 3A A schematic diagram of an exemplary decoding process 300A consistent with an embodiment of the present invention is shown. Process 300A may be... FIG. 2A The decompression process corresponds to the compression process 200A in the code. In some embodiments, process 300A can be similar to the reconstruction path of process 200A. The decoder can decode the video bitstream 228 into video stream 304 according to process 300A. Video stream 304 can be very similar to video sequence 202. However, due to information loss during compression and decompression (e.g., FIG. 2A-Quantization stage 214 in AB), typically, video stream 304 is not exactly the same as video stream 202. Similar to... FIG. 2A-2B The decoder can execute process 300A and process 200B at the Basic Processing Unit (BPU) level for each encoded frame in the video bitstream 228. For example, the decoder can execute process 300A iteratively, wherein the decoder can decode one BPU in one iteration of process 300A. In some embodiments, the decoder is capable of executing process 300A in parallel for a region (e.g., region 114-118) of each encoded frame of the video bitstream 228.

[0076] exist FIG. 3A In this process, the decoder may provide a portion of the video bitstream 228 associated with a basic processing unit (referred to as a "coded BPU") of a coded frame to a binary decoding stage 302. In binary decoding stage 302, the decoder may decode this portion into prediction data 206 and quantization transform coefficients 216. The decoder may provide the quantization transform coefficients 216 to an inverse quantization stage 218 and an inverse transform stage 220 to generate a reconstructed residual BPU 222. The decoder may provide the prediction data 206 to a prediction stage 204 to generate a prediction BPU 208. The decoder may add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224. In some embodiments, the prediction reference 224 may be stored in a buffer (e.g., a decoded frame buffer in computer memory). The decoder may provide the prediction reference 224 to the prediction stage 204 to perform a prediction operation in the next iteration of process 300A.

[0077] The decoder can iteratively process process 300A to decode each encoded BPU of the encoded frame and generate a prediction reference 224 for encoding the next encoded BPU of the encoded frame. After decoding all encoded BPUs of the encoded frame, the decoder can output the image frame to video stream 304 for display and begin decoding the next encoded frame in video bitstream 228.

[0078] In binary decoding stage 302, the decoder can perform inverse operations on the binary encoding techniques used by the encoder (such as entropy coding, variable-length coding, arithmetic coding, Huffman coding, background adaptive binary arithmetic coding, or any other lossless compression algorithm). In some embodiments, in addition to the prediction data 206 and quantization transform coefficients 216, the decoder can also decode other information in binary decoding stage 302, such as prediction mode, parameters of the prediction operation, transform type, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bitrate control parameters), or similar parameters. In some embodiments, if the video bitstream 228 is transmitted over the network in packet form, the decoder can unpack it before sending the video bitstream 228 into binary decoding stage 302.

[0079] FIG. 3B A schematic diagram of another exemplary decoding process 300B consistent with an embodiment of the present invention is shown. Process 300B can be obtained by improving upon 300A. For example, process 300B can be used by a decoder conforming to a hybrid video coding standard (e.g., H.26x series). Compared to process 300A, process 300B additionally divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and adds a loop filter stage 232 and a buffer 234.

[0080] In process 300B, for the encoded basic processing unit (referred to as the "current BPU") of the encoded frame being decoded (referred to as the "current frame"), the prediction data 206 decoded by the decoder from binary decoding stage 302 can include various types of data depending on the prediction mode used by the encoder to encode the current BPU. For example, if the encoder uses intra-prediction to encode the current BPU, the prediction data 206 can include a prediction mode identifier indicating intra-prediction (e.g., a flag value), parameters of the intra-prediction operation, or something similar. Parameters of the intra-prediction operation can include, for example, the positions (e.g., coordinates) of one or more neighboring BPUs used as references, the sizes of neighboring BPUs, extrapolation parameters, the orientation of neighboring BPUs relative to the initial BPU, and so on. As another example, if the encoder uses inter-prediction to encode the current BPU, the prediction data 206 can contain a prediction mode identifier indicating the inter-prediction (e.g., a flag value), parameters of the inter-prediction operation, or something similar. The parameters for the inter-prediction operation may include, for example, the number of reference frames associated with the current BPU, the weights associated with each reference frame, the position (e.g., coordinates) of one or more matching regions in each reference frame, one or more motion vectors associated with each matching region, or something similar.

[0081] Based on the prediction mode identifier, the decoder can perform spatial prediction (e.g., intra-prediction) in the spatial prediction stage 2042 or temporal prediction (e.g., inter-prediction) in the temporal prediction stage 2044. Details regarding the execution of such spatial or temporal prediction are already provided in [the relevant documentation]. FIG. 2B As described above, it will not be repeated below. After performing this spatial or temporal prediction, the decoder can generate a prediction BPU208. FIG. 3A As shown, the decoder can add the predicted BPUu208 and the reconstructed residual BPU222 to generate the prediction reference 224.

[0082] In process 300B, the decoder can provide prediction reference 224 to either spatial prediction stage 2042 or temporal prediction stage 2044 for prediction operations in the next iteration of process 300B. For example, if the current BPU decoding uses intra-predictive decoding in spatial prediction stage 2042, after generating prediction reference 224 (e.g., the decoded current BPU), the decoder can directly provide prediction reference 224 to spatial prediction stage 2042 for subsequent use (e.g., for estimating the next BPU in the current frame). If inter-predictive decoding of the current BPU is used in temporal prediction stage 2044, after generating prediction reference 224 (e.g., a reference frame where all BPUs have been decoded), the encoder can provide prediction reference 224 to loop filter 232 to reduce or eliminate distortion (e.g., blockiness). The decoder can then proceed according to... FIG. 2B The described method applies a loop filter to prediction reference 224. The loop-filtered reference frame can be stored in buffer 234 (e.g., a decoded frame buffer in computer memory) for later use (e.g., as an inter-prediction reference frame for future encoded frames in video bitstream 228). The decoder can store one or more reference frames in buffer 234 for use in the temporal prediction stage 2044. In some embodiments, when the prediction mode identifier of prediction data 206 indicates that inter-prediction is used to encode the current BPU, the prediction data may further include parameters of the loop filter (e.g., loop filter strength).

[0083] FIG. 4 This is a block diagram of an exemplary device 400 for video encoding or decoding, consistent with embodiments of the present invention. FIG. 4As shown, device 400 may include processor 402. When processor 402 executes the instruction set described herein, device 400 may become a dedicated machine for video encoding or decoding. Processor 402 may be any type of circuit suitable for operating or processing information. For example, processor 402 may include any number and combination of central processing units (CPU), graphics processing units (GPUs), neural processing units (“NPUs”), microcontroller units (MCUs), optical processors, programmable logic controllers, microcontrollers, microprocessors, digital signal processors, IP cores, programmable logic arrays (PLAs), programmable array logic (PALs), general-purpose array logic (GALs), complex programmable logic devices (CPLDs), field-programmable gate arrays (FPGAs), system-on-a-chip (SoCs), application-specific integrated circuits (ASICs), etc. In some embodiments, processor 402 may also be a group of processors grouped into single logic components. For example, such as... FIG. 4 As shown, processor 402 may include multiple processors, including processor 402a, processor 402b and processor 402n.

[0084] The device 400 may also include memory 404 configured to store data (e.g., a set of instructions, computer code, intermediate data, etc.). For example, as FIG. 4 As shown, the stored data may include program instructions (e.g., program instructions for implementing various stages in processes 200A, 200B, 300A, or 300B) and data for processing (e.g., video sequence 202, video bitstream 228, or video stream 304). Processor 402 can access the program instructions and data for processing (e.g., via bus 410) and execute the program instructions to perform operations or control on the currently processed data. Memory 404 may comprise a high-speed random access storage device or a non-volatile storage device. In some embodiments, memory 404 may comprise any combination of any number of random access memories (RAM), read-only memories (ROM), optical discs, disks, hard disks, solid-state drives, flash drives, secure digital cards (SD cards), memory sticks, compact flash (CF) cards, or similar. Memory 404 may also be a group of memories as a single logical component. FIG. 4 (Not shown in the image).

[0085] Bus 410 may be a communication device for transmitting data between internal components of device 400, such as an internal bus (e.g., CPU-Memory Bus), an external bus (e.g., Universal Serial Bus Port, Peripheral Component Interconnect Fast Port), or similar devices.

[0086] For ease of explanation and to avoid ambiguity, processor 402 and other data processing circuitry are collectively referred to as "data processing circuitry" in this disclosure. Data processing circuitry can be implemented entirely in hardware, or as a combination of software, hardware, or firmware. Furthermore, data processing circuitry can be a standalone module, or it can be wholly or partially integrated into other components of device 400.

[0087] The device 400 may also include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, intranet, local area network, mobile communication network, etc.). In some embodiments, the network interface 406 may include a network interface controller (NIC), a radio frequency (RF) module, a transceiver, a transceiver, a modem, a router, a gateway, a wired network card, a wireless network card, a Bluetooth network card, an infrared network card, a near field communication (NFC) adapter, a cellular network chip, or similar devices.

[0088] In some embodiments, the device 400 may optionally include a peripheral interface 408 to provide connectivity to one or more peripheral devices. FIG. 4 As shown, peripheral devices may include, but are not limited to, cursor control devices (such as a mouse, touchpad, or touchscreen), keyboards, displays (e.g., cathode ray tube displays, liquid crystal displays, or light-emitting diode displays), video input devices (e.g., cameras or input interfaces connected to video files), or similar items.

[0089] It is important to note that the video codec (e.g., codec execution processes 200A, 200B, 300A, or 300B) can be implemented using any combination of software or hardware modules within the device 400. For example, some or all stages of processes 200A, 200B, 300A, or 300B can be implemented as one or more software modules of the device 400, such as program instructions that can be loaded into memory 404. Another example is that some or all stages of processes 200A, 200B, 300A, or 300B can be implemented using one or more hardware modules of the device 400, such as dedicated data processing circuitry (e.g., FPGA, ASIC, NPU, etc.).

[0090] In VVC, an image frame is divided into one or more tile rows and one or more tile columns. A tile is a sequence of CTUs that covers a rectangular area of ​​the image. Within a tile, CTUs are scanned in the raster scan order within that tile. A slice consists of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of the image frame. Therefore, each vertical slice boundary is also a vertical tile boundary. The horizontal boundary of a slice may not be a tile boundary, but rather consists of the horizontal CTU boundaries within a tile. This occurs when a tile is divided into multiple rectangular slices, each consisting of an integer number of consecutive complete CTU rows within the tile.

[0091] In VVC, the encoded video bitstream—a sequence of bits in the form of Network Abstraction Layer (NAL) units or byte streams—forms one or more coded video sequences (CVS), and each CVS consists of one or more coded layer video sequences (CLVS). A CLVS is a sequence of frame units (PUs), and each frame unit contains exactly one coded frame.

[0092] A PU consists of 0 or 1 Frame Header (PH) NAL units (containing the frame header syntax structure as the payload), 1 coded frame (containing 1 or more Video Coding Layer (VCL) NAL units), and 0 or more other non-VCL NAL units. A VCL NAL unit contains a coded slice, which consists of a slice header and slice data. In VVC, the quantization parameter (QP) can range from 0 to 63, and the initial QP flag can be changed as needed. When a non-zero value for slice_qp_delta is encoded in the slice header, the initial value of SliceQpY is modified at the slice level. Specifically, the value of init_qp_minus26 is modified to ( 26 + QpBdOffsetY) ~ +37. When the size of a transform block is not a power of 4, the processing of the transform coefficients involves modifying the QP or QP levelScale table, instead of multiplying by 181 / 256 (or 181 / 128) to compensate for implicit scaling during the transform process. For transform-ignored blocks, the minimum allowed QP is defined as 4 because the quantization step size becomes 1 when QP = 4.

[0093] Furthermore, the QP value can be changed from one CU to another, or from one quantization group to another. The incremental quantization parameter values ​​for the luminance and chrominance components can be identified separately.

[0094] For each luminance coding block, first, the variable qP Y_PREVExport as follows: —qP is true if one or more of the following conditions are true. Y_PREV Set to equal SliceQpY: —The current quantization group is the first quantization group in a certain bar.

[0095] —The current quantization group is the first quantization group in a certain block slice.

[0096] —Otherwise, qP Y_PREV Set to the luminance quantization parameter QpY(), which is equal to the luminance coding unit of the last luminance coding unit in the previous quantization group in the decoding order.

[0097] Second, variable qP Y_A Export in the following manner: —qP is true if one or more of the following conditions are true. Y_A Set to equal qP Y_PREV : —The left neighboring block of the current quantization group is unavailable.

[0098] —The current quantization group and the left neighboring block of the current coding block are in different coding tree blocks (CTBs). —Otherwise, qP Y_A Set to the brightness quantization parameter equal to the encoding unit above the current quantization group.

[0099] Third, variable qP Y_B The export is derived in the following manner: —qP is true if one or more of the following conditions are true. Y_B Set to equal qP Y_PREV : —The upper adjacent block of the current quantization group is unavailable.

[0100] —The current quantization block and its upper neighboring block are in different coding tree blocks (CTBs). —Otherwise, qP Y_B Set to the brightness quantization parameter equal to the left-hand encoding unit of the current quantization group.

[0101] Fourth, if the current quantization group is the first quantization group in the intra-block coding tree (CTB) row, and the upper adjacent block of the current quantization group is available, qPY_PRED Set as qPY_B otherwise qPY_PRED = ( qPY_A+qPY_B+1 )>>1 Derive qP Y_PRED Then, the quantization parameters of the current luminance coding block Qp'Y can be derived from Equation 1: (Formula 1) Where QpBdOffsetY equals 6 sps_bitdepth_minus8, the variable CuQpDeltaVal specifies the difference between the quantization parameter of the luminance coding block and its predicted value.

[0102] In VVC, CuQpDeltaVal is specified as cu_qp_delta_abs (1 2 cu_qp_delta_sign_ flag ), where cu_qp_delta_abs and cu_qp_delta_sign_flag are syntax elements that are marked in the bitstream at the CU level. When cu_qp_delta_abs and cu_qp_delta_sign_flag do not appear in the bitstream, CuQpDeltaVal can be inferred to be 0.

[0103] The quantization parameters of the chroma coding block may differ from those of QpY. Chroma quantization parameters (Qp...) Cb Qp Cr Qp CbCr The offset between the chroma quantization parameter Qp' and the luminance quantization parameter can be identified in the bitstream. In VVC, the chroma quantization parameter Qp' Cb and Qp' Cr and the joint Cb-Cr encoding Qp' CbCr The QP can be derived from the following formulas 2-4: (Formula 2) (Formula 3) (Formula 4) Among them, qP Cb qP Cr and qP CbCr Formulas 5-8 can be derived from a lookup table containing the pruning values ​​of QpY. Formulas 5-8 are: (Formula 5) (Formula. 6) (Formula 7) (Formula. 8) When the cu_chroma_qp_offset_flag flag is equal to 0, CuQpOffsetCb and CuQpOffset... Cr and CuQpOffset CbCr When the cu_chroma_qp_offset_flag flag is set to 0 and equal to 1, the derivation can be performed using formulas 9-11: (Formula 9) (Formula 10) (Formula. 11) Among them, the cu_chroma_qp_offset_flag and cu_chroma_qp_offset_idx flags are syntax elements marked in the bitstream.

[0104] As mentioned above, `cu_qp_delta_abs` and `cu_qp_delta_sign_flag` are flagged for exporting `CuQpDeltaVal`, which can then be used for exporting QP. `cu_chroma_qp_offset_flag`, `cu_chroma_qp_offset_idx`, `cb_qp_offset_list[i]`, `cr_qp_offset_list[i]`, and `joint_cbcr_qp_offset_list[i]` are flagged for generating `CuQpOffset`. Cb CuQpOffset Cr and CuQpOffset CbCr These can be used to derive colorimetric parameters.

[0105] The following describes the relevant syntax signal processing procedures. First, cu_qp_delta_enabled_flag, cu_qp_delta_subdiv, cu_chroma_qp_offset_enabled_flag, and cu_chroma_qp_offset_subdiv can be... FIG. 5 The image parameter set (PPS) shown is identified in the example, which illustrates the exemplary PPS syntax for CU incremental quantization parameters.

[0106] After that, you can FIG. 6-1 , FIG. 6-2 and FIG. 6-3The coding tree layer shown derives the variables IsCuQpDeltaCoded and IsCuChromaQpOffsetCoded, the positions of the quantization parameter groups, and the variables qgOnY and qgOnC. FIG. 6-1 , FIG. 6-2 and FIG. 6-3 An example of the encoding tree syntax for CU incremental quantization parameters is shown.

[0107] Furthermore, depending on the IsCuQpDeltaCoded and IsCuChromaQpOffsetCoded generated at the coding unit level, cu_qp_delta_abs / cu_qp_delta_sign_flag and cu_chroma_qp_offset_flag / cu_chroma_qp_offset_idx are identified at the transform unit, such as... FIG. 7-1 , FIG. 7-2 and FIG. 7-3 As shown in the figure, this diagram illustrates an exemplary transform unit-level syntax for CU incremental quantization parameters.

[0108] exist FIG. 5 In the example shown, `cu_qp_delta_subdiv` specifies the maximum `cbSubdiv` value for the code unit transmitting `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`, while `cu_chroma_qp_offset_subdiv` specifies the maximum `cbSubdiv` value for the code unit transmitting `cu_chroma_qp_offset_flag`. `cbSubdiv` is a variable whose value is related to the size of the code unit. The smaller the code unit, the larger the value of `cbSubdiv`. When a code unit is divided into multiple sub-code units, the value of `cbSubdiv` increases. The range of values ​​for `cu_qp_delta_subdiv` and `cu_chroma_qp_offset_subdiv` depends on a variable called `MaxMttDepthY`, which is generated based on the slice level and slice type.

[0109] (Formula. 12) The slice_max_mtt_hierarchy_depth_luma is specified in the title sequence, such as... FIG. 8 As shown in the figure, this diagram illustrates an exemplary title sequence syntax.

[0110] As mentioned above, to determine the maximum depth of the encoding unit that can pass cu_qp_delta_abs / cu_qp_delta_sign_flag and cu_chroma_qp_offset_flag, the two syntax elements cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are identified at the PPS level. However, the range of values ​​for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv depends on the variable MaxMttDepthY, which is generated based on the slice level and slice type. Therefore, the PPS-level syntax elements depend on the slice-level syntax.

[0111] In the bitstream syntax structure, the PPS level is higher than the slice level, and the PPS syntax is obtained before the slice syntax. For the decoder, when parsing lower-level syntax, values ​​of higher-level syntax can be referenced. However, when parsing higher-level syntax, values ​​of lower-level syntax cannot be referenced. Therefore, in current VVC technology, the cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv, which depend on the slice syntax, present a logical problem that needs to be solved.

[0112] To address the aforementioned issues, solutions are provided in various embodiments disclosed herein. In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be moved to the beginning of the sequence after the slice_max_mtt_hierarchy_depth_luma signal is identified. Thus, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are no longer PPS-level syntax elements. An example of the beginning syntax is as follows... FIG. 9 As shown (e.g., element 901).

[0113] exist FIG. 9 In the example shown, the `cu_qp_delta_enabled_flag` and `cu_chroma_qp_offset_enabled_flag` flags are identified in the PPS. In some embodiments, `cu_qp_delta_enabled_flag` and `cu_chroma_qp_offset_enabled_flag` can be identified in the title block, such as... FIG. 10 As shown (e.g., element 1001).

[0114] exist FIG. 10In the example shown, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be determined as follows. For example, the range of cu_qp_delta_subdiv can be determined as follows: If slice_type = 1, the range of cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeIntraY + MaxMttDepthY (including end values). If (slice_type is not equal to I), the value range of cu_qp_delta_subdiv is 0~2. (CtbLog2SizeY MinQtLog2SizeInterY +MaxMttDepthY (including end values). If not shown, the value of cu_qp_delta_subdiv can be inferred to be equal to 0.

[0115] The value range of cu_chroma_qp_offset_subdiv is as follows. If slice_type = I, the value range of cu_chroma_qp_offset_subdiv is 0~2. (CtbLog2SizeY MinQtLog2SizeIntraY + MaxMttDepthY (including end values). If (slice_type is not equal to I), the value range of cu_chroma_qp_offset_subdiv is 0~2. (CtbLog2SizeY (MinQtLog2SizeInterY + MaxMttDepthY) (including end values). If not shown, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0116] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are moved to the frame header, and the syntax elements used to derive MaxMttDepthY are also moved to the frame header, so that cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are independent of slice-level syntax.

[0117] Because a frame can contain multiple slices of different types, including inter-slice and intra-slice types, in this embodiment, `cu_qp_delta_subdiv` is split into two syntax elements: `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_qp_delta_subdiv_inter_slice`. `cu_chroma_qp_offset_subdiv` is also split into two syntax elements: `ph_cu_chroma_qp_offset_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice`. `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_intra_slice` are used for intra-slices in the current frame, while `ph_cu_qp_delta_subdiv_inter_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice` are used for inter-slices in the current frame. Similarly, there are two syntax elements for MaxMttDepthY of intra-slice and inter-slice, namely ph_max_mtt_hierarchy_depth_intra_slice_luma and ph_max_mtt_hierarchy_depth_inter_slice.

[0118] FIG. 11 Table 11 provides an example of the frame header syntax. As shown in Table 11, ph_cu_qp_delta_subdiv_intra_slice (e.g., element 1101), ph_cu_chroma_qp_offset_subdiv_intra_slice (e.g., element 1102), ph_cu_qp_delta_subdiv_inter_slice (e.g., element 1103), and ph_cu_chroma_qp_offset_subdiv_inter_slice (e.g., element 1104) are displayed in italics and gray.

[0119] For intra-slices, `ph_cu_qp_delta_subdiv_intra_slice` specifies the maximum `cbSubdiv` value of the coding unit in the intra-slice that transmits `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`. The value of `ph_cu_qp_delta_subdiv_intra_slice` ranges from 0 to 2. (CtbLog2SizeY MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma) (including end values). When not shown, it can be inferred that the value of ph_cu_qp_delta_subdiv_intra_slice is 0.

[0120] `ph_cu_chroma_qp_offset_subdiv_intra_slice` specifies the maximum `cbSubdiv` value for the inner type encoding unit that transmits the `cu_chroma_qp_offset_flag` flag. The value of `ph_cu_chroma_qp_offset_subdiv_intra_slice` ranges from 0 to 2. (CtbLog2SizeY MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma) (including end values). When not shown, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice can be inferred to be 0.

[0121] In the disclosed embodiments, ph_max_mtt_hierarchy_depth_intra_slice_luma is identified in the frame header and specifies the maximum hierarchical depth for coding units generated by multi-type tree splitting of quadtree leaves in slices with sh_slice_type equal to "I" (i.e., intra-prediction slices). CtbLog2SizeY and MinQtLog2SizeIntraY are derived using the following formulas 13-15, where CtbLog2SizeY represents the size of the luminance coding tree block of the intra-slice coding tree unit with slice_type equal to "I" (i.e., intra-prediction slice), and MinQtLog2SizeIntraY represents the minimum size of the luminance samples in the luminance leaf blocks generated by quadtree splitting of the intra-slice coding tree unit with slice_type equal to "I".

[0122] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (Formula 13) MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY (Formula.14) MinCbLog2SizeY=sps_log2_min_luma_coding_block_size_minus2+2 (Formula 15) sps_log2_ctu_size_minus5, sps_log2_diff_min_qt_min_cb_intra_slice_luma, and sps_log2_min_luma_coding_block_size_minus2 are syntax elements identified in SPS.

[0123] The variable CuQpDeltaSubdiv is generated as the maximum cbSubdiv value for the encoding unit that transmits the cu_qp_delta_abs and cu_qp_delta_sign_flag flags, and the variable CuChromaQpOffsetSubdiv is generated as the maximum cbSubdiv value for the encoding unit that transmits the cu_chroma_qp_offset_flag. These two variables are derived from Equations 16 and 17, respectively.

[0124] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (Formula 16) CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice (Formula 17) For inter-slice encoding, `ph_cu_qp_delta_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the encoding unit that transmits the `cu_qp_delta_abs` and `cu_qp_delta_sign_flag` flags within the inter-slice. The value of `ph_cu_qp_delta_subdiv_inter_slice` ranges from 0 to 2. (CtbLog2SizeY `MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice` (including end values). When not shown, the value of `ph_cu_qp_delta_subdiv_inter_slice` can be inferred to be 0. `ph_cu_chroma_qp_offset_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the coding unit for the inter-slice that transmits the `cu_chroma_qp_offset_flag` flag. The value range of `ph_cu_chroma_qp_offset_subdiv_inter_slice` is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice (including end values). When not shown, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice can be inferred to be 0.

[0125] `ph_max_mtt_hierarchy_depth_inter_slice` can be identified in the frame header and specifies the maximum hierarchical depth of the coding unit resulting from the multi-type tree splitting of quadtree leaves in a slice where `sh_slice_type` is not equal to "I" (e.g., inter-prediction slices where `slice_type` is equal to "P" or "B"). `CtbLog2SizY` and `MinQtLog2SizeInterY` are derived from the following formulas 18-20, where `CtbLog2SizY` represents the size of the luma coding tree block of the coding tree unit in a slice where `slice_type` is not equal to "I" (i.e., inter-prediction slices where `slice_type` is "P" or "B"), and `MinQtLog2SizeInterY` represents the minimum size of the luma sample of the luma leaf block resulting from the quadtree splitting of the coding tree unit in a slice where `slice_type` is not equal to "I".

[0126] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (Formula 18) MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice_luma + MinCbLog2SizeY (Formula 19) MinCbLog2SizeY = sps_log2_min_luma_coding_block_size_minus2 + 2 (Formula 20) sps_log2_ctu_size_minus5, sps_log2_diff_min_qt_min_cb_inter_slice_luma, and sps_log2_min_luma_coding_block_size_minus2 are syntax elements marked in SPS.

[0127] The variable CuQpDeltaSubdiv is derived as the maximum cbSubdiv value of the encoding unit transmitting the cu_qp_delta_abs and cu_qp_delta_sign_flag flag bits, and the variable CuChromaQpOffsetSubdi is derived as the maximum cbSubdiv value of the encoding unit transmitting the cu_chroma_qp_offset_flag flag bit. These two variables are derived from Equations 21 and 22, respectively.

[0128] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (Formula 21) CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice (Formula 22) In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified at the PPS level and in the intro. For example, in PPS syntax, pps_cu_qp_delta_subdiv and pps_cu_chroma_qp_offset_subdiv are identified as follows: FIG. 12 As shown (e.g., elements 1201 and 1202). In the intro, slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv are also identified, as... FIG. 13 As shown (e.g., element 1301).

[0129] In some embodiments, the ranges of pps_cu_qp_delta_subdiv and pps_cu_chroma_qp_offset_subdiv depend on the syntax of the Sequence Parameter Set (SPS), as shown in the following example. In this example, the range of pps_cu_qp_delta_subdiv is determined to be 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + SpsMaxMttDepthY)(including endpoints). When not shown, it can be inferred that the value of pps_cu_qp_delta_subdiv is equal to 0. The value range of pps_cu_chroma_qp_offset_subdiv is as follows: pps_cu_chroma_qp_offset_subdiv ranges from 0 to 2. (CtbLog2SizeY MinQtLog2SizeY +SpsMaxMttDepthY (including end values). When not shown, it can be inferred that the value of pps_cu_chroma_qp_offset_subdiv is equal to 0.

[0130] With ctbLog2SizeY defined, MinQtLog2SizeY and SpsMaxMttDepthY can be exported as follows.

[0131] In one approach, MinQtLog2SizeY can be exported as: min ( MinQtLog2SizeIntraY, MinQtLog2SizeInterY ) Or, max (MinQtLog2SizeIntraY, MinQtLog2SizeInterY ) It is worth noting that MinQtLog2SizeIntraY and MinQtLog2SizeIntraY can be exported in various ways, such as the methods defined in VVC Draft 6.

[0132] Alternatively, the value of MinQtLog2SizeY can be derived from the following formula 23: MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_luma + MinCbLog2SizeY (Formula. 23) Among them, sps_log2_diff_min_qt_min_cb_luma in Figure 14 The identifier shown in the SPS is (e.g., element 1401). It is worth noting that MinCbLog2SizeY can be derived using various methods, such as those defined in VVC Draft 6.

[0133] For SpsMaxMttDepth, SpsMaxMttDepthY can be derived in one way: min (sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_hierarchy_depth_inter_slice) or, max (sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_hierarchy_depth_inter_slice) The values ​​of sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be identified in SPS.

[0134] Another alternative method is to derive the value of SpsMaxMttDepthY as: SpsMaxMttDepthY = sps_max_mtt_depth_luma (Formula 24) Here, `sps_max_mtt_depth_luma` can be identified in SPS, such as... Figure 14 As shown (e.g., element 1402).

[0135] In the example above, the PPS syntax elements pps_cu_qp_delta_subdiv and pps_cu_chroma_qp_offset_subdiv depend on the SPS syntax. This resolving dependency between PPS and SPS may not be sufficient. To resolve this dependency issue, in some implementations, the value range of pps_cu_qp_delta_subdiv can be specified as follows.

[0136] The value of pps_cu_qp_delta_subdiv is between 0 and 2. (CtbLog2SizeY) The value is within the range of (MinQtLog2SizeY+ppsMaxMttDepthY) (inclusive). When not shown, it can be inferred that the value of pps_cu_qp_delta_subdiv is equal to 0.

[0137] The value range for pps_cu_chroma_qp_offset_subdiv can be specified as follows: The value of pps_cu_chroma_qp_offset_subdiv is between 0 and 2. (CtbLog2SizeY) (MinQtLog2SizeY+ppsMaxMttDepthY) (including end values). When not shown, it can be inferred that the value of pps_cu_chroma_qp_offset_subdiv is equal to 0.

[0138] CtbLog2SizeY, MinQtLog2SizeY, and ppsMaxMttDepthY can be derived using the following formulas: CtbLog2SizeY = pps_log2_ctb_size (Formula. 25) MinQtLog2SizeY = pps_log2_min_qt (Formula. 26) ppsMaxMttDepthY = pps_max_mtt_depth_luma (Formula 27) pps_log2_ctb_size, pps_log2_min_qt, and pps_max_mtt_depth_luma can be identified in PPS, such as... Figure 15 As shown (e.g., element 1501).

[0139] In the example above, the ranges of `slice_cu_qp_delta_subdiv` and `slice_cu_chroma_qp_offset_subdiv` depend on the syntax of the intro. For example, the range of values ​​for `slice_cu_qp_delta_subdiv` can be determined as follows: If `slice_type` equals 1, then the range of values ​​for `slice_cu_qp_delta_subdiv` is 0 to 2. (CtbLog2SizeY MinQtLog2SizeIntraY + SliceMaxMttDepthY (including end values). Otherwise (slice_type not equal to 1), the value range of slice_cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeInterY + SliceMaxMttDepthY (including end values). When not specified, the value of slice_cu_qp_delta_subdiv can be inferred to be equal to 0 or pps_cu_qp_delta_subdiv.

[0140] The value range of `slice_cu_chroma_qp_offset_subdiv` can be determined as follows: If `slice_type` equals 1, then the value range of `slice_cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY `MinQtLog2SizeIntraY + SliceMaxMttDepthY` (including endpoints). Otherwise (slice_type not equal to I), the value range of `slice_cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeInterY + SliceMaxMttDepthY (including end values). When not shown, the value of slice_cu_chroma_qp_offset_subdiv can be inferred to be equal to 0 or pps_cu_chroma_qp_offset_subdiv.

[0141] Given CtbLog2SizeY, MinQtLog2SizeIntraY, and MinQtLog2SizeInterY, SliceMaxMttDepthY can be exported as follows: SliceMaxMttDepthY = slice_max_mtt_hierarchy_depth_luma (Formula 28) The slice_max_mtt_hierarchy_depth_luma can be specified in the title sequence.

[0142] In the example above, `cu_qp_delta_subdiv` can be inferred as `slice_cu_qp_delta_subdiv`. Alternatively, `cu_qp_delta_subdiv` can first be inferred as `pps_cu_qp_delta_subdiv`; then, if `slice_cu_qp_delta_subdiv` exists, it is overwritten, and `cu_qp_delta_subdiv` is inferred as `slice_cu_qp_delta_subdiv`. The value of `cu_qp_delta_subdiv` can be used to derive `QpY`.

[0143] Furthermore, `cu_chroma_qp_offset_subdiv` can be exported as `slice_cu_chroma_qp_offset_subdiv`. Alternatively, `cu_chroma_qp_offset_subdiv` can first be inferred as `pps_cu_chroma_qp_offset_subdiv`; then, if `slice_cu_chroma_qp_offset_subdiv` exists, `slice_cu_chroma_qp_offset_subdiv` overrides it, and `cu_chroma_qp_offset_subdiv` can be inferred as `slice_cu_chroma_qp_offset_subdiv`. The value of `cu_chroma_qp_offset_subdiv` can be used to export Qp. Cb Qp C r、QP CbCr .

[0144] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified at the SPS level and in the title sequence. In SPS, sps_cu_qp_delta_subdiv and sps_cu_chroma_qp_offset_subdiv can be as follows:Figure 16 The identifiers shown (e.g., element 1601); in the intro, slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv are as follows: Figure 17 The identifier shown (e.g., element 1701).

[0145] In some embodiments, the ranges of `sps_cu_qp_delta_subdiv` and `sps_cu_chroma_qp_offset_subdiv` depend on the SPS syntax. For example, the range of `sps_cu_qp_delta_subdiv` can be determined as follows: The range of `sps_cu_qp_delta_subdiv` is 0 ~ 2. (CtbLog2SizeY `MinQtLog2SizeY + SpsMaxMttDepthY` (including end values). If not shown, the value of `sps_cu_qp_delta_subdiv` can be inferred to be 0. The range of values ​​for `sps_cu_chroma_qp_offset_subdiv` can be determined as follows: The range of values ​​for `sps_cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeY +SpsMaxMttDepthY (including end values). When not shown, the value of sps_cu_chroma_qp_offset_subdiv can be inferred to be 0.

[0146] With ctbLog2SizeY defined, MinQtLog2SizeY and SpsMaxMttDepthY can be exported as follows: In one of the methods, MinQtLog2SizeY can be exported as follows: min( MinQtLog2SizeIntraY, MinQtLog2SizeInterY ) or, max( MinQtLog2SizeIntraY, MinQtLog2SizeInterY ) MinQtLog2SizeIntraY and MinQtLog2SizeInterY can be obtained in various ways, such as those defined in VVC Draft 6.

[0147] In another approach, the value of MinQtLog2SizeY can be derived using the following formula 29.

[0148] MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_luma + MinCbLog2SizeY ( Formula 29) sps_log2_diff_min_qt_mincb_luma can be used Figure 18 The SPS shown is identified (e.g., element 1801). It is worth noting that MinCbLog2SizeY can be derived using various methods, such as those defined in VVC Draft 6.

[0149] For SpsMaxMttDepthY, in one method, SpsMaxMttDepthY can be derived as follows: min(sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_ hierarchy_depth_inter_slice) or max(sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_ hierarchy_depth_inter_slice) sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be identified in SPS.

[0150] In another method, SpsMaxMttDepthY can be exported as follows: SpsMaxMttDepthY = sps_max_mtt_depth_luma (Formula.30) sps_max_mtt_depth_luma can be specified in SPS, such as Figure 18 As shown (e.g., element 1802).

[0151] Furthermore, in the examples above, the ranges of `slice_cu_qp_delta_subdiv` and `slice_cu_chroma_qp_offset_subdiv` depend on the syntax of the intro. For example, the range of values ​​for `slice_cu_qp_delta_subdiv` can be as follows: If `slice_type` equals 1, then the range of values ​​for `slice_cu_qp_delta_subdiv` is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeIntraY + SliceMaxMttDepthY (including endpoints). Otherwise (slice_type not equal to 1), the value range of slice_cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeInterY + SliceMaxMttDepthY (including end values). When not shown, the value of slice_cu_qp_delta_subdiv can be inferred to be equal to 0 or sps_cu_qp_delta_subdiv.

[0152] The value range of `slice_cu_chroma_qp_offset_subdiv` can be determined as follows: If `slice_type = 1`, then the value range of `slice_cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY `MinQtLog2SizeIntraY + SliceMaxMttDepthY` (including endpoints). Otherwise (slice_type not equal to I), the value range of `slice_cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY MinQtLog2SizeInterY + SliceMaxMttDepthY (including end values). When not shown, the value of slice_cu_chroma_qp_offset_subdiv can be inferred to be equal to 0 or slice_cu_chroma_qp_offset_subdiv.

[0153] Given CtbLog2SizeY, MinQtLog2SizeIntraY, and MinQtLog2SizeInterY, SliceMaxMttDepthY can be exported as: SliceMaxMttDepthY = slice_max_mtt_hierarchy_depth_luma (Formula 31) In the example above, `cu_qp_delta_subdiv` can be inferred as `slice_cu_qp_delta_subdiv`. Alternatively, `cu_qp_delta_subdiv` can be inferred as `sps_cu_qp_delta_subdiv` first; then, if `slice_cu_qp_delta_subdiv` exists, `slice_cu_qp_delta_subdiv` will overwrite it, inferring `cu_qp_delta_subdiv` as `slice_cu_qp_delta_subdiv`. `QpY` can then be derived using `Cu_qp_delta_subdiv`.

[0154] Furthermore, in the example above, it can be inferred that `cu_chroma_qp_offset_subdiv` is `slice_cu_chroma_qp_offset_subdiv`. In another approach, it can first be inferred that `cu_chroma_qp_offset_subdiv` is `sps_cu_chroma_qp_offset_subdiv`; then, if `slice_cu_chroma_qp_offset_subdiv` appears, it overrides it, and it can be inferred that `cu_chroma_qp_offset_subdiv` is `slice_cu_chroma_qp_offset_subdiv`. `cu_chroma_qp_offset_subdiv` can be used to export Qp. Cb Qp Cr QP CbCr .

[0155] In some embodiments, the syntax of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified at the PPS level. However, the scope restrictions of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be modified to make them independent of slice syntax.

[0156] For example, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified in PPS, such as... Figure 5 As shown, the value range of cu_qp_delta_subdiv can be determined as follows: The value range of cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + MaxMttDepthY) (including endpoints). If not shown, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The range of cu_chroma_qp_offset_subdiv can be determined as follows: The range of cu_chroma_qp_offset_subdiv is 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + MaxMttDepthY) (including end values). If not shown, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0157] With ctbLog2SizeY defined, MinQtLog2SizeY and MaxMttDepthY can be estimated at the SPS level. For example, MaxMttDepthY can be derived as follows: min (sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_hierarchy_depth_inter_slice) or, max (sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_hierarchy_depth_inter_slice) sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be identified in SPS.

[0158] In an alternative approach, MaxMttDepthY can be exported as follows: MaxMttDepthY = sps_max_mtt_depth_luma sps_max_mtt_depth_luma can be specified in SPS, such as Figure 19 As shown (e.g., element 1901).

[0159] In one approach, MinQtLog2SizeY can be derived as follows: min (MinQtLog2SizeIntraY, MinQtLog2SizeInterY) or max (MinQtLog2SizeIntraY, MinQtLog2SizeInterY) It is worth noting that MinQtLog2SizeIntraY and MinQtLog2SizeIntraY can be obtained through various methods, such as those defined in VVC Draft 6.

[0160] In another approach, the value of MinQtLog2SizeY can be derived from Equation 32: MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_luma + MinCbLog2SizeY (Formula. 32) sps_log2_diff_min_qt_min_cb_luma is identified in SPS, such as Figure 13 As shown (e.g., element 1301). It is worth noting that MinCbLog2SizeY can be derived using various methods, such as those defined in VVC Draft 6.

[0161] Based on the example above, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not covered at the intro level.

[0162] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified at the PPS level. However, the scope limitations of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv should be fixed so that they are independent of slice syntax.

[0163] For example, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified in PPS, such as... Figure 5 As shown, the value range of cu_qp_delta_subdiv can be determined as follows: The value range of cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + MaxMttDepthY) (including endpoints). If not shown, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The range of cu_chroma_qp_offset_subdiv is determined as follows: The range of cu_chroma_qp_offset_subdiv is 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + MaxMttDepthY) (including end values). If not shown, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0164] CtbLog2SizeY, MinQtLog2SizeY, and MaxMttDepthY can be exported in the following ways: CtbLog2SizeY / MinQtLog2SizeY / MaxMttDepthY can be specified through a configuration file; or, CtbLog2SizeY / MinQtLog2SizeY / MaxMttDepthY can be fixed values.

[0165] Based on the example above, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not covered at the intro level.

[0166] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be identified in PPS, such as... Figure 5 As shown, the value range of cu_qp_delta_subdiv can be determined as follows: The value range of cu_qp_delta_subdiv is 0 ~ 2. (CtbLog2SizeY (MinQtLog2SizeY + MaxMttDepthY) (including endpoints). If not shown, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The value of cu_chroma_qp_offset_subdiv ranges from 0 to 2. (CtbLog2SizeY MinQtLog2SizeY + MaxMttDepthY (including end values). If not shown, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0167] CtbLog2SizeY, MinQtLog2SizeY, and MaxMttDepthY can be inferred at the PPS level. For example, CtbLog2SizeY = pps_log2_ctb_size (Formula 33) MinQtLog2SizeY = pps_log2_min_qt (Formula 34) MaxMttDepthY = pps_max_mtt_depth_luma (Formula 35) pps_log2_ctb_size, pps_log2_min_qt, and pps_max_mtt_depth_luma are identified in PPS, such as... Figure 20 As shown (e.g., element 2001).

[0168] Based on the example above, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not covered at the intro level.

[0169] Figure 21 This is a flowchart of a computer-implemented method 2100 for processing video content, consistent with an embodiment of the present invention.

[0170] In step 2102, a depth parameter related to the depth of the coded block can be received. The depth parameter can be a variable, such as “MaxMttDepthY”, which originates from the maximum depth of the multi-type tree hierarchy of the luma block (e.g., “slice_max_mtt_hierarchy_depth_luma”). In some embodiments, “slice_max_mtt_hierarchy_depth_luma” can be identified in the slice header associated with the coded block.

[0171] A coded block can be associated with a slice. The slice can be associated with intra-prediction or inter-prediction. In response to a slice associated with intra-prediction, the incremental quantization parameter value or colorimetric quantization parameter offset value of the slice associated with intra-prediction can be determined. Otherwise, in response to a slice associated with inter-prediction, the incremental quantization parameter value or colorimetric quantization offset value of the slice associated with inter-prediction can be determined. For example, when "slice_type" equals "1", indicating that the slice is associated with intra-prediction, the value of "cu_qp_delta_subdiv" ranges from 0 to 2. (CtbLog2SizeY `MinQtLog2SizeIntraY + MaxMttDepthY` (including endpoints). Otherwise, if `slice_type` is not equal to "I", it indicates that the slice is associated with inter-prediction, and the value of `cu_qp_delta_subdiv` ranges from 0 to 2. (CtbLog2SizeY `MinQtLog2SizeInterY + MaxMttDepthY` (including endpoints). For example, when `slice_type` equals "I", the value range of `cu_chroma_qp_offset_subdiv` is 0 ~ 2. (CtbLog2SizeY `MinQtLog2SizeIntraY + MaxMttDepthY` (including endpoints). Otherwise, when `slice_type` is not equal to `I`, the value of `cu_chroma_qp_offset_subdiv` ranges from 0 to 2. (CtbLog2SizeY MinQtLog2SizeInterY+ MaxMttDepthY)(includes end values).

[0172] In some embodiments, depth parameters can be identified in the frame header. It is worth noting that a frame can include multiple slices. For slices associated with intra-prediction, the incremental quantization parameter value or colorimetric quantization parameter offset value corresponding to the slice associated with intra-prediction can be determined. For slices associated with inter-prediction, the incremental quantization parameter value or colorimetric quantization parameter offset value corresponding to the slice associated with inter-prediction can be determined. For example, referring to… Figure 11 As discussed in Table 11, ph_cu_qp_delta_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_intra_slice are identified in the frame header to derive the incremental quantization parameter values ​​and chroma quantization parameter offset values ​​of the slice associated with intra-prediction. ph_cu_qp_delta_subdiv_inter_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice are marked in the frame header for deriving the incremental quantization parameter values ​​and chroma quantization parameter offset values ​​of the slice associated with intra-prediction.

[0173] In step 2104, at least one incremental quantization parameter (QP) value or a colorimetric quantization parameter offset value can be determined based on the depth of the coded block. As discussed above, the incremental quantization parameter value can be determined based on "cu_qp_delta_subdiv", the colorimetric quantization parameter value can be determined based on "cu_chroma_qp_offset_subdiv", and "cu_qp_delta_subdiv" and "cu_chroma_qp_offset_subdiv" can be determined based on the variable "MaxMttDepthY".

[0174] In step 2106, the luminance quantization parameter value can be derived based on the determined incremental quantization parameter value, and the chrominance quantization parameter value can be derived based on the determined chrominance quantization parameter offset value.

[0175] In step 2108, the coded block can be processed according to the exported luminance quantization parameter value and the exported chrominance quantization parameter value.

[0176] In some embodiments, a non-volatile computer-readable storage medium including an instruction set is also provided, and the instruction set can be executed by a device (such as the encoder and decoder) for performing the methods described above. Common forms of non-volatile media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape, or any other magnetic data storage medium, CD-ROMs, any other optical data storage media, any punched physical media mode, RAM, PROMs, and EPROMs, flash-based EPROMs or other flash memory, NVRAMs, caches, registers, any other storage chips or magnetic tape, and similar network versions. The device may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.

[0177] The embodiments may be further described using the following terms: 1. A computer-implemented method, comprising: Receive a bitstream containing encoded video data; Determine the first parameter of the coded block; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter value or the colorimetric quantization parameter offset value; and Based on the one or more second parameters, determine at least one of the incremental quantization parameter values ​​or the colorimetric quantization parameter offset values.

[0178] 2. The method according to Article 1, wherein determining the first parameter of the coded block includes: Determine whether the coded block is associated with an intra-prediction slice or an inter-prediction slice; and When responding to the coding block associated with the intraprediction slice, the first parameter is determined to be a parameter associated with the intraprediction slice, or When responding to the coding block associated with the inter-prediction slice, the first parameter is determined to be a parameter associated with the inter-prediction slice.

[0179] 3. The method according to Article 1, wherein the first parameter is identified in the header associated with the coded block.

[0180] 4. The method according to Article 1, wherein the first parameter is identified in the frame header associated with the coded block.

[0181] 5. The method according to Article 1, further comprising: The brightness quantization parameter value is determined based on the incremental quantization parameter value; The colorimetric parameter value is determined based on the colorimetric parameter offset value; and The encoded block is processed based on the luminance quantization parameter value and the chrominance quantization parameter value.

[0182] 6. A system for processing video content, comprising: A memory that stores a set of instructions; and At least one processor is configured to execute a set of instructions to enable the system to perform: Receive a bitstream containing encoded video data; Determine the first parameter of the coded block; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter value or the colorimetric quantization parameter offset value; and Based on the one or more second parameters, determine at least one of the incremental quantization parameter value or the colorimetric quantization parameter offset value.

[0183] 7. The system according to Article 6, wherein at least one processor is configured to execute a set of instructions to enable the system to further perform: Determine whether the coded block is associated with an intra-prediction slice or an inter-prediction slice; and When responding to the coding block associated with the intrapredictive slice, the first parameter is determined to be a parameter associated with the intrapredictive slice, or When responding to the coding block associated with the inter-prediction slice, the first parameter is determined to be a parameter associated with the inter-prediction slice.

[0184] 8. The system according to Article 6, wherein the first parameter is identified in a header associated with the coded block.

[0185] 9. The system according to Article 6, wherein the first parameter is identified in the frame header associated with the coded block.

[0186] 10. A system according to Article 6, wherein at least one processor is configured to execute a set of instructions to enable further execution of the system: The brightness quantization parameter value is determined based on the increment. The colorimetric parameter value is determined based on the colorimetric parameter offset value; and The encoded blocks are processed based on the luminance quantization parameter values ​​and the chrominance quantization parameter values.

[0187] 11. A non-volatile computer-readable medium storing a set of instructions executable by at least one processor of a computer system, wherein execution of the set of instructions causes the computer system to perform a method comprising: Receive a bitstream containing encoded video data; Determine the first parameter of the coded block; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter value or the colorimetric quantization parameter offset value; and Based on the one or more second parameters, determine at least one of the incremental quantization parameter value or the colorimetric quantization parameter offset value.

[0188] 12. The non-volatile computer-readable medium according to Article 11, wherein the method further comprises: Determine whether the coded block is associated with an intra-prediction piece or an inter-prediction piece; and When responding to a coding block associated with the intrapredicted slice, the first parameter is determined to be a parameter associated with the intrapredicted slice, or When responding to a coding block associated with the inter-prediction slice, the first parameter is determined to be a parameter associated with the inter-prediction slice.

[0189] 13. A non-volatile computer-readable medium according to Article 11, wherein the first parameter is identified in a header associated with the coded block.

[0190] 14. A non-volatile computer-readable medium according to Article 11, wherein the first parameter is identified in a frame header associated with the coded block.

[0191] 15. The non-volatile computer-readable medium according to Article 11, wherein the method further comprises: Based on the incremental quantization parameter value, the brightness quantization parameter value is determined; The colorimetric parameter value is determined based on the colorimetric parameter offset value; and The encoded block is processed based on the luminance quantization parameter value and the chrominance quantization parameter value.

[0192] It should be noted that the relational terms such as "first" and "second" used in this document are only used to distinguish one entity or operation from another, and do not require or imply any actual relationship or order between these entities or operations. Furthermore, "including," "having," "containing," and other similar terms are synonymous, and the conclusion of any one or more items following any of the foregoing words is open-ended; none of the foregoing terms indicates that the one or more items have been exhaustively listed, or are limited to only one or more of the listed items.

[0193] When used herein, unless otherwise expressly stated, the term "or" includes all possible combinations except those that are impractical. For example, if expressed as a database may include A or B, then unless otherwise specified or impractical, it may include database A, or B, or A and B. As a second example, if expressed as a database may include A, B, or C, then unless otherwise specified or impractical, the database may include database A, or B, or C, or A and B, or A and C, or B and C, or A and B and C.

[0194] It is worth noting that the above embodiments can be implemented by hardware or software (program code), or a combination of hardware and software. If implemented by software, it can be stored in the above-described computer-readable medium. When executed by a processor, the software can perform the methods disclosed above. The computing units and other functional units described in this disclosure can be implemented by hardware or software, or a combination of hardware and software. Those skilled in the art will also understand that the above-described multiple modules / units can be combined into one module / unit, and each of the above-described modules / units can be further divided into multiple sub-modules / sub-units.

[0195] In the above detailed description, embodiments have been described with reference to numerous specific details, which may vary depending on the implementation. Certain adaptations and modifications can be made to the embodiments. Other implementations will be readily apparent to those skilled in the art from the specific embodiments disclosed herein. This specification and examples are for illustrative purposes only, and the true scope and essence of the invention are defined by the claims. The sequence of steps shown in the figures is also for illustrative purposes only and is not intended to limit to any particular step or order. Therefore, those skilled in the art will recognize that these steps can be performed in a different order when implementing the same method.

[0196] Exemplary embodiments are disclosed in the figures and detailed description of this application. However, many variations and modifications can be made to these embodiments. Accordingly, although specific terms are used, they are only general and descriptive and not for limiting purposes.

Claims

1. A video content processing system applied to a decoder, comprising: Memory for storing instruction sets; as well as At least one processor is configured to execute the instruction set to enable the system to perform: Receive a data stream containing encoded video data; A first parameter is determined that is associated with a coded block within an intra-slice, wherein the maximum value of the first parameter is associated with a slice-level maximum value, which is for intra-slices; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter (QP) value; as well as The incremental QP value is determined based on one or more of the second parameters.

2. The system according to claim 1, wherein, The first parameter is received in at least one of the headers or image headers associated with the coded block.

3. The system according to claim 1, wherein, Based on the incremental QP value, determine the luminance QP value; The coded block is processed based on the brightness QP value.

4. The system according to claim 1, wherein, The at least one processor is further configured to determine the range of the maximum value of the first parameter based on: The size of the luminance coding tree block in the coding tree unit; The minimum size of the luminance sample in the luminance leaf block generated by the coded tree unit in the quadtree segmentation of the intra-frame slice; as well as The maximum level depth of the coding unit generated by the multi-type tree segmentation of the quad-leaf leaves of the intra-frame.

5. The system according to claim 1, wherein, The at least one processor is also configured to unpack the data stream before feeding it into the binary decoding stage.

6. The system according to claim 1, wherein, The data stream includes syntax elements encoded using entropy encoding of one or more contexts from a plurality of contexts used in binary entropy encoding.

7. A computer-implemented method applied to an encoder, comprising: Receive video sequence data to be encoded; A first parameter is determined that is associated with a coded block within an intra-slice, wherein the maximum value of the first parameter is associated with a slice-level maximum value, which is for intra-slices; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter (QP) value; as well as The incremental QP value is determined based on one or more of the second parameters.

8. The method according to claim 7, wherein, The first parameter is sent in at least one of the slice header or image header associated with the coded block.

9. The method according to claim 7, wherein, Based on the incremental QP value, determine the luminance QP value; The coded block is processed based on the brightness QP value.

10. The method according to claim 7, wherein, The method further includes: The range of the maximum value of the first parameter is determined based on: The size of the luminance coding tree block in the coding tree unit; The minimum size of the luminance samples in the luminance leaf blocks generated by the coded tree unit in the quadtree segmentation of the intra-frame slice; and The maximum level depth of the coding unit generated by the multi-type tree segmentation of the quad-leaf leaves of the intra-frame.

11. A non-volatile computer-readable medium storing an instruction set and a video bitstream, the instruction set being executable by one or more processors in a method to generate the bitstream, the method comprising: Receive video sequence data to be encoded; A first parameter is determined that is associated with a coded block within an intra-slice, wherein the maximum value of the first parameter is associated with a slice-level maximum value, which is for intra-slices; Based on the first parameter, determine one or more second parameters associated with the incremental quantization parameter (QP) value; as well as The incremental QP value is determined based on one or more of the second parameters.

12. The non-volatile computer-readable medium according to claim 11, wherein, The first parameter is sent in at least one of the slice header or image header associated with the coded block.

13. The non-volatile computer-readable medium according to claim 11, wherein, The method further includes determining the range of the maximum value of the first parameter based on: The size of the luminance coding tree block in the coding tree unit; The minimum size of the luminance sample in the luminance leaf block generated by the coded tree unit in the quadtree segmentation of the intra-frame slice; as well as The maximum level depth of the coding unit generated by the multi-type tree segmentation of the quad-leaf leaves of the intra-frame.