Quantization parameter signaling in video processing

By implementing adaptive resolution change and pixel refinement in video processing, the method addresses the high bandwidth and storage challenges of HD video, achieving improved compression efficiency and processing accuracy.

JP2025081359AActive Publication Date: 2025-05-27ALIBABA GROUP HOLDING LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2025015281
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-09-20
Filing Date
2025-01-31
Publication Date
2025-05-27
Estimated Expiration
2040-08-21

AI Technical Summary

Technical Problem

Current video coding technologies face challenges in efficiently compressing high-definition (HD) video data, leading to high bandwidth and storage requirements, particularly in applications like video surveillance.

Method used

The proposed method involves processing video content using adaptive resolution change (ARC) and refining pixels based on fixed phase interpolation, reducing algorithm and hardware complexity while maintaining accuracy.

Benefits of technology

This approach enhances compression efficiency, reduces bandwidth and storage needs, and improves processing efficiency by independently handling areas of a picture, providing error tolerance during transmission and storage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025081359000001_ABST
    Figure 2025081359000001_ABST
Patent Text Reader

Abstract

To provide methods for processing video content.SOLUTION: One exemplary method comprises: receiving a bitstream comprising coded video data; determining a first parameter of a coding block; determining, according to the first parameter, one or more second parameters associated with a delta quantization parameter (QP) value or a chroma QP offset value; and determining, according to the one or more second parameters, at least one of the delta QP value and the chroma QP offset value.SELECTED DRAWING: Figure 21
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - Reference to Related Applications

[0001] This disclosure claims the benefit of priority of U.S. Provisional Patent Application No. 62 / 903,251, filed on September 20, 2019, which is hereby incorporated by reference in its entirety.

[0002] Technical Field

[0002] This disclosure generally relates to video processing, and more particularly, to methods and systems for processing video content with quantization parameters.

Background Art

[0003] Background

[0003] Video is a set of static pictures (or “frames”) that capture visual information. To reduce memory storage 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. Most commonly, there are various video coding formats that use standardized video coding techniques based on prediction, transformation, quantization, entropy coding, and in - loop filtering. Video coding standards such as the High Efficiency Video Coding (HEVC / H.265) standard, the Versatile Video Coding (VVC / H.266) standard, and the AVS standard, which specify a particular video coding format, have been developed by standardization organizations. As more advanced video coding technologies are adopted in video standards, the coding efficiency of new video coding standards becomes higher.

Summary of the Invention

Means for Solving the Problems

[0004] Summary of the Disclosure

[0004] Embodiments of the present disclosure provide a method implemented by a computer for processing video content, including receiving a bitstream including encoded video data, determining a first parameter of an encoded block, determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and determining at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters.

[0005]

[0005] Embodiments of the present disclosure also provide a system for processing video content, including a memory storing a set of instructions and at least one processor. The at least one processor is configured to execute the set of instructions to cause the system to receive a bitstream including encoded video data, determine a first parameter of an encoded block, determine one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and determine at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters.

[0006]

[0006] Embodiments of the present disclosure also provide a non-transitory computer-readable medium storing instructions executable by at least one processor of a computer system. Executing the instructions causes the computer system to receive a bitstream including encoded video data, determine a first parameter of an encoded block, determine one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and determine at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters.

[0007] Brief Description of the Drawings

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

Brief Description of the Drawings

[0008]

Figure 1

[0008] Shown is the structure of an exemplary video sequence that conforms to an embodiment of the present disclosure.

Figure 2A

[0009] Shown is a schematic diagram of an exemplary encoding process of a hybrid video coding system that conforms to an embodiment of the present disclosure.

Figure 2B

[0010] Shown is a schematic diagram of another exemplary encoding process of a hybrid video coding system that conforms to an embodiment of the present disclosure.

Figure 3A

[0011] Shown is a schematic diagram of an exemplary decoding process of a hybrid video coding system that conforms to an embodiment of the present disclosure.

Figure 3B

[0012] Shown is a schematic diagram of another exemplary decoding process of a hybrid video coding system that conforms to an embodiment of the present disclosure.

Figure 4

[0013] Shown is a block diagram of an exemplary device for encoding or decoding video that conforms to an embodiment of the present disclosure.

Figure 5

[0014] Shown is an example of a picture parameter set (PPS) for a coding unit (CU) delta quantization parameter (QP) that conforms to an embodiment of the present disclosure.

Figure 6A

[0015] Shown is an example of a coding tree level syntax for CU delta QP that conforms to an embodiment of the present disclosure.

Figure 6B

[0015] Shown is an example of a coding tree level syntax for CU delta QP that conforms to an embodiment of the present disclosure.

Figure 6C

[0015] Shown is an example of a coding tree level syntax for CU delta QP that conforms to an embodiment of the present disclosure.

Figure 7A

[0016] An example of the conversion unit level syntax for CU delta QP that conforms to an embodiment of the present disclosure is shown.

Figure 7B

[0016] An example of the conversion unit level syntax for CU delta QP that conforms to an embodiment of the present disclosure is shown.

Figure 7C

[0016] An example of the conversion unit level syntax for CU delta QP that conforms to an embodiment of the present disclosure is shown.

Figure 8

[0017] An example of the slice header syntax that conforms to an embodiment of the present disclosure is shown.

Figure 9

[0018] Another example of the slice header syntax that conforms to an embodiment of the present disclosure is shown.

Figure 10

[0019] Yet another example of the slice header syntax that conforms to an embodiment of the present disclosure is shown.

Figure 11

[0020] Another example of the picture header syntax that conforms to an embodiment of the present disclosure is shown.

Figure 12

[0021] An example of the PPS syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv that conforms to an embodiment of the present disclosure is shown.

Figure 13

[0022] An example of the slice header syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv that conforms to an embodiment of the present disclosure is shown.

Figure 14

[0023] An example of the syntax for sps_max_mtt_depth_luma that conforms to an embodiment of the present disclosure is shown.

Figure 15

[0024] An example of the syntax for pps_max_mtt_depth_luma that conforms to an embodiment of the present disclosure is shown.

Figure 16

[0025] An example of the SPS syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv that conforms to an embodiment of the present disclosure is shown.

Figure 17

[0026] An example of the slice header syntax for cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv that conforms to an embodiment of the present disclosure is shown.

Figure 18

[0027] An example of the syntax for sps_max_mtt_depth_luma that conforms to an embodiment of the present disclosure is shown.

Figure 19

[0028] Another example of the syntax for sps_max_mtt_depth_luma that conforms to an embodiment of the present disclosure is shown.

Figure 20

[0029] An example of the syntax for pps_max_mtt_depth_luma that conforms to an embodiment of the present disclosure is shown.

Figure 21

[0030] A flowchart of an exemplary computer-implemented method for processing video content that conforms to an embodiment of the present disclosure is shown.

Embodiments for Carrying Out the Invention

[0009]

[0031] Video coding systems are often used to compress digital video signals, for example, to reduce the storage space consumed or to reduce the consumption of the transmission bandwidth associated with such signals. In various applications of video compression such as online video streaming, video conferencing, or video surveillance, as the popularity of high-definition (HD) video (e.g., having a resolution of 1920×1080 pixels) increases, there is a continuous demand to develop video coding tools that can improve the compression efficiency of video data.

[0010]

[0032] For example, the application of video surveillance is being used more and more widely in many application scenarios (such as security, traffic, environmental monitoring, etc.), and the number and resolution of surveillance devices are increasing rapidly. Many video surveillance application scenarios choose to provide users with HD video in order to capture more information, and HD video has more pixels per frame in order to capture such information. However, the HD video bitstream may have a high bitrate that requires high bandwidth for transmission and large space for storage. For example, a surveillance video stream with an average resolution of 1920×1080 may require a bandwidth of 4Mbps for real-time transmission. Furthermore, video surveillance generally performs continuous monitoring, which can be a major challenge for the storage system when storing video data. Therefore, the demand for high bandwidth and large storage space of HD video has become the main limitation for the large-scale deployment of HD video in video surveillance.

[0011]

[0033] Video is a set of still pictures (or "frames") arranged in chronological order for storing visual information. In order to capture and store those pictures in chronological order, a video capture device (such as a camera) can be used, and in order to display such pictures in chronological order, a video playback device (such as a TV, computer, smartphone, tablet computer, video player or any end-user terminal with a display function) can be used. Furthermore, in some applications, for surveillance, meetings or live broadcasts, etc., the video capture device can transmit the captured video to the video playback device (such as a computer with a monitor) in real time.

[0012]

[0034] To reduce the memory space and transmission bandwidth required by such applications, the video can be compressed before being stored and transmitted and decompressed before being displayed. This compression and decompression can be implemented by software executed by a processor (e.g., the processor of a general-purpose computer) or dedicated hardware. A module for compression is generally called an "encoder", and a module for decompression is generally called a "decoder". The encoder and decoder can be collectively called a "codec". The encoder and decoder can be implemented as various suitable hardware, software, or combinations thereof. For example, the hardware implementation of the encoder and decoder can include circuits 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. The software implementation of the encoder and decoder can include program code, computer-executable instructions, firmware, or any suitable algorithm or process implemented by a computer fixed in a computer-readable medium. The compression and decompression of video can be implemented by various algorithms or standards such as MPEG-1, MPEG-2, MPEG-4, the H.26x series, etc. In some applications, the codec can decompress the video from a first coding standard and recompress the decompressed video using a second coding standard, in which case the codec can be called a "transcoder".

[0013]

[0035] The video encoding process can identify and retain useful information that can be used to reconstruct the picture and ignore information that is not important for reconstruction. If the unimportant information that is ignored cannot be fully reconstructed, such an encoding process can be called "irreversible". Otherwise, such an encoding process can be called "reversible". Most encoding processes are irreversible, which is a trade-off for reducing the required memory space and transmission bandwidth.

[0014]

[0036] The useful information of the encoded picture (referred to as the "current picture") includes changes with respect to the reference picture (for example, a picture that was encoded and reconstructed in the past). Such changes can include changes in pixel position, luminance, or color, among which the position change is the most important. The position change of the group of pixels representing an object can reflect the movement of the object between the reference picture and the current picture.

[0015]

[0037] A picture that is encoded without referring to another picture (i.e., such a picture is its own reference picture) is called an "I picture". A picture that is encoded using a past picture as a reference picture is called a "P picture". A picture that is encoded using both a past picture and a future picture as reference pictures (i.e., the reference is "bidirectional") is called a "B picture".

[0016]

[0038] As described above, video surveillance using HD video faces the problems of high bandwidth and large storage requirements. To address this problem, the bit rate of the encoded video can be reduced. Among I pictures, P pictures, and B pictures, I pictures 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 may be to use fewer I pictures for video encoding.

[0017]

[0039] However, in the encoded video, since I pictures are generally not the main ones, the improvement measure of using fewer I pictures may be minor. For example, in a typical video bitstream, the ratio of I pictures, B pictures, and P pictures may be 1:20:9, and I pictures may account for less than 10% of the total bit rate. In other words, in such an example, even if all I pictures are removed, the reduced bit rate may be only 10%.

[0018]

[0040] The present disclosure provides a method, apparatus, and system for processing video content using adaptive resolution change (ARC). Unlike inaccurate phases caused by phase rounding processing, embodiments of the present disclosure provide a pixel refinement process based on fixed phase interpolation to reduce algorithm and hardware complexity while maintaining accuracy.

[0019]

[0041] FIG. 1 shows the structure of an example of a video sequence 100 that conforms to an embodiment of the present disclosure. The video sequence 100 can be live video or captured and archived video. The video 100 can be real-world video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real-world video with augmented reality effects). The video sequence 100 can be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., a video file stored in a storage device), or a video feed interface (e.g., a video broadcast transceiver) for receiving video from a video content provider.

[0020]

[0042] As shown in FIG. 1, video sequence 100 may include a series of pictures temporally arranged along a timeline, including pictures 102, 104, 106, and 108. Pictures 102 to 106 are consecutive, and there are more pictures between picture 106 and picture 108. In FIG. 1, picture 102 is an I picture, and its reference picture is picture 102 itself. Picture 104 is a P picture, and as indicated by the arrow, its reference picture is picture 102. Picture 106 is a B picture, and as indicated by the arrow, its reference pictures are pictures 104 and 108. In some embodiments, the reference picture of a picture (e.g., picture 104) may not be the picture immediately before or after that picture. For example, the reference picture of picture 104 may be a picture preceding picture 102. It should be noted that the reference pictures of pictures 102 to 106 are merely examples, and the present disclosure does not limit the embodiments of the reference pictures to the examples shown in FIG. 1.

[0021]

[0043] Typically, a video codec does not encode or decode an entire picture at once because such a task is computationally complex. Instead, a video codec can divide a picture into basic segments and encode or decode the picture segment by segment. In the present disclosure, such a basic segment is referred to as a basic processing unit ("BPU"). For example, the structure 110 in FIG. 1 shows an example of the structure of a picture (e.g., any one of pictures 102-108) of the video sequence 100. In the structure 110, the picture is divided into 4×4 basic processing units, and the boundaries thereof are indicated by dashed lines. In some embodiments, the basic processing unit can be referred to as a "macroblock" within some video coding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC), and can be referred to as a "coded tree unit" ("CTU") within some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing unit can have a variable size within the picture, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or any arbitrary shape and size of pixels. The size and shape of the basic processing unit can be selected for a picture based on a balance between coding efficiency and the level of detail to be maintained within the basic processing unit.

[0022]

[0044] The basic processing unit can be a logical unit that can include various types of video data groups stored in a computer memory (e.g., within a video frame buffer). For example, the basic processing unit of a color picture can include a luma component (Y) representing achromatic luminance information, one or more chroma components (e.g., Cb and Cr) representing color information, and associated syntax elements of the basic processing unit where the luma component and the chroma components can have the same size. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luma component and the chroma components can be referred to as a "coded tree block" ("CTB"). Any operation performed on the basic processing unit can be repeatedly performed on each of its luma component and chroma components.

[0023]

[0045] The encoding of an image has multiple operation stages, examples of which are detailed in FIGS. 2A-2B and FIGS. 3A-3B. For each stage, the size of the basic processing unit may still be too large to process, and thus it can be further divided into segments called "basic processing sub-units" in the present disclosure. In some embodiments, the basic processing sub-unit can be called a "block" within some video encoding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC), or a "coding unit" ("CU") within some other video encoding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing sub-unit can have a size equal to or smaller than that of the basic processing unit. Similar to the basic processing unit, the basic processing sub-unit is also a logical unit that can include various types of video data groups (e.g., Y, Cb, Cr, and related syntax elements) stored in a computer memory (e.g., within a video frame buffer). Any operation performed on the basic processing sub-unit can be repeated for each of its luma and chroma components. It should be noted that such division can be performed at further levels according to the need for processing. It should also be noted that the various stages can divide the basic processing unit in various ways.

[0024]

[0046] For example, (an example of which is detailed in FIG. 2B) in the mode decision stage, the encoder can determine which prediction mode (e.g., intra-picture prediction or inter-picture prediction) to use for the basic processing unit, and the basic processing unit may be too large to make such a decision. The encoder can divide the basic processing unit into a plurality of basic processing sub-units (e.g., CUs in H.265 / HEVC or H.266 / VVC) and determine the type of prediction for each individual basic processing sub-unit.

[0025]

[0047] In another example, (one example of which is detailed in FIG. 2A) in the prediction stage, the coder can perform a prediction operation at the level of a basic processing subunit (e.g., a CU). However, in some cases, the basic processing subunit may still be too large to process. The coder can further divide the basic processing subunit into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) and perform a prediction operation at that level.

[0026]

[0048] In another example, (one example of which is detailed in FIG. 2A) in the transformation stage, the coder can perform a transformation operation on a residual basic processing subunit (e.g., a CU). However, in some cases, the basic processing subunit may still be too large to process. The coder can further divide the basic processing subunit into smaller segments (e.g., called "transformation blocks" or "TBs" in H.265 / HEVC or H.266 / VVC) and perform a transformation operation at that level. It should be noted that the same basic processing subunit division method can be different in the prediction stage and the transformation stage. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transformation blocks of the same CU can have different sizes and numbers.

[0027]

[0049] In the structure 110 of FIG. 1, the basic processing unit 112 is further divided into 3×3 basic processing subunits, and its boundaries are indicated by dotted lines. Different basic processing units of the same picture can be divided into basic processing subunits in different ways.

[0028]

[0050] In some implementation forms, in order to provide parallel processing and error tolerance functions for video encoding and decoding, a picture can be divided into areas for processing, so that for the areas of the picture, the encoding or decoding process can be made independent of the information in any other area of the picture. In other words, each area of the picture can be processed independently. By doing so, the codec can process different areas of the picture in parallel, thus improving the encoding efficiency. Further, when the data of an area is damaged during processing or lost during network transmission, the codec can correctly encode or decode other areas of the same picture without depending on the damaged or lost data, thus providing an error tolerance function. In some video coding standards, a picture can be divided into different types of areas. For example, H.265 / HEVC and H.266 / VVC provide two types of areas, namely "slices" and "tiles". It should also be noted that the various pictures of video sequence 100 may have various splitting methods for dividing the picture into areas.

[0029]

[0051] For example, in FIG. 1, structure 110 is divided into three areas 114, 116, and 118, and its boundaries are shown as solid lines within structure 110. Area 114 includes four basic processing units. Each of areas 116 and 118 includes six basic processing units. It should be noted that the basic processing units, basic processing sub-units, and areas of structure 110 in FIG. 1 are only examples, and the present disclosure does not limit its embodiments.

[0030]

[0052] FIG. 2A shows a schematic diagram of an example of an encoding process 200A that conforms to an embodiment of the present disclosure. The encoder can encode video sequence 202 into video bitstream 228 according to process 200A. Similar to video sequence 100 of FIG. 1, video sequence 202 may include a set of pictures (referred to as “original pictures”) arranged in temporal order. Similar to structure 110 of FIG. 1, each original picture of video sequence 202 may be divided by the encoder into basic processing units, basic processing subunits, or regions for processing. In some embodiments, the encoder can execute process 200A at the level of the basic processing unit for each original picture of video sequence 202. For example, the encoder can execute process 200A in an iterative manner, and the encoder can encode a basic processing unit in one iteration of process 200A. In some embodiments, the encoder can execute process 200A in parallel for regions (e.g., regions 114-118) of each original picture of video sequence 202.

[0031]

[0053] In FIG. 2A, the coder can feed the basic processing unit of the original picture of video sequence 202 (referred to as the "original BPU") to prediction stage 204 to generate prediction data 206 and predicted BPU 208. The coder can subtract the predicted BPU 208 from the original BPU to generate residual BPU 210. The coder can feed the residual BPU 210 to transformation stage 212 and quantization stage 214 to generate quantized transform coefficients 216. The coder can feed the prediction data 206 and the quantized transform coefficients 216 to binary coding 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". During process 200A, after quantization stage 214, the coder can feed the quantized transform coefficients 216 to inverse quantization stage 218 and inverse transformation stage 220 to generate reconstructed residual BPU 222. The coder can add the reconstructed residual BPU 222 to the predicted BPU 208 to generate prediction reference 224 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 the "reconstruction path". The reconstruction path can be used to ensure that both the coder and the decoder use the same reference data for prediction.

[0032]

[0054] The coder can repeatedly execute process 200A to encode each original BPU of the original picture (within the forward path) and generate predicted reference 224 for encoding the next original BPU of the original picture (within the reconstruction path). After encoding all the original BPUs of the original picture, the coder can proceed to encode the next picture in video sequence 202.

[0033]

[0055] Referring to process 200A, the coder can receive video sequence 202 generated by a video capture device (e.g., a camera). As used herein, the term "receive (s)" can refer to receiving for inputting data, inputting, obtaining, retrieving, getting, reading, accessing, or any action of any method.

[0034]

[0056] In the prediction stage 204, in the current iteration, the coder can receive the original BPU and prediction criterion 224 and perform a prediction operation to generate prediction data 206 and predicted BPU 208. The prediction criterion 224 can be generated from the reconstruction path of the previous iteration of process 200A. The purpose of the prediction stage 204 is to reduce the redundancy of information by extracting the prediction data 206, and the prediction data 206 can be used to reconstruct the original BPU as the predicted BPU 208 from the prediction data 206 and the prediction criterion 224.

[0035]

[0057] Ideally, the predicted BPU 208 can be the same as the original BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 generally differs slightly from the original BPU. To record such a difference, after generating the predicted BPU 208, the coder can subtract it from the original BPU to generate a residual BPU 210. For example, the coder can subtract the pixel value (e.g., grayscale value or RGB value) of the predicted BPU 208 from the corresponding pixel value of the original BPU. As a result of such subtraction between the corresponding pixel of the original BPU and the predicted BPU 208, each pixel of the residual BPU 210 can have a residual value. Compared with the original BPU, the prediction data 206 and the residual BPU 210 can have fewer bits, but they can be used to reconstruct the original BPU without significantly degrading the quality.

[0036]

[0058] To further compress the residual BPU 210, in the transformation stage 212, the coder can reduce the spatial redundancy of the residual BPU 210 by decomposing the residual BPU 210 into a set of two-dimensional "basis patterns", where each basis pattern is associated with a "transformation coefficient". The basis patterns can have the same size (e.g., the size of the residual BPU 210). Each basis pattern can represent a frequency component (e.g., a luminance frequency component) of the residual BPU 210. None of the basis patterns can be reproduced from any combination (e.g., a linear combination) of any other basis patterns. In other words, the decomposition can decompose the variations of the residual BPU 210 into the frequency domain. Such a decomposition is similar to the discrete Fourier transform of a function, the basis patterns are similar to the basis functions of the discrete Fourier transform (e.g., trigonometric functions), and the transformation coefficients are similar to the coefficients associated with the basis functions.

[0037]

[0059] Various transformation algorithms can use various basis patterns. For example, in the transformation stage 212, various transformation algorithms such as the discrete cosine transform, discrete sine transform, etc. can be used. The transformation in the transformation stage 212 is reversible. That is, the coder can restore the residual BPU 210 by an inverse operation of the transformation (referred to as "inverse transformation"). For example, to restore the pixels of the residual BPU 210, the inverse transformation can be to multiply the values of the corresponding pixels of the basis patterns by their respective associated coefficients and add the products to yield a weighted sum. In a video coding standard, both the coder and the decoder can use the same transformation algorithm (and thus the same basis patterns). Therefore, the coder can record only the transformation coefficients, and the decoder can reconstruct the residual BPU 210 from the transformation coefficients without receiving the basis patterns from the coder. The transformation coefficients may have fewer bits compared to the residual BPU 210, but those transformation coefficients can be used to reconstruct the residual BPU 210 without significantly degrading the quality. Therefore, the residual BPU 210 is further compressed.

[0038]

[0060] The coder can further compress the transform coefficients in the quantization stage 214. In the transform process, various basis patterns can represent various fluctuation frequencies (e.g., luminance fluctuation frequencies). Since the human eye is generally good at recognizing low-frequency fluctuations, the coder can ignore the information of high-frequency fluctuations without causing significant quality degradation during decoding. For example, in the quantization stage 214, the coder can divide each transform coefficient by an integer value (referred to as the "quantization parameter") and round the quotient to its nearest neighbor to generate the quantized transform coefficient 216. After such an operation, some transform coefficients of the high-frequency basis pattern can be converted to zero, and the transform coefficients of the low-frequency basis pattern can be converted to smaller integers. The coder can ignore the quantized transform coefficients 216 with zero values, thereby further compressing the transform coefficients. The quantization process is also reversible, and the quantized transform coefficients 216 can be reconstructed into transform coefficients within the inverse operation of quantization (referred to as "inverse quantization").

[0039]

[0061] Since the coder ignores the remainder of such division within the rounding operation, the quantization stage 214 can be irreversible. Typically, the quantization stage 214 can contribute to the largest information loss within the process 200A. The greater the information loss, the fewer bits the quantized transform coefficients 216 may require. To obtain various levels of information loss, the coder can use various values of the quantization parameter or any other parameter of the quantization process.

[0040]

[0062] In the binary encoding stage 226, the coder can encode the prediction data 206 and the quantized transform coefficients 216 using binary encoding techniques such as, for example, entropy encoding, variable length encoding, arithmetic encoding, Huffman encoding, context adaptive binary arithmetic encoding, or any other reversible or irreversible compression algorithm. In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the coder can encode other information such as, for example, the prediction mode used in the prediction stage 204, the parameters of the prediction operation, the type of transformation in the transformation stage 212, the parameters of the quantization process (e.g., quantization parameters), coder control parameters (e.g., bitrate control parameters), etc. in the binary encoding stage 226. The coder can generate a video bitstream 228 using the output data of the binary encoding stage 226. In some embodiments, the video bitstream 228 can be further packetized for network transmission.

[0041]

[0063] Referring to the reconstruction path of process 200A, in the inverse quantization stage 218, the coder can perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. In the inverse transformation stage 220, the coder can generate a reconstructed residual BPU 222 based on the reconstructed transform coefficients. The coder can add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction criterion 224 used in the next iteration of process 200A.

[0042]

[0064] It should be noted that other variations of process 200A can be used to encode the video sequence 202. In some embodiments, the encoder can execute the steps of process 200A in a different order. In some embodiments, one or more steps of process 200A can be combined into a single step. In some embodiments, a single step of process 200A can be divided into multiple steps. For example, the transform step 212 and the quantization step 214 can be combined into a single step. In some embodiments, process 200A can include additional steps. In some embodiments, process 200A can omit one or more steps in FIG. 2A.

[0043]

[0065] FIG. 2B shows a schematic diagram of another example 200B of an encoding process that conforms to an embodiment of the present disclosure. Process 200B can be modified from process 200A. For example, process 200B can be used by an encoder that conforms to a hybrid video coding standard (e.g., the H.26x series). Compared with process 200A, the forward path of process 200B further includes a mode decision step 230 and divides the prediction step 204 into a spatial prediction step 2042 and a temporal prediction step 2044. The reconstruction path of process 200B additionally includes a loop filter step 232 and a buffer 234.

[0044]

[0066] Generally, prediction techniques can be classified into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-picture prediction or "intra prediction") can use the pixels of one or more adjacent already-coded BPUs within the same picture to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include adjacent BPUs. Spatial prediction can reduce the inherent spatial redundancy of a picture. Temporal prediction (e.g., inter-picture prediction or "inter prediction") can use the regions of one or more already-coded pictures to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include the coded pictures. Temporal prediction can reduce the inherent temporal redundancy of a picture.

[0045]

[0067] Referring to process 200B, in the forward path, the coder performs prediction operations at spatial prediction stage 2042 and temporal prediction stage 2044. For example, at spatial prediction stage 2042, the coder can perform intra prediction. For the original BPU of the encoded picture, the prediction reference 224 may include one or more adjacent BPUs that are encoded (within the forward path) and reconstructed (within the reconstruction path) within the same picture. The coder can generate the predicted BPU 208 by extrapolating the adjacent BPUs. The extrapolation technique may include, for example, linear extrapolation or linear interpolation, polynomial extrapolation or polynomial interpolation, etc. In some embodiments, the coder can perform extrapolation at the pixel level, such as by extrapolating the value of the corresponding pixel for each pixel of the predicted BPU 208. The adjacent BPUs used for extrapolation can be located relative to the original BPU in various directions, such as vertically (e.g., above the original BPU), horizontally (e.g., to the left of the original BPU), diagonally (e.g., bottom - left, bottom - right, top - left, or top - right of the original BPU), or any direction defined within the video coding standard being used. In intra prediction, the prediction data 206 may include, for example, the position (e.g., coordinates) of the adjacent BPUs used, the size of the adjacent BPUs used, the parameters of the extrapolation, the direction of the adjacent BPUs used relative to the original BPU, etc.

[0046]

[0068] In another example, in the temporal prediction stage 2044, the coder can perform inter prediction. For the original BPU of the current picture, the prediction reference 224 can include one or more pictures (referred to as "reference pictures") that are encoded (within the forward path) and reconstructed (within the reconstruction path). In some embodiments, the reference pictures can be encoded and reconstructed for each BPU. For example, the coder can generate a reconstructed BPU by adding the reconstructed residual BPU 222 to the predicted BPU 208. When all the reconstructed BPUs of the same picture are generated, the coder can generate a picture reconstructed as a reference picture. The coder can perform an operation of "motion estimation" to search for a matching region within the range of the reference picture (referred to as the "search window"). The position of the search window within the reference picture can be determined based on the position of the original BPU within the current picture. For example, the search window can be centered at a position having the same coordinates as the original BPU within the current picture within the reference picture and can be expanded over a predetermined distance. When the coder identifies a region similar to the original BPU within the search window (e.g., by using a pel recursive algorithm, a block matching algorithm, etc.), the coder can determine that region as the matching region. The matching region can have dimensions different from (e.g., smaller than, equal to, larger than, or of a different shape than) the original BPU. Since the reference picture and the current picture are temporally separated within the timeline (as shown in FIG. 1, for example), it can be considered that the matching region "moves" to the position of the original BPU as time passes. The coder can record the direction and distance of such motion as a "motion vector". When multiple reference pictures (such as picture 106 in FIG. 1) are used, the coder can search for a matching region for each reference picture and obtain its associated motion vector. In some embodiments, the coder can assign weights to the pixel values of the matching regions of the individual matching reference pictures.

[0047]

[0069] Motion estimation can be used, for example, to identify various types of motion such as translation, rotation, scaling, etc. In inter prediction, the prediction data 206 can include, for example, the position (e.g., coordinates) of the matching region, the motion vector associated with the matching region, the number of reference pictures, the weights associated with the reference pictures, and the like.

[0048]

[0070] To generate the predicted BPU 208, the encoder can perform an operation of "motion compensation". Motion compensation can be used to reconstruct the predicted BPU 208 based on the prediction data 206 (e.g., motion vector) and the prediction reference 224. For example, the encoder can move the matching region of the reference picture according to the motion vector, in which the encoder can predict the original BPU of the current picture. When multiple reference pictures (such as picture 106 in FIG. 1) are used, the encoder can move the matching regions of the reference pictures according to the individual motion vectors and average the pixel values of the matching regions. In some embodiments, when the encoder assigns weights to the pixel values of the matching regions of the individual matching reference pictures, the encoder can add the weighted sum of the pixel values of the moved matching regions.

[0049]

[0071] In some embodiments, inter prediction can be unidirectional or bidirectional. Unidirectional inter prediction can use one or more reference pictures in the same temporal direction with respect to the current picture. For example, picture 104 in FIG. 1 is a unidirectional inter prediction picture where the reference picture (i.e., picture 102) precedes picture 104. Bidirectional inter prediction can use one or more reference pictures in both temporal directions with respect to the current picture. For example, picture 106 in FIG. 1 is a bidirectional inter prediction picture where the reference pictures (i.e., pictures 104 and 108) are in both temporal directions with respect to picture 104.

[0050]

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

[0051]

[0073] In the reconstruction path of process 200B, when the intra prediction mode is selected within the forward path, after generating a prediction reference 224 (e.g., the current BPU that is encoded and reconstructed within the current picture), the encoder can directly feed the prediction reference 224 to the spatial prediction stage 2042 for later use (e.g., for extrapolating the next BPU of the current picture). When the inter prediction mode is selected within the forward path, after generating a prediction reference 224 (e.g., the current picture in which all BPUs are encoded and reconstructed), the encoder can feed the prediction reference 224 to the loop filter stage 232, where the encoder can apply a loop filter to the prediction reference 224 to reduce or eliminate the distortion (e.g., blocking artifacts) caused by inter prediction. For example, the encoder can apply various loop filter techniques at the loop filter stage 232, such as deblocking, sample adaptive offset, adaptive loop filter, etc. The loop filtered reference picture can be stored in a buffer 234 (or "decoded picture buffer") for later use (e.g., for use as an inter prediction reference picture for future pictures of video sequence 202). The encoder can store one or more reference pictures in buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the encoder can encode the parameters of the loop filter (e.g., the strength of the loop filter) at the binary coding stage 226 along with the quantized transform coefficients 216, prediction data 206, and other information.

[0052]

[0074] FIG. 3A shows a schematic diagram of an example of a decoding process 300A that conforms to an embodiment of the present disclosure. Process 300A may be a decompression process corresponding to the compression process 200A of FIG. 2A. In some embodiments, process 300A may be similar to the reconstruction path of process 200A. The decoder can decode the video bitstream 228 into a video stream 304 according to process 300A. The video stream 304 may be very similar to the video sequence 202. However, due to information loss in the compression and decompression processes (e.g., the quantization stage 214 of FIGS. 2A-2B), generally, the video stream 304 is not identical to the video sequence 202. Similar to processes 200A and 200B of FIGS. 2A-2B, the decoder can execute process 300A at the level of a basic processing unit (BPU) for each picture encoded in the video bitstream 228. For example, the decoder can execute process 300A in an iterative manner, and the decoder can decode a basic processing unit in one iteration of process 300A. In some embodiments, the decoder can execute process 300A in parallel for regions (e.g., regions 114-118) of each picture encoded in the video bitstream 228.

[0053]

[0075] In FIG. 3A, the decoder can feed a portion of the video bitstream 228 related to the basic processing unit of the encoded picture (referred to as the "encoded BPU") to the binary decoding stage 302. In the binary decoding stage 302, the decoder can decode that portion into predicted data 206 and quantized transform coefficients 216. The decoder can feed the quantized transform coefficients 216 to the inverse quantization stage 218 and the inverse transform stage 220 to generate the reconstructed residual BPU 222. The decoder can feed the predicted data 206 to the prediction stage 204 to generate the predicted BPU 208. The decoder can add the reconstructed residual BPU 222 to the predicted BPU 208 to generate the predicted reference 224. In some embodiments, the predicted reference 224 can be stored in a buffer (e.g., a decoded picture buffer in computer memory). The decoder can feed the predicted reference 224 to the prediction stage 204 for performing prediction operations in the next iteration of process 300A.

[0054]

[0076] The decoder can repeatedly execute process 300A to decode each encoded BPU of the encoded picture and generate a predicted reference 224 for encoding the next encoded BPU of the encoded picture. After decoding all the encoded BPUs of the encoded picture, the decoder can output the picture to the video stream 304 for display and proceed to decode the next encoded picture in the video bitstream 228.

[0055]

[0077] In the binary decoding stage 302, the decoder can perform the inverse operation of the binary coding technique used by the encoder (e.g., entropy coding, variable length coding, arithmetic coding, Huffman coding, context adaptive binary arithmetic coding, or any other reversible compression algorithm). In some embodiments, in addition to the predicted data 206 and the quantized transform coefficients 216, the decoder can decode other information in the binary decoding stage 302, such as, for example, the prediction mode, the parameters of the prediction operation, the type of transformation, the parameters of the quantization process (e.g., quantization parameters), the encoder control parameters (e.g., bit rate control parameters), etc. In some embodiments, when the video bitstream 228 is transmitted in packet units over a network, the decoder can depacketize the video bitstream 228 and then feed it into the binary decoding stage 302.

[0056]

[0078] FIG. 3B shows a schematic diagram of another example 300B of the decoding process that conforms to an embodiment of the present disclosure. Process 300B can be modified from process 300A. For example, process 300B can be used by a decoder that complies with a hybrid video coding standard (e.g., the H.26x series). Compared with process 300A, process 300B further divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and additionally includes a loop filter stage 232 and a buffer 234.

[0057]

[0079] In process 300B, for the encoded basic processing unit of the decoded encoded picture (referred to as the "current picture"), the prediction data 206 decoded by the decoder from the binary decoding stage 302 can include various types of data depending on which prediction mode was used by the encoder to encode the current BPU. For example, if intra prediction was used by the encoder to encode the current BPU, the prediction data 206 can include a prediction mode indicator (e.g., a flag value) indicating intra prediction, parameters of the intra prediction operation, etc. The parameters of the intra prediction operation can include, for example, the position (e.g., coordinates) of one or more adjacent BPUs used as a reference, the size of the adjacent BPUs, extrapolation parameters, the direction of the adjacent BPUs with respect to the original BPU, etc. In another example, if inter prediction was used by the encoder to encode the current BPU, the prediction data 206 can include a prediction mode indicator (e.g., a flag value) indicating inter prediction, parameters of the inter prediction operation, etc. The parameters of the inter prediction operation can include, for example, the number of reference pictures related to the current BPU, the weights respectively related to the reference pictures, the position (e.g., coordinates) of one or more matching regions in each reference picture, one or more motion vectors respectively related to the matching regions, etc.

[0058]

[0080] Based on the prediction mode indicator, the decoder can determine whether to 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 of the execution of such spatial or temporal prediction are shown in FIG. 2B and will not be repeated here. After performing such spatial or temporal prediction, the decoder can generate the predicted BPU 208. As described in FIG. 3A, the decoder can add the predicted BPU 208 and the reconstructed residual BPU 222 to generate the prediction reference 224.

[0059]

[0081] In process 300B, the decoder can feed the predicted reference 224 for performing a prediction operation within the next iteration of process 300B to the spatial prediction stage 2042 or the temporal prediction stage 2044. For example, when the current BPU is decoded using intra prediction in the spatial prediction stage 2042, after generating the prediction reference 224 (e.g., the decoded current BPU), the decoder can directly feed the prediction reference 224 to the spatial prediction stage 2042 for later use (e.g., for extrapolating the next BPU of the current picture). When the current BPU is decoded using inter prediction in the temporal prediction stage 2044, after generating the prediction reference 224 (e.g., the reference picture in which all BPUs are decoded), the coder can feed the prediction reference 224 to the loop filter stage 232 to reduce or eliminate distortion (e.g., blocking artifacts). The decoder can apply a loop filter to the prediction reference 224 in the manner described in FIG. 2B. The loop-filtered reference picture can be stored in the buffer 234 (e.g., the decoded picture buffer in computer memory) for later use (e.g., for use as an inter prediction reference picture for future encoded pictures of the video bitstream 228). The decoder can store one or more reference pictures in the buffer 234 for use in the temporal prediction stage 2044. In some embodiments, if the prediction mode indicator of the prediction data 206 indicates that inter prediction has been used to encode the current BPU, the prediction data can further include loop filter parameters (e.g., the strength of the loop filter).

[0060]

[0082] FIG. 4 is a block diagram of an example of a device 400 for encoding or decoding video that conforms to an embodiment of the present disclosure. As shown in FIG. 4, the device 400 may include a processor 402. When the processor 402 executes the instructions described herein, the device 400 can become a dedicated machine for encoding or decoding video. The processor 402 can be any type of circuit capable of manipulating or processing information. For example, the processor 402 can include any combination of any number of central processing units ("CPUs"), graphics processing units ("GPUs"), neural processing units ("NPUs"), microcontroller units ("MCUs"), optical processors, programmable logic controllers, microcontrollers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), generic array logic (GALs), complex programmable logic devices (CPLDs), field-programmable gate arrays (FPGAs), system-on-chips (SoCs), application-specific integrated circuits (ASICs), etc. In some embodiments, the processor 402 can be a set of processors grouped as a single logical component. For example, as shown in FIG. 4, the processor 402 can include a plurality of processors including processor 402a, processor 402b, and processor 402n.

[0061]

[0083] Machine 400 may also include a memory 404 configured to store data (e.g., a set of instructions, computer code, intermediate data, etc.). For example, as shown in FIG. 4, the stored data may include program instructions (e.g., program instructions for implementing steps within processes 200A, 200B, 300A, or 300B) and processing data (e.g., video sequence 202, video bitstream 228, or video stream 304). The processor 402 can access the program instructions and the processing data (e.g., via bus 410) and execute the program instructions to perform operations or processing on the processing data. The memory 404 may include a high-speed random access storage device or a non-volatile storage device. In some embodiments, the memory 404 may include any combination of any number of random access memories (RAMs), read-only memories (ROMs), optical disks, magnetic disks, hard drives, solid state drives, flash drives, secure digital (SD) cards, memory sticks, compact flash (CF) cards, etc. The memory 404 may also be a memory bank (not shown in FIG. 4) grouped as a single logical component.

[0062]

[0084] A bus 410, such as an internal bus (e.g., a CPU memory bus) or an external bus (e.g., a universal serial bus port, a peripheral component interconnect express port), can be a communication device that transfers data between components within the device 400.

[0063]

[0085] For simplicity of explanation without ambiguity, in the present disclosure, the processor 402 and other data processing circuits are collectively referred to as "data processing circuits". The data processing circuits can be implemented entirely in hardware or as a combination of software, hardware, or firmware. Additionally, the data processing circuits can be a single independent module or can be fully or partially combined within any other component of the device 400.

[0064]

[0086] Device 400 may further include a network interface 406 for providing wired or wireless communication with a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.). In some embodiments, network interface 406 may include any combination of any number of network interface controllers (NICs), radio frequency (RF) modules, transponders, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication (“NFC”) adapters, cellular network chips, and the like.

[0065]

[0087] In some embodiments, device 400 may optionally further include a peripheral device interface 408 for providing connection to one or more peripheral devices. As shown in FIG. 4, peripheral devices may include, but are not limited to, cursor control devices (e.g., a mouse, touch pad, or touch screen), keyboards, displays (e.g., cathode ray tube displays, liquid crystal displays, or light emitting diode displays), video input devices (e.g., a camera or input interface coupled to a video archive), and the like.

[0066]

[0088] It should be noted that the video codec (e.g., the codec executing process 200A, 200B, 300A, or 300B) can be implemented as any combination of any software or hardware modules within device 400. For example, some or all of the stages of process 200A, 200B, 300A, or 300B can be implemented as one or more software modules of device 400, such as program instructions loadable into memory 404. In another example, some or all of the stages of process 200A, 200B, 300A, or 300B can be implemented as one or more hardware modules of device 400, such as dedicated data processing circuits (e.g., FPGA, ASIC, NPU, etc.).

[0067]

[0089] In VVC, a picture is divided into one or more tile rows and one or more tile columns. A tile is a series of CTUs that cover a rectangular area of the picture. The CTUs within a tile are scanned in raster scan order within that tile. A slice is composed of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of the picture. As a result, each vertical slice boundary is also a vertical tile boundary. The horizontal boundaries of a slice are not tile boundaries but may be composed of horizontal CTU boundaries within a tile. This occurs when dividing a tile into a plurality of rectangular slices, each composed of an integer number of consecutive complete CTU rows within the tile.

[0068]

[0090] In VVC, a coded video bitstream or byte stream, which is a series of bits in the form of network abstraction layer (NAL) units, forms one or more coded video sequences (CVSs), and each CVS is composed of one or more coded layer video sequences (CLVSs). A CLVS is a series of picture units (PUs), and each PU contains exactly one coded picture.

[0069]

[0091] A PU is composed of a picture header syntax structure as the payload, one coded picture containing one or more video coding layer (VCL) NAL units, and zero or one picture header (PH) NAL unit containing zero or more other non-VCL NAL units. A VCL NAL unit contains a coded slice composed of a slice header and slice data.

[0070]

[0092] In VVC, the range of the quantization parameter (QP) can be set from 0 to 63, and the signaling of the initial QP can be appropriately changed. When a non-zero value of slice_qp_delta is coded in the slice header, the initial value of SliceQpY is corrected at the slice level. In particular, the value of init_qp_minus26 is corrected to be within the range of (-26 + QpBdOffsetY) to +37. When the size of the transform block is not a power of 4, the transform coefficients are processed with corrections to the QP or the QP levelScale table, rather than by multiplication by 181 / 256 (or 181 / 128), to compensate for the implicit scaling by the transform process. In the transform skip block, the minimum allowable QP is defined as 4 because the quantization step size becomes 1 when QP is equal to 4.

[0071]

[0093] In addition, the QP value can be changed for each CU or for each quantization group. The delta QP values for the luma and chroma components can be signaled separately.

[0072]

[0094] For each luma-coded block, the variable qP Y_PREV is first derived as follows: - If one or more of the following conditions are true, q PY_PREV is set equal to SliceQpY: - The current quantization group is the first quantization group within the slice. - The current quantization group is the first quantization group within the tile. - Otherwise, qP Y_PREV is set equal to the luma quantization parameter Qp Y of the last luma-coded unit in the previous quantization group in the decoding order.

[0073]

[0095] Second, the variable qP Y_A is derived as follows: - If one or more of the following conditions are true, qP Y_A is set to qP Y_PREVSet it equal to: - The adjacent block to the left of the current quantization group cannot be used. - The adjacent block to the left of the current quantization group and the current coding block are in different coding tree blocks (CTBs). - Otherwise, qP Y_A is set equal to the luma quantization parameter of the coding unit above the current quantization group.

[0074]

[0096] Thirdly, the variable qP Y_B is derived as follows: - If one or more of the following conditions are true, qP Y_B is set equal to qP Y_PREV : - The adjacent block above the current quantization group cannot be used. - The adjacent block above the current quantization group and the current coding block are in different coding tree blocks (CTBs). - Otherwise, qP Y_B is set equal to the luma quantization parameter of the coding unit to the left of the current quantization group.

[0075]

[0097] Fourthly, if the current quantization group is the first quantization group in the coding tree block (CTB) row within the block and the adjacent block above the current quantization group can be used, qPY_PRED is set to qPY_B, otherwise qPY_PRED = (qPY_A + qPY_B + 1) >> 1

[0076]

[0098] After deriving qPY_PRED, the quantization parameter Qp’ Y of the current luma coding block can be derived using the following Equation 1: Qp’ Y = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY) % (64 + QpBdOffsetY)) (Equation 1) However, QpBdOffsetY is equal to 6 * sps_bitdepth_minus8, and the variable CuQpDeltaVal specifies the difference between the quantization parameter of the luma coded block and its predicted value.

[0077]

[0099] 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 signaled in the bitstream at the CU level. If cu_qp_delta_abs and cu_qp_delta_sign_flag are not in the bitstream, it can be inferred that CuQpDeltaVal is 0.

[0078]

[0100] The quantization parameter for the chroma coded block can be different from Qp Y Unlike that. The chroma quantization parameter (Qp Cb , Qp Cr , Qp CbCr ) and the offset between the luma quantization parameter can be signaled in the bitstream. In VVC, the following equations 2 - 4 are used to derive the chroma quantization parameters Qp’ Cb and Qp’ Cr , as well as Qp’ CbCr for joint Cb - Cr coding: Qp’ Cb = Clip3(-QpBdOffset c , 63, qP Cb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffset Cb ) + QpBdOffset C (Equation 2) Qp’ Cr = Clip3(-QpBdOffset c , 63, qP Cr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffset Cr)+QpBdOffset C (Equation 3) Qp’ CbCr =Clip3(-QpBdOffset c ,63,qP CbCr +pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffset CbCr )+QpBdOffset C (Equation 4) However, qP Cb , qP Cr , and qP CbCr can be derived from the reference table using the clipped values of Qp Y as inputs to Equations 5 - 8: qPi Chroma =Clip3(-QpBdOffset,63,Qp Y -QpBdOffset) (Equation 5) qP Cb =ChromaQpTable[0][qP Chroma (Equation 6) qP Cr =ChromaQpTable[1][qP Chroma (Equation 7) qP CbCr =ChromaQpTable[2][qP Chroma (Equation 8)

[0079]

[0101] When cu_chroma_qp_offset_flag is equal to 0, CuQpOffset Cb , CuQpOffset Cr、 and CuQpOffset CbCr are set to 0, and when cu_chroma_qp_offset_flag is equal to 1, they can be derived using Equations 9 - 11: CuQpOffset Cb =cb_qp_offset_list[cu_chroma_qp_offset_idx] (Equation 9) CuQpOffset Cr=cr_qp_offset_list[cu_chroma_qp_offset_idx] (Equation 10) CuQpOffset CbCr =joint_cbcr_qp_offset_list[cu_chroma_qp_offset_idx] (Equation 11) However, cu_chroma_qp_offset_flag and cu_chroma_qp_offset_idx are syntax elements signaled within the bitstream.

[0080]

[0102] As discussed above, cu_qp_delta_abs and cu_qp_delta_sign_flag are signaled to derive CuQpDeltaVal that can be used for QP derivation. CuQpOffset that can be used for chroma QP derivation Cb , CuQpOffset Cr , and CuQpOffset CbCr are signaled by 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] to derive them.

[0081]

[0103] The following is an introduction to the signaling process of the related syntax. First, as shown in FIG. 5 showing an exemplary PPS syntax for CU delta QP, cu_qp_delta_enabled_flag, cu_qp_delta_subdiv, cu_chroma_qp_offset_enabled_flag, and cu_chroma_qp_offset_subdiv can be signaled within a picture parameter set (PPS).

[0082]

[0104] After that, as shown in FIG. 6 which shows an exemplary coded tree syntax for CU delta QP, the variables IsCuQpDeltaCoded and IsCuChromaQpOffsetCoded, the positions of quantization parameter groups, and the variables qgOnY and qgOnC can be derived at the coded tree level.

[0083]

[0105] Furthermore, as shown in FIG. 7, on condition that IsCuQpDeltaCoded and IsCuChromaQpOffsetCoded are derived at the coding unit level, which shows an exemplary transform unit level syntax for CU delta QP, cu_qp_delta_abs / cu_qp_delta_sign_flag and cu_chroma_qp_offset_flag / cu_chroma_qp_offset_idx are signaled in the transform unit.

[0084]

[0106] In the example of FIG. 5, cu_qp_delta_subdiv specifies the maximum cbSubdiv value of the coding unit that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag, and cu_chroma_qp_offset_subdiv specifies the maximum cbSubdiv value of the coding unit that conveys cu_chroma_qp_offset_flag. cbSubdiv is a variable whose value is related to the size of the coding unit. Smaller coding units have larger values of cbSubdiv. By dividing the coding unit into a plurality of sub-coding units, the value of cbSubdiv increases. The value ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv depend on a variable called MaxMttDepthY which is derived based on the slice level and the type of slice. MaxMttDepthY = slice_max_mtt_hierarchy_depth_luma (Equation 12) However, slice_max_mtt_hierarchy_depth_luma is signaled within the slice header as shown in FIG. 8 which shows an exemplary slice header syntax.

[0085]

[0107] As described above, two syntax elements, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv, are signaled at the PPS level in order to determine the maximum depth of the coding unit that can convey cu_qp_delta_abs / cu_qp_delta_sign_flag and cu_chroma_qp_offset_flag. However, the value ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv depend on the variable MaxMttDepthY derived based on the slice level and the type of slice. Therefore, the syntax elements at the PPS level depend on the slice level syntax.

[0086]

[0108] In the bitstream syntax structure, the PPS is at a higher level than the slice level, and the syntax of the PPS comes before the slice syntax. In the decoder, the values of the high-level syntax can be referenced when parsing the low-level syntax. However, when parsing the high-level syntax, the values of the low-level syntax cannot be referenced. Therefore, in the current VVC technique, the fact that cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv depend on the slice header syntax causes a logical problem that needs to be solved.

[0087]

[0109] To address the above problem, solutions are provided in various embodiments of the present disclosure. In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be moved to the slice header after slice_max_mtt_hierarchy_depth_luma is signaled. Thereby, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are no longer syntax elements at the PPS level. An example of the slice header syntax is shown in FIG. 9 (for example, element 901).

[0088]

[0110] In the example shown in FIG. 9, cu_qp_delta_enabled_flag and cu_chroma_qp_offset_enabled_flag are signaled within the PPS. In some embodiments, as shown in FIG. 10 (e.g., element 1001), cu_qp_delta_enabled_flag and cu_chroma_qp_offset_enabled_flag may be signaled within the slice header.

[0089]

[0111] In the example shown in FIG. 10, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be determined as follows. For example, the value range of cu_qp_delta_subdiv can be specified as follows. When slice_type is equal to I, the value of cu_qp_delta_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + MaxMttDepthY) (including both ends). Otherwise (when slice_type is not equal to I), the value of cu_qp_delta_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + MaxMttDepthY). If it does not exist, it can be inferred that the value of cu_qp_delta_subdiv is equal to 0.

[0090]

[0112] The value range of cu_chroma_qp_offset_subdiv can be specified as follows. When slice_type is equal to I, the value of cu_chroma_qp_offset_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + MaxMttDepthY). Otherwise (when slice_type is not equal to I), the value of cu_chroma_qp_offset_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + MaxMttDepthY). If it does not exist, it can be inferred that the value of cu_chroma_qp_offset_subdiv is equal to 0.

[0091]

[0113] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are moved to the picture header, and at the same time, the syntax elements used to derive MaxMttDepthY are also moved to the picture header, so the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv do not depend on the slice-level syntax.

[0092]

[0114] Since one picture can include multiple slices having different slice types of inter and intra. Therefore, in this embodiment, cu_qp_delta_subdiv is divided into two syntax elements, namely ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice. cu_chroma_qp_offset_subdiv is divided into two syntax elements, namely 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 for intra slices within the current picture, and ph_cu_qp_delta_subdiv_inter_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice are for inter slices within the current picture. Similarly, two syntax elements, namely ph_max_mtt_hierarchy_depth_intra_slice_luma and ph_max_mtt_hierarchy_depth_inter_slice are signaled for MaxMttDepthY of intra slices and inter slices.

[0093]

[0115] An example of the picture header syntax is shown in Table 11 of FIG. 11. As shown in Table 11, ph_cu_qp_delta_subdiv_intra_slice (for example, element 1101), ph_cu_chroma_qp_offset_subdiv_intra_slice (for example, element 1102), ph_cu_qp_delta_subdiv_inter_slice (for example, element 1103), and ph_cu_chroma_qp_offset_subdiv_inter_slice (for example, element 1104) are shown in italics and gray.

[0094]

[0116] Regarding the intra slice, ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding unit within the intra slice that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma). If it does not exist, the value of ph_cu_qp_delta_subdiv_intra_slice can be inferred to be equal to 0.

[0095]

[0117] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding unit within the intra slice that conveys cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma). If it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice can be inferred to be equal to 0.

[0096]

[0118] In the disclosed embodiment, ph_max_mtt_hierarchy_depth_intra_slice_luma is signaled in the picture header and specifies the maximum hierarchical depth of the coding units resulting from the multi-type tree partitioning of the leaves of the quadtree within a slice having a sh_slice_type equal to "I" (i.e., an intra prediction slice). CtbLog2SizeY and MinQtLog2SizeIntraY are derived using the following equations 13 to 15, where CtbLog2SizY represents the size of the luma coding tree block of the coding tree unit within a slice having a slice_type equal to "I" (i.e., an intra prediction slice), and MinQtLog2SizeIntraY represents the minimum size within the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the coding tree unit within a slice having a slice_type equal to "I". CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (Equation 13) MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY (Equation 14) MinCbLog2SizeY = sps_log2_min_luma_coding_block_size_minus2 + 2 (Equation 15)

[0097]

[0119] 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 signaled in the SPS.

[0098]

[0120] The variable CuQpDeltaSubdiv is derived as the maximum cbSubdiv value of the coding unit that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag, and the variable CuChromaQpOffsetSubdiv is derived as the maximum cbSubdiv value of the coding unit that conveys cu_chroma_qp_offset_flag. These two variables are derived as Equation 16 and Equation 17 respectively. CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (Equation 16) CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice (Equation 17)

[0099]

[0121] Regarding inter-slice, ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding unit that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag within the inter-slice. The value of ph_cu_qp_delta_subdiv_inter_slice can be in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice). If it does not exist, the value of ph_cu_qp_delta_subdiv_inter_slice can be inferred to be equal to 0. ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding unit within the inter-slice that conveys cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_inter_slice is in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice). If it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice can be inferred to be equal to 0.

[0100]

[0122] ph_max_mtt_hierarchy_depth_inter_slice can be signaled in the picture header and specifies the maximum hierarchical depth of the coding units resulting from the multi-type tree partitioning of the leaves of the quadtree within a slice that has a sh_slice_type not equal to "I" (i.e., an inter-predicted slice with a slice_type equal to "P" or "B"). CtbLog2SizY and MinQtLog2SizeInterY are derived using the following equations 18 - 20, where in these equations, CtbLog2SizY represents the size of the luma coding tree block of the coding tree unit within a slice that has a slice_type not equal to "I" (i.e., an inter-predicted slice with a slice_type equal to "P" or "B"), and MinQtLog2SizeInterY represents the minimum size within the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the coding tree unit within a slice that has a slice_type not equal to "I". CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (Equation 18) MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice_luma + MinCbLog2SizeY (Equation 19) MinCbLog2SizeY = sps_log2_min_luma_coding_block_size_minus2 + 2 (Equation 20)

[0101]

[0123] 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 signaled in the SPS.

[0102]

[0124] The variable CuQpDeltaSubdiv is derived as the maximum cbSubdiv value of the coding unit that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag, and the variable CuChromaQpOffsetSubdi is derived as the maximum cbSubdiv value of the coding unit that conveys cu_chroma_qp_offset_flag. These two variables are derived as Equation 21 and Equation 22 respectively. CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (Equation 21) CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice (Equation 22)

[0103]

[0125] In some embodiments, both cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be signaled at the PPS level and within the slice header. For example, as shown in FIG. 12 (e.g., elements 1201 and 1202), pps_cu_qp_delta_subdiv and pps_cu_chroma_qp_offset_subdiv are signaled within the PPS syntax. As shown in FIG. 13 (e.g., element 1301), slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv are also signaled within the slice header.

[0104]

[0126] In one embodiment, as shown in the following example, 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). In this example, the range of values of pps_cu_qp_delta_subdiv is specified as follows: The value of pps_cu_qp_delta_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + SpsMaxMttDepthY). If it does not exist, it can be inferred that the value of pps_cu_qp_delta_subdiv is equal to 0. The range of values of pps_cu_chroma_qp_offset_subdiv is specified as follows: The value of pps_cu_chroma_qp_offset_subdiv can be within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + SpsMaxMttDepthY). If it does not exist, it can be inferred that the value of pps_cu_chroma_qp_offset_subdiv is equal to 0.

[0105]

[0127] When ctbLog2SizeY is determined, MinQtLog2SizeY and SpsMaxMttDepthY can be derived as follows.

[0106]

[0128] In one way, MinQtLog2SizeY is: min(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) Or max(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) can be derived as.

[0107]

[0129] It will be understood that MinQtLog2SizeIntraY and MinQtLog2SizeIntraY can be derived using various techniques as defined in VVC draft 6.

[0108]

[0130] Alternatively, the value of MinQtLog2SizeY can be derived based on the following Equation 23: MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_luma + MinCbLog2SizeY (Equation 23)

[0109]

[0131] However, sps_log2_diff_min_qt_min_cb_luma is signaled within the SPS as shown in FIG. 14 (e.g., element 1401). It will be understood that MinCbLog2SizeY can be derived using various techniques as defined in the VVC draft 6.

[0110]

[0132] Regarding SpsMaxMttDepth, in one way, 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) However, sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be signaled within the SPS.

[0111]

[0133] Alternatively, the value of SpsMaxMttDepthY can be derived as follows: SpsMaxMttDepthY = sps_max_mtt_depth_luma (Equation 24) However, sps_max_mtt_depth_luma can be signaled within the SPS as shown in FIG. 14 (e.g., element 1402).

[0112]

[0134] In the above example, the PPS syntax elements pps_cu_qp_delta_subdiv and pps_cu_chroma_qp_offset_subdiv depend on the SPS syntax. Such a parsing dependency between PPS and SPS may not be desirable. To address this dependency issue, in some embodiments, the range of values of pps_cu_qp_delta_subdiv can be specified as follows.

[0113]

[0135] The value of pps_cu_qp_delta_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + ppsMaxMttDepthY). If it does not exist, the value of pps_cu_qp_delta_subdiv can be inferred to be equal to 0.

[0114]

[0136] The range of values of pps_cu_chroma_qp_offset_subdiv can be specified as follows. The value of pps_cu_chroma_qp_offset_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + ppsMaxMttDepthY). If it does not exist, the value of pps_cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0115]

[0137] CtbLog2SizeY, MinQtLog2SizeY, and ppsMaxMttDepthY are derived as follows: CtbLog2SizeY = pps_log2_ctb_size (Equation 25) MinQtLog2SizeY = pps_log2_min_qt (Equation 26) ppsMaxMttDepthY = pps_max_mtt_depth_luma (Equation 27)

[0116]

[0138] pps_log2_ctb_size, pps_log2_min_qt, and pps_max_mtt_depth_luma can be signaled within the PPS as shown in FIG. 15 (e.g., element 1501).

[0117]

[0139] In the above example, the ranges of slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv depend on the syntax of the slice header. For example, the value range of slice_cu_qp_delta_subdiv can be specified as follows. When slice_type is equal to I, the value of slice_cu_qp_delta_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + SliceMaxMttDepthY). Otherwise (when slice_type is not equal to I), the value of slice_cu_qp_delta_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + SliceMaxMttDepthY). If it does not exist, it can be inferred that the value of slice_cu_qp_delta_subdiv is 0 or equal to pps_cu_qp_delta_subdiv.

[0118]

[0140] The value range of slice_cu_chroma_qp_offset_subdiv can be specified as follows. When slice_type is equal to I, the value of slice_cu_chroma_qp_offset_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + SliceMaxMttDepthY). Otherwise (when slice_type is not equal to I), the value of slice_cu_chroma_qp_offset_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + SliceMaxMttDepthY). If it does not exist, the value of slice_cu_chroma_qp_offset_subdiv can be inferred to be 0 or equal to pps_cu_chroma_qp_offset_subdiv.

[0119]

[0141] When CtbLog2SizeY, MinQtLog2SizeIntraY, and MinQtLog2SizeInterY are defined, SliceMaxMttDepthY is SliceMaxMttDepthY = slice_max_mtt_hierarchy_depth_luma (Equation 28) and can be derived as such.

[0120]

[0142] slice_max_mtt_hierarchy_depth_luma can be signaled within the slice header.

[0121]

[0143] In the above example, it can be inferred that cu_qp_delta_subdiv is slice_cu_qp_delta_subdiv. Alternatively, it can be first inferred that cu_qp_delta_subdiv is pps_cu_qp_delta_subdiv, and if slice_cu_qp_delta_subdiv exists, slice_cu_qp_delta_subdiv overrides it, and it can be inferred that cu_qp_delta_subdiv is slice_cu_qp_delta_subdiv. The value of cu_qp_delta_subdiv can be used to derive Qp Y can be used.

[0122]

[0144] Further, it can be inferred that cu_chroma_qp_offset_subdiv is slice_cu_chroma_qp_offset_subdiv. Alternatively, it can be first inferred that cu_chroma_qp_offset_subdiv is pps_cu_chroma_qp_offset_subdiv, and if slice_cu_chroma_qp_offset_subdiv exists, slice_cu_chroma_qp_offset_subdiv overrides it, and it can be inferred that cu_chroma_qp_offset_subdiv is slice_cu_chroma_qp_offset_subdiv. The value of cu_chroma_qp_offset_subdiv can be used to derive Qp Cb , Qp Cr , QP CbCr can be used.

[0123]

[0145] In some embodiments, both cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be signaled at the SPS level and within the slice header. As shown in FIG. 16 (e.g., element 1601), sps_cu_qp_delta_subdiv and sps_cu_chroma_qp_offset_subdiv can be signaled within the SPS, and as shown in FIG. 17 (e.g., element 1701), slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv are signaled within the slice header.

[0124]

[0146] 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 values of sps_cu_qp_delta_subdiv can be specified as follows. The value of sps_cu_qp_delta_subdiv is in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + SpsMaxMttDepthY). If it does not exist, the value of sps_cu_qp_delta_subdiv can be inferred to be equal to 0. The range of values of sps_cu_chroma_qp_offset_subdiv is specified as follows. The value of sps_cu_chroma_qp_offset_subdiv is in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + SpsMaxMttDepthY). If it does not exist, the value of sps_cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0125]

[0147] When ctbLog2SizeY is defined, MinQtLog2SizeY and SpsMaxMttDepthY can be derived as follows.

[0126]

[0148] In one way, MinQtLog2SizeY is min(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) or max(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) can be derived as

[0127]

[0149] However, MinQtLog2SizeIntraY and MinQtLog2SizeIntraY can be derived using various techniques as defined in VVC draft 6.

[0128]

[0150] Alternatively, the value of MinQtLog2SizeY can be derived using the following equation 29. MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_luma + MinCbLog2SizeY (Equation 29)

[0129]

[0151] sps_log2_diff_min_qt_min_cb_luma can be signaled within the SPS as shown in FIG. 18 (e.g., element 1801). It will be understood that MinCbLog2SizeY can be derived using various techniques as defined in VVC draft 6.

[0130]

[0152] Regarding SpsMaxMttDepthY, in one way, SpsMaxMttDepthY is 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) can be derived as

[0131]

[0153] sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be signaled within the SPS.

[0132]

[0154] Alternatively, SpsMaxMttDepthY can be derived as SpsMaxMttDepthY = sps_max_mtt_depth_luma (Equation 30)

[0133]

[0155] sps_max_mtt_depth_luma can be signaled within the SPS as shown in FIG. 18 (e.g., element 1802).

[0134]

[0156] Further, in the above example, the ranges of slice_cu_qp_delta_subdiv and slice_cu_chroma_qp_offset_subdiv depend on the syntax of the slice header. For example, the value range of slice_cu_qp_delta_subdiv can be specified as follows. When slice_type is equal to I, the value of slice_cu_qp_delta_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + SliceMaxMttDepthY). Otherwise (when slice_type is not equal to I), the value of slice_cu_qp_delta_subdiv is within the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + SliceMaxMttDepthY). If it does not exist, it can be inferred that the value of slice_cu_qp_delta_subdiv is 0 or equal to sps_cu_qp_delta_subdiv.

[0135]

[0157] The value of slice_cu_chroma_qp_offset_subdiv can be specified as follows. When slice_type is equal to I, the value of slice_cu_chroma_qp_offset_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + SliceMaxMttDepthY). Otherwise (when slice_type is not equal to I), the value of slice_cu_chroma_qp_offset_subdiv is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + SliceMaxMttDepthY). If it does not exist, the value of slice_cu_chroma_qp_offset_subdiv can be inferred to be 0 or equal to sps_cu_chroma_qp_offset_subdiv.

[0136]

[0158] When CtbLog2SizeY, MinQtLog2SizeIntraY, and MinQtLog2SizeInterY are defined, SliceMaxMttDepthY is SliceMaxMttDepthY = slice_max_mtt_hierarchy_depth_luma (Equation 31) and can be derived as.

[0137]

[0159] slice_max_mtt_hierarchy_depth_luma can be signaled within the slice header.

[0138]

[0160] In the above example, it can be inferred that cu_qp_delta_subdiv is slice_cu_qp_delta_subdiv. Alternatively, cu_qp_delta_subdiv can first be inferred as sps_cu_qp_delta_subdiv, and if slice_cu_qp_delta_subdiv exists, slice_cu_qp_delta_subdiv overrides it, and cu_qp_delta_subdiv can be inferred as slice_cu_qp_delta_subdiv. Cu_qp_delta_subdiv can be used to derive Qp Y for use.

[0139]

[0161] Furthermore, in the above example, it can be inferred that cu_chroma_qp_offset_subdiv is slice_cu_chroma_qp_offset_subdiv. Alternatively, cu_chroma_qp_offset_subdiv can first be inferred as sps_cu_chroma_qp_offset_subdiv, and 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. Cu_chroma_qp_offset_subdiv can be used to derive Qp Cb Qp Cr QP CbCr for use.

[0140]

[0162] In some embodiments, the syntax of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv may be signaled at the PPS level. However, the range limits of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be changed so that they do not depend on the slice syntax.

[0141]

[0163] As an example, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be signaled within the PPS as shown in FIG. 5. The value range of cu_qp_delta_subdiv can be specified as follows. The range of cu_qp_delta_subdiv is within 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The value range of cu_chroma_qp_offset_subdiv can be specified as follows. The value of cu_chroma_qp_offset_subdiv is within 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0142]

[0164] When ctbLog2SizeY is determined, MinQtLog2SizeY and MaxMttDepthY can be inferred at the SPS level. For example, MaxMttDepthY is 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) can be derived as.

[0143]

[0165] sps_max_mtt_hierarchy_depth_intra_slice_luma and sps_max_mtt_hierarchy_depth_inter_slice can be signaled within the SPS.

[0144]

[0166] Alternatively, MaxMttDepthY can be derived as MaxMttDepthY = sps_max_mtt_depth_luma as shown below.

[0145]

[0167] sps_max_mtt_depth_luma can be signaled within the SPS as shown in FIG. 19 (e.g., element 1901).

[0146]

[0168] In one way, MinQtLog2SizeY can be derived as min(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) or derived as max(MinQtLog2SizeIntraY, MinQtLog2SizeInterY) as shown below.

[0147]

[0169] It will be appreciated that MinQtLog2SizeIntraY and MinQtLog2SizeInterY can be derived using various techniques as defined in VVC draft 6.

[0148]

[0170] Alternatively, the value of MinQtLog2SizeY can be derived based on the following equation 32: MinQtLog2SizeY = sps_log2_diff_min_qt_min_cb_lima + MinCbLog2SizeY (Equation 32)

[0149]

[0171] sps_log2_diff_min_qt_min_cb_luma is signaled within the SPS as shown in FIG. 13 (e.g., element 1301). It will be appreciated that MinCbLog2SizeY can be derived using various techniques as defined in VVC draft 6.

[0150]

[0172] Based on the above example, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not overridden at the slice header level.

[0151]

[0173] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv may be signaled at the PPS level. However, the range limits of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be fixed so that they do not depend on the slice syntax.

[0152]

[0174] For example, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv can be signaled within the PPS as shown in FIG. 5. The range of values of cu_qp_delta_subdiv can be specified as follows. The value of cu_qp_delta_subdiv is in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The range of values of cu_chroma_qp_offset_subdiv can be specified as follows. The value of cu_chroma_qp_offset_subdiv is in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0153]

[0175] However, CtbLog2SizeY, MinQtLog2SizeY, and MaxMttDepthY can be derived in the following ways: CtbLog2SizeY / MinQtLog2SizeY / MaxMttDepthY can be specified by the profile, or CtbLog2SizeY / MinQtLog2SizeY / MaxMttDepthY can be fixed numerical values.

[0154]

[0176] Based on the above example, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not overridden at the slice header level.

[0155]

[0177] In some embodiments, cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv may be signaled within the PPS as shown in FIG. 5. The range of values of cu_qp_delta_subdiv can be specified as follows. The value of cu_qp_delta_subdiv is in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_qp_delta_subdiv can be inferred to be equal to 0. The range of values of cu_chroma_qp_offset_subdiv is specified as follows. The value of cu_chroma_qp_offset_subdiv is in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeY + MaxMttDepthY). If it does not exist, the value of cu_chroma_qp_offset_subdiv can be inferred to be equal to 0.

[0156]

[0178] CtbLog2SizeY, MinQtLog2SizeY, and MaxMttDepthY can be inferred at the PPS level. For example CtbLog2SizeY = pps_log2_ctb_size (Equation 33) MinQtLog2SizeY = pps_log2_min_qt (Equation 34) MaxMttDepthY = pps_max_mtt_depth_luma (Equation 35)

[0157]

[0179] pps_log2_ctb_size, pps_log2_min_qt, and pps_max_mtt_depth_luma are signaled within the PPS as shown in FIG. 20 (e.g., element 2001).

[0158]

[0180] Based on the above example, the ranges of cu_qp_delta_subdiv and cu_chroma_qp_offset_subdiv are not overridden at the slice header level.

[0159]

[0181] FIG. 21 is a flowchart of a method 2100 implemented by a computer for processing video content, which conforms to an embodiment of the present disclosure.

[0160]

[0182] At step 2102, a depth parameter related to the depth of a coded block can be received. The depth parameter can be, for example, a variable "MaxMttDepthY" derived from the maximum depth of the multi-type tree hierarchy of a luma block (e.g., "slice_max_mtt_hierarchy_depth_luma"). In some embodiments, "slice_max_mtt_hierarchy_depth_luma" can be signaled within a slice header related to the coded block.

[0161]

[0183] The coded block may be related to a slice. The slice can be related to intra prediction or inter prediction. Depending on the slice being related to intra prediction, a delta QP value or a chroma QP offset value can be determined for the slice related to intra prediction. Otherwise, depending on the slice being related to inter prediction, a delta QP value or a chroma QP offset value can be determined for the slice related to inter prediction. For example, when "slice_type" is equal to "I" (indicating that the slice is related to intra prediction), the value of "cu_qp_delta_subdiv" is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + MaxMttDepthY). Otherwise, when "slice_type" is not equal to "I" (indicating that the slice is related to inter prediction), the value of "cu_qp_delta_subdiv" is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + MaxMttDepthY). As another example, when "slice_type" is equal to "I", the value of "cu_chroma_qp_offset_subdiv" is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + MaxMttDepthY). Otherwise, when "slice_type" is not equal to "I", the value of "cu_chroma_qp_offset_subdiv" is within the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + MaxMttDepthY).

[0162]

[0184] In some embodiments, the depth parameter can be signaled within the picture header. It will be understood that a picture can include a plurality of slices. For slices related to intra prediction, corresponding delta QP values or chroma QP offset values can be determined for the slices related to intra prediction. For slices related to inter prediction, corresponding delta QP values or chroma QP offset values can be determined for the slices related to inter prediction. As discussed with respect to Table 11 of FIG. 11, for example, ph_cu_qp_delta_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_intra_slice are signaled within the picture header to derive the delta QP value and the chroma QP offset value for slices related to intra prediction. ph_cu_qp_delta_subdiv_inter_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice are signaled within the picture header to derive the delta QP value and the chroma QP offset value for slices related to inter prediction.

[0163]

[0185] In step 2104, at least one of a delta quantization parameter (QP) value or a chroma QP offset value can be determined based on the depth of the coding block. As discussed above, the delta QP value can be determined based on "cu_qp_delta_subdiv", the chroma QP offset 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".

[0164]

[0186] In step 2106, a luma QP value can be derived based on the determined delta QP value, and a chroma QP value can be derived based on the determined chroma QP offset value.

[0165]

[0187] In step 2108, the encoded block can be processed based on the derived luma QP value and the derived chroma QP value.

[0166]

[0188] In some embodiments, a non-transitory computer-readable storage medium including instructions is also provided, and the instructions can be executed by an apparatus (such as the disclosed encoder and decoder) for performing the above method. Common non-transitory media include, for example, floppy (registered trademark) disks, flexible disks, hard disks, solid state drives, magnetic tapes or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media having a pattern of holes, RAM, PROM, and EPROM, flash EPROM or any other flash memory, NVRAM, caches, registers, any other memory chips or cartridges, and networked versions of those. The apparatus can include one or more processors (CPUs), an input / output interface, a network interface, and / or a memory.

[0167]

[0189] Embodiments can be further described using the following clauses: 1. A method implemented by a computer, comprising: receiving a bitstream including encoded video data, determining a first parameter of an encoded block, determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and determining at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters The method comprising. 2. Determining the first parameter of the encoded block includes: determining whether the encoded block is related to an intra prediction slice or an inter prediction slice, and Determining the first parameter to be a parameter related to an intra prediction slice according to whether the coded block is related to an intra prediction slice, or Determining the first parameter to be a parameter related to an inter prediction slice according to whether the coded block is related to an inter prediction slice The method according to claim 1, comprising: 3. The method according to claim 1, wherein the first parameter is signaled in a slice header related to the coded block. 4. The method according to claim 1, wherein the first parameter is signaled in a picture header related to the coded block. 5. Determining a luma QP value based on a delta QP value, Determining a chroma QP value based on a chroma QP offset value, and Processing the coded block based on the luma QP value and the chroma QP value The method according to claim 1, further comprising: 6. A system for processing video content, comprising: A memory storing a set of instructions, At least one processor, wherein the at least one processor is configured to: Receive a bitstream including coded video data, Determine a first parameter of the coded block, Determine one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and Determine at least one of the delta QP value or the chroma QP offset value according to one or more second parameters The system is configured to execute a set of instructions to cause the system to perform the above. 7. The at least one processor is configured to: Determine whether the coded block is related to an intra prediction slice or an inter prediction slice, and Determining the first parameter to be a parameter related to the intra prediction slice according to the coded block being related to the intra prediction slice, or Determining the first parameter to be a parameter related to the inter prediction slice according to the coded block being related to the inter prediction slice The system according to clause 6, configured to execute a set of instructions so as to further cause the system to perform 8. The system according to clause 6, wherein the first parameter is signaled in a slice header related to the coded block 9. The system according to clause 6, wherein the first parameter is signaled in a picture header related to the coded block 10. At least one processor Determining a luma QP value based on a delta QP value, Determining a chroma QP value based on a chroma QP offset value, and Processing the coded block based on the luma QP value and the chroma QP value The system according to clause 6, configured to execute a set of instructions so as to further cause the system to perform 11. A non-transitory computer-readable medium storing instructions executable by at least one processor of a computer system, wherein executing the instructions Receiving a bitstream including coded video data, Determining a first parameter of a coded block, Determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameter, and Determining at least one of the delta QP value or the chroma QP offset value according to one or more second parameters The non-transitory computer-readable medium that causes the computer system to perform a method including 12. The method includes Determining whether the coded block is related to an intra prediction slice or an inter prediction slice, and Determining the first parameter to be a parameter related to the intra prediction slice in response to the coded block being related to the intra prediction slice, or Determining the first parameter to be a parameter related to the inter prediction slice in response to the coded block being related to the inter prediction slice The non - transitory computer - readable medium according to claim 11, further comprising 13. The non - transitory computer - readable medium according to claim 11, wherein the first parameter is signaled in a slice header related to the coded block. 14. The non - transitory computer - readable medium according to claim 11, wherein the first parameter is signaled in a picture header related to the coded block. 15. The method further comprises Determining a luma QP value based on a delta QP value, Determining a chroma QP value based on a chroma QP offset value, and Processing the coded block based on the luma QP value and the chroma QP value The non - transitory computer - readable medium according to claim 11, further comprising

[0168]

[0190] It should be noted that relative terms such as "first" and "second" in this specification are only used to distinguish one entity or operation from another entity or operation, and do not require or imply any actual relationship or order between those entities or operations. Further, terms such as "comprising", "having", "containing", and "including" and other similar forms are intended to be equivalent in meaning, and are not intended to mean that the items following any one of these terms are an exhaustive listing of such items or are limited only to the items listed.

[0169]

[0191] As used herein, unless otherwise specified, the term "or" includes all possible combinations, except when the combination is infeasible. For example, if it is stated that a database may contain A or B, then, unless otherwise specified or infeasible, the database may contain A or B or both A and B. As a second example, if it is stated that a database may contain A, B, or C, then, unless otherwise specified or infeasible, the database may contain A, or B, or C, or A and B, or A and C, or B and C, or A, B, and C.

[0170]

[0192] It will be understood that the embodiments described above can be implemented by hardware or software (program code) or a combination of hardware and software. When implemented by software, the software can be stored in the computer-readable medium described above. The software can execute the disclosed method when executed by a processor. The computing unit and other functional units described in the present disclosure can be implemented by hardware or software or a combination of hardware and software. It will also be understood by those skilled in the art that a plurality of the above modules / units can be combined into one module / unit, and each of the above modules / units can be further divided into a plurality of sub-modules / sub-units.

[0171]

[0193] In the above specification, embodiments have been described with respect to numerous specific details that may vary for each implementation form. Certain adaptations and modifications can be made to the described embodiments. By considering this specification and practicing the invention disclosed herein, other embodiments may become apparent to those skilled in the art. This specification and the examples are to be considered solely as illustrative, and it is intended that the true scope and spirit of the disclosure be indicated by the appended claims. The order of steps shown in the figures is for illustrative purposes only and is not intended to be limited to a particular order of steps. Therefore, those skilled in the art can understand that those steps can be executed in different orders while implementing the same method.

[0172]

[0194] The exemplary embodiments have been disclosed in the drawings and this specification. However, many modifications and variations can be made to those embodiments. Therefore, although specific terms have been used, they have been used for general and illustrative purposes only, not for limiting purposes.

Claims

1. 1. A computer-implemented method comprising: receiving a bitstream including coded video data; Determining a first parameter of the coded block; determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameters; and determining at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters; A method comprising:

2. Determining the first parameter of the coded block comprises: determining whether the coded block is associated with an intra-predicted slice or an inter-predicted slice; and determining, in response to the coded block being associated with the intra-prediction slice, the first parameter to be a parameter associated with the intra-prediction slice; or In response to the coded block being associated with the inter-predicted slice, determining the first parameter to be a parameter associated with the inter-predicted slice. The method of claim 1 , comprising:

3. The method of claim 1 , wherein the first parameter is signaled in at least one of a slice header or a picture header associated with the coded block.

4. The coded block relates to an intra-predicted slice, the method comprising: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the intra-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree division of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree division of a quadtree leaf in the intra-prediction slice; The method of claim 3 further comprising:

5. The coded block relates to an inter-predicted slice, and the method further comprises: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the inter-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree partitioning of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree partitioning of a quadtree leaf in the inter-prediction slice; The method of claim 3 further comprising:

6. determining a luma QP value based on the delta QP value; determining a chroma QP value based on the chroma QP offset value; and processing the coded block based on the luma QP value and the chroma QP value. The method of claim 1 further comprising:

7. 1. A system for processing video content, comprising: a memory for storing a set of instructions; at least one processor, the at least one processor comprising: receiving a bitstream including coded video data; Determining a first parameter of the coded block; determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameters; and determining at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters; a system configured to execute the set of instructions to cause the system to:

8. In determining the first parameter of the coded block, the at least one processor: determining whether the coded block is associated with an intra-predicted slice or an inter-predicted slice; and determining, in response to the coded block being associated with the intra-prediction slice, the first parameter to be a parameter associated with the intra-prediction slice; or In response to the coded block being associated with the inter-predicted slice, determining the first parameter to be a parameter associated with the inter-predicted slice.

8. The system of claim 7, configured to execute the set of instructions to further cause the system to:

9. The system of claim 7 , wherein the first parameter is signaled in at least one of a slice header or a picture header associated with the coded block.

10. The coded block is associated with an intra-predicted slice, and the at least one processor is configured to: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the intra-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree division of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree division of a quadtree leaf in the intra-prediction slice; 10. The system of claim 9, configured to execute the set of instructions to further cause the system to:

11. The coded block is associated with an inter-prediction slice, and the at least one processor is configured to: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the inter-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree partitioning of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree partitioning of a quadtree leaf in the inter-prediction slice; 10. The system of claim 9, configured to execute the set of instructions to further cause the system to:

12. The at least one processor: determining a luma QP value based on the delta QP value; determining a chroma QP value based on the chroma QP offset value; and processing the coded block based on the luma QP value and the chroma QP value.

8. The system of claim 7, configured to execute the set of instructions to further cause the system to:

13. A non-transitory computer readable medium storing instructions executable by at least one processor of a computer system, the instructions being receiving a bitstream including coded video data; Determining a first parameter of the coded block; determining one or more second parameters related to a delta quantization parameter (QP) value or a chroma QP offset value according to the first parameters; and determining at least one of the delta QP value or the chroma QP offset value according to the one or more second parameters; A non-transitory computer-readable medium for causing the computer system to perform a method comprising:

14. Determining the first parameter of the coded block comprises: determining whether the coded block is associated with an intra-predicted slice or an inter-predicted slice; and determining, in response to the coded block being associated with the intra-prediction slice, the first parameter to be a parameter associated with the intra-prediction slice; or In response to the coded block being associated with the inter-predicted slice, determining the first parameter to be a parameter associated with the inter-predicted slice.

14. The non-transitory computer readable medium of claim 13, comprising:

15. 14. The non-transitory computer-readable medium of claim 13, wherein the first parameter is signaled in at least one of a slice header or a picture header associated with the coded block.

16. The coded block relates to an intra-predicted slice, the method comprising: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the intra-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree division of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree division of a quadtree leaf in the intra-prediction slice; 20. The non-transitory computer-readable medium of claim 15, further comprising:

17. The coded block relates to an inter-predicted slice, and the method further comprises: determining a maximum value of the first parameter according to a size of a luma coding tree block of a coding tree unit associated with the inter-prediction slice, a minimum size of luma samples in a luma leaf block resulting from a quadtree partitioning of the coding tree unit, and a maximum hierarchical depth of a coding unit resulting from a multi-type tree partitioning of a quadtree leaf in the inter-prediction slice; 20. The non-transitory computer-readable medium of claim 15, further comprising:

18. The method further comprising: determining a luma QP value based on the delta QP value; determining a chroma QP value based on the chroma QP offset value; and processing the coded block based on the luma QP value and the chroma QP value.

14. The non-transitory computer-readable medium of claim 13, further comprising:

Citation Information

Patent Citations

  • Dynamic image encoding device and dynamic image decoding device

    JP2021034966A

  • Video signal processing method and apparatus

    JP2022542851A

  • Method, apparatus and system for encoding and decoding a block of video samples

    WO2021051156A1