High level syntax control of loop filter
By using control flags for luma mapping, adaptive loop filtering, and sample adaptive offset at various levels, the video encoding method addresses inefficiencies in advanced standards, enhancing compression efficiency and maintaining quality.
Patent Information
- Application Number
- JP2025076664
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-03-29
- Filing Date
- 2025-05-02
- Publication Date
- 2025-08-26
AI Technical Summary
Existing video coding standards face challenges in achieving high compression efficiency while maintaining subjective quality, particularly with the development of advanced standards like VVC/H.266, where existing methods for controlling loop filters are inadequate.
Implementing control flags for luma mapping with chroma scaling, adaptive loop filtering, and sample adaptive offset at sequence, picture, and slice levels to dynamically enable or disable these processes based on specific levels, allowing for more precise control over video encoding.
Enhances video encoding efficiency by allowing for optimized use of loop filters, thereby achieving better compression performance and maintaining subjective quality with reduced bandwidth requirements.
Smart Images

Figure 2025124653000001_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This disclosure claims priority to and the benefit of priority to U.S. Provisional Patent Application No. 63 / 001,448, filed March 29, 2020. The provisional application is incorporated herein by reference in its entirety.
[0002] Technical Field FIELD OF THE DISCLOSURE
[0002] The present disclosure relates generally to video data processing, and more particularly to high-level syntax control of loop filters. [Background technology]
[0003] background
[0003] A video is a set of static pictures (or "frames") that capture visual information. To reduce storage memory and transmission bandwidth, video can be compressed before storage or transmission and decompressed before display. The compression process is usually called encoding, and the decompression process is usually called decoding. There are various video coding formats that use standardized video coding techniques, most commonly based on prediction, transform, quantization, entropy coding, and in-loop filtering. Video coding standards, such as the High Efficiency Video Coding (e.g., HEVC / H.265) standard, the Versatile Video Coding (e.g., VVC / H.266) standard, and the AVS standard, which specify particular video coding formats, are developed by standardization organizations. As more advanced video coding techniques are adopted into video standards, the coding efficiency of new video coding standards becomes higher. Summary of the Invention [Means for solving the problem]
[0004] Disclosure Overview
[0004] An embodiment of the present disclosure provides a video encoding method, including: receiving a video sequence; encoding the video sequence by using control flags for luma mapping with chroma scaling (LMCS) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether LMCS is enabled at a first level; and signaling a second control flag indicating whether LMCS is enabled at a second level in response to the first control flag indicating that LMCS is enabled at the first level, where when the value of the second control flag is equal to 1, LMCS is enabled at the second level, and when the value of the second control flag is equal to 0, LMCS is disabled at the second level, where the second level is a lower level than the first level.
[0005]
[0005] An embodiment of the present disclosure provides a video encoding method, including: receiving a video sequence; encoding the video sequence by using control flags for an adaptive loop filter (ALF) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether the ALF is enabled at a first level; and signaling a second control flag indicating whether the ALF is enabled at a second level in response to the first control flag indicating that the ALF is enabled at the first level, where when the value of the second control flag is equal to 1, the ALF is enabled at the second level, and when the value of the second control flag is equal to 0, the ALF is disabled at the second level, where the second level is a lower level than the first level.
[0006]
[0006] An embodiment of the present disclosure provides a video encoding method, including: receiving a video sequence; encoding the video sequence by using control flags for sample adaptive offset (SAO) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether SAO is enabled at a first level; and signaling a second control flag indicating whether SAO is enabled at a second level in response to the first control flag indicating that SAO is enabled at the first level, where when the value of the second control flag is equal to 1, SAO is enabled for the luma component at the second level, and when the value of the second control flag is equal to 0, SAO is disabled for the luma component at the second level, where the second level is a lower level than the first level.
[0007] BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Embodiments and various aspects of the present disclosure are illustrated in the following detailed description and the accompanying drawings, in which various features are not drawn to scale. [Brief explanation of the drawings]
[0008] [Figure 1]
[0008] FIG. 1 shows a schematic diagram illustrating an example structure of a video sequence, consistent with some embodiments of the present disclosure. [Figure 2A]
[0009] 1 shows a schematic diagram illustrating an example encoding process of a hybrid video coding system consistent with certain embodiments of the present disclosure. [Figure 2B]
[0010] 1 shows a schematic diagram illustrating another exemplary encoding process of a hybrid video coding system, consistent with certain embodiments of the present disclosure. [Figure 3A]
[0011] 1 shows a schematic diagram illustrating an example decoding process for a hybrid video coding system consistent with certain embodiments of the present disclosure. [Figure 3B]
[0012] 1 shows a schematic diagram illustrating another exemplary decoding process for a hybrid video coding system, consistent with certain embodiments of the present disclosure. [Figure 4]
[0013] 1 shows a block diagram of an exemplary device for encoding or decoding video consistent with some embodiments of the present disclosure. [Figure 5]
[0014] 1 shows example pseudocode with control variables for enabling luma mapping with chroma scaling at the sequence level. [Figure 6]
[0015] Example pseudocode including control variables to enable luma mapping with chroma scaling in the picture header is shown below. [Figure 7]
[0016] Example pseudocode including control variables to enable luma mapping with chroma scaling in the slice header is shown below. [Figure 8A]
[0017] 1 shows example pseudocode for including adaptive loop filter syntax within a sequence parameter set. [Figure 8B]
[0018] 1 shows example pseudocode for including adaptive loop filter syntax within a picture parameter set. [Figure 9]
[0019] 10 shows example pseudocode for including adaptive loop filter syntax in a picture header. [Figure 10]
[0020] 10 shows example pseudocode for including adaptive loop filter syntax in a slice header. [Figure 11]
[0021] 10 shows example pseudocode for including sample adaptive offset syntax in a sequence parameter set. [Figure 12]
[0022] 10 shows example pseudocode for including sample adaptive offset syntax in a picture parameter set. [Figure 13]
[0023] 10 shows example pseudocode for including sample adaptive offset syntax in a picture header. [Figure 14]
[0024] 10 shows example pseudocode for including sample adaptive offset syntax in a slice header. [Figure 15]
[0025] 1 shows example pseudocode for including deblocking filter syntax in a picture parameter set. [Figure 16]
[0026] Example pseudocode for including deblocking filter syntax in a picture header is shown below. [Figure 17]
[0027] Example pseudocode for including deblocking filter syntax in a slice header is shown below. [Figure 18]
[0028] 1 illustrates example semantics for luma mapping with chroma scaling, adaptive loop filter, and sample adaptive offset, according to some embodiments of the present disclosure. [Figure 19]
[0029] 10 illustrates example pseudocode including a novel picture parameter set for an adaptive loop filter, according to some embodiments of the present disclosure. [Figure 20]
[0030] 10 illustrates example pseudocode including novel picture header syntax for an adaptive loop filter, according to some embodiments of the present disclosure. [Figure 21]
[0031] 10 illustrates example pseudocode including novel slice header syntax for an adaptive loop filter, according to some embodiments of the present disclosure. [Figure 22A]
[0032] 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, and picture parameter sets for adaptive loop filters, according to some embodiments of the present disclosure. [Figure 22B]
[0032] Figure 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, and picture parameter sets for adaptive loop filters, according to some embodiments of the present disclosure. [Figure 22C]
[0032] Figure 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, and picture parameter sets for adaptive loop filters, according to some embodiments of the present disclosure. [Figure 23]
[0033] 10 illustrates example pseudocode including a novel picture parameter set for sample adaptive offset, according to some embodiments of the present disclosure. [Figure 24]
[0034] 10 illustrates example pseudocode including novel picture header syntax for sample adaptive offset, according to some embodiments of the present disclosure. [Figure 25]
[0035] 10 illustrates example pseudocode including novel slice header syntax for sample adaptive offsetting, according to some embodiments of the present disclosure. [Figure 26]
[0036] 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, and picture parameter sets for sample adaptive offset, according to some embodiments of the present disclosure. [Figure 27]
[0037] 10 illustrates example pseudocode including a new sequence parameter set with a sequence parameter set disable flag for a deblocking filter, in accordance with some embodiments of the present disclosure. [Figure 28]
[0038] 10 illustrates example pseudocode including a new picture parameter set with a sequence parameter set disable flag for a deblocking filter, according to some embodiments of the present disclosure. [Figure 29]
[0039] 10 illustrates example pseudocode including a novel picture header syntax with a sequence parameter set disable flag for a deblocking filter, according to some embodiments of the present disclosure. [Figure 30]
[0040] 10 illustrates example pseudocode including a novel slice header syntax with a sequence parameter set disable flag for a deblocking filter, according to some embodiments of the present disclosure. [Figure 31A]
[0041] 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, sequence parameter sets, and picture parameter sets for a deblocking filter, according to some embodiments of the present disclosure. [Figure 31B]
[0041] Figure 1 illustrates example semantics including novel flags for picture header syntax, slice header syntax, sequence parameter sets, and picture parameter sets for a deblocking filter, according to some embodiments of this disclosure. [Figure 32]
[0042] 10 is a flowchart illustrating an example process for determining luma mapping with chroma scaling for a video frame, according to some embodiments of the present disclosure. [Figure 33]
[0043] 1 is a flowchart illustrating an example process for an adaptive loop filter (ALF) on a video frame, in accordance with some embodiments of the present disclosure. [Figure 34]
[0044] 1 is a flowchart illustrating an example process for determining a sample adaptive offset (SAO) for a video frame, in accordance with some embodiments of the present disclosure. [Figure 35]
[0045] 10 is a flowchart illustrating an example process for determining whether an adaptive loop filter (ALF) is disabled for a deblocking filter for a video frame, in accordance with some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0009] Detailed Description
[0046] Reference will now be made in detail to the exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description will refer to the accompanying drawings in which, unless otherwise indicated, like numerals in different drawings represent the same or similar elements. The implementations set forth in the following description of the exemplary embodiments do not represent all implementations consistent with the present invention. Rather, they are merely examples of devices and methods consistent with aspects related to the present invention as recited in the appended claims. Certain aspects of the present disclosure are described in more detail below. In the event of a conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein will control.
[0010]
[0047] The ITU-T Video Coding Expert Group (ITU-T VCEG) and the ISO / IEC Moving Picture Expert Group (ISO / IEC MPEG) Joint Video Experts Team (JVET) are currently developing the Versatile Video Coding (VVC / H.266) standard. The VVC standard aims to double the compression efficiency of its predecessor, the High Efficiency Video Coding (HEVC / H.265) standard. In other words, the goal of VVC is to achieve the same subjective quality as HEVC / H.265 while using half the bandwidth.
[0011]
[0048] To achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET is developing a technology that goes beyond HEVC using the joint exploration model (JEM) reference software. Because the coding technology has been incorporated into JEM, JEM has achieved substantially higher coding performance than HEVC.
[0012]
[0049] The VVC standard is a recent development and continues to include more coding techniques that result in better compression performance. VVC is based on the same hybrid video coding system that has been used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, and H.263.
[0013]
[0050] A video is a set of still pictures (or "frames") arranged in chronological order to store visual information. A video capture device (e.g., a camera) can be used to capture and store these pictures in chronological order, and a video playback device (e.g., a television, a computer, a smartphone, a tablet computer, a video player, or any end-user terminal with display capabilities) can be used to display these pictures in chronological order. Furthermore, in some applications, a video capture device can transmit captured video in real time to a video playback device (e.g., a computer with a monitor) for purposes such as surveillance, conferencing, or live broadcasting.
[0014]
[0051] To reduce the storage space and transmission bandwidth required by such applications, video can be compressed before storage and transmission and decompressed before display. This compression and decompression can be implemented by software executed by a processor (e.g., a processor in a general-purpose computer) or dedicated hardware. A module for compression is generally referred to as an "encoder," and a module for decompression is generally referred to as a "decoder." Encoders and decoders can be collectively referred to as a "codec." Encoders and decoders can be implemented as various suitable hardware, software, or combinations thereof. For example, hardware implementations of encoders and decoders may include circuitry such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, or any combination thereof. Software implementations of encoders and decoders may include program code, computer-executable instructions, firmware, or algorithms or processes fixed in a computer-readable medium and executed by any suitable computer. Video compression and decompression may be implemented by various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, H.26x series, etc. In some applications, a codec may decompress video from a first coding standard and recompress the decompressed video using a second coding standard, in which case the codec may be called a "transcoder."
[0015]
[0052] A video coding process can identify and retain useful information that can be used to reconstruct a picture and ignore information that is not important for reconstruction. If the ignored, unimportant information cannot be perfectly reconstructed, then such a coding process can be called "lossy." Otherwise, such a coding process can be called "lossless." Most coding processes are lossy; this is a tradeoff to reduce the required storage space and transmission bandwidth.
[0016]
[0053] Useful information about the picture being coded (called the "current picture") includes changes relative to a reference picture (e.g., a previously coded and reconstructed picture). Such changes can include pixel position changes, luminance changes, or color changes, of which position changes are the most important. Position changes of pixels representing an object can reflect the object's movement between the reference picture and the current picture.
[0017]
[0054] A picture that is coded without reference to another picture (i.e., such a picture is its own reference picture) is called an "I-picture." A picture that is coded using a past picture as a reference picture is called a "P-picture." A picture that is coded using both past and future pictures as reference pictures (i.e., the referencing is "bidirectional") is called a "B-picture."
[0018]
[0055] The present disclosure is directed to methods and apparatus for processing video content that conforms to the above-mentioned video coding standards.
[0019]
[0056] 1 illustrates the structure of an example video sequence 100 according to some embodiments of the present disclosure. The video sequence 100 may be live video or captured and archived video. The video 100 may be real video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real video with augmented reality effects). The video sequence 100 may be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., video files 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]
[0057] As shown in FIG. 1, video sequence 100 may include a series of pictures arranged temporally along a timeline including pictures 102, 104, 106, and 108. Pictures 102-106 are consecutive, with more pictures between pictures 106 and 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 its reference picture is picture 102, as indicated by the arrow. Picture 106 is a B-picture and its reference pictures are pictures 104 and 108, as indicated by the arrows. In some embodiments, the reference picture of a picture (e.g., picture 104) need not immediately precede or follow 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-106 are merely examples, and this disclosure does not limit the reference picture embodiments to the examples shown in FIG.
[0021]
[0058] Typically, video codecs do not encode or decode an entire picture at once because such a task is computationally complex. Rather, video codecs may divide a picture into elementary segments and encode or decode the picture segment by segment. In this disclosure, such elementary segments are referred to as basic processing units ("BPUs"). For example, structure 110 in FIG. 1 illustrates an example structure for a picture (e.g., any of pictures 102-108) in video sequence 100. In structure 110, the picture is divided into 4x4 basic processing units, the boundaries of which are indicated by dashed lines. In some embodiments, a basic processing unit may be referred to as a "macroblock" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC) or as a "coding tree unit" ("CTU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). A basic processing unit can have variable sizes within a picture, such as 128x128, 64x64, 32x32, 16x16, 4x8, 16x32, or any arbitrary shape and size of pixels. The size and shape of a basic processing unit can be selected for a picture based on a balance between coding efficiency and the level of detail desired to be preserved within the basic processing unit. A CTU is the largest block unit and can contain as many as 128x128 luma samples (plus corresponding chroma samples depending on the chroma format). A CTU can be further partitioned into coding units (CUs) using a quadtree, binary tree, ternary tree, or a combination thereof.
[0022]
[0059] A basic processing unit may be a logical unit that may include various types of video data stored in computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color picture may 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 and chroma components may have the same size. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luma and chroma components may be referred to as "coding tree blocks" ("CTBs"). Any operation performed on a basic processing unit can be repeated for each of its luma and chroma components.
[0023]
[0060] Video coding has multiple operational stages, examples of which are shown in Figures 2A-2B and 3A-3B. For each stage, the size of the basic processing unit may still be too large to process and therefore may be further divided into segments referred to as "basic processing sub-units" in this disclosure. In some embodiments, the basic processing sub-unit may be referred to as a "block" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC) or a "coding unit" ("CU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing sub-unit may have the same or smaller size as the basic processing unit. Similar to the basic processing unit, the basic processing sub-unit is also a logical unit that may contain various types of video data (e.g., Y, Cb, Cr, and related syntax elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on a 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 to further levels depending on the processing needs. It should also be noted that different stages can divide the basic processing unit using different schemes.
[0024]
[0061] For example, in a mode decision stage (an example of which is shown in FIG. 2B ), an encoder may decide which prediction mode (e.g., intra-picture prediction or inter-picture prediction) to use for a basic processing unit, which may be too large to make such a decision. The encoder may divide the basic processing unit into multiple 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]
[0062] In another example, in the prediction stage (one example of which is shown in FIGS. 2A-2B), the encoder can perform prediction operations at the level of basic processing sub-units (e.g., CUs). However, in some cases, the basic processing sub-units may still be too large to process. The encoder can further divide the basic processing sub-units into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) and perform prediction operations at that level.
[0026]
[0063] In another example, in the transform stage (one example of which is shown in FIGS. 2A-2B), the encoder may perform a transform operation on a residual elementary processing sub-unit (e.g., a CU). However, in some cases, the elementary processing sub-unit may still be too large to process. The encoder may further divide the elementary processing sub-unit into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC) and perform the transform operation at that level. It should be noted that the division scheme of the same elementary processing sub-unit may be different between the prediction stage and the transform stage. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU may have different sizes and numbers.
[0027]
[0064] In structure 110 of Figure 1, basic processing units 112 are further divided into 3x3 basic processing sub-units, the boundaries of which are shown by dotted lines. Different basic processing units of the same picture can be divided into basic processing sub-units in different ways.
[0028]
[0065] In some implementations, to provide video encoding and decoding with parallel processing and error resilience, a picture can be divided into regions for processing, thereby enabling the encoding or decoding process for a region of a picture to not depend on information from any other region of the picture. In other words, each region of a picture can be processed independently. This allows a codec to process different regions of a picture in parallel, thus increasing coding efficiency. Furthermore, if data for a region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same picture without relying on the corrupted or lost data, thus providing error resilience. Some video coding standards allow a picture to be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles." It should also be noted that various pictures in video sequence 100 may have different partitioning schemes for dividing the picture into regions.
[0029]
[0066] For example, in Figure 1, structure 110 is divided into three regions 114, 116, and 118, the boundaries of which are shown as solid lines within structure 110. Region 114 includes four basic processing units. Regions 116 and 118 each include six basic processing units. It should be noted that the basic processing units, basic processing sub-units, and regions of structure 110 in Figure 1 are merely examples, and the present disclosure does not limit the embodiments thereof.
[0030]
[0067] FIG. 2A shows a schematic diagram of an example encoding process 200A consistent with embodiments of the present disclosure. For example, encoding process 200A may be performed by an encoder. As shown in FIG. 2A, the encoder may encode a video sequence 202 into a 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 chronological 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 sub-units, or regions for processing. In some embodiments, the encoder may perform process 200A at the level of a basic processing unit for each original picture of video sequence 202. For example, the encoder may perform process 200A in an iterative manner, in which case the encoder may encode a basic processing unit in one iteration of process 200A. In some embodiments, the encoder may perform process 200A in parallel for each original picture region of video sequence 202 (eg, regions 114-118).
[0031]
[0068] 2A , an encoder may feed a basic processing unit (referred to as an “original BPU”) of an original picture of a video sequence 202 to a prediction stage 204 to generate prediction data 206 and a predicted BPU 208. The encoder may subtract the predicted BPU 208 from the original BPU to generate a residual BPU 210. The encoder may feed the residual BPU 210 to a transform stage 212 and a quantization stage 214 to generate quantized transform coefficients 216. The encoder may feed the prediction data 206 and the quantized transform coefficients 216 to a binary coding stage 226 to generate a video bitstream 228. Components 202, 204, 206, 208, 210, 212, 214, 216, 226, and 228 may be referred to as a “forward path.” During process 200A, after quantization stage 214, the encoder may feed quantized transform coefficients 216 to inverse quantization stage 218 and inverse transform stage 220 to generate a reconstructed residual BPU 222. The encoder may add the reconstructed residual BPU 222 to predicted BPU 208 to generate a prediction reference 224 used in prediction stage 204 of the next iteration of process 200A. Components 218, 220, 222, and 224 of process 200A may be referred to as a "reconstruction path." The reconstruction path may be used to ensure that both the encoder and decoder use the same reference data for prediction.
[0032]
[0069] The encoder may iteratively perform process 200A to encode each original BPU of the original picture (in the forward path) and generate prediction reference 224 for encoding the next original BPU of the original picture (in the reconstruction path). After encoding all original BPUs of the original picture, the encoder may proceed to encode the next picture in video sequence 202.
[0033]
[0070] Referring to process 200A, an encoder may receive a video sequence 202 generated by a video capture device (e.g., a camera). As used herein, the term "receive" may refer to any action of receiving, inputting, obtaining, retrieving, acquiring, reading, accessing, or any manner of inputting data.
[0034]
[0071] In the prediction stage 204, in the current iteration, the encoder receives the original BPU and a prediction reference 224 and can perform a prediction operation to generate prediction data 206 and a predicted BPU 208. The prediction reference 224 can be generated from the reconstruction path of a previous iteration of the process 200A. The purpose of the prediction stage 204 is to reduce information redundancy by extracting prediction data 206, which can be used to reconstruct the original BPU from the prediction data 206 and the prediction reference 224 as a predicted BPU 208.
[0035]
[0072] Ideally, predicted BPU 208 would be identical to the original BPU. However, due to non-ideal prediction and reconstruction operations, predicted BPU 208 generally differs slightly from the original BPU. To record such differences, after generating predicted BPU 208, the encoder may subtract it from the original BPU to generate residual BPU 210. For example, the encoder may subtract pixel values (e.g., grayscale values or RGB values) of predicted BPU 208 from corresponding pixel values of the original BPU. As a result of such subtraction between corresponding pixels of the original BPU and predicted BPU 208, each pixel of residual BPU 210 may have a residual value. Compared to the original BPU, prediction data 206 and residual BPU 210 may have fewer bits, which can be used to reconstruct the original BPU without significant loss of quality.
[0036]
[0073] To further compress the residual BPU 210, in the transform stage 212, the encoder can reduce spatial redundancy in the residual BPU 210 by decomposing the residual BPU 210 into a set of two-dimensional "basis patterns," each associated with a "transform coefficient." The basis patterns can have the same size (e.g., the size of the residual BPU 210). Each basis pattern can represent a variation frequency (e.g., luminance variation frequency) component of the residual BPU 210. None of the basis patterns can be reconstructed from any combination (e.g., a linear combination) of any other basis patterns. In other words, the decomposition can decompose the variation of the residual BPU 210 into the frequency domain. Such a decomposition is similar to a discrete Fourier transform of a function, the basis patterns are similar to basis functions (e.g., trigonometric functions) of the discrete Fourier transform, and the transform coefficients are similar to the coefficients associated with the basis functions.
[0037]
[0074] Different transform algorithms can use different basis patterns. For example, various transform algorithms can be used in transform stage 212, such as a discrete cosine transform, a discrete sine transform, etc. The transform in transform stage 212 is reversible. That is, the encoder can reconstruct residual BPU 210 by inversely operating the transform (referred to as an "inverse transform"). For example, to reconstruct a pixel of residual BPU 210, the inverse transform can multiply the value of the corresponding pixel in the basis pattern by the associated respective coefficient and add the products to obtain a weighted sum. In video coding standards, both the encoder and decoder can use the same transform algorithm (and therefore the same basis pattern). Therefore, the encoder can record only the transform coefficients, and the decoder can reconstruct residual BPU 210 from the transform coefficients without receiving the basis pattern from the encoder. Although the transform coefficients may have fewer bits compared to residual BPU 210, they can be used to reconstruct residual BPU 210 without significant loss of quality. Therefore, the residual BPU 210 is further compressed.
[0038]
[0075] The encoder can further compress the transform coefficients in the quantization stage 214. In the transform process, different basis patterns can represent different fluctuation frequencies (e.g., luminance fluctuation frequencies). Because the human eye is generally good at recognizing low-frequency fluctuations, the encoder can ignore high-frequency fluctuation information without causing significant quality degradation during decoding. For example, in the quantization stage 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (referred to as a "quantization parameter") and rounding the quotient to its nearest neighbor. After such an operation, some transform coefficients of high-frequency basis patterns can be converted to zero, and transform coefficients of low-frequency basis patterns can be converted to smaller integers. The encoder can ignore zero-valued quantized transform coefficients 216, thereby further compressing the transform coefficients. The quantization process is also reversible, and the quantized transform coefficients 216 can be reconstructed into transform coefficients in the inverse operation of quantization (referred to as "dequantization").
[0039]
[0076] Quantization stage 214 may be lossy because the encoder ignores the remainder of such a division in a rounding operation. Typically, quantization stage 214 may contribute the greatest information loss in process 200A. The greater the information loss, the fewer bits the quantized transform coefficients 216 may require. To achieve different levels of information loss, the encoder may use different values of the quantization parameter or any other parameter of the quantization process.
[0040]
[0077] In the binary coding stage 226, the encoder may encode the prediction data 206 and the quantized transform coefficients 216 using a binary coding technique, such as entropy coding, variable length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless or lossy compression algorithm. In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the encoder may encode other information in the binary coding stage 226, such as the prediction mode used in the prediction stage 204, parameters of the prediction operation, the type of transform in the transform stage 212, parameters of the quantization process (e.g., quantization parameters), and encoder control parameters (e.g., bitrate control parameters). The encoder may generate a video bitstream 228 using the output data of the binary coding stage 226. In some embodiments, the video bitstream 228 may be further packetized for network transmission.
[0041]
[0078] Referring to the reconstruction path of process 200A, in an inverse quantization stage 218, the encoder may perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. In an inverse transform stage 220, the encoder may generate a reconstructed residual BPU 222 based on the reconstructed transform coefficients. The encoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224 to be used in the next iteration of process 200A.
[0042]
[0079] It should be noted that other variations of process 200A can be used to encode video sequence 202. In some embodiments, an encoder can perform the stages of process 200A in a different order. In some embodiments, one or more stages of process 200A can be combined into a single stage. In some embodiments, a single stage of process 200A can be separated into multiple stages. For example, transform stage 212 and quantization stage 214 can be combined into a single stage. In some embodiments, process 200A can include additional stages. In some embodiments, process 200A can omit one or more stages in FIG. 2A .
[0043]
[0080] 2B shows a schematic diagram of another example encoding process 200B consistent with embodiments of the present disclosure. Process 200B may be modified from process 200A. For example, process 200B may be used by an encoder compliant with a hybrid video coding standard (e.g., the H.26x series). Compared to process 200A, the forward path of process 200B further includes a mode decision stage 230 and separates prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044. The reconstruction path of process 200B additionally includes a loop filter stage 232 and a buffer 234.
[0044]
[0081] Generally, prediction techniques can be categorized into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-picture prediction or "intra-prediction") can use pixels of one or more already coded neighboring BPUs in the same picture to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include neighboring BPUs. Spatial prediction can reduce the inherent spatial redundancy of a picture. Temporal prediction (e.g., inter-picture prediction or "inter-prediction") can use regions of one or more already coded pictures to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include coded pictures. Temporal prediction can reduce the inherent temporal redundancy of a picture.
[0045]
[0082] Referring to process 200B, in the forward path, the encoder performs prediction operations in a spatial prediction stage 2042 and a temporal prediction stage 2044. For example, in the spatial prediction stage 2042, the encoder may perform intra prediction. With respect to an original BPU of a picture being coded, the prediction reference 224 may include one or more neighboring BPUs coded (in the forward path) and reconstructed (in the reconstruction path) within the same picture. The encoder may generate the predicted BPU 208 by extrapolating the neighboring BPUs. Extrapolation techniques may include, for example, linear extrapolation or interpolation, polynomial extrapolation or interpolation, etc. In some embodiments, the encoder may perform extrapolation at the pixel level, such as by extrapolating the value of a corresponding pixel for each pixel of the predicted BPU 208. The neighboring BPUs used for extrapolation may be located relative to the original BPU from 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 specified within the video coding standard used. For intra prediction, the prediction data 206 may include, for example, the positions (e.g., coordinates) of the neighboring BPUs used, the sizes of the neighboring BPUs used, parameters of the extrapolation, the orientation of the neighboring BPUs used relative to the original BPU, etc.
[0046]
[0083] In another example, in the temporal prediction stage 2044, the encoder may perform inter-prediction. With respect to the original BPU of the current picture, the prediction reference 224 may include one or more pictures (referred to as "reference pictures") that have been coded (in the forward path) and reconstructed (in the reconstruction path). In some embodiments, a reference picture may be coded and reconstructed for each BPU. For example, the encoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a reconstructed BPU. Once all reconstructed BPUs of the same picture are generated, the encoder may generate the reconstructed picture as a reference picture. The encoder may perform a "motion estimation" operation to search for a matching region within a range (referred to as a "search window") of the reference picture. The position of the search window in the reference picture may be determined based on the position of the original BPU in the current picture. For example, the search window may be centered in the reference picture at a location having the same coordinates as the original BPU in the current picture and may extend over a predetermined distance. When the encoder identifies a region within the search window that is similar to the original BPU (e.g., by using a pel recursion algorithm, a block matching algorithm, etc.), the encoder can determine that region as a matching region. The matching region may have different dimensions (e.g., smaller, equal, larger, or different shape) than the original BPU. Because the reference picture and the current picture are separated in time in a timeline (e.g., as shown in FIG. 1), the matching region can be considered to "move" to the position of the original BPU over time. The encoder can record the direction and distance of such movement as a "motion vector." If multiple reference pictures are used (e.g., picture 106 in FIG. 1), the encoder can find the matching region for each reference picture and determine its associated motion vector. In some embodiments, the encoder can assign weights to the pixel values of the matching region in each matching reference picture.
[0047]
[0084] Motion estimation can be used to identify various types of motion, such as, for example, translation, rotation, scaling, etc. In inter prediction, prediction data 206 may include, for example, the location (e.g., coordinates) of the matching region, a motion vector associated with the matching region, the number of reference pictures, weights associated with the reference pictures, etc.
[0048]
[0085] To generate the predicted BPU 208, the encoder may perform a "motion compensation" operation. Motion compensation may be used to reconstruct the predicted BPU 208 based on the prediction data 206 (e.g., a motion vector) and the prediction reference 224. For example, the encoder may shift the matching region of the reference picture according to the motion vector, in which case the encoder may predict the original BPU of the current picture. If multiple reference pictures are used (e.g., picture 106 of FIG. 1), the encoder may shift the matching region of the reference picture according to each motion vector and average the pixel values of the matching region. In some embodiments, if the encoder assigns weights to the pixel values of the matching region of each matching reference picture, the encoder may add a weighted sum of the pixel values of the shifted matching region.
[0049]
[0086] In some embodiments, inter-prediction can be unidirectional or bidirectional. Unidirectional inter-prediction can use one or more reference pictures that are in the same temporal direction relative to the current picture. For example, picture 104 in FIG. 1 is a unidirectional inter-predicted picture in which a reference picture (e.g., picture 102) precedes picture 104. Bidirectional inter-prediction can use one or more reference pictures that are in both temporal directions relative to the current picture. For example, picture 106 in FIG. 1 is a bidirectional inter-predicted picture in which reference pictures (e.g., pictures 104 and 108) are in both temporal directions relative to picture 104.
[0050]
[0087] Continuing with reference to the forward path of process 200B, after spatial prediction step 2042 and temporal prediction step 2044, in mode decision step 230, the encoder may select a prediction mode (e.g., one of intra-prediction or inter-prediction) for the current iteration of process 200B. For example, the encoder may perform a rate-distortion optimization technique, in which the encoder may select a prediction mode to minimize the value of a cost function depending on the bitrates of the candidate prediction modes and the distortion of the reconstructed reference picture under the candidate prediction modes. Depending on the selected prediction mode, the encoder may generate a corresponding predicted BPU 208 and predicted data 206.
[0051]
[0088] In the reconstruction path of process 200B, if an intra-prediction mode is selected in the forward path, after generating a prediction reference 224 (e.g., a current BPU that has been coded and reconstructed in a current picture), the encoder can directly feed the prediction reference 224 to a spatial prediction stage 2042 for later use (e.g., to extrapolate the next BPU of the current picture). If an inter-prediction mode is selected in the forward path, after generating a prediction reference 224 (e.g., a current picture in which all BPUs have been coded and reconstructed), the encoder can feed the prediction reference 224 to a loop filter stage 232, where the encoder can apply a loop filter to the prediction reference 224 to reduce or eliminate distortions (e.g., blocking artifacts) caused by inter-prediction. For example, the encoder can apply various loop filter techniques in the loop filter stage 232, such as deblocking, sample adaptive offset, adaptive loop filter, etc. The loop filtered reference pictures may be stored in a buffer 234 (or "decoded picture buffer") for later use (e.g., for use as inter-predicted reference pictures for future pictures in the video sequence 202). The encoder may store one or more reference pictures in the buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the encoder may encode loop filter parameters (e.g., loop filter strength) along with the quantized transform coefficients 216, the prediction data 206, and other information in a binary coding stage 226.
[0052]
[0089] FIG. 3A shows a schematic diagram of an example decoding process 300A consistent with embodiments of the present disclosure. Process 300A may be a decompression process corresponding to compression process 200A of FIG. 2A. In some embodiments, process 300A may be similar to the reconstruction path of process 200A. A decoder may follow process 300A to decode video bitstream 228 into video stream 304. Video stream 304 may be very similar to video sequence 202. However, due to information loss in the compression and decompression processes (e.g., quantization stage 214 of FIGS. 2A-2B), video stream 304 is generally not identical to video sequence 202. Similar to processes 200A and 200B of FIGS. 2A-2B, a decoder may perform process 300A at the level of a basic processing unit (BPU) for each coded picture in video bitstream 228. For example, the decoder may perform process 300A in an iterative manner, where the decoder may decode a basic processing unit in one iteration of process 300A. In some embodiments, the decoder may perform process 300A in parallel for a region (e.g., regions 114-118) of each picture encoded in video bitstream 228.
[0053]
[0090] In FIG. 3A , a decoder may feed a portion of a video bitstream 228 associated with a basic processing unit of a coded picture (referred to as a “coded BPU”) to a binary decoding stage 302. In the binary decoding stage 302, the decoder may decode the portion into prediction data 206 and quantized transform coefficients 216. The decoder may feed the quantized transform coefficients 216 to an inverse quantization stage 218 and an inverse transform stage 220 to generate a reconstructed residual BPU 222. The decoder may feed the prediction data 206 to a prediction stage 204 to generate a predicted BPU 208. The decoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224. In some embodiments, the prediction reference 224 may be stored in a buffer (e.g., a decoded picture buffer in computer memory). The decoder may feed the prediction reference 224 to the prediction stage 204 for performing a prediction operation in a next iteration of the process 300A.
[0054]
[0091] The decoder may iteratively perform process 300A to decode each coded BPU of a coded picture and generate a prediction reference 224 for coding the next coded BPU of the coded picture. After decoding all coded BPUs of a coded picture, the decoder may output the picture to the video stream 304 for display and proceed to decode the next coded picture in the video bitstream 228.
[0055]
[0092] In binary decoding stage 302, the decoder may perform an 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 lossless compression algorithm). In some embodiments, in addition to prediction data 206 and quantized transform coefficients 216, the decoder may decode other information in binary decoding stage 302, such as, for example, a prediction mode, parameters of the prediction operation, type of transform, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bitrate control parameters), etc. In some embodiments, if video bitstream 228 is transmitted in packets over a network, the decoder may depacketize video bitstream 228 before feeding it to binary decoding stage 302.
[0056]
[0093] 3B shows a schematic diagram of another example decoding process 300B consistent with embodiments of the present disclosure. Process 300B may be modified from process 300A. For example, process 300B may be used by a decoder that complies with a hybrid video coding standard (e.g., the H.26x series). Compared to process 300A, process 300B further divides prediction stage 204 into spatial prediction stage 2042 and temporal prediction stage 2044, and additionally includes loop filter stage 232 and buffer 234.
[0057]
[0094] In process 300B, for a coded basic processing unit (referred to as a "current BPU") of a coded picture being decoded (referred to as a "current picture"), prediction data 206 decoded by the decoder from binary decoding stage 302 may include various types of data depending on which prediction mode was used by the encoder to code the current BPU. For example, if intra prediction was used by the encoder to code the current BPU, prediction data 206 may 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 may include, for example, the positions (e.g., coordinates) of one or more neighboring BPUs used as references, sizes of the neighboring BPUs, parameters of extrapolation, directions of the neighboring BPUs relative to the original BPU, etc. In another example, if inter prediction was used by the encoder to code the current BPU, prediction data 206 may include a prediction mode indicator (e.g., a flag value) indicating inter prediction, parameters of the inter prediction operation, etc. Parameters for inter-prediction operations may include, for example, the number of reference pictures associated with the current BPU, weights associated with each of the reference pictures, the locations (e.g., coordinates) of one or more matching regions within each reference picture, one or more motion vectors associated with each of the matching regions, etc.
[0058]
[0095] Based on the prediction mode indicator, the decoder may decide whether to perform spatial prediction (e.g., intra prediction) in a spatial prediction step 2042 or temporal prediction (e.g., inter prediction) in a temporal prediction step 2044. Details of performing such spatial or temporal prediction are shown in FIG. 2B and will not be repeated below. After performing such spatial or temporal prediction, the decoder may generate a predicted BPU 208. As described in FIG. 3A, the decoder may add the predicted BPU 208 and the reconstructed residual BPU 222 to generate a prediction reference 224.
[0059]
[0096] In process 300B, the decoder may feed a prediction reference 224 to a spatial prediction stage 2042 or a temporal prediction stage 2044 for performing a prediction operation within a next iteration of process 300B. For example, if the current BPU is decoded using intra prediction in spatial prediction stage 2042, after generating the prediction reference 224 (e.g., the decoded current BPU), the decoder may feed the prediction reference 224 directly to spatial prediction stage 2042 for later use (e.g., to extrapolate the next BPU of the current picture). If the current BPU is decoded using inter prediction in temporal prediction stage 2044, after generating the prediction reference 224 (e.g., the reference picture from which all BPUs are decoded), the encoder may feed the prediction reference 224 to a loop filter stage 232 to reduce or eliminate distortion (e.g., blocking artifacts). The decoder may apply a loop filter to the prediction reference 224 in the manner described in FIG. 2B . The loop filtered reference pictures may be stored in a buffer 234 (e.g., a decoded picture buffer in computer memory) for later use (e.g., for use as inter-prediction reference pictures for future coded pictures of the video bitstream 228). The decoder may 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 in the prediction data 206 indicates that inter-prediction was used to encode the current BPU, the prediction data may further include loop filter parameters (e.g., loop filter strength).
[0060]
[0097] FIG. 4 is a block diagram of an example device 400 for encoding or decoding video consistent with embodiments of the present disclosure. As shown in FIG. 4, device 400 may include a processor 402. When processor 402 executes the instructions described herein, device 400 may become a dedicated machine for encoding or decoding video. Processor 402 may be any type of circuit capable of manipulating or processing information. For example, processor 402 may 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), general purpose array logic (GALs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), systems-on-chips (SoCs), application-specific integrated circuits (ASICs), etc. In some embodiments, processor 402 may be a set of processors grouped together as a single logical entity. For example, as shown in Figure 4, processor 402 may include multiple processors, including processor 402a, processor 402b, and processor 402n.
[0061]
[0098] Device 400 may also include memory 404 configured to store data (e.g., a set of instructions, computer code, intermediate data, etc.). For example, as shown in FIG. 4, the stored data may include program instructions (e.g., program instructions for implementing steps in processes 200A, 200B, 300A, or 300B) and data for processing (e.g., video sequence 202, video bitstream 228, or video stream 304). Processor 402 can access the program instructions and data for processing (e.g., via bus 410) and execute the program instructions to operate on or process the data for processing. Memory 404 may include high-speed random access storage or non-volatile storage. In some embodiments, memory 404 may include any combination of any number of random access memory (RAM), read-only memory (ROM), optical disks, magnetic disks, hard drives, solid-state drives, flash drives, security digital (SD) cards, memory sticks, compact flash (CF) cards, etc. Memory 404 may also be a collection of memories (not shown in FIG. 4) grouped together as a single logical entity.
[0062]
[0099] Bus 410, such as an internal bus (e.g., a CPU memory bus), an external bus (e.g., a Universal Serial Bus port, a Peripheral Component Interconnect Express port), or the like, may be a communication device that transfers data between components within device 400.
[0063]
[0100] For ease of explanation and to avoid ambiguity, this disclosure will collectively refer to the processor 402 and other data processing circuitry as "data processing circuitry." The data processing circuitry may be implemented entirely in hardware or as a combination of software, hardware, or firmware. In addition, the data processing circuitry may be a single, independent module or may be fully or partially combined within any other component of the device 400.
[0064]
[0101] 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 communications 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, etc.
[0065]
[0102] In some embodiments, device 400 may optionally further include a peripheral interface 408 for providing connection to one or more peripheral devices. As shown in Figure 4, peripheral devices may include, but are not limited to, a cursor control device (e.g., a mouse, touchpad, or touchscreen), a keyboard, a display (e.g., a cathode ray tube display, a liquid crystal display, or a light emitting diode display), a video input device (e.g., a camera coupled to a video archive, or an input interface), etc.
[0066]
[0103] It should be noted that a video codec (e.g., a codec performing process 200A, 200B, 300A, or 300B) can be implemented as any combination of 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 circuitry (e.g., FPGA, ASIC, NPU, etc.).
[0067]
[0104] In VVC, a coding tool called luma mapping with chroma scaling ("LMCS") can be added as a new processing block before the loop filter. LMCS has two main components: 1) in-loop mapping of the luma component based on an adaptive piecewise linear model, and 2) luma-dependent chroma residual scaling is applied to the chroma components. The in-loop mapping of the luma component adjusts the dynamic range of the input signal by redistributing codewords across the dynamic range, improving compression efficiency. The chroma residual scaling is designed to compensate for the interaction between a luma signal and its corresponding chroma signal.
[0068]
[0105] In VVC (e.g., VVC Draft 8), LMCS can be controlled at the sequence level, picture level, or slice level. FIG. 5 shows example pseudocode including a control variable for enabling luma mapping with chroma scaling at the sequence level. As shown in FIG. 5, when sps_lmcs_enabled_flag is equal to 1, luma mapping with chroma scaling is used in coded layer video sequences ("CLVS"). When sps_lmcs_enabled_flag is equal to 0, luma mapping with chroma scaling is not used in CLVS.
[0069]
[0106]
[0047] Figure 6 shows example pseudocode including a control variable for enabling luma mapping with chroma scaling in a picture header. As shown in Figure 6, when ph_lmcs_enabled_flag is equal to 1, luma mapping with chroma scaling is enabled for all slices associated with the PH. When ph_lmcs_enabled_flag is equal to 0, luma mapping with chroma scaling may be turned off for one, multiple, or all slices associated with the PH. When not present, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.
[0070]
[0107] As shown in Figure 6, the chroma residual scaling process can be separately controlled with a picture-level flag (e.g., ph_chroma_residual_scale_flag). When ph_chroma_residual_scale_flag is equal to 1, chroma residual scaling is enabled for all slices associated with the PH. When ph_chroma_residual_scale_flag is equal to 0, chroma residual scaling can be turned off for one, multiple, or all slices associated with the PH. When ph_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.
[0071]
[0108]
[0071] Figure 7 shows example pseudocode including a control variable for enabling luma mapping with chroma scaling in a slice header. As shown in Figure 7, when slice_lmcs_enabled_flag is equal to 1, luma mapping with chroma scaling is enabled for the current slice. When slice_lmcs_enabled_flag is equal to 0, luma mapping with chroma scaling is not enabled for the current slice. When slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.
[0072]
[0109] An adaptive loop filter ("ALF") is an in-loop filter that can be applied to the reconstructed samples to reduce sample distortion and improve coding efficiency. The filter coefficients are determined by the encoder and signaled in the bitstream.
[0073]
[0110] In VVC (e.g., VVC Draft 8), ALF can be controlled at the sequence level and at one of the picture level or slice level. ALF may not be applied at both the picture level and the slice level. FIG. 8A shows example pseudocode for including adaptive loop filter syntax in a sequence parameter set. FIG. 8B shows example pseudocode for including adaptive loop filter syntax in a picture parameter set. FIG. 9 shows example pseudocode for including adaptive loop filter syntax in a picture header. FIG. 10 shows example pseudocode for including adaptive loop filter syntax in a slice header. As shown in FIG. 8A, the variable sps_alf_enabled_flag in the sequence parameter set ("SPS") controls ALF for CLVS. When sps_alf_enabled_flag is equal to 1, ALF is enabled for CLVS. When sps_alf_enabled_flag is equal to 0, ALF is disabled for CLVS. As shown in Figures 8B, 9, and 10, when ALF is enabled for CLVS, it can be further controlled at the picture level by ph_alf_enabled_flag or at the slice level by slice_alf_enabled_flag. Whether it is controlled at the picture level or the slice level is determined by the flag alf_info_in_ph_flag, which is signaled in the picture parameter set ("PPS"). When ph_alf_enabled_flag is equal to 1, ALF coefficient information is signaled in the picture header. When slice_alf_enabled_flag is equal to 1, ALF coefficient information is signaled in the slice header.
[0074]
[0111] When sps_alf_enabled_flag is equal to 0, the adaptive loop filter is turned off (e.g., disabled). When sps_alf_enabled_flag is equal to 1, the adaptive loop filter is enabled.
[0075]
[0112] When sps_ccalf_enabled_flag is equal to 0, the cross-component adaptive loop filter is turned off. When sps_ccalf_enabled_flag is equal to 1, the cross-component adaptive loop filter may be enabled.
[0076]
[0113] When alf_info_in_ph_flag is equal to 1, ALF information is present in the PH syntax structure and is not present in slice headers that refer to PPSs that do not contain a PH syntax structure. When alf_info_in_ph_flag is equal to 0, ALF information is not present in the PH syntax structure and may be present in slice headers that refer to PPSs that do not contain a PH syntax structure.
[0077]
[0114] When ph_alf_enabled_flag is equal to 1, the adaptive loop filter is enabled for all slices associated with the PH and may be applied to the Y, Cb, or Cr color components within the slice. When ph_alf_enabled_flag is equal to 0, the adaptive loop filter may be disabled for one, more, or all slices associated with the PH. When not present, ph_alf_enabled_flag is inferred to be equal to 0.
[0078]
[0115] The variable ph_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slices associated with the PH.
[0079]
[0116] The variable ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luma component of the slice associated with PH.
[0080]
[0117] The variable alf_luma_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[0081]
[0118] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[0082]
[0119] When ph_alf_chroma_idc is equal to 0, the adaptive loop filter is not applied to the Cb and Cr color components. When ph_alf_chroma_idc is equal to 1, the adaptive loop filter is applied to the Cb color component. When ph_alf_chroma_idc is equal to 2, the adaptive loop filter is applied to the Cr color component. When ph_alf_chroma_idc is equal to 3, the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc is not present, it is inferred to be equal to 0.
[0083]
[0120] The variable ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chroma components of the slice associated with the PH refer.
[0084]
[0121] The value of alf_chroma_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma shall be equal to 1.
[0085]
[0122] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma shall be less than or equal to the TemporalId of the picture associated with PH.
[0086]
[0123] When ph_cc_alf_cb_enabled_flag is equal to 1, the cross-component filter for the Cb color component may be enabled for all slices associated with the PH and applied to the Cb color component within the slice. When ph_cc_alf_cb_enabled_flag is equal to 0, the cross-component filter for the Cb color component may be turned off for one, multiple, or all slices associated with the PH. When not present, ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.
[0087]
[0124] The variable ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the slice associated with the PH.
[0088]
[0125] The value of alf_cc_cb_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id shall be equal to 1.
[0089]
[0126] When ph_cc_alf_cr_enabled_flag is equal to 1, the cross-component filter for the Cr color component may be enabled for all slices associated with the PH and applied to the Cr color component within the slice. When ph_cc_alf_cr_enabled_flag is equal to 0, the cross-component filter for the Cr color component may be turned off for one, multiple, or all slices associated with the PH. When not present, ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.
[0090]
[0127] The variable ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the slice associated with PH.
[0091]
[0128] The value of alf_cc_cr_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id shall be equal to 1.
[0092]
[0129] When slice_alf_enabled_flag is equal to 1, the adaptive loop filter is enabled and may be applied to the Y, Cb, or Cr color component in the slice. When slice_alf_enabled_flag is equal to 0, the adaptive loop filter is turned off for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[0093]
[0130] The variable slice_num_alf_aps_ids_luma specifies the number of ALF APSs that the slice references. When slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma is not present, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.
[0094]
[0131] The variable slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS to which the luma component of the slice refers. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[i] is not present, the value of slice_alf_aps_id_luma[i] is inferred to be equal to the value of ph_alf_aps_id_luma[i].
[0095]
[0132] The value of alf_luma_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be equal to 1.
[0096]
[0133] When slice_alf_chroma_idc is equal to 0, the adaptive loop filter is not applied to the Cb and Cr color components. When slice_alf_chroma_idc is equal to 1, the adaptive loop filter is applied to the Cb color component. When slice_alf_chroma_idc is equal to 2, the adaptive loop filter is applied to the Cr color component. When slice_alf_chroma_idc is equal to 3, the adaptive loop filter is applied to the Cb and Cr color components. When slice_alf_chroma_idc is not present, it is inferred to be equal to ph_alf_chroma_idc.
[0097]
[0134] The variable slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chroma components of the slice refer. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma is not present, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[0098]
[0135] The value of alf_chroma_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.
[0099]
[0136] When slice_cc_alf_cb_enabled_flag is equal to 0, the cross-component filter is not applied to the Cb color components. When slice_cc_alf_cb_enabled_flag is equal to 1, the cross-component filter is enabled and can be applied to the Cb color components. When slice_cc_alf_cb_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.
[0100]
[0137] The variable slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referenced by the Cb color component of the slice.
[0101]
[0138] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 1 and slice_cc_alf_cb_aps_id is not present, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[0102]
[0139] The value of alf_cc_cb_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[0103]
[0140] When slice_cc_alf_cr_enabled_flag is equal to 0, the cross-component filter is not applied to the Cr color component. When slice_cc_alf_cb_enabled_flag is equal to 1, the cross-component adaptive loop filter is enabled and can be applied to the Cr color component. When slice_cc_alf_cr_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.
[0104]
[0141] The variable slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id to which the Cr color component of the slice refers. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id is not present, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[0105]
[0142] The value of alf_cc_cr_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be equal to 1.
[0106]
[0143] Sample Adaptive Offset ("SAO") adds offsets to reconstructed samples to reduce sample distortion. Two offset modes are supported in SAO: Edge Offset ("EO") mode and Band Offset ("BO") mode. In Edge Offset mode, samples in a coding tree unit ("CTU") are first classified into five classes, and samples in four of the classes have corresponding offsets. Therefore, four offset values, one offset per class, are determined by the encoder. The classification method and offset values are signaled in the bitstream at the CTU level. In Band Offset mode, samples in a CTU are divided into 32 bands according to the sample values, and samples in four of the bands have corresponding offsets. The four bands to be offset and the corresponding offsets are signaled in the bitstream.
[0107]
[0144] In VVC (e.g., VVC Draft 8), similar to ALF, SAO can be controlled at the sequence level and at either the picture level or the slice level. SAO may not be controlled at both the picture level and the slice level. FIG. 11 shows pseudocode as an example for including sample adaptive offset syntax in a sequence parameter set. FIG. 12 shows pseudocode as an example for including sample adaptive offset syntax in a picture parameter set. FIG. 13 shows pseudocode as an example for including sample adaptive offset syntax in a picture header. FIG. 14 shows pseudocode as an example for including sample adaptive offset syntax in a slice header. As shown in FIG. 11, the variable sps_sao_enabled_flag in the SPS controls SAO for CLVS. When sps_sao_enabled_flag is equal to 1, SAO is enabled for CLVS. When sps_sao_enabled_flag is equal to 0, SAO is turned off for CLVS.
[0108]
[0145] As shown in Figures 12, 13, and 14, when SAO is enabled for CLVS, it can be further controlled at the picture level by ph_sao_luma_enabled_flag / ph_sao_chroma_enabled_flag, or at the slice level by slice_sao_luma_flag / slice_sap_chroma_flag. Whether it is controlled at the picture level or the slice level is determined by the flag sao_info_in_ph_flag, which is signaled in the PPS.
[0109]
[0146] When sps_sao_enabled_flag is equal to 1, the sample adaptive offset process is applied to the reconstructed picture after the deblocking filter process. When sps_sao_enabled_flag is equal to 0, the sample adaptive offset process is not applied to the reconstructed picture after the deblocking filter process.
[0110]
[0147] When sao_info_in_ph_flag is equal to 1, SAO filter information is present in the PH syntax structure and is not present in slice headers that reference PPSs that do not contain a PH syntax structure. When sao_info_in_ph_flag is equal to 0, SAO filter information is not present in the PH syntax structure and may be present in slice headers that reference PPSs that do not contain a PH syntax structure.
[0111]
[0148] When ph_sao_luma_enabled_flag is equal to 1, SAO is enabled for the luma component in all slices associated with the PH. When ph_sao_luma_enabled_flag is equal to 0, SAO for the luma component can be turned off for one, multiple, or all slices associated with the PH. When ph_sao_luma_enabled_flag is not present, it is inferred to be equal to 0.
[0112]
[0149] When ph_sao_chroma_enabled_flag is equal to 1, SAO is enabled for chroma components in all slices associated with the PH. When ph_sao_chroma_enabled_flag is equal to 0, SAO for chroma components can be turned off for one, multiple, or all slices associated with the PH. When ph_sao_chroma_enabled_flag is not present, it is inferred to be equal to 0.
[0113]
[0150] When slice_sao_luma_flag is equal to 1, SAO is enabled for the luma component in the current slice. When slice_sao_luma_flag is equal to 0, SAO is turned off for the luma component in the current slice. When slice_sao_luma_flag is not present, it is inferred to be equal to ph_sao_luma_enabled_flag.
[0114]
[0151] When slice_sao_chroma_flag is equal to 1, SAO is enabled for the chroma components in the current slice. When slice_sao_chroma_flag is equal to 0, SAO is turned off for the chroma components in the current slice. When slice_sao_chroma_flag is not present, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[0115]
[0152] A deblocking filter ("DBF") is a filter applied to block boundaries to reduce block artifacts. In VVC (e.g., VVC Draft 8), DBF disable flags and parameters are signaled in the PPS. In addition, an override enable flag, deblocking_filter_override_enabled_flag, is also signaled to indicate whether the DBF disable flags and parameters can be overridden at a lower level. If overridden, a flag, dbf_info_in_ph_flag, is signaled to indicate whether the DBF disable flags and parameters are overridden in the picture header or in the slice header.
[0116]
[0153] Figure 15 shows example pseudocode for including deblocking filter syntax in a picture parameter set. Figure 16 shows example pseudocode for including deblocking filter syntax in a picture header. Figure 17 shows example pseudocode for including deblocking filter syntax in a slice header. As shown in Figures 15, 16, and 17, if the DBF disable flag and parameters are overridden in the picture header, picture-level DBF disable flag and DBF parameters may be signaled in the picture header. If the DBF disable flag and parameters are overridden in the slice header, slice-level DBF disable flag and DBF parameters may be signaled in the slice header.
[0117]
[0154] When deblocking_filter_control_present_flag is equal to 1, the deblocking filter control syntax element is present in the PPS. When deblocking_filter_control_present_flag is equal to 0, the deblocking filter control syntax element is not present in the PPS.
[0118]
[0155] When deblocking_filter_override_enabled_flag is equal to 1, ph_deblocking_filter_override_flag is present in the PH that references the PPS, or slice_deblocking_filter_override_flag is present in the slice header that references the PPS. When deblocking_filter_override_enabled_flag is equal to 0, ph_deblocking_filter_override_flag is not present in the PH that references the PPS, or slice_deblocking_filter_override_flag is not present in the slice header that references the PPS. When not present, the value of deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[0119]
[0156] When pps_deblocking_filter_disabled_flag is equal to 1, the deblocking filter operation is not applied to slices that refer to PPSs for which slice_deblocking_filter_disabled_flag is not present. When pps_deblocking_filter_disabled_flag is equal to 0, the deblocking filter operation is applied to slices that refer to PPSs for which slice_deblocking_filter_disabled_flag is not present. When not present, the value of pps_deblocking_filter_disabled_flag is inferred to be equal to 0.
[0120]
[0157] When ph_deblocking_filter_override_flag is equal to 1, the deblocking parameters are present in PH. When ph_deblocking_filter_override_flag is equal to 0, the deblocking parameters are not present in PH. When not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.
[0121]
[0158] When ph_deblocking_filter_disabled_flag is equal to 1, the deblocking filter operation is not applied to the slice associated with PH. When ph_deblocking_filter_disabled_flag is equal to 0, the deblocking filter operation is applied to the slice associated with PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0122]
[0159] When slice_deblocking_filter_override_flag is equal to 1, the deblocking parameters are present in the slice header. When slice_deblocking_filter_override_flag is equal to 0, the deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.
[0123]
[0160] When slice_deblocking_filter_disabled_flag is equal to 1, the operation of the deblocking filter is not applied to the current slice. When slice_deblocking_filter_disabled_flag is equal to 0, the operation of the deblocking filter is applied to the current slice. When slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[0124]
[0161] There are many problems with the current design of VVC. First, LMCS can be controlled at the CLVS level, the picture level, and the slice level. When an enable flag at a higher level enables LMCS, a lower level may turn it off. In other words, an enable flag equal to 1 at a given level does not necessarily mean that LMCS is enabled, because an enable flag at a lower level may turn it off. Similarly, when an SPS enable flag enables ALF and SAO, a picture-level or slice-level enable flag may turn them off. As a result, the current semantics are not accurate.
[0125]
[0162] Furthermore, when ph_lmcs_enabled_flag is equal to 1, ph_chroma_residual_scale_flag may still turn off (e.g., disable) chroma scaling for the current picture. As a result, ph_lmcs_enabled_flag is equal to 1 does not necessarily mean that chroma scaling is enabled. Therefore, the current semantics are not accurate.
[0126]
[0163] Another issue is syntax consistency. There are some inconsistencies between ALF / SAO and LMCS syntax. LMCS can be controlled at three levels: SPS, PH, and SH. When LMCS is enabled at a higher level, a lower level may turn it off. When LMCS is turned off at a higher level, a lower level may not enable it. However, in the case of ALF and SAO, they can only be controlled at two levels: SPS and one of PH or SH. The decision of PH-level or SH-level control for ALF and SAO is determined by a flag in the PPS. As a result, the control mechanism differs between LMCS and ALF / SAO.
[0127]
[0164] In addition, when ALF is controlled and enabled in the PH, parameter information of ALF is signaled in the PH. When ALF is controlled and enabled in the SH, parameter information of ALF is signaled in the SH. Therefore, for ALF, when the control is at the slice level, different slices may have different ALF parameters. In contrast, for LMCS, the SH can only enable or turn off (e.g., disable), but cannot signal parameter information when enabled. In other words, LMCS parameters must be the same for all slices (that enable LMCS) in the same picture. This is another inconsistency between ALF and LMCS.
[0128]
[0165] The third issue is with the deblocking filter syntax. There is no SBS disable flag that disables DBF for the entire CLVS. Furthermore, the semantics of pps_deblocking_filter_disabled_flag and ph_deblocking_filter_disabled_flag are not precise. In VVC (e.g., VVC Draft 8), pps_deblocking_filter_disabled_flag equal to 1 (or 0) specifies that the deblocking filter operation is not applied (or applied) to slices that refer to PPSs for which slice_deblocking_filter_disabled_flag is not present. However, ph_deblocking_filter_disabled_flag can override pps_deblocking_filter_disabled_flag, and therefore the semantics of pps_deblocking_filter_disabled_flag are not precise. Additionally, according to VVC (e.g., VVC Draft 8), ph_deblocking_filter_disabled_flag equal to 1 (or 0) specifies that the deblocking filter operation is not applied (or applied) to the slice associated with the PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag. However, if slice_deblocking_filter_disabled_flag overrides pps_deblocking_filter_disabled_flag, ph_deblocking_filter_disabled_flag is not present, and thus it is inferred to be equal to pps_deblocking_filter_disabled_flag.However, because pps_deblocking_filter_disabled_flag is overridden by slice_deblocking_filter_disabled_flag, the value of pps_deblocking_filter_disabled_flag may not be applicable to the slice, so the semantics of ph_deblocking_filter_disabled_flag are inaccurate.
[0129]
[0166] Embodiments of the present disclosure provide methods for addressing the above-mentioned problems. In some embodiments, semantics may be modified based on the consideration that lower-level enable flags for LMCS, ALF, and SAO may turn off (e.g., disable) LMCS, ALF, and SAO when higher-level enable flags enable them, and that chroma scaling may be turned off when the LMCS flag is enabled. Figure 18 shows example semantics for luma mapping with chroma scaling, adaptive loop filter, and sample adaptive offset according to some embodiments of the present disclosure. As shown in Figure 18, changes from the previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough.
[0130]
[0167] In some embodiments, the semantics may be modified in the following manner: When ALF or SAO are enabled at a higher level, a lower level may turn them off; When ALF or SAO are turned off at a higher level, a lower level may not enable them; Furthermore, in the case of ALF, when it is controlled in SH, ALF may only be enabled or disabled, and slice-specific ALF parameters may not be signaled in SH. As a result, all slices in a picture may share the same ALF parameters.
[0131]
[0168] Figure 19 shows example pseudocode including a new picture parameter set for an adaptive loop filter according to some embodiments of the present disclosure. Figure 20 shows example pseudocode including a new picture header syntax for an adaptive loop filter according to some embodiments of the present disclosure. Figure 21 shows example pseudocode including a new slice header syntax for an adaptive loop filter according to some embodiments of the present disclosure. As shown in Figures 19, 20, and 21, changes from the previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough. As shown in Figures 19, 20, and 21, PPS level signaling is simplified by removing the alf_info_in_ph_flag and clearing out the ALF parameter signaling syntax in the slice header.
[0132]
[0169] Figure 22 illustrates example semantics including new flags for picture header syntax, slice header syntax, and picture parameter sets for adaptive loop filters, according to some embodiments of the present disclosure. As shown in Figure 22, changes from previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough. It should be understood that the semantics illustrated in Figure 22 may be applied to the pseudocode of Figure 19, Figure 20, or Figure 21.
[0133]
[0170] Figure 23 shows example pseudocode including a new picture parameter set for sample adaptive offsetting according to some embodiments of the present disclosure. Figure 24 shows example pseudocode including a new picture header syntax for sample adaptive offsetting according to some embodiments of the present disclosure. Figure 25 shows example pseudocode including a new slice header syntax for sample adaptive offsetting according to some embodiments of the present disclosure. As shown in Figures 23, 24, and 25, changes from the previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough. As shown in Figures 23, 24, and 25, PPS level signaling is simplified by removing sao_info_in_ph_flag.
[0134]
[0171] Figure 26 illustrates example semantics including new flags for picture header syntax, slice header syntax, and picture parameter sets for sample adaptive offset, according to some embodiments of the present disclosure. As shown in Figure 26, changes from previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough. It should be understood that the semantics illustrated in Figure 26 may be applied to the pseudocode of Figure 23, Figure 24, or Figure 25.
[0135]
[0172] In some embodiments, an SPS disable flag may be added to the DBF.
[0136]
[0173] In some embodiments, pps_deblocking_filter_disabled_flag can be overridden by ph_deblocking_filter_disabled_flag or slice_deblocking_filter_disabled_flag, such that pps_deblocking_filter_disabled_flag is only applicable when the override mechanism is disabled (e.g., ph_deblocking_filter_disabled_flag and slice_deblocking_filter_disabled_flag are both absent), and ph_deblocking_filter_disabled_flag is only applicable when ph_deblocking_filter_disabled_flag overrides pps_deblocking_filter_disabled_flag (e.g., ph_deblocking_filter_disabled_flag is present but slice_deblocking_filter_disabled_flag is not present).
[0137]
[0174] Figure 27 shows example pseudocode including a new sequence parameter set with a sequence parameter set disable flag for the deblocking filter according to some embodiments of the present disclosure. Figure 28 shows example pseudocode including a new picture parameter set with a sequence parameter set disable flag for the deblocking filter according to some embodiments of the present disclosure. Figure 29 shows example pseudocode including a new picture header syntax with a sequence parameter set disable flag for the deblocking filter according to some embodiments of the present disclosure. Figure 30 shows example pseudocode including a new slice header syntax with a sequence parameter set disable flag for the deblocking filter according to some embodiments of the present disclosure. As shown in Figures 27, 28, 29, and 30, changes from the previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough.
[0138]
[0175] Figures 31A / B show example semantics including new flags for picture header syntax, slice header syntax, sequence parameter sets, and picture parameter sets of a deblocking filter, according to some embodiments of the present disclosure. As shown in Figure 26, changes from the previous VVC are shown in bold, and proposed removed syntax is also shown in strikethrough. It should be understood that the semantics shown in Figures 31A / B may be applied to the pseudocode of Figures 27, 28, 29, or 30.
[0139]
[0176] 32 is a flowchart illustrating an example process for determining luma mapping with chroma scaling (LMCS) consistent with this disclosure. Process 3200 may be performed by a codec (e.g., the encoder of FIGS. 2A-2B or the decoder of FIGS. 3A-3B). For example, the codec may be implemented as one or more software or hardware components of an apparatus for determining LMCS (e.g., apparatus 400 of FIG. 4), such as a processor of the apparatus (e.g., processor 402). The method may include the following steps:
[0140]
[0177] In step 3202, device 400 receives one or more video frames. Video, as used herein, may refer to a chronological order of “frames” (e.g., still images or pictures) that capture visual information. A video capture device (e.g., a camera) can be used to capture and store those pictures in chronological order, and a video playback device (e.g., a television, computer, smartphone, tablet computer, video player, or any end-user terminal with display capabilities) can be used to display such pictures in chronological order. Furthermore, in some applications, the video capture device can transmit the captured video to a video playback device (e.g., a computer with a monitor) in real time, such as for surveillance, conferencing, or live broadcasting.
[0141]
[0178] In step 3204, apparatus 400 determines a control flag for a video frame at the sequence level. In some embodiments, a video frame may include a sequence of pictures, and each picture may include one or more slices. The control flag for a sequence may be an indication of the status for all pictures in the sequence. In some embodiments, the control flag may be an indication of whether the video frame is coded with luma mapping with chroma scaling (LMCS). The control flag for a sequence may be an example of a first control flag. As an example shown in FIG. 18, sps_lmcs_enabled_flag may be a control flag for LMCS at the sequence level. In some embodiments, sps_lmcs_enabled_flag may have a value of "1" or "0".
[0142]
[0179] In step 3206, the apparatus 400 checks the value of the control flag for LMCS at the sequence level to determine whether LMCS is enabled at the sequence level. If LMCS is not enabled at the sequence level, step 3206 is "No," and the process 3200 proceeds to step 3222. When LMCS is not enabled at the sequence level, LMCS is not enabled for all pictures and all slices of the video frames of the sequence. In some embodiments, step 3206 is "No" when sps_lmcs_enabled_flag has a value of "0." If LMCS is enabled at the sequence level, step 3206 is "Yes," and the process 3200 proceeds to step 3208. When LMCS is enabled at the sequence level, all pictures in the sequence may be enabled. In some embodiments, step 3206 is "Yes" when sps_lmcs_enabled_flag has a value of "1."
[0143]
[0180] In step 3208, apparatus 400 determines a control flag for a video frame at the picture level for a picture in the sequence. In some embodiments, a picture of a video frame in the sequence may include one or more slices. The control flag for a picture may be an indication of the status for all slices in the picture. In some embodiments, the control flag may be an indication of whether the picture of the video frame is coded with luma mapping with chroma scaling (LMCS). The control flag for a picture may be an example of a second control flag. As an example shown in FIG. 18, ph_lmcs_enabled_flag may be a control flag for LMCS at the picture level. In some embodiments, the control flag at the picture level is present in the picture header. In some embodiments, ph_lmcs_enabled_flag may have a value of "1" or "0".
[0144]
[0181] In step 3210, apparatus 400 checks the value of the control flag for LMCS at the picture level to determine whether LMCS is enabled at the picture level. If LMCS is not enabled at the picture level, step 3210 is "No," and process 3200 proceeds to step 3212. When LMCS is not enabled at the picture level, LMCS is not enabled for all slices of that picture in the video frame. In some embodiments, step 3210 is "No" when ph_lmcs_enabled_flag has a value of "0." If LMCS is enabled at the picture level, step 3210 is "Yes," and process 3200 proceeds to step 3214. When LMCS is enabled at the picture level, all slices in the picture may be enabled. In some embodiments, step 3210 is "Yes" when ph_lmcs_enabled_flag has a value of "1."
[0145]
[0182] In some additional or alternative embodiments, in response to determining that LMCS is enabled at the picture level (step 3210—YES), apparatus 400 may check the value of a third control flag that indicates whether chroma scaling (CS) is enabled for the video frame at the picture level. As shown in FIG. 18, ph_chroma_residual_scale_flag may be an example of the third control flag. In some embodiments, CS is enabled when ph_chroma_residual_scale_flag is equal to 1, and CS is not enabled when ph_chroma_residual_scale_flag is equal to 0.
[0146]
[0183] In step 3212, the apparatus 400 checks whether the picture is the last picture in the sequence. If step 3212 is "No," the apparatus 400 proceeds to step 3208 to determine the control flags for the video frame in the picture for the next picture in the sequence. Regardless of whether step 3212 is "Yes" or "No," the process 3200 also proceeds to step 3222.
[0147]
[0184] In step 3214, apparatus 400 determines a control flag for the video frame at the slice level for a slice within the picture, as determined in step 3208. The control flag for a slice may be an indication of the status for a particular slice within the picture. In some embodiments, the control flag may be an indication of whether a slice of a picture within the video frame is coded with luma mapping with chroma scaling (LMCS). The control flag for a slice may be an example of a fourth control flag. As an example shown in FIG. 18, slice_lmcs_enabled_flag may be a control flag for LMCS at the slice level. In some embodiments, slice_lmcs_enabled_flag may have a value of "1" or "0".
[0148]
[0185] In step 3216, the apparatus 400 checks the value of the control flag for LMCS at the slice level to determine whether LMCS is enabled at the slice level. If LMCS is not enabled at the slice level, step 3216 is "No" and process 3200 proceeds to step 3218. In some embodiments, step 3216 is "No" when slice_lmcs_enabled_flag has a value of "0". If LMCS is enabled at the slice level, step 3216 is "Yes" and process 3200 proceeds to step 3220. In some embodiments, step 3216 is "Yes" when slice_lmcs_enabled_flag has a value of "1".
[0149]
[0186] In step 3218, the apparatus 400 checks whether the slice is the last slice in the picture. If step 3218 is "No," the apparatus 400 proceeds to step 3214 to determine the control flags for the video frames in the slice for the next slice in the picture. Regardless of whether step 3218 is "Yes" or "No," the process 3200 also proceeds to step 3222.
[0150]
[0187] In step 3220, the apparatus 400 encodes a slice, picture, and / or sequence of a video frame with luma mapping (LM) enabled and chroma scaling enabled. In some embodiments, in response to a second flag indicating that LMCS is enabled at the picture level, when slice_lmcs_enabled_flag is equal to 1, luma mapping (LM) may be enabled and CS may be enabled at the slice level.
[0151]
[0188] In step 3222, the apparatus 400 encodes the slice, picture, and / or sequence of video frames without enabling luma mapping and chroma scaling.
[0152]
[0189] 33 is a flowchart illustrating an example process for determining to code a video frame using an adaptive loop filter (ALF) consistent with this disclosure. Process 3300 may be performed by device 400 and its subcomponents, such as processor 3102.
[0153]
[0190] In step 3302, the device 400 receives one or more video frames.
[0154]
[0191] In step 3304, apparatus 400 determines a control flag for the video frame at the sequence level. In some embodiments, the control flag may be an indication of whether the video frame is encoded using an adaptive loop filter (ALF). The control flag for the sequence may be an example of the first control flag. As an example shown in FIG. 18, sps_alf_enabled_flag may be the control flag for ALF at the sequence level. In some embodiments, sps_alf_enabled_flag may have a value of "1" or "0." In some embodiments, if the value of sps_alf_enabled_flag is not specified or is missing, the default value may be "0."
[0155]
[0192] In step 3306, the apparatus 400 checks the value of the control flag for ALF at the sequence level to determine whether ALF is enabled at the sequence level. If ALF is not enabled at the sequence level, step 3306 is "No" and the process 3300 proceeds to step 3322. When ALF is not enabled at the sequence level, ALF is not enabled for all pictures and all slices of a video frame. In some embodiments, step 3306 is "No" when sps_alf_enabled_flag has a value of "0". If ALF is enabled at the sequence level, step 3306 is "Yes" and the process 3300 proceeds to step 3308. When ALF is enabled at the sequence level, all pictures in the sequence may be enabled. In some embodiments, step 3306 is "Yes" when sps_alf_enabled_flag has a value of "1".
[0156]
[0193] In step 3308, apparatus 400 determines a control flag for a video frame at the picture level for a picture in the sequence. In some embodiments, the control flag may be an indication of whether the picture of the video frame is coded using an adaptive loop filter (ALF). The control flag of the picture may be an example of a second control flag. As an example shown in Figures 22A and 22B, ph_alf_enabled_flag may be a control flag for ALF at the picture level. In some embodiments, the control flag at the picture level is present in the picture header. In some embodiments, ph_alf_enabled_flag may have a value of "1" or "0". In some embodiments, if the value of ph_alf_enabled_flag is not specified or is missing, the default value may be "0".
[0157]
[0194] In step 3310, apparatus 400 checks the value of the control flag for ALF at the picture level to determine whether ALF is enabled at the picture level. If ALF is not enabled at the picture level, step 3310 is "No" and process 3300 proceeds to step 3312. When ALF is not enabled at the picture level, ALF is not enabled for all slices of that picture in the video frame. In some embodiments, step 3310 is "No" when ph_alf_enabled_flag has a value of "0". If ALF is enabled at the picture level, step 3310 is "Yes" and process 3300 proceeds to step 3314. When ALF is enabled at the picture level, all pictures in a sequence may be enabled. In some embodiments, step 3310 is "Yes" when ph_alf_enabled_flag has a value of "1".
[0158]
[0195] In some additional or alternative embodiments, the second control flag may be a control flag for either the picture level or the slice level, depending on a third control flag signaled in a picture parameter set (PPS).
[0159]
[0196] In some additional or alternative embodiments, in response to determining that ALF is enabled for the picture level (step 3310—YES), apparatus 400 may check the value of a fourth control flag that indicates whether a cross-component adaptive loop filter (CCALF) is enabled for the video frame for the Cb color component at the picture level. As shown in FIG. 22A , ph_cc_alf_cb_enabled_flag may be an example of the fourth control flag.
[0160]
[0197] In some additional or alternative embodiments, in response to determining that ALF is enabled for the picture level (step 3310—YES), apparatus 400 may check the value of a fifth control flag that indicates whether a cross-component adaptive loop filter (CCALF) is enabled for the video frame for the Cr color component at the picture level. As shown in FIG. 22A , ph_cc_alf_cr_enabled_flag may be an example of the fifth control flag.
[0161]
[0198] In step 3312, the apparatus 400 checks whether the picture is the last picture in the sequence. If step 3312 is "No," the apparatus 400 proceeds to step 3308 to determine the control flags for the video frame at the picture level for the next picture in the sequence. Regardless of whether step 3312 is "Yes" or "No," the process 3300 also proceeds to step 3322.
[0162]
[0199] In step 3314, apparatus 400 determines a control flag for the video frame at the slice level for a slice within the picture, as determined in step 3308. The control flag for a slice may be an indication of the status for a particular slice within the picture. In some embodiments, the control flag may be an indication of whether a slice of a picture within the video frame is coded using an adaptive loop filter (ALF). The control flag for a slice may be an example of a third control flag. As an example shown in Figures 22A and 22B, slice_alf_enabled_flag may be a control flag for ALF at the slice level. In some embodiments, slice_alf_enabled_flag may have a value of "1" or "0." In some embodiments, if the value of slice_alf_enabled_flag is not specified or is missing, the default value may be "0."
[0163]
[0200] In step 3316, apparatus 400 checks the value of the control flag for ALF at the slice level to determine whether ALF is enabled at the slice level. If ALF is not enabled at the slice level, step 3310 is "No" and process 3300 proceeds to step 3318. In some embodiments, step 3316 is "No" when slice_alf_enabled_flag has a value of "0". If ALF is enabled at the picture level, step 3316 is "Yes" and process 3300 proceeds to step 3320. In some embodiments, step 3316 is "Yes" when slice_alf_enabled_flag has a value of "1".
[0164]
[0201] In step 3318, the apparatus 400 checks whether the slice is the last slice in the picture. If step 3318 is "No," the apparatus 400 proceeds to step 3314 to determine the control flags for the video frames in the slice for the next slice in the picture. Regardless of whether step 3318 is "Yes" or "No," the process 3300 also proceeds to step 3322.
[0165]
[0202] In step 3320, the apparatus 400 encodes the slice, picture, and / or sequence of video frames using an adaptive loop filter (ALF). In some embodiments, when the ALF is enabled, the color components Y, Cb, or Cr are enabled.
[0166]
[0203] In step 3322, the apparatus 400 encodes the slice, picture, and / or sequence of video frames without enabling the adaptive loop filter (ALF).
[0167]
[0204] 34 is a flowchart illustrating an example process for determining to code a video frame using sample adaptive offset (SAO) consistent with this disclosure. Process 3400 may be performed by device 400 and its subcomponents, such as processor 3102.
[0168]
[0205] In step 3402, the device 400 receives one or more video frames.
[0169]
[0206] In step 3404, the apparatus 400 determines a control flag for the video frame at the sequence level. In some embodiments, the control flag may be an indication of whether the video frame is encoded using sample adaptive offset (SAO). The control flag for the sequence may be an example of the first control flag. As an example shown in FIG. 26, sps_sao_enabled_flag may be a control flag for ALF at the sequence level. In some embodiments, sps_sao_enabled_flag may have a value of "1" or "0".
[0170]
[0207] In step 3406, the apparatus 400 checks the value of the control flag for SAO at the sequence level to determine whether SAO is enabled at the sequence level. If SAO is not enabled at the sequence level, step 3406 is "No," and process 3400 proceeds to step 3422. When SAO is not enabled at the sequence level, SAO is not enabled for all pictures and all slices of a video frame. In some embodiments, step 3406 is "No" when sps_sao_enabled_flag has a value of "0." If SAO is enabled at the sequence level, step 3406 is "Yes," and process 3400 proceeds to step 3408. When SAO is enabled at the sequence level, all pictures in the sequence may be enabled. In some embodiments, step 3406 is "Yes" when sps_sao_enabled_flag has a value of "1."
[0171]
[0208] In step 3408, the apparatus 400 determines a control flag for a video frame at the picture level for a picture in the sequence. The control flag for a picture may be an indication of the status for all slices in the picture. In some embodiments, the control flag may be an indication of whether the picture of the video frame is coded using sample adaptive offset (SAO). The control flag for a picture may be an example of a second control flag. As an example shown in FIG. 26, one or both of ph_sao_luma_enabled_flag or ph_sao_chroma_enabled_flag may be control flags for SAO at the picture level. In some embodiments, the control flag at the picture level is present in the picture header. In some embodiments, ph_sao_luma_enabled_flag or ph_sao_chroma_enabled_flag may have a value of "1" or "0." In some embodiments, if a value for ph_sao_luma_enabled_flag or ph_sao_chroma_enabled_flag is not specified or is missing, the default value may be "0." Those skilled in the art will appreciate that the process 3400 shown in FIG. 34 may be applicable to both the luma component of the SAO and the chroma component of the SAO.
[0172]
[0209] In step 3410, apparatus 400 checks the value of the control flag for SAO at the picture level to determine whether SAO is enabled at the picture level. If SAO is not enabled at the picture level, step 3410 is "No," and process 3400 proceeds to step 3412. When SAO is not enabled at the picture level, SAO is not enabled for all slices of that picture in the video frame. In some embodiments, step 3410 is "No" when ph_sao_luma_enabled_flag or ph_sao_chroma_enabled_flag has a value of "0." If SAO is enabled at the picture level, step 3410 is "Yes," and process 3400 proceeds to step 3414. When SAO is enabled at the picture level, all slices in the picture may be enabled. In some embodiments, step 3410 is "yes" when ph_sao_luma_enabled_flag or ph_sao_chroma_enabled_flag has a value of "1".
[0173]
[0210] In some additional or alternative embodiments, the second control flag may be a control flag for either the picture level or the slice level, depending on a third control flag signaled in a picture parameter set (PPS).
[0174]
[0211] In step 3412, the apparatus 400 checks whether the picture is the last picture in the sequence. If step 3412 is "No," the apparatus 400 proceeds to step 3408 to determine the control flags for the video frame in the picture for the next picture in the sequence. Regardless of whether step 3412 is "Yes" or "No," the process 3400 also proceeds to step 3422.
[0175]
[0212] In step 3414, apparatus 400 determines a control flag for the video frame at the slice level for a slice within the picture, as determined in step 3408. The control flag for a slice may be an indication of the status for a particular slice within the picture. In some embodiments, the control flag may be an indication of whether a slice of a picture within the video frame is coded using sample adaptive offset (SAO). The control flag for a slice may be an example of a third control flag. As an example shown in FIG. 26, slice_sao_luma_enabled_flag or slice_sao_chroma_enabled_flag may be a control flag for SAO at the slice level. In some embodiments, slice_sao_luma_enabled_flag or slice_sao_chroma_enabled_flag may have a value of "1" or "0". In some embodiments, if a value for slice_sao_luma_enabled_flag or slice_sao_chroma_enabled_flag is not specified or is missing, the default value may be "0".
[0176]
[0213] In step 3416, the apparatus 400 checks the value of the control flag for SAO at the slice level to determine whether SAO is enabled at the slice level. If SAO is not enabled at the slice level, step 3416 is "No," and process 3400 proceeds to step 3418. In some embodiments, step 3416 is "No" when slice_sao_luma_enabled_flag or slice_sao_chroma_enabled_flag has a value of "0." If SAO is enabled at the slice level, step 3416 is "Yes," and process 3400 proceeds to step 3420. In some embodiments, step 3416 is "Yes" when slice_sao_luma_enabled_flag or slice_sao_chroma_enabled_flag has a value of "1."
[0177]
[0214] In step 3418, the apparatus 400 checks whether the slice is the last slice in the picture. If step 3418 is "No," the apparatus 400 proceeds to step 3414 to determine the control flags for the video frames in the slice for the next slice in the picture. Regardless of whether step 3418 is "Yes" or "No," the process 3400 also proceeds to step 3422.
[0178]
[0215] In step 3420, the apparatus 400 encodes the slice, picture, and / or sequence of the video frame using sample adaptive offset (SAO) (either luma or chroma SAO or both, based on a control flag).
[0179]
[0216] In step 3422, the apparatus 400 encodes the slice, picture, and / or sequence of the video frame with sample adaptive offset (SAO) not enabled (either luma or chroma SAO or both, based on a control flag).
[0180]
[0217] 35 is a flowchart illustrating an example process for determining to code a video frame while disabling the deblocking filter consistent with this disclosure. Process 3500 may be performed by device 400 and its subcomponents, such as processor 3102.
[0181]
[0218] In step 3502, the device 400 receives one or more video frames.
[0182]
[0219] In step 3504, apparatus 400 determines a control flag for the video frame at the sequence level. The control flag for a sequence may be an indication of the status for all pictures in the sequence. In some embodiments, the control flag may be an indication of whether the video frame is coded with the deblocking filter disabled. The control flag for the sequence may be an implementation of a disable flag for disabling the deblocking filter at the sequence level. In some embodiments, the sequence level may be the first level. As an example shown in FIG. 31A, sps_deblocking_filter_disabled_flag may be a control flag for the deblocking filter at the sequence level. In some embodiments, sps_deblocking_filter_disabled_flag may have a value of "1" or "0". In step 3504, apparatus 400 further determines an override flag for the video frame at the sequence level for the deblocking filter. As an example shown in FIG. 31A, deblocking_filter_override_enabled_flag may be an implementation of an override flag at the sequence level. In some embodiments, the deblocking_filter_override_enabled_flag may have a value of "1" or "0".
[0183]
[0220] In step 3506, the apparatus 400 checks the value of a control flag for disabling the deblocking filter at the sequence level to determine whether deblocking is disabled at the sequence level. If deblocking is not disabled at the sequence level, step 3506 is "No," and process 3500 proceeds to step 3512. If deblocking is disabled at the sequence level, process 3500 proceeds to step 3508. In some embodiments, step 3506 is "No" when sps_deblocking_filter_disabled_flag has a value of "0." In some embodiments, step 3406 is "Yes" when sps_deblocking_filter_disabled_flag has a value of "1."
[0184]
[0221] In step 3508, apparatus 400 checks the value of an override flag for disabling the deblocking filter at the sequence level. If an override flag exists for the sequence level, step 3508 is "yes," and process 3500 proceeds to step 3512. In some embodiments, step 3508 is "yes" when deblocking_filter_override_enabled_flag may have a value of "1." If an override flag does not exist for the sequence level, step 3508 is "no," and process 3500 proceeds to step 3510. In some embodiments, step 3508 is "no" when deblocking_filter_override_enabled_flag has a value of "0."
[0185]
[0222] In step 3510, when deblocking is disabled for the entire sequence of video frames and the override flag is not present, the deblocking filter is not used when video frames are coded for the sequence.
[0186]
[0223] In step 3512, apparatus 400 determines a control flag for a video frame at the picture level for a picture in the sequence. The control flag for a picture may be an indication of the status for all slices in the picture. In some embodiments, the control flag may be an indication of whether a picture of a video frame in the sequence is coded with the deblocking filter disabled. In some embodiments, the picture level may be a second level. The control flag for a picture may be an implementation of a disable flag for disabling the deblocking filter at the picture level. As an example shown in FIG. 31B, ph_deblocking_filter_disabled_flag may be a control flag for the deblocking filter at the picture level. In some embodiments, ph_deblocking_filter_disabled_flag may have a value of "1" or "0". In step 3512, apparatus 400 further determines an override flag for the video frame for the deblocking filter at the picture level. As an example shown in Figure 31B, ph_deblocking_filter_override_enabled_flag may be an example of an override flag at the picture level. In some embodiments, ph_deblocking_filter_override_enabled_flag may have a value of "1" or "0".
[0187]
[0224] In some additional or alternative embodiments, the first level may be a picture level set, and the first control flag for the first level is signaled in a picture parameter set (PPS). In some additional or alternative embodiments, the second level is one of a picture level or a slice level, and the second control flag for the second level is signaled in a picture header (PH) or a slice header (SH).
[0188]
[0225] In step 3516, apparatus 400 checks the value of a control flag for disabling the deblocking filter at the picture level to determine whether deblocking is disabled at the picture level. If deblocking is not disabled at the picture level, step 3516 is "No" and process 3500 proceeds to step 3522. When deblocking is disabled at the picture level, process 3500 proceeds to step 3518. In some embodiments, step 3516 is "No" when ph_deblocking_filter_disabled_flag has a value of "0". In some embodiments, step 3516 is "Yes" when ph_deblocking_filter_disabled_flag has a value of "1".
[0189]
[0226] In step 3518, the apparatus 310 checks the value of an override flag for disabling the deblocking filter at the picture level. If an override flag exists for the picture level, step 3518 is "yes," and the process 3500 proceeds to step 3522. In some embodiments, step 3518 is "yes" when ph_deblocking_filter_override_enabled_flag may have a value of "1." If an override flag does not exist for the sequence level, step 3518 is "no," and the process 3500 proceeds to step 3520. In some embodiments, step 3518 is "no" when ph_deblocking_filter_override_enabled_flag has a value of "0."
[0190]
[0227] In step 3520, when deblocking is disabled for a picture of a video frame in a sequence and the override flag is not present, a deblocking filter is not used for that particular picture when the video frame is being coded.
[0191]
[0228] In step 3514, the apparatus 400 checks whether all pictures in the sequence have been processed. If step 3514 is "No", the apparatus 400 proceeds to step 3512 for the next picture in the sequence.
[0192]
[0229] In step 3522, apparatus 400 determines a control flag for the video frame at the slice level for a slice within the picture, as determined in step 3516. The control flag for a slice may be an indication of the status for a particular slice within the picture. In some embodiments, the control flag may be an indication of whether a slice within the picture of the video frame is coded with the deblocking filter disabled. The control flag for the picture may be an implementation of a disable flag for disabling the deblocking filter at the slice level. As an example shown in FIG. 31B, slice_deblocking_filter_disabled_flag may be a control flag for the deblocking filter at the slice level. In some embodiments, slice_deblocking_filter_disabled_flag may have a value of "1" or "0". In step 3522, apparatus 400 further determines an override flag for the video frame at the slice level for the deblocking filter. As an example shown in FIG. 31B, slice_deblocking_filter_override_enabled_flag may be an implementation of an override flag at the slice level. In some embodiments, slice_deblocking_filter_override_enabled_flag may have a value of "1" or "0".
[0193]
[0230] In step 3526, apparatus 400 checks the value of a control flag for disabling the deblocking filter at the slice level to determine whether deblocking is disabled at the slice level. If deblocking is not disabled at the slice level, step 3526 is "No," and process 3500 proceeds to step 3532. If deblocking is disabled at the slice level, process 3500 proceeds to step 3528. In some embodiments, step 3526 is "No" when slice_deblocking_filter_disabled_flag has a value of "0." In some embodiments, step 3526 is "Yes" when slice_deblocking_filter_disabled_flag has a value of "1."
[0194]
[0231] In step 3528, the device checks the value of an override flag to disable the deblocking filter at the slice level. If an override flag exists for the slice level, step 3528 is "yes," and process 3500 proceeds to step 3532. In some embodiments, step 3528 is "yes" when slice_deblocking_filter_override_enabled_flag has a value of "1." If an override flag does not exist for the slice level, step 3528 is "no," and process 3500 proceeds to step 3530. In some embodiments, step 3528 is "no" when slice_deblocking_filter_override_enabled_flag has a value of "0."
[0195]
[0232] In step 3530, when deblocking is disabled for a slice of a picture within a video frame of a sequence and the override flag is not present, a deblocking filter is not used for that slice when the video frame is being coded.
[0196]
[0233] In step 3524, the apparatus 400 checks whether all slices of the picture have been processed. If step 3524 is "No", the apparatus 400 proceeds to step 3522 again for the next slice in the picture.
[0197]
[0234] In step 3532, the apparatus 400 encodes a sequence of video frames, pictures, and / or slices with a deblocking filter enabled.
[0198]
[0235] In some embodiments, a non-transitory computer-readable storage medium containing instructions is also provided, which may be executed by an apparatus (such as the disclosed encoders and decoders) to perform the above-described methods. Common non-transitory media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage medium, CD-ROMs, any other optical data storage medium, any physical medium with a pattern of holes, RAM, PROMs and EPROMs, FLASH-EPROMs or any other flash memory, NVRAM, cache, registers, any other memory chip or cartridge, and networked versions thereof. An apparatus may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.
[0199]
[0236] Embodiments may be further described using the following clauses: 1. A video encoding method comprising: receiving a video sequence; Encoding a video sequence by using a control flag for luma mapping with chroma scaling (LMCS) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranking from highest to lowest; signaling a first control flag indicating whether LMCS is enabled at the first level; signaling a second control flag indicating whether the LMCS is enabled at a second level in response to the first control flag indicating that the LMCS is enabled at a first level; When the value of the second control flag is equal to 1, the LMCS is enabled at the second level; When the value of the second control flag is equal to 0, the LMCS is disabled at the second level; signaling a second control flag, the second level being lower than the first level; A video encoding method comprising: 2. The video encoding method of clause 1, wherein the first control flag is a control flag for LMCS at a sequence level, and the second control flag is a control flag for LMCS at a picture level. 3. In response to the second control flag indicating that LMCS is enabled at the second level, signaling a third control flag indicating whether chroma scaling (CS) is enabled at the second level; When the value of the third control flag is equal to 1, the CS is enabled at the second level; 3. The video encoding method of claim 2, further comprising signaling that when the value of the third control flag is equal to 0, CS is disabled at the second level. 4. In response to the second control flag indicating that the LMCS is enabled at the second level, signaling a fourth control flag indicating whether the LMCS is applied at the third level; When the value of the fourth control flag is equal to 1, luma mapping (LM) is applied and CS is applicable at the third level; When the value of the fourth control flag is equal to 0, the LMCS is not applied at the third level; The third level is a lower level than the second level, further including signaling. 3. A video encoding method according to clause 1 or 2. 5. The video encoding method of clause 4, wherein the third level is a slice level. 6. The video encoding method of clause 4, wherein when the second control flag is not signaled, LMCS is not enabled for the picture associated with the second control flag. 7. The video encoding method of clause 4 or 5, wherein when the fourth control flag is not signaled, the LMCS is not applied to the slice associated with the fourth control flag. 8. The video encoding method of clause 1, wherein when the first control flag is signaled, the LMCS at the lower level is not enabled when the second control flag is not signaled. 9. The video encoding method of clause 1 or 8, wherein when the first control flag is not signaled, LMCS is not enabled at the lower level, regardless of whether the second control flag is signaled. 10. A video encoding method comprising: receiving a video sequence; Encoding a video sequence by using a control flag for an adaptive loop filter (ALF) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether the ALF is enabled at the first level; signaling a second control flag indicating whether the ALF is enabled at a second level in response to the first control flag indicating that the ALF is enabled at a first level; When the value of the second control flag is equal to 1, the ALF is enabled at the second level; When the value of the second control flag is equal to 0, the ALF is disabled at the second level; signaling a second control flag, the second level being lower than the first level; A video encoding method comprising: 11. A video encoding method as described in clause 10, wherein the first control flag is a control flag for ALF at the sequence level, and the second control flag is a control flag for ALF at one of the picture level or slice level according to a third control flag signaled in a picture parameter set (PPS). 12. In response to the second control flag indicating that the ALF is enabled at the second level, signaling a fourth control flag indicating whether a cross-component adaptive loop filter (CCALF) is enabled for the Cb color component at the second level; When the value of the fourth control flag is equal to 1, CCALF is enabled for the Cb color component at the second level; signaling a fourth control flag, wherein when the value of the fourth control flag is equal to 0, the CCALF is disabled for the Cb color component at the second level; signaling a fifth control flag indicating whether a cross-component adaptive loop filter (CCALF) is enabled for the Cr color component at the second level in response to the second control flag indicating that the ALF is enabled at the second level; When the value of the fifth control flag is equal to 1, CCALF is enabled for the Cr color component at the second level; signaling a fifth control flag, wherein when the value of the fifth control flag is equal to 0, CCALF is disabled for the Cr color component at the second level; further comprising: 12. A video encoding method according to clause 10 or 11. 13. The video encoding method of clause 10, wherein when the first control flag is signaled, ALF at the lower level is not enabled when the second control flag is not signaled. 14. A video encoding method according to clause 10 or 11, wherein when the first control flag is not signaled, ALF at the lower level is not enabled, regardless of whether the second control flag is signaled or not. 15. A video encoding method according to clauses 10-12, wherein when the ALF parameters are determined in the slice header of a picture, all slices of the picture have the same ALF parameters. 16. The video encoding method of clauses 10-12, wherein when the second control flag is not signaled, ALF is not enabled for the picture associated with the second control flag. 17. The video coding method of clauses 10-12, wherein when the fourth control flag or the fifth control flag is not signaled, CCALF is not enabled for the Cb component or the Cr component of the picture associated with the second control flag. 18. The video encoding method of clauses 10-12, wherein when the second control flag is not signaled, ALF is not applied to the slice associated with the second control flag. 19. A video encoding method according to clauses 10-12, wherein when AFL is enabled, color components Y, Cb, or Cr are enabled. 20. A video encoding method comprising: receiving a video sequence; Encoding a video sequence by using a control flag for sample adaptive offset (SAO) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether SAO is enabled at a first level; signaling a second control flag indicating whether the SAO is enabled at a second level in response to the first control flag indicating that the SAO is enabled at a first level; When the value of the second control flag is equal to 1, SAO is enabled for the luma component at a second level; When the value of the second control flag is equal to 0, SAO is disabled for the luma component at the second level; signaling a second control flag, the second level being lower than the first level; A video encoding method comprising: 21. Further including a third flag signaled in the second control flag; When the value of the third control flag is equal to 1, the SAO is enabled for the chroma component at the second level; 21. The video encoding method of clause 20, wherein SAO is disabled for chroma components at the second level when the value of the third control flag is equal to one. 22. The video encoding method of clause 20 or 21, wherein the first control flag is a control flag for SAO at the sequence level, and the second control flag is a control flag for SAO at one of the picture level or slice level according to a third flag signaled in a picture parameter set (PPS). 23. The video encoding method of clause 20 or 21, wherein when the second control flag is not signaled, SAO is disabled for the luma component of the picture associated with the second control flag. 24. The video encoding method of clause 20 or 21, wherein when the third control flag is not signaled, SAO is disabled for the chroma components of the picture associated with the third control flag. 25. The video encoding method of clause 20, wherein when the first control flag is signaled, SAO at the lower level is disabled when the second control flag is not signaled. 26. A video encoding method according to clause 20 or 21, wherein when the first control flag is not signaled, SAO at the lower level is disabled, regardless of whether the second control flag is signaled or not. 27. The video encoding method of clauses 19-26, wherein when SAO is enabled, the SAO process is applied to the reconstructed picture after the deblocking filter process. 28. A video encoding method comprising: receiving a video sequence; 1. Encoding a video sequence by using control flags for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, comprising: When the value of the first control flag in the first level is equal to 1 and the second control flag in the second level is not signaled, the deblocking filter is disabled in the first level; When the value of the first control flag at the first level is equal to 0 and the second control flag at the second level is not signaled, the deblocking filter is enabled at the first level; encoding, wherein the first level is a higher level than the second level; A video encoding method comprising: 29. A video encoding method as described in clause 28, wherein the first level is a picture level set and the first control flag is signaled in a picture parameter set (PPS), the second level is one of a picture level or a slice level, and the second control flag is signaled in one of a picture header (PH) or a slice header (SH). 30. The video method of clause 28, further comprising signaling a third flag in the PPS that indicates whether the second flag is signaled at the picture level or at the slice level. 31. The video encoding method of clause 28, further comprising encoding the video sequence by using an override flag for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, the override flag indicating whether a control flag at a lower level can be signaled to override a control flag at a higher level. 32. Encoding a video sequence by using an override flag for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, the override flag indicating whether a control flag at a lower level can be signaled to override a control flag at a higher level, further comprising: 29. The video encoding method of clause 28, wherein when a higher control flag signaled at a sequence level, a set of pictures level, a picture level, or a slice level is equal to 1, no deblocking filter is applied to the corresponding sequence, set of pictures, picture, or slice when a lower level control flag does not override the higher level control flag. 33. A video decoding method comprising: receiving a bitstream including a video sequence; Decoding a video sequence by using a control flag for luma mapping with chroma scaling (LMCS) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; determining whether a first control flag indicates that the LMCS is enabled at a first level; In response to determining that the first control flag indicates that the LMCS is enabled at the first level, determining whether a second control flag indicates that the LMCS is enabled at the second level; When the value of the second control flag is equal to 1, the LMCS is enabled at the second level; When the value of the second control flag is equal to 0, the LMCS is disabled at the second level; determining that the second level is a lower level than the first level; A video decoding method comprising: 34. The video decoding method of clause 33, wherein the first control flag is a control flag for an LMCS at a sequence level, and the second control flag is a control flag for an LMCS at a picture level. 35. In response to determining that the second control flag indicates that LMCS is enabled at the second level, determining whether a third control flag indicates that chroma scaling (CS) is enabled at the second level; When the value of the third control flag is equal to 1, the CS is enabled at the second level; 35. The video decoding method of clause 34, further comprising determining, when a value of the third control flag is equal to 0, that CS is disabled at the second level. 36. In response to determining that the second control flag indicates that the LMCS is enabled at the second level, determining whether a fourth control flag indicates that the LMCS is applied at the third level; When the value of the fourth control flag is equal to 1, luma mapping (LM) is applied and CS is applicable at the third level; When the value of the fourth control flag is equal to 0, the LMCS is not applied at the third level; 35. The video decoding method of clause 33 or 34, further comprising determining that the third level is a lower level than the second level. 37. The video decoding method of clause 36, wherein the third level is a slice level. 38. The video decoding method of clause 36, wherein when the second control flag is not signaled, LMCS is not enabled for the picture associated with the second control flag. 39. The video decoding method of clause 36 or 38, wherein when the fourth control flag is not signaled, the LMCS is not applied to the slice associated with the fourth control flag. 40. The video decoding method of clause 33, wherein when a first control flag is signaled, an LMCS at a lower level is not enabled when a second control flag is not signaled. 41. The video decoding method of clause 33 or 40, wherein when the first control flag is not signaled, no LMCS at the lower level is enabled, regardless of whether the second control flag is signaled. 42. A video decoding method comprising: receiving a bitstream including a video sequence; Decoding a video sequence by using a control flag for an adaptive loop filter (ALF) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; determining whether a first control flag indicates that the ALF is enabled at a first level; In response to determining that the first control flag indicates that the ALF is enabled at the first level, determining whether a second control flag indicates that the ALF is enabled at the second level; When the value of the second control flag is equal to 1, the ALF is enabled at the second level; When the value of the second control flag is equal to 0, the ALF is disabled at the second level; determining that the second level is a lower level than the first level; A video decoding method comprising: 43. The video decoding method of clause 42, wherein the first control flag is a control flag for ALF at the sequence level, and the second control flag is a control flag for ALF at one of the picture level or slice level according to a third control flag signaled in a picture parameter set (PPS). 44. In response to determining that the second flag indicates that the ALF is enabled at the second level, determining whether a fourth control flag indicates that a cross-component adaptive loop filter (CCALF) is enabled for the Cb color component at the second level; When the value of the fourth control flag is equal to 1, CCALF is enabled for the Cb color component at the second level; determining that CCALF is disabled for the Cb color component at the second level when the value of the fourth control flag is equal to 0; signaling a fifth control flag indicating that a cross-component adaptive loop filter (CCALF) is enabled for the Cr color component at the second level in response to determining that the second flag indicates that the ALF is enabled at the second level; When the value of the fifth control flag is equal to 1, CCALF is enabled for the Cr color component at the second level; signaling that CCALF is disabled for the Cr color component at the second level when the value of the fifth control flag is equal to 0; 44. The video decoding method of clause 42 or 43, further comprising: 45. The video decoding method of clause 42, wherein when the first control flag is present, ALF at the lower level is not enabled when the second control flag is not signaled. 46. The video decoding method of clause 42 or 43, wherein when the first control flag is not present, ALF at the lower level is not enabled, regardless of whether the second control flag is present. 47. The video decoding method according to clauses 42-44, wherein when the ALF parameters are determined in the slice header of a picture, all slices of the picture have the same ALF parameters. 48. The video decoding method of any one of clauses 42-44, wherein when the second control flag is not present, ALF is not enabled for the picture associated with the second control flag. 49. The video coding method of clauses 42-44, wherein when the fourth control flag or the fifth control flag is not signaled, CCALF is not enabled for the Cb component or the Cr component of the picture associated with the second control flag. 50. The video decoding method of any one of clauses 42-44, wherein when the second control flag is not present, ALF is not enabled for the slice associated with the second control flag. 51. A video decoding method as recited in clauses 42-44, wherein when AFL is enabled, color components Y, Cb, or Cr are enabled. 52. A video decoding method comprising: receiving a bitstream including a video sequence; Decoding a video sequence by using a control flag for sample adaptive offset (SAO) at a sequence level, a picture level, or a slice level, where the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; determining whether a first control flag indicates that SAO is enabled at a first level; In response to determining that the first control flag indicates that the SAO is enabled at the first level, determining whether a second control flag indicates that the SAO is enabled at a second level; When the value of the second control flag is equal to 1, SAO is enabled for the luma component at a second level; When the value of the second control flag is equal to 0, SAO is disabled for the luma component at the second level; determining that the second level is a lower level than the first level; A video decoding method comprising: 53. determining whether a third flag indicates that SAO is enabled at the second level; When the value of the third control flag is equal to 1, the SAO is enabled for the chroma component at the second level; 53. The video decoding method of clause 52, further comprising determining, when a value of a third control flag is equal to one, that SAO is disabled for chroma components at the second level. 54. A video decoding method as described in clause 52 or 53, wherein the first control flag is a control flag for SAO at the sequence level, and the second control flag is a control flag for SAO at one of the picture level or slice level according to a third flag signaled in a picture parameter set (PPS). 55. The video encoding method of clause 52 or 53, wherein when the second control flag is not present, SAO is disabled for the luma component of the picture associated with the second control flag. 56. The video encoding method of clause 52 or 53, wherein when the third control flag is not present, SAO is disabled for the chroma components of the picture associated with the third control flag. 57. The video decoding method of clause 52, wherein when the first control flag is present, SAO at the lower level is disabled when the second control flag is not present. 58. The video decoding method of clause 52 or 54, wherein when the first control flag is not present, SAO at the lower level is disabled regardless of whether the second control flag is present. 59. The video decoding method of clauses 52-58, wherein when SAO is enabled, the SAO process is applied to the reconstructed picture after the deblocking filter process. 60. A video decoding method comprising: receiving a bitstream including a video sequence; 1. Decoding a video sequence by using control flags for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, comprising: When the value of the first control flag in the first level is equal to 1 and the second control flag in the second level is not present, the deblocking filter is disabled in the first level; When the value of the first control flag at the first level is equal to 0 and the second control flag at the second level is not present, the deblocking filter is enabled at the first level; Decrypting, wherein the first level is a higher level than the second level; A video decoding method comprising: 61. A video decoding method as described in clause 60, wherein the first level is a picture level set and the first control flag is signaled in a picture parameter set (PPS), the second level is one of a picture level or a slice level, and the second control flag is signaled in one of a picture header (PH) or a slice header (SH). 62. The video method of clause 60, further comprising determining whether the second flag is signaled at the picture level or the slice level based on the third flag signaled in the PPS. 63. The video decoding method of clause 60, further comprising decoding the video sequence by using an override flag for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, the override flag indicating whether a control flag at a lower level may exist to override a control flag at a higher level. 64. Decoding a video sequence by using an override flag for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, the override flag indicating whether a control flag at a lower level may exist to override a control flag at a higher level, further comprising: 61. The video decoding method of claim 60, wherein when a higher level control flag present at a sequence level, a set of pictures level, a picture level, or a slice level is equal to 1, a deblocking filter is not applied to the corresponding sequence, set of pictures, picture, or slice when a lower level control flag does not override the higher level control flag.
[0200]
[0237] It should be noted that relational terms such as "first" and "second" herein are used merely to distinguish one entity or operation from another and do not require or imply any actual relationship or order between those entities or operations. Furthermore, terms such as "comprise," "have," "contain," and "include," and other similar forms, are intended to be equivalent in meaning and are open-ended in that the items following any one of these terms are not intended to be an exhaustive list of such items or to be limited only to the items they list.
[0201]
[0238] As used herein, unless otherwise specified, the word "or" includes all possible combinations unless impracticable. For example, if a database is stated to include A or B, the database can include A, B, A and B, unless otherwise specified or impracticable. As a second example, if a database is stated to include A, B, or C, the database can include A, B, C, A and B, A and C, B and C, or A, B and C, unless otherwise specified or impracticable.
[0202]
[0239] It will be understood that the above-described embodiments can be implemented by hardware, software (program code), or a combination of hardware and software. If implemented by software, the software can be stored in the above-described computer-readable medium. The software, when executed by a processor, can perform the disclosed methods. The computational units and other functional units described in this disclosure can be implemented by hardware, software, or a combination of hardware and software. Those skilled in the art will also understand that multiple of the above-described modules / units can be combined into one module / unit, and that each of the above-described modules / units can be further divided into multiple sub-modules / sub-units.
[0203]
[0240] In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary from implementation to implementation. Certain adaptations and modifications to the described embodiments may be made. Other embodiments may become apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with the true scope and spirit of the present disclosure being indicated by the appended claims. The order of steps depicted in the figures is for illustrative purposes only and is not intended to be limited to the particular order of steps. As such, one skilled in the art will recognize that steps can be performed in different orders while implementing the same method.
[0204]
[0241] Although illustrative embodiments have been disclosed in the drawings and herein, many variations and modifications to those embodiments may be made. Accordingly, although specific terms have been employed, they are used in a generic and descriptive sense only and not for purposes of limitation.
Claims
1. receiving a video sequence; encoding the video sequence by using a control flag for luma mapping with chroma scaling (LMCS) at a sequence level, a picture level, or a slice level, wherein the sequence level, the picture level, and the slice level are levels ranking from highest to lowest; signaling a first control flag indicating whether the LMCS is enabled at a first level; signaling a second control flag indicating whether LMCS is enabled at a second level in response to the first control flag indicating that the LMCS is enabled at the first level; when the value of the second control flag is equal to 1, the LMCS is enabled at the second level; when the value of the second control flag is equal to 0, the LMCS is disabled at the second level; signaling, wherein the second level is a lower level than the first level; A video encoding method comprising:
2. 2. The video encoding method according to claim 1, wherein the first control flag is a control flag for the LMCS at the sequence level, and the second control flag is a control flag for the LMCS at the picture level.
3. signaling a third control flag indicating whether chroma scaling (CS) is enabled at the second level in response to the second control flag indicating that the LMCS is enabled at the second level; When the value of the third control flag is equal to 1, the CS is enabled at the second level; The video encoding method of claim 2 , further comprising signaling that the CS is disabled at the second level when the value of the third control flag is equal to 0.
4. signaling a fourth control flag indicating whether the LMCS is applied at a third level in response to the second control flag indicating that the LMCS is enabled at the second level; When the value of the fourth control flag is equal to 1, luma mapping (LM) is applied and the CS is applicable at the third level; when the value of the fourth control flag is equal to 0, the LMCS is not applied at the third level; signaling, wherein the third level is a lower level than the second level; The video encoding method of claim 1 , further comprising:
5. 5. The video encoding method of claim 4, wherein the third level is the slice level.
6. receiving a video sequence; encoding the video sequence by using a control flag for an adaptive loop filter (ALF) at a sequence level, a picture level, or a slice level, wherein the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether the ALF is enabled at a first level; signaling a second control flag indicating whether ALF is enabled at a second level in response to the first control flag indicating that ALF is enabled at the first level; When the value of the second control flag is equal to 1, the ALF is enabled at the second level; when the value of the second control flag is equal to 0, the ALF is disabled at the second level; signaling, wherein the second level is a lower level than the first level; A video encoding method comprising:
7. 7. The video coding method of claim 6, wherein the first control flag is a control flag for ALF at the sequence level, and the second control flag is a control flag for ALF at one of the picture level or the slice level depending on a third control flag signaled in a picture parameter set (PPS).
8. signaling a fourth control flag indicating whether a cross-component adaptive loop filter (CCALF) is enabled for a Cb color component at the second level in response to the second flag indicating that the ALF is enabled at the second level; when the value of the fourth control flag is equal to 1, the CCALF is enabled for the Cb color component at the second level; signaling a fourth control flag such that when the value of the fourth control flag is equal to 0, the CCALF is disabled for the Cb color component at the second level; signaling a fifth control flag indicating whether a cross-component adaptive loop filter (CCALF) is enabled for a Cr color component at the second level in response to the second control flag indicating that the ALF is enabled at the second level; when the value of the fifth control flag is equal to 1, the CCALF is enabled for the Cr color component at the second level; signaling a fifth control flag such that CCALF is disabled for the Cr color component at the second level when the value of the fifth control flag is equal to 0; The video encoding method of claim 6 , further comprising:
9. 7. The video coding method of claim 6, wherein when the parameters of the ALF are determined in a slice header of a picture, all slices of the picture have the same parameters of the ALF.
10. 11. The video encoding method of claim 10, wherein when the fourth control flag or the fifth control flag is not signaled, CCALF is not enabled for the Cb component or the Cr component of the picture associated with the second control flag.
11. receiving a video sequence; encoding the video sequence by using a control flag for sample adaptive offset (SAO) at a sequence level, a picture level, or a slice level, wherein the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; signaling a first control flag indicating whether the SAO is enabled at a first level; signaling a second control flag indicating whether the SAO is enabled at a second level in response to the first control flag indicating that the SAO is enabled at the first level; when a value of the second control flag is equal to 1, the SAO is enabled for the luma component at the second level; when the value of the second control flag is equal to 0, the SAO is disabled for the luma component at a second level; signaling the second control flag, the second level being lower than the first level; A video encoding method comprising:
12. further comprising a third flag signaled in the second control flag; When the value of the third control flag is equal to 1, the SAO is enabled for the chroma component at the second level; when the value of the third control flag is equal to 1, the SAO is disabled for the chroma components at the second level; The video encoding method according to claim 11.
13. 12. The video encoding method of claim 11, wherein the first control flag is a control flag for SAO at the sequence level, and the second control flag is a control flag for SAO at one of the picture level or the slice level according to a third flag signaled in a picture parameter set (PPS).
14. 12. The video encoding method of claim 11, wherein when the second control flag is not signaled, the SAO is disabled for the luma component of the picture associated with the second control flag.
15. 12. The video encoding method of claim 11, wherein when the third control flag is not signaled, the SAO is disabled for the chroma components of the picture associated with the third control flag.
16. receiving a video sequence; encoding the video sequence by using control flags for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level, When a value of a first control flag at a first level is equal to 1 and a second control flag at a second level is not signaled, the deblocking filter is disabled at the first level; When the value of the first control flag at the first level is equal to 0 and the second control flag at the second level is not signaled, the deblocking filter is enabled at the first level; encoding, wherein the first level is a higher level than the second level; A video encoding method comprising:
17. 17. The video encoding method of claim 16, wherein the first level is the picture level set and the first control flag is signaled in a picture parameter set (PPS), the second level is one of the picture level or the slice level, and the second control flag is signaled in one of a picture header (PH) or a slice header (SH).
18. encoding the video sequence by using an override flag for a deblocking filter at the sequence level, the set of picture levels, the picture level, or the slice level, the override flag indicating whether a control flag at a lower level may be signaled to override a control flag at a higher level; 17. The video encoding method of claim 16, wherein when the higher control flag signaled at the sequence level, the set of picture levels, the picture level, or the slice level is equal to 1, and when the lower level control flag does not override the higher level control flag, no deblocking filter is applied to the corresponding sequence, the set of pictures, the picture, or the slice.
19. receiving a bitstream including a video sequence; decoding the video sequence by using a control flag for luma mapping with chroma scaling (LMCS) at a sequence level, a picture level, or a slice level, wherein the sequence level, the picture level, and the slice level are levels ranking from highest to lowest; determining whether a first control flag indicates that the LMCS is enabled at a first level; In response to determining that the first control flag indicates that the LMCS is enabled at the first level, determining whether a second control flag indicates that LMCS is enabled at a second level; when the value of the second control flag is equal to 1, the LMCS is enabled at the second level; when the value of the second control flag is equal to 0, the LMCS is disabled at the second level; determining that the second level is a lower level than the first level; A video decoding method comprising:
20. 20. The video decoding method of claim 19, wherein the first control flag is a control flag for the LMCS at the sequence level, and the second control flag is a control flag for the LMCS at the picture level.
21. In response to determining that the second control flag indicates that the LMCS is enabled at the second level, determining whether a third control flag indicates that chroma scaling (CS) is enabled at the second level; When the value of the third control flag is equal to 1, the CS is enabled at the second level; 21. The video decoding method of claim 20, further comprising determining that the CS is disabled at the second level when the value of the third control flag is equal to 0.
22. In response to determining that the second control flag indicates that the LMCS is enabled at the second level, determining whether a fourth control flag indicates that LMCS is applied at a third level; When the value of the fourth control flag is equal to 1, luma mapping (LM) is applied and the CS is applicable at the third level; when the value of the fourth control flag is equal to 0, the LMCS is not applied at the third level; 20. The video decoding method of claim 19, further comprising determining that the third level is a lower level than the second level.
23. 23. The video decoding method of claim 22, wherein the third level is the slice level.
24. receiving a bitstream including a video sequence; decoding the video sequence by using a control flag for an adaptive loop filter (ALF) at a sequence level, a picture level, or a slice level, the sequence level, the picture level, and the slice level being levels ranked from highest to lowest; determining whether a first control flag indicates that the ALF is enabled at a first level; In response to determining that the first control flag indicates that the ALF is enabled at the first level, determining whether a second control flag indicates that the ALF is enabled at a second level; When the value of the second control flag is equal to 1, the ALF is enabled at the second level; when the value of the second control flag is equal to 0, the ALF is disabled at the second level; determining that the second level is a lower level than the first level; A video decoding method comprising:
25. 25. The video decoding method of claim 24, wherein the first control flag is a control flag for ALF at a sequence level, and the second control flag is a control flag for ALF at one of the picture level or the slice level according to a third control flag signaled in a picture parameter set (PPS).
26. In response to the determination that the second flag indicates that the ALF is enabled at the second level, determining whether the fourth control flag indicates that a cross-component adaptive loop filter (CCALF) is enabled for a Cb color component at the second level, when the value of the fourth control flag is equal to 1, CCALF is enabled for the Cb color component at the second level; determining that the CCALF is disabled for the Cb color component at the second level when the value of the fourth control flag is equal to 0; signaling a fifth control flag indicating that a cross-component adaptive loop filter (CCALF) is enabled for a Cr color component at the second level in response to determining that the second flag indicates that the ALF is enabled at the second level; when the value of the fifth control flag is equal to 1, the CCALF is enabled for the Cr color component at the second level; signaling that CCALF is disabled for the Cr color component at the second level when the value of the fifth control flag is equal to 0; 25. The video decoding method of claim 24, further comprising:
27. 25. The video decoding method of claim 24, wherein when the parameters of the ALF are determined in a slice header of a picture, all slices of the picture have the same parameters of the ALF.
28. 25. The video decoding method of claim 24, wherein when the fourth control flag or the fifth control flag is not signaled, CCALF is not enabled for the Cb component or the Cr component of the picture associated with the second control flag.
29. receiving a bitstream including a video sequence; decoding the video sequence by using a control flag for sample adaptive offset (SAO) at a sequence level, a picture level, or a slice level, wherein the sequence level, the picture level, and the slice level are levels ranked from highest to lowest; determining whether a first control flag indicates that the SAO is enabled at a first level; In response to determining that the first control flag indicates that SAO is enabled at the first level, determining whether a second control flag indicates that SAO is enabled at a second level; when a value of the second control flag is equal to 1, the SAO is enabled for the luma component at the second level; when the value of the second control flag is equal to 0, the SAO is disabled for the luma component at a second level; determining that the second level is a lower level than the first level; A video decoding method comprising:
30. determining whether a third flag indicates that the SAO is enabled at the second level; When the value of the third control flag is equal to 1, the SAO is enabled for the chroma component at the second level; 30. The video decoding method of claim 29, further comprising determining, when the value of the third control flag is equal to one, that the SAO is disabled for chroma components at the second level.
31. 30. The video decoding method of claim 29, wherein the first control flag is a control flag for SAO at a sequence level, and the second control flag is a control flag for SAO at one of the picture level or the slice level according to a third flag signaled in the picture parameter set (PPS).
32. 30. The video encoding method of claim 29, wherein when the second control flag is absent, the SAO is disabled for the luma component of the picture associated with the second control flag.
33. 30. The video encoding method of claim 29, wherein when the third control flag is absent, the SAO is disabled for the chroma components of the picture associated with the third control flag.
34. receiving a bitstream including a video sequence; decoding the video sequence by using control flags for a deblocking filter at a sequence level, a set of picture levels, a picture level, or a slice level; the deblocking filter is disabled at the first level when a value of a first control flag at the first level is equal to 1 and a second control flag at the second level is not present; the deblocking filter is enabled at the first level when the value of the first control flag at the first level is equal to 0 and the second control flag at the second level is not present; decoding, wherein the first level is a higher level than the second level; A video decoding method comprising:
35. 35. The video decoding method of claim 34, wherein the first level is the picture level set and the first control flag is signaled in a picture parameter set (PPS), the second level is one of the picture level or the slice level, and the second control flag is signaled in one of a picture header (PH) or a slice header (SH).
36. decoding the video sequence by using an override flag for a deblocking filter at the sequence level, the set of picture levels, the picture level, or the slice level, the override flag indicating whether a control flag at a lower level may exist to override a control flag at a higher level; 35. The video decoding method of claim 34, wherein when the higher control flag present at the sequence level, the set of picture levels, the picture level, or the slice level is equal to 1, and when the lower level control flag does not override the higher level control flag, a deblocking filter is not applied to the corresponding sequence, the set of pictures, the picture, or the slice.
Citation Information
Patent Citations
High-Level Bitstream Syntax for Quantization Parameters
JP2023517084A
Signaling coding parameters in video coding
JP2023518352A
Signaling of deblocking filter parameters in video coding
US20170064339A1