Adaptive parameter set identifier value space in video coding

By allowing each APS type in video coding to have its own independent value space with overlapping IDs, the system optimizes resource usage and reduces conflicts, enhancing coding efficiency.

CN120321408APending Publication Date: 2025-07-15HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510272445.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-05-21
Filing Date
2020-02-26
Publication Date
2025-07-15

AI Technical Summary

Technical Problem

Existing video decoding systems are inefficient when indicating adaptive loop filter (ALF) parameters, resulting in waste of network resources, memory resources, and processing resources, and frequent redundant decoding of shaper/brightness mapping and chromaticity scaling (LMCS) parameters.

Method used

Multiple types of adaptive parameter sets (APSs) are adopted. Each APS type has an independent value space and allows value space to overlap. Each APS is identified by a combination of APS parameter type and APS ID to avoid ID conflicts and reduce redundant decoding.

Benefits of technology

It improves the decoding efficiency, reduces the use of network resources, memory resources and processing resources on the encoder and decoder side, and optimizes the video decoding process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120321408A_ABST
    Figure CN120321408A_ABST
Patent Text Reader

Abstract

The invention discloses a video coding mechanism. In one embodiment, the mechanism includes receiving a code stream, where the code stream includes a slice and a plurality of adaptive parameter sets (APSs), the plurality of APSs including a plurality of APS types, each APS including an APS identifier (ID), the APS IDs of the plurality of APS types being allocated in order over a plurality of different value spaces. The mechanism also includes decoding the slice using parameters in the plurality of APSs. The mechanism also includes forwarding the slice for display as part of a decoded video sequence.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application. The application number of the original application is 202080017344.7, the filing date of the original application is February 26, 2020, and the entire content of the original application is incorporated herein by reference.

[0002] Cross-reference to related applications

[0003] This patent application claims the benefit of U.S. Provisional Patent Application No. 62 / 811,358, filed February 27, 2019, by Yekui Wang et al., entitled "Adaptation Parameter Set for Video Coding", U.S. Provisional Patent Application No. 62 / 816,753, filed March 11, 2019, by Yekui Wang et al., entitled "Adaptation Parameter Set for Video Coding", and U.S. Provisional Patent Application No. 62 / 850,973, filed May 21, 2019, by Yekui Wang et al., entitled "Adaptation Parameter Set for Video Coding", the contents of which are incorporated herein by reference. Technical field

[0004] The present invention generally relates to video coding, and more particularly to efficient signaling of coding tool parameters for compressing video data in video coding. Background art

[0005] Even for short videos, a large amount of video data is required for description, which may cause difficulties when the data is to be streamed or otherwise transmitted in a communication network with limited bandwidth capacity. Therefore, video data is usually compressed first and then sent in modern telecommunication networks. Since memory resources may be limited, the size of the video may also be a problem when storing the video on a storage device. Video compression devices typically encode video data using software and / or hardware on the source side and then transmit or store it, thereby reducing the amount of data required to represent digital video images. Then, a video decompression device that decodes the video data receives the compressed data on the destination side. In the context of limited network resources and the growing demand for higher video quality, improved compression and decompression techniques are needed that can increase the compression ratio with little impact on image quality. Summary of the invention

[0006] In one embodiment, the present invention includes a method implemented in a decoder, the method comprising: a receiver of the decoder receiving a bitstream, the bitstream including a plurality of adaptation parameter sets (APSs) associated with decoded strips, the plurality of APSs including a plurality of APS types, each APS including an APS identifier (ID), the plurality of APS types using respective independent value spaces of APS ID values; a processor decoding the decoded strip using parameters from the plurality of APSs, the plurality of APSs obtained according to the plurality of APS IDs; the processor forwarding the decoding result for display as part of a decoded video sequence. The APS is used to maintain data related to a plurality of strips on a plurality of images. The present invention describes various improvements related to the APS. In this example, each APS includes an APS ID. In addition, each APS type includes an independent value space corresponding to the APS ID. These value spaces can overlap. Thus, a first type of APS, such as an adaptive loop filter (ALF) APS, can include the same APS ID as a second type of APS (such as a luma mapping with chroma scaling (LMCS) APS). This can be achieved by identifying each APS through a combination of the APS parameter type and the APS ID. By allowing each APS type to include a different value space, the codec does not need to check for ID conflicts between different APS types. In addition, by allowing the value spaces to overlap, the codec can avoid using larger ID values, thereby saving bits. Therefore, adopting independent overlapping value spaces for different types of APSs improves the decoding efficiency, thereby reducing the use of network resources, memory resources, and / or processing resources on the encoder and decoder sides.

[0007] Optionally, according to any of the above aspects, in another implementation of the aspect, the independent value spaces overlap.

[0008] Optionally, according to any of the above aspects, in another implementation of the aspect, the plurality of APS types include an ALF type having ALF parameters, a scaling list type having scaling list parameters, and an LMCS type having LMCS parameters.

[0009] Optionally, according to any of the above aspects, in another implementation of the aspect, each APS includes an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value indicates the parameter type included in each APS.

[0010] Optionally, according to any of the above aspects, in another implementation of the aspect, the current APS includes a current APS ID, where the current APS ID is selected from a predefined range of the current value space, the current APS ID is associated with a previous APS ID, the previous APS ID is associated with a previous APS of the same type as the current APS, the current APS ID is not associated with another previous APS ID, and the other previous APS ID is associated with another previous APS of a different type from the current APS.

[0011] Optionally, according to any of the above aspects, in another implementation of the aspect, each of the value spaces of the plurality of independent APS IDs has a predefined range, and the predefined range is determined according to the APS type.

[0012] Optionally, according to any of the above aspects, in another implementation of the aspect, each APS is identified by a combination of the current APS type and the current APS ID.

[0013] In one embodiment, the present invention includes a method implemented in an encoder, the method comprising: a processor of the encoder encoding a strip into a bitstream as a decoded strip; the processor determining multiple types of parameters used for encoding the decoded strip; the processor encoding the multiple types of parameters in multiple adaptation parameter sets (APS) into the bitstream by including the multiple types of parameters in multiple APS types; the processor assigning an APS ID to each APS such that each in the multiple APS types uses an independent value space of the APS ID; the processor encoding each APS ID into the multiple APSs; a memory coupled to the processor storing the bitstream for transmission to a decoder. The APS is used to maintain data related to strips on multiple images. The present invention describes various improvements related to the APS. In this example, each APS includes an APS ID. In addition, each APS type includes an independent value space corresponding to the APS ID. These value spaces may overlap. Thus, a first type of APS (e.g., ALF APS) may include the same APS ID as a second type of APS (e.g., LMCS APS). This can be achieved by identifying each APS through a combination of the APS parameter type and the APS ID. By allowing each APS type to include a different value space, the codec does not need to check for ID conflicts between different APS types. In addition, by allowing the value spaces to overlap, the codec can avoid using larger ID values, thus saving bits. Therefore, adopting independent overlapping value spaces for different types of APSs improves the decoding efficiency, thereby reducing the use of network resources, memory resources, and / or processing resources on the encoder and decoder sides.

[0014] Optionally, according to any of the above aspects, in another implementation of the aspect, the value spaces of the multiple independent APS IDs overlap with each other.

[0015] Optionally, according to any of the above aspects, in another implementation of the aspect, the multiple APS types include an ALF type with ALF parameters, a scaling list type with scaling list parameters, and an LMCS type with LMCS parameters.

[0016] Optionally, according to any of the above aspects, in another implementation of the aspect, each APS includes an aps_params_type code set to a predefined value, where the predefined value indicates the type of parameters included in each APS.

[0017] Optionally, according to any of the above aspects, in another implementation of the aspect, the current APS includes a current APS ID, where the value of the current APS ID is selected from a predefined range of a current value space, the current APS ID is associated with a previous APS ID, the previous APS ID is associated with a previous APS of the same type as the current APS, the current APS ID is not associated with another previous APS ID, and the other previous APS ID is associated with another previous APS of a different type from the current APS.

[0018] Optionally, according to any of the above aspects, in another implementation of the aspect, each of the value spaces of the plurality of independent APS IDs has a predefined range, and the predefined range is determined according to the APS type.

[0019] Optionally, according to any of the above aspects, in another implementation of the aspect, each APS is identified by a combination of a current APS type and a current APS ID.

[0020] In one embodiment, the present invention includes a video decoding device, including: a processor; a receiver coupled to the processor; a memory coupled to the processor; a transmitter coupled to the processor, where the processor, the receiver, the memory, and the transmitter are configured to perform the method according to any of the above aspects.

[0021] In one embodiment, the present invention includes a non-transitory computer-readable medium, including a computer program product used by a video decoding device, the computer program product including computer-executable instructions stored in the non-transitory computer-readable medium, and when the processor executes the computer-executable instructions, the video encoding device performs the method according to any of the above aspects.

[0022] In one embodiment, the present invention includes a decoder, the decoder including: a receiving module configured to receive a bitstream, the bitstream including a plurality of adaptation parameter sets (APSs) related to a decoded strip, the plurality of APSs including a plurality of APS types, where each APS includes an APS ID, and each of the plurality of APS types uses an independent APS ID value space; a decoding module configured to decode the decoded strip by using parameters from the plurality of APSs, the plurality of APSs being obtained according to the plurality of APS IDs; a forwarding module configured to forward a decoding result for display as a part of a decoded video sequence.

[0023] Optionally, according to any of the above aspects, in another implementation of the aspect, the decoder is further configured to perform the method described in any of the above aspects.

[0024] In one embodiment, the present invention includes an encoder, the encoder comprising: a determination module, configured to determine various types of parameters for encoding a strip; an encoding module, configured to: encode the strip into a bitstream as an encoded strip; encode various types of parameters in a plurality of APSs into the bitstream by including the various types of parameters in a plurality of APS types; encode each APS ID into the plurality of APSs; an allocation module, configured to allocate an APS ID for each APS, such that each of the plurality of APS types uses an independent value space of the APS ID; and a storage module, configured to store the bitstream for transmission to a decoder.

[0025] Optionally, according to any of the above aspects, in another implementation of the aspect, the encoder is further configured to perform the method described in any of the above aspects.

[0026] For the sake of clarity of description, any of the above embodiments may be combined with any one or more of the other above embodiments to create new embodiments within the scope of the present invention.

[0027] These and other features will be more clearly understood from the following detailed description in conjunction with the accompanying drawings and the claims. Description of the Drawings

[0028] To understand the present invention more thoroughly, reference is now made to the following brief description, which is described in conjunction with the accompanying drawings and specific embodiments, in which like reference numerals represent like parts.

[0029] Figure 1 Flowchart of an exemplary method for decoding a video signal.

[0030] Figure 2 Schematic diagram of an exemplary video encoding and decoding (codec) system for video encoding.

[0031] Figure 3 Schematic diagram of an exemplary video encoder.

[0032] Figure 4 Schematic diagram of an exemplary video decoder.

[0033] Figure 5 Schematic diagram of an exemplary bitstream including multiple types of adaptation parameter sets (APSs), the adaptation parameter sets including different types of decoding tool parameters.

[0034] Figure 6Schematic diagram of an exemplary mechanism for assigning APS identifiers (IDs) to different APS types over different value spaces.

[0035] Figure 7 Schematic diagram of an exemplary video decoding device.

[0036] Figure 8 Flowchart of an exemplary method for encoding a video sequence into a bitstream by using multiple APS types.

[0037] Figure 9 Flowchart of an exemplary method for decoding a video sequence from a bitstream by using multiple APS types.

[0038] Figure 10 Schematic diagram of an exemplary system for decoding a video sequence of images in a bitstream by using multiple APS types. Detailed Description

[0039] First, it should be understood that although illustrative implementations of one or more embodiments are provided below, the systems and / or methods disclosed by the present invention can be implemented using any number of techniques, whether currently known or existing. The present invention should in no way be limited to the illustrative implementations, drawings, and techniques described below, including the exemplary designs and implementations illustrated and described herein, but can be modified within the full scope of the appended claims and their equivalents.

[0040] The following acronyms are used in this document: Adaptive Loop Filter (ALF), Adaptation Parameter Set (APS), Coding Tree Block (CTB), Coding Tree Unit (CTU), Coding Unit (CU), Coded Video Sequence (CVS), Dynamic Adaptive Streaming over Hypertext transfer protocol (DASH), Intra-Random Access Point (IRAP), Joint Video Experts Team (JVET), Motion-Constrained Tile Set (MCTS), Maximum Transfer Unit (MTU), Network Abstraction Layer (NAL), Picture Order Count (POC), Raw Byte Sequence Payload (RBSP), Sample Adaptive Offset (SAO), Sequence Parameter Set (SPS), Versatile Video Coding (VVC), and Working Draft (WD).

[0041] Many video compression techniques can be used to reduce video files while minimizing data loss. For example, video compression techniques can include performing spatial (e.g., intra-frame) prediction and / or temporal (e.g., inter-frame) prediction to reduce or remove data redundancy in a video sequence. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) can be divided into video blocks, which can also be referred to as tree blocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of an image are coded using spatial prediction of reference samples in adjacent blocks within the same image. Video blocks in an inter-coded unidirectional prediction (P) or bidirectional prediction (B) slice of an image can be coded using spatial prediction of reference samples in adjacent blocks within the same image or using temporal prediction of reference samples in other reference images. A picture / image can be referred to as a frame, and a reference image can be referred to as a reference frame. Spatial or temporal prediction produces a predicted block representing an image block. Residual data represents the pixel difference between the original image block and the predicted block. Accordingly, an inter-coded block is encoded based on a motion vector pointing to a block of reference samples that make up the predicted block and residual data representing the difference between the coded block and the predicted block, while an intra-coded block is encoded based on an intra-coding mode and residual data. For further compression, the residual data can be transformed from the pixel domain to the transform domain, thereby generating residual transform coefficients, which can then be quantized. The quantized transform coefficients can initially be arranged in a two-dimensional array. The quantized transform coefficients can be scanned to produce a one-dimensional vector of transform coefficients. Entropy coding can be applied to achieve a greater degree of compression. These video compression techniques will be discussed in more detail below.

[0042] To ensure that the encoded video can be accurately decoded, video encoding and decoding are performed in accordance with the corresponding video coding standards. These video coding standards include International Telecommunication Union Telecommunication Standardization Sector (ITU-T) H.261, International Organization for Standardization / International Electrotechnical Commission (ISO / IEC) Motion Picture Experts Group (MPEG)-1 Part 2, ITU-T H.262 or ISO / IEC MPEG-2 Part 2, ITU-T H.263, ISO / IEC MPEG-4 Part 2, Advanced Video Coding (AVC) (also known as ITU-T H.264 or ISO / IEC MPEG-4 Part 10), and High Efficiency Video Coding (HEVC) (also known as ITU-T H.265 or MPEG-H Part 2). AVC includes extended versions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC), Multiview Video Coding plus Depth (MVC+D), and three dimensional (3D) AVC (3D-AVC). HEVC includes extended versions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), 3D HEVC (3D-HEVC). The joint video experts team (JVET) of ITU-T and ISO / IEC has started to develop a video coding standard called Versatile Video Coding (VVC). VVC is included in the Working Draft (WD), and the working draft includes JVET-M1001-v5 and JVET-M1002-v1, which provide the algorithm description, encoder description, and reference software of the VVC WD respectively.

[0043] Video sequences are decoded using various decoding tools. The encoder selects parameters for the decoding tools with the aim of increasing compression with minimal quality loss when decoding the video sequence. The decoding tools may be relevant to different parts of the video in different ranges. For example, some decoding tools are relevant to the video sequence level, some are relevant to the picture level, some are relevant to the slice level, and so on. An APS can be used to signal information that can be shared by multiple pictures and / or multiple slices between different pictures. Specifically, the APS can carry Adaptive Loop Filter (ALF) parameters. For various reasons, the ALF information may not be suitable for being signaled at the sequence level in the Sequence Parameter Set (SPS), at the picture level in the Picture Parameter Set (PPS) or in the picture header, or at the slice level in the slice group / slice header.

[0044] If the ALF information is signaled in the SPS, whenever the ALF information changes, the encoder must generate a new SPS and a new IRAP picture. IRAP pictures greatly reduce the decoding efficiency. Therefore, for low-latency application scenarios that do not use frequent IRAP pictures, it is particularly problematic to place the ALF information in the SPS. Including the ALF information in the SPS can also disable the out-of-band transmission of the SPS. Out-of-band transmission refers to transmitting the corresponding data in a transmission data stream different from the video bitstream (e.g., in the sample description or sample entry of a media file, in a Session Description Protocol (SDP) file, etc.). Signaling the ALF information in the PPS may also be problematic for similar reasons. Specifically, including the ALF information in the PPS may disable the out-of-band transmission of the PPS. Signaling the ALF information in the picture header may also be problematic. In some cases, the picture header may not be adopted. In addition, some ALF information can be applied to multiple pictures. Therefore, signaling the ALF information in the picture header will result in redundant information transmission, thus wasting bandwidth. Signaling the ALF information in the tile group / slice header is also problematic because the ALF information can be applied to multiple pictures and thus can also be applied to multiple slices / tile groups. Therefore, signaling the ALF information in the slice / tile group header will result in redundant information transmission, thus wasting bandwidth.

[0045] Based on the above, the APS can be used to signal the ALF parameters. However, a video decoding system can specifically use the APS to signal the ALF parameters. The syntax and semantics of an exemplary APS are as follows:

[0046]

[0047]

[0048] The adaptation_parameter_set_id provides an identifier for the APS for other syntax elements to reference. The APS can be shared between pictures and can be different for different tile groups in a picture. The aps_extension_flag is set to 0, indicating that the aps_extension_data_flag syntax element does not exist in the APS RBSP syntax structure. The aps_extension_flag is set to 1, indicating that the aps_extension_data_flag syntax element exists in the APS RBSP syntax structure. The aps_extension_data_flag can take any value. The presence and value of the aps_extent_data_flag may not affect the decoder's compliance with the profiles specified in VVC. Decoders compliant with the VVC standard can ignore all aps_extension_data_flag syntax elements.

[0049] An exemplary tile group header related to the ALF parameters is as follows:

[0050]

[0051] The tile_group_alf_enabled_flag is set to 1, indicating that the adaptive loop filter is enabled and the loop filter can be applied to the luminance (Y), blue chrominance (Cb), or red chrominance (Cr) components in the tile group. The tile_group_alf_enabled_flag is set to 0, indicating that the adaptive loop filter is disabled for all color components in the tile group. The tile_group_aps_id represents the adaptation_parameter_set_id of the APS referenced by the tile group. The TemporalId of the APS NAL unit with adaptation_parameter_set_id equal to the tile_group_aps_id should be less than or equal to the TemporalId of the decoded tile group NAL unit. When multiple APSs with the same adaptation_parameter_set_id value are referenced by more than two tile groups of the same picture, the multiple APSs with the same adaptation_parameter_set_id value can include the same content.

[0052] The reshaper parameters are the parameters used by the reshaper video coding tool within the adaptive loop, also known as luma mapping with chroma scaling (LMCS). The syntax and semantics of an exemplary SPS reshaper are as follows:

[0053]

[0054]

[0055] When sps_reshaper_enabled_flag is set to 1, it indicates that the reshaper is used in the coded video sequence (CVS). When sps_reshaper_enabled_flag is set to 0, it indicates that the reshaper is not used in the CVS.

[0056] The syntax and semantics of an exemplary slice group header / strip header reshaper are as follows:

[0057]

[0058] The tile_group_reshaper_model_present_flag is set to 1, indicating that tile_group_reshaper_model() exists in the tile group header. The tile_group_reshaper_model_present_flag is set to 0, indicating that tile_group_reshaper_model() does not exist in the tile group header. If the tile_group_reshaper_model_present_flag does not exist, it is inferred that the value of the tile_group_reshaper_model_present_flag is equal to 0. The tile_group_reshaper_enabled_flag is set to 1, indicating that the reshaper is enabled for the current tile group. The tile_group_reshaper_enabled_flag is set to 0, indicating that the reshaper is not enabled for the current tile group. If the tile_group_reshaper_enable_flag does not exist, it is inferred that the value of the tile_group_reshaper_enable_flag is equal to 0. The tile_group_reshaper_chroma_residual_scale_flag is set to 1, indicating that chroma residual scaling is enabled for the current tile group. The tile_group_reshaper_chroma_residual_scale_flag is set to 0, indicating that chroma residual scaling is not enabled for the current tile group. If the tile_group_reshaper_chroma_residual_scale_flag does not exist, it is inferred that the value of the flag is equal to 0.

[0059] The syntax and semantics of an exemplary tile group header / band header reshaper model are as follows:

[0060]

[0061]

[0062] The reshape_model_min_bin_idx represents the minimum bit (or segment) index to be used during reshaper construction. The value of reshape_model_min_bin_idx should be within the range of 0 to MaxBinIdx (including the end values). The value of MaxBinIdx can be equal to 15. The reshape_model_delta_max_bin_idx represents the value of the maximum bit (or segment) index MaxBinIdx minus the maximum bit index allowed to be used during reshaper construction. The value of reshape_model_max_bin_idx is set to MaxBinIdx minus reshape_model_delta_max_bin_idx. reshaper_model_bin_delta_abs_cw_prec_minus1 + 1 represents the number of bits used to represent the syntax reshape_model_bin_delta_abs_CW[i]. reshape_model_bin_delta_abs_CW[i] represents the absolute incremental codeword value of the i-th bit.

[0063] reshaper_model_bin_delta_sign_CW_flag[i] represents the sign of the following reshape_model_bin_delta_abs_CW[i]. If reshape_model_bin_delta_sign_CW_flag[i] is equal to 0, the value of the corresponding variable RspDeltaCW[i] is positive. Otherwise, (for example, reshape_model_bin_delta_sign_CW_flag[i] is not equal to 0), the value of the corresponding variable RspDeltaCW[i] is negative. If reshape_model_bin_delta_sign_CW_flag[i] does not exist, it is inferred that the value of the flag is equal to 0. The variable RspDeltaCW[i] is set to (1 – 2 * reshape_model_bin_delta_sign_CW[i]) * reshape_model_bin_delta_abs_CW[i].

[0064] The derivation of the variable RspCW[i] is as follows: The variable OrgCW is set to (1<<BitDepthY) / (MaxBinIdx + 1). If reshaper_model_min_bin_idx <= i <= reshaper_model_max_bin_idx, then RspCW[i] = OrgCW + RspDeltaCW[i]. Otherwise, RspCW[i] = 0. If the value of BitDepthY is equal to 10, the value of RspCW[i] should be in the range of 32 to 2*OrgCW - 1. The derivation of the variable InputPivot[i] (where i is in the range of 0 to MaxBinIdx + 1 (including the end values)) is as follows: InputPivot[i] = i * OrgCW. The derivation of the variables ReshapePivot[i] (where i is in the range of 0 to MaxBinIdx + 1 (including the end values)), ScaleCoef[i], and InvScaleCoeff[i] (where i is in the range of 0 to MaxBinIdx (including the end values)) is as follows:

[0065]

[0066] The derivation of the variable ChromaScaleCoef[i] (where i is in the range of 0 to MaxBinIdx (including the end values)) is as follows:

[0067] ChromaResidualScaleLut

[64] = {16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 5461, 5461, 5461, 5461, 4096, 4096, 4096, 4096, 3277, 3277, 3277, 3277, 2731, 2731, 2731, 2731, 2341, 2341, 2341, 2048, 2048, 2048, 1820, 1820, 1820, 1638, 1638, 1638, 1638, 1489, 1489, 1489, 1489, 1365, 1365, 1365, 1365, 1260, 1260, 1260, 1260, 1170, 1170, 1170, 1170, 1092, 1092, 1092, 1092, 1024, 1024, 1024, 1024};

[0068] shiftC = 11

[0069] if (RspCW[i] == 0)

[0070] ChromaScaleCoef[i] = (1 << shiftC)

[0071] Otherwise (RspCW[i] != 0),

[0072] ChromaScaleCoef[i] = ChromaResidualScaleLut[RspCW[i] >> 1].

[0073] The attributes of the reshaper parameters can be characterized by the following features: The size of the set of reshaper parameters included in the tile_group_reshaper_model() syntax structure is typically about 60 to 100 bits. The reshaper model is typically updated by the encoder about once per second and includes many frames. In addition, the parameters of the updated reshaper model are unlikely to be exactly the same as those of an earlier instance of the reshaper model.

[0074] The above video decoding system includes some problems. First, such a system is only used to carry ALF parameters in the APS. In addition, the reshaper / LMCS parameters can be shared by multiple images and can include many variants.

[0075] This document discloses various mechanisms for modifying the APS to improve decoding efficiency. In the first example, various types of APS are disclosed. Specifically, an ALF type of APS, called ALF APS, can include ALF parameters. In addition, a scaling list type of APS, called scaling list APS, can include scaling list parameters. In addition, an LMCS type of APS, called LMCS APS, can include LMCS / reshaper parameters. The ALF APS, scaling list APS, and LMCS APS can each be decoded as an independent NAL type and are thus included in different NAL units. In this way, changes to the data (e.g., ALF parameters) in one type of APS do not result in redundant decoding of the data (e.g., LMCS parameters) of other types. Therefore, providing multiple types of APS improves decoding efficiency, thereby reducing the use of network resources, memory resources, and / or processing resources on the encoder and decoder sides.

[0076] In the second example, each APS includes an APS identifier (ID). Additionally, each APS type includes a separate value space for the corresponding APS ID. These value spaces can overlap. Thus, an APS of the first type (e.g., ALF APS) can include the same APS ID as an APS of the second type (e.g., LMCS APS). This can be achieved by identifying each APS through a combination of the APS parameter type and the APS ID. By allowing each APS type to include a different value space, the codec does not need to check for ID conflicts between different APS types. Additionally, by allowing the value spaces to overlap, the codec can avoid using larger ID values, thereby saving bits. Therefore, using separate overlapping value spaces for different types of APSs improves decoding efficiency, thus reducing the use of network resources, memory resources, and / or processing resources on both the encoder and decoder sides.

[0077] In the third example, the LMCS parameters are included in the LMCS APS. As described above, the LMCS / shaper parameters can change approximately once per second. A video sequence can display 30 to 60 images per second. Thus, the LMCS parameters may not change within 30 to 60 frames. Including the LMCS parameters in the LMCS APS significantly reduces the redundant decoding of the LMCS parameters. The strip header and / or picture header associated with the strip can refer to the relevant LMCS APS. In this way, the LMCS parameters are encoded only when the LMCS parameters of the strip change. Therefore, using the LMCS APS to encode the LMCS parameters improves decoding efficiency, thus reducing the use of network resources, memory resources, and / or processing resources on both the encoder and decoder sides.

[0078] Figure 1 Flowchart of an exemplary operation method 100 for decoding a video signal. Specifically, the video signal is encoded on the encoder side. The encoding process compresses the video signal by using various mechanisms, thereby reducing the video file size. The smaller file size helps to transmit the compressed video file to the user while reducing the associated bandwidth overhead. Then, the decoder decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process typically works in the same way as the encoding process to help the decoder reconstruct the video signal in the same manner.

[0079] In step 101, a video signal is input into an encoder. For example, the video signal can be an uncompressed video file stored in a memory. Alternatively, the video file can be captured by a video capture device (e.g., a camera) and encoded to support real-time streaming of the video. The video file can include both an audio component and a video component simultaneously. The video component includes a series of image frames that, when viewed in sequence, create the visual effect of motion. These frames include pixels represented by light (referred to herein as the luminance component (or luminance samples)) and color (referred to as the chrominance component (or color samples)). In some examples, the frames can also include depth values to support 3D viewing.

[0080] In step 103, the video is segmented into blocks. Segmentation includes subdividing the pixels in each frame into square and / or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H Part 2), the frame can first be divided into coding tree units (CTUs), which are blocks of a predefined size (e.g., 64 pixels × 64 pixels). A CTU includes luminance samples and chrominance samples. Coding trees can be used to divide the CTUs into blocks, and then these blocks can be recursively subdivided until a configuration structure that supports further encoding is obtained. For example, the luminance component of the frame can be subdivided until the individual blocks include relatively uniform lighting values. Additionally, the chrominance component of the frame can be subdivided until the individual blocks include relatively uniform color values. Thus, the segmentation mechanism varies depending on the content of the video frame.

[0081] In step 105, various compression mechanisms are used to compress the image blocks segmented in step 103. For example, inter-frame prediction and / or intra-frame prediction can be used. Inter-frame prediction aims to take advantage of the fact that objects in a common scene tend to appear in consecutive frames. Therefore, there is no need to repeatedly describe the blocks depicting an object in adjacent frames. An object (such as a table) can remain in a constant position across multiple frames. Thus, the table is described only once, and adjacent frames can refer back to the reference frame. Pattern matching mechanisms can be used to match objects across multiple frames. Additionally, due to reasons such as object movement or camera movement, moving objects can be represented across multiple frames. In a specific example, a video can show a car moving across the screen over multiple frames. Motion vectors can be used to describe such movement. A motion vector is a two-dimensional vector that provides the offset between the coordinates of an object in one frame and the coordinates of that object in a reference frame. Thus, inter-frame prediction can encode the image blocks in the current frame as a set of motion vectors representing the offset between the image blocks in the current frame and the corresponding blocks in the reference frame.

[0082] Intra prediction encodes blocks in a common frame. Intra prediction exploits the fact that the luminance and chrominance components tend to cluster in a frame. For example, a patch of green in a part of a tree tends to be adjacent to several similar patches of green. Intra prediction uses a variety of directional prediction modes (e.g., 33 modes in HEVC), a planar mode, and a direct current (DC) mode. The directional modes indicate that the samples of the current block are similar / identical to the samples of adjacent blocks in the corresponding direction. The planar mode indicates that a series of blocks on a row / column (e.g., a plane) can be interpolated based on adjacent blocks at the row edges. In effect, the planar mode represents a smooth transition of luminance / color between rows / columns by using a relatively constant slope in the changing values. The DC mode is used for boundary smoothing and indicates that the samples of all adjacent blocks related to the block and the angular directions of the directional prediction modes are similar / identical. Thus, an intra prediction block can represent an image block as various relational prediction mode values instead of actual values. Additionally, an inter prediction block can represent an image block as motion vector values instead of actual values. In both cases, the prediction block may not fully represent the image block in some cases. Any differences are stored in a residual block. The residual block can be transformed to further compress the file.

[0083] In step 107, various filtering techniques can be applied. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction discussed above can create a blocky image in the decoder. Additionally, the block-based prediction scheme can encode blocks and then reconstruct the encoded blocks for later use as reference blocks. The in-loop filtering scheme iteratively applies a noise suppression filter, a deblocking filter, an adaptive loop filter, and a sample adaptive offset (SAO) filter to blocks / frames. These filters reduce these block artifacts so that the encoded file can be accurately reconstructed. Additionally, these filters reduce the reconstructed reference block artifacts such that it is less likely for artifacts to generate other artifacts in subsequent blocks encoded based on the reconstructed reference blocks.

[0084] In step 109, once the video signal is segmented, compressed, and filtered, the resulting data is encoded into a bitstream. The bitstream includes the above data and any indication data desired to support proper video signal reconstruction in the decoder. For example, this data can include segmentation data, prediction data, residual blocks, and various flags that provide decoding instructions to the decoder. The bitstream can be stored in a memory and is used to be sent to the decoder upon request. The bitstream can also be broadcast and / or multicast to multiple decoders. The creation of the bitstream is an iterative process. Thus, steps 101, 103, 105, 107, and 109 can occur continuously and / or simultaneously on multiple frames and blocks. Figure 1The order shown is presented for clarity and ease of discussion and is not intended to limit the video decoding process to a particular order.

[0085] In step 111, the decoder receives the bitstream and begins the decoding process. Specifically, the decoder uses an entropy decoding scheme to convert the bitstream into corresponding syntax and video data. In step 111, the decoder uses the syntax data in the bitstream to determine the segmentation of the frame. The segmentation should match the result of the block segmentation in step 103. Now describe the entropy encoding / decoding used in step 111. The encoder makes many choices during the compression process, such as selecting a block segmentation scheme from multiple possible options based on the spatial location of the values in the input image. Indicating the exact option can use a large number of binary bits. The binary bits used herein are binary values regarded as variables (e.g., bit values that can vary according to context). Entropy decoding helps the encoder discard any options that are clearly not suitable for a particular situation, leaving a set of options that can be used. Then, a codeword is assigned to each available option. The length of the codeword is based on the number of allowed options (e.g., one binary bit for two options, two binary bits for three to four options). Then, the encoder encodes the codewords of the selected options. This scheme reduces the size of the codewords because the size of the codewords is as large as desired to uniquely indicate one option in a small subset of available options rather than uniquely indicating an option in a possibly large set of all possible options. Then, the decoder decodes the options by determining the set of available options in a manner similar to the encoder. By determining the set of available options, the decoder can read the codewords and determine the choices made by the encoder.

[0086] In step 113, the decoder performs block decoding. Specifically, the decoder performs an inverse transform to generate residual blocks. Then, the decoder uses the residual blocks and the corresponding prediction blocks to reconstruct image blocks according to the segmentation. The prediction blocks may include intra-prediction blocks and inter-prediction blocks generated by the encoder in step 105. Then, the reconstructed image blocks are placed in the frame of the reconstructed video signal according to the segmentation data determined in step 111. The syntax of step 113 can also be indicated in the bitstream by the entropy decoding discussed above.

[0087] In step 115, the frame of the reconstructed video signal is filtered in a manner similar to that of the encoder in step 107. For example, a noise suppression filter, a deblocking filter, an adaptive loop filter, and an SAO filter can be used on the frame to eliminate block artifacts. Once the frame is filtered, the video signal can be output to a display for viewing by the end user in step 117.

[0088] Figure 2FIG. 0 is a schematic diagram of an exemplary encoding and decoding (codec) system 200 for video decoding. Specifically, the codec system 200 is capable of implementing the operation method 100. Broadly, the codec system 200 is used to describe the components used in the encoder and decoder. As discussed with respect to steps 101 and 103 in the operation method 100, the codec system 200 receives a video signal and segments the video signal to generate a segmented video signal 201. Then, when acting as an encoder, the codec system 200 compresses the segmented video signal 201 into a coded bitstream, as discussed with respect to steps 105, 107, and 109 in the method 100. When acting as a decoder, the codec system 200 generates an output video signal from the bitstream, as described in connection with steps 111, 113, 115, and 117 in the operation method 100. The codec system 200 includes an overall decoder control component 211, a transform scaling quantization component 213, an intra prediction component 215, an intra prediction component 217, a motion compensation component 219, a motion estimation component 221, a scaling and inverse transform component 229, a filter control analysis component 227, an in-loop filter component 225, a decoded image buffer component 223, a header format and context adaptive binary arithmetic coding (CABAC) component 231. These components are coupled as shown. In Figure 2 FIG. 1, the black lines represent the motion of the data to be encoded / decoded, and the dashed lines represent the motion of the control data that controls the operation of other components. All components in the codec system 200 can be present in the encoder. The decoder may include a subset of the components in the codec system 200. For example, the decoder may include an intra prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded image buffer component 223. These components will now be described.

[0089] The split video signal 201 is a captured video sequence that has been split into pixel blocks by a coding tree. The coding tree uses various partitioning modes to subdivide the pixel blocks into smaller pixel blocks. These blocks can then be further subdivided into even smaller blocks. The blocks can be referred to as nodes on the coding tree. A larger parent node is divided into smaller child nodes. The number of times a node is subdivided is called the depth of the node / coding tree. In some cases, the partitioned blocks can be included in a coding unit (CU). For example, a CU can be a subpart of a CTU, including a luminance block, a red-difference chrominance (Cr) block, a blue-difference chrominance (Cb) block, and the corresponding syntax instructions for the CU. The partitioning modes can include a binary tree (BT), a triple tree (TT), and a quad tree (QT), which are used to divide a node into two, three, or four child nodes with different shapes, respectively, depending on the partitioning mode used. The split video signal 201 is forwarded to a general decoder control component 211, a transform scaling and quantization component 213, an intra prediction component 215, a filter control analysis component 227, and a motion estimation component 221 for compression.

[0090] The general decoder control component 211 is used to make decisions related to decoding the images of the video sequence into a bitstream according to application constraints. For example, the general decoder control component 211 manages the optimization of the bitrate / bitstream size with respect to the reconstructed quality. These decisions can be made according to the storage space / bandwidth availability and the image resolution request. The general decoder control component 211 also manages the utilization of the buffer according to the transmission speed to mitigate the problems of buffer underflow and overflow. To manage these problems, the general decoder control component 211 manages the splitting, prediction, and filtering performed by other components. For example, the general decoder control component 211 can dynamically increase the compression complexity to increase the resolution and bandwidth utilization, or reduce the compression complexity to reduce the resolution and bandwidth utilization. Therefore, the general decoder control component 211 controls other components of the codec system 200 to balance the video signal reconstruction quality and the bitrate issue. The general decoder control component 211 creates control data to control the operations of other components. The control data is also forwarded to a header formatting and CABAC component 231 for encoding in the bitstream to indicate the parameters to be decoded in the decoder.

[0091] The split video signal 201 is also sent to a motion estimation component 221 and a motion compensation component 219 for inter prediction. The frames or stripes of the split video signal 201 can be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform inter prediction decoding on the received video blocks based on one or more blocks in one or more reference frames to provide temporal prediction. The codec system 200 can perform multiple decoding processes to select an appropriate decoding mode for each video data block, and so on.

[0092] The motion estimation component 221 and the motion compensation component 219 can be highly integrated, but are described separately for conceptual purposes. The motion estimation performed by the motion estimation component 221 is a process of generating motion vectors, which are used to estimate the motion of video blocks. For example, a motion vector can indicate the displacement of an encoded object relative to a prediction block. A prediction block is a block that is found to closely match the block to be encoded in terms of pixel difference. A prediction block can also be referred to as a reference block. Such pixel difference can be determined by sum of absolute difference (SAD), sum of square difference (SSD), or other difference metrics. HEVC uses several decoded objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU can be divided into multiple CTBs, and then the CTBs can be partitioned into multiple CUs including CUs. A CU can be encoded as a prediction unit (PU) including prediction data and / or a transform unit (TU) including transform residual data of the CU. The motion estimation component 221 uses rate-distortion analysis as part of a rate-distortion optimization process to generate motion vectors, PUs, and TUs. For example, the motion estimation component 221 can determine multiple reference blocks, multiple motion vectors, etc. of the current block / frame, and can select the reference blocks, motion vectors, etc. with the best rate-distortion characteristics. The best rate-distortion characteristics balance the quality of video reconstruction (e.g., the amount of data loss caused by compression) and decoding efficiency (e.g., the size of the final encoded data).

[0093] In some examples, the codec system 200 can calculate the values of sub-integer pixel positions of the reference images stored in the decoded image buffer component 223. For example, the video codec system 200 can interpolate the values of quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference images. Therefore, the motion estimation component 221 can perform a motion search regarding integer pixel positions and fractional pixel positions, and output motion vectors with fractional pixel accuracy. The motion estimation component 221 calculates the motion vectors of the PUs of the video blocks in the inter-frame decoded strip by comparing the positions of the PUs with the positions of the prediction blocks of the reference images. The motion estimation component 221 outputs the calculated motion vectors as motion data to the header formatting and CABAC component 231 for encoding, and outputs the motion to the motion compensation component 219.

[0094] The motion compensation performed by the motion compensation component 219 may involve obtaining or generating a prediction block according to the motion vector determined by the motion estimation component 221. Similarly, in some examples, the motion estimation component 221 and the motion compensation component 219 may be functionally integrated. After receiving the motion vector of the PU of the current video block, the motion compensation component 219 may locate the prediction block pointed to by the motion vector. Then, by subtracting the pixel values of the prediction block from the pixel values of the currently decoded current video block, a pixel difference is generated, thereby forming a residual video block. Generally, the motion estimation component 221 performs motion estimation on the luminance component, and the motion compensation component 219 uses the motion vector calculated based on the luminance component for both the chrominance component and the luminance component. The prediction block and the residual block are forwarded to the transform scaling and quantization component 213.

[0095] The segmented video signal 201 is also sent to the intra estimation component 215 and the intra prediction component 217. Similar to the motion estimation component 221 and the motion compensation component 219, the intra estimation component 215 and the intra prediction component 217 may be highly integrated, but are described separately for conceptual purposes. The intra estimation component 215 and the intra prediction component 217 perform intra prediction on the current block based on the blocks in the current frame to replace the inter prediction performed between frames by the motion estimation component 221 and the motion compensation component 219 as described above. Specifically, the intra estimation component 215 determines the intra prediction mode for encoding the current block. In some examples, the intra estimation component 215 selects an appropriate intra prediction mode from multiple tested intra prediction modes to encode the current block. Then, the selected intra prediction mode is forwarded to the header formatting and CABAC component 231 for encoding.

[0096] For example, the intra estimation component 215 uses rate-distortion analysis of various tested intra prediction modes to calculate rate-distortion values and selects the intra prediction mode with the best rate-distortion characteristics among the tested modes. Rate-distortion analysis generally determines the amount of distortion (or error) between the encoded block and the original uncoded block encoded to generate the encoded block and the code rate (e.g., the number of bits) used to generate the encoded block. The intra estimation component 215 calculates the ratio based on the distortion and rate of various encoded blocks and determines which intra prediction mode yields the best rate-distortion value for the block. Additionally, the intra estimation component 215 can be used to decode depth blocks of a depth map using a depth modeling mode (DMM) according to rate-distortion optimization (RDO).

[0097] When implemented on the encoder, the intra prediction component 217 can generate a residual block from the prediction block according to the selected intra prediction mode determined by the intra estimation component 215, or when implemented on the decoder, read the residual block from the bitstream. The residual block includes the value difference between the prediction block and the original block, represented as a matrix. Then, the residual block is forwarded to the transform scaling and quantization component 213. The intra estimation component 215 and the intra prediction component 217 can operate on the luminance component and the chrominance component.

[0098] The transform scaling and quantization component 213 is used to further compress the residual block. The transform scaling and quantization component 213 applies a transform such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform to the residual block, generating a video block including residual transform coefficient values. Wavelet transforms, integer transforms, subband transforms, or other types of transforms can also be used. The transform can transform the residual information from the pixel value domain to the transform domain, such as the frequency domain. The transform scaling and quantization component 213 is also used to scale the transform residual information according to frequencies and the like. This scaling involves applying a scaling factor to the residual information so as to quantify different frequency information at different granularities, which can affect the final visual quality of the reconstructed video. The transform scaling and quantization component 213 is also used to quantize the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The quantization degree can be modified by adjusting the quantization parameter. In some examples, the transform scaling and quantization component 213 can then scan the matrix including the quantized transform coefficients. The quantized transform coefficients are forwarded to the header formatting and CABAC component 231 for encoding into the bitstream.

[0099] The scaling and inverse transform component 229 performs the inverse operations of the transform scaling and quantization component 213 to support motion estimation. The scaling and inverse transform component 229 performs inverse scaling, inverse transform, and / or inverse quantization to reconstruct the residual block in the pixel domain, e.g., for subsequent use as a reference block, which can become the prediction block of another current block. The motion estimation component 221 and / or the motion compensation component 219 can calculate the reference block by adding the residual block to the corresponding prediction block for use in motion estimation of subsequent blocks / frames. A filter is applied to the reconstructed reference block to reduce the artifacts generated during the scaling, quantization, and transform processes. These artifacts can produce inaccurate predictions (and generate other artifacts) when predicting subsequent blocks.

[0100] The filter control analysis component 227 and the in-loop filter component 225 apply filters to the residual blocks and / or the reconstructed image blocks. For example, the transformed residual blocks in the scaling and inverse transform component 229 can be combined with the corresponding prediction blocks in the intra prediction component 217 and / or the motion compensation component 219 to reconstruct the original image blocks. Then, filters can be applied to the reconstructed image blocks. In some examples, filters can be applied to the residual blocks. Similar to Figure 2 the other components in Figure 2 , the filter control analysis component 227 and the in-loop filter component 225 are highly integrated and can be implemented together, but are described separately for conceptual purposes. The filters applied to the reconstructed reference blocks are applied to specific spatial regions and include multiple parameters to adjust how these filters are applied. The filter control analysis component 227 analyzes the reconstructed reference blocks to determine where these filters should be applied and sets the corresponding parameters. This data is forwarded as filter control data to the header formatting and CABAC component 231 for encoding. The in-loop filter component 225 applies these filters according to the filter control data. The filters can include a deblocking filter, a noise suppression filter, a SAO filter, and an adaptive loop filter. These filters can be applied in the spatial / pixel domain (e.g., on the reconstructed pixel blocks) or in the frequency domain according to examples.

[0101] When operating as an encoder, the filtered reconstructed image blocks, residual blocks, and / or prediction blocks are stored in the decoded image buffer component 223 for later motion estimation as described above. When operating as a decoder, the decoded image buffer component 223 stores the reconstructed blocks and the filtered blocks and forwards the reconstructed blocks and the filtered blocks to the display as part of the output video signal. The decoded image buffer component 223 can be any memory device capable of storing prediction blocks, residual blocks, and / or reconstructed image blocks.

[0102] The header formatting and CABAC component 231 receives data from various components of the codec system 200 and encodes this data into a coded bitstream for transmission to a decoder. Specifically, the header formatting and CABAC component 231 generates various headers to encode control data such as overall control data and filter control data. In addition, prediction data including intra prediction and motion data, as well as residual data in the form of quantized transform coefficient data, are all encoded into the bitstream. The final bitstream includes all the information that a decoder needs to reconstruct the original segmented video signal 201. This information may also include an intra prediction mode index table (also known as a codeword mapping table), definitions of the coding contexts of various blocks, indications of the most likely intra prediction modes, indications of segmentation information, etc. This data can be encoded by entropy coding techniques. For example, the information can be encoded by using context adaptive variable length coding (CAVLC), CABAC, syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding techniques. After entropy coding, the coded bitstream can be sent to another device (e.g., a video decoder) or archived for later transmission or retrieval.

[0103] Figure 3 FIG. is a block diagram of an exemplary video encoder 300. The video encoder 300 can be used to implement the encoding function of the codec system 200 and / or implement steps 101, 103, 105, 107, and / or 109 of the operation method 100. The encoder 300 segments the input video signal, generating a segmented video signal 301 that is substantially similar to the segmented video signal 201. Then, the segmented video signal 301 is compressed and encoded into a bitstream by the components of the encoder 300.

[0104] Specifically, the segmented video signal 301 is forwarded to the intra prediction component 317 for intra prediction. The intra prediction component 317 can be substantially similar to the intra estimation component 215 and the intra prediction component 217. The segmented video signal 301 is also forwarded to the motion compensation component 321 for inter prediction based on the reference blocks in the decoded picture buffer 323. The motion compensation component 321 can be substantially similar to the motion estimation component 221 and the motion compensation component 219. The predicted blocks and residual blocks in the intra prediction component 317 and the motion compensation component 321 are forwarded to the transform and quantization component 313 to transform and quantize the residual blocks. The transform and quantization component 313 can be substantially similar to the transform scaling and quantization component 213. The transformed and quantized residual blocks and the corresponding predicted blocks (and associated control data) are forwarded to the entropy coding component 331 for coding into the bitstream. The entropy coding component 331 can be substantially similar to the header formatting and CABAC component 231.

[0105] The transformed and quantized residual blocks and / or the corresponding predicted blocks are also forwarded from the transform and quantization component 313 to the inverse transform and quantization component 329 for reconstruction into reference blocks for use by the motion compensation component 321. The inverse transform and quantization component 329 can be substantially similar to the scaling and inverse transform component 229. According to an example, the in-loop filter in the in-loop filter component 325 is also applied to the residual blocks and / or the reconstructed reference blocks. The in-loop filter component 325 can be substantially similar to the filter control analysis component 227 and the in-loop filter component 225. As discussed with respect to the in-loop filter component 225, the in-loop filter component 325 can include multiple filters. Then, the filtered blocks are stored in the decoded picture buffer component 323 for use as reference blocks by the motion compensation component 321. The decoded picture buffer component 323 can be substantially similar to the decoded picture buffer component 223.

[0106] Figure 4 It is a block diagram of an exemplary video decoder 400. The video decoder 400 can be used to implement the decoding function of the codec system 200 and / or implement steps 111, 113, 115, and / or 117 of the operation method 100. For example, the decoder 400 receives the bitstream from the encoder 300 and generates a reconstructed output video signal according to the bitstream for display to the end user.

[0107] The bitstream is received by the entropy decoding component 433. The entropy decoding component 433 is used to implement an entropy decoding scheme, such as CAVLC, CABAC, SBAC, PIPE decoding, or other entropy decoding techniques. For example, the entropy decoding component 433 can use header information to provide context for interpreting other data encoded as codewords in the bitstream. The decoded information includes any information required to decode the video signal, such as overall control data, filter control data, segmentation information, motion data, prediction data, and quantized transform coefficients of residual blocks. The quantized transform coefficients are forwarded to the inverse transform and quantization component 429 for reconstruction into residual blocks. The inverse transform and quantization component 429 can be substantially similar to the inverse transform and quantization component 329.

[0108] The reconstructed residual blocks and / or prediction blocks are forwarded to the intra prediction component 417 to be reconstructed into image blocks according to the intra prediction operation. The intra prediction component 417 can be similar to the intra estimation component 215 and the intra prediction component 217. Specifically, the intra prediction component 417 uses a prediction mode to locate a reference block in the frame and applies the residual block to the result to reconstruct the intra prediction image block. The reconstructed intra prediction image blocks and / or residual blocks and the corresponding inter prediction data are forwarded to the in-loop filter component 425 and then to the decoded image buffer component 423. The decoded image buffer component 423 and the in-loop filter component 425 can be substantially similar to the decoded picture buffer component 223 and the in-loop filter component 225, respectively. The in-loop filter component 425 filters the reconstructed image blocks, residual blocks, and / or prediction blocks, and this information is stored in the decoded image buffer component 423. The reconstructed image blocks in the decoded image buffer component 423 are forwarded to the motion compensation component 421 for inter prediction. The motion compensation component 421 can be substantially similar to the motion estimation component 221 and / or the motion compensation component 219. Specifically, the motion compensation component 421 uses the motion vectors in the reference block to generate a prediction block and applies the residual block to the result to reconstruct the image block. The resulting reconstructed blocks can also be forwarded to the decoded image buffer component 423 through the in-loop filter component 425. The decoded image buffer component 423 continues to store other reconstructed image blocks, which can be reconstructed into frames through segmentation information. These frames can also be arranged in sequence. The sequence is output as the reconstructed output video signal to the display screen.

[0109] Figure 5 A schematic diagram of an exemplary bitstream 500 including multiple types of APSs, where the multiple types of APSs include different types of decoding tool parameters. For example, the bitstream 500 can be generated by the codec system 200 and / or the encoder 300 and decoded by the codec system 200 and / or the decoder 400. Also, for example, the bitstream 500 can be generated by the encoder in step 109 of method 100 and used by the decoder in step 111.

[0110] The bitstream 500 includes a sequence parameter set (SPS) 510, multiple picture parameter sets (PPSs) 511, multiple ALF APSs 512, multiple scaling list APSs 513, multiple LMCS APSs 514, multiple slice headers 515, and picture data 520. The SPS 510 includes sequence data common to all pictures in the video sequence included in the bitstream 500. This data may include picture size, bit depth, decoding tool parameters, bitrate limit, etc. The PPS 511 includes parameters applied to the entire picture. Thus, each picture in the video sequence can refer to the PPS 511. It should be noted that although each picture refers to the PPS 511, in some examples, a single PPS 511 may include data for multiple pictures. For example, multiple similar pictures can be decoded according to similar parameters. In this case, a single PPS 511 can include data for such similar pictures. The PPS 511 can represent decoding tools available for slices, quantization parameters, offsets, etc. in the corresponding picture. The slice header 515 includes parameters specific to each slice in the picture. Thus, each slice in the video sequence can have a slice header 515. The slice header 515 can include slice type information, picture order count (POC), reference picture list, prediction weights, block entry point, deblocking filter parameters, etc. It should be noted that in certain contexts, the slice header 515 can also be referred to as a block group header.

[0111] An APS is a syntax structure that includes syntax elements applied to one or more pictures 521 and / or slices 523. In the example shown, APSs can be divided into multiple types. The ALF APS 512 is an ALF-type APS that includes ALF parameters. ALF is a block-based adaptive filter that includes a transfer function controlled by variable parameters and utilizes feedback from a feedback loop to correct the transfer function. In addition, ALF is used to correct decoding artifacts (e.g., errors) that occur due to block-based decoding. An adaptive filter is a linear filter that has a transfer function controlled by variable parameters that can be controlled by an optimization algorithm (such as the RDO process running on the encoder). Thus, the ALF parameters included in the ALF APS 512 can include variable parameters selected by the encoder to cause the filter to remove block-based decoding artifacts during decoding on the decoder side.

[0112] The Scaling List APS 513 is a Scaling List type of APS that includes Scaling List parameters. As described above, the current block is decoded according to inter - prediction or intra - prediction that results in a residual. The residual is the difference between the luminance and / or chrominance values of the block and the corresponding values of the predicted block. Then, a transform is applied to the residual to convert the residual into transform coefficients (which are smaller than the residual values). Encoding high - definition and / or ultra - high - definition content may result in an increase in residual data. When applied to such data, a simple transform process may result in significant quantization noise. Therefore, the Scaling List parameters included in the Scaling List APS 513 may include weighting parameters that can be used to scale the transform matrix to account for changes in the acceptable levels of display resolution and / or quantization noise in the resulting decoded video image.

[0113] The LMCS APS 514 is a LMCS type of APS that includes LMCS parameters, which are also referred to as shaper parameters. The human visual system has a lower ability to distinguish color differences (e.g., chrominance) than to distinguish light differences (e.g., luminance). Therefore, some video systems use a chrominance subsampling mechanism to compress video data by reducing the resolution of chrominance values without adjusting the corresponding luminance values. One problem with this mechanism is that the associated interpolation can produce interpolated chrominance values during decoding that are not compatible with the corresponding luminance values at certain positions. This creates color artifacts at these positions, and these artifacts should be corrected by corresponding filters. The luminance mapping mechanism complicates the above - mentioned operation. Luminance mapping is the process of remapping the decoded luminance component within the dynamic range of the input luminance signal (e.g., according to a piece - wise linear function). This process compresses the luminance component. The LMCS algorithm scales the compressed chrominance values according to the luminance mapping to eliminate the artifacts associated with chrominance subsampling. Therefore, the LMCS parameters included in the LMCS APS 514 indicate the chrominance scaling used to interpret the luminance mapping. The LMCS parameters are determined by the encoder and can be used by the decoder to filter out the artifacts caused by chrominance subsampling when luminance mapping is used.

[0114] The image data 520 includes video data encoded according to inter-frame prediction and / or intra-frame prediction, and corresponding transformed and quantized residual data. For example, the video sequence includes a plurality of images 521 decoded as image data. The image 521 is a single frame in the video sequence and is thus typically displayed as a single unit when the video sequence is displayed. However, a partial image may be displayed to implement certain techniques such as virtual reality, picture-in-picture, etc. Each of the images 521 refers to the PPS 511. The image 521 is divided into strips 523, and the strip 523 can be defined as a horizontal portion of the image 521. For example, the strip 523 may include a portion of the height of the image 521 and the full width of the image 521. In other cases, the image 521 may be divided into columns and rows, and the strip 523 may include a rectangular portion of the image 521 created by these columns and rows. In some systems, the strip 523 is subdivided into blocks. In other systems, the strip 523 is referred to as a block group including blocks. The strip 523 and / or the block group of blocks refer to the strip header 515. The strip 523 is further divided into coding tree units (CTUs). According to the coding tree, the CTUs are further divided into coding blocks. Then, the coding blocks can be encoded / decoded according to the prediction mechanism.

[0115] The image 521 and / or the strip 523 may directly or indirectly refer to the ALF APS 512, the scaling list APS 513, and / or the LMCS APS 514 including relevant parameters. For example, the strip 523 may refer to the strip header 515. In addition, the image 521 may refer to the corresponding image header. The strip header 515 and / or the image header may refer to the ALF APS 512, the scaling list APS 513, and / or the LMCS APS 514 including the parameters for decoding the relevant strip 523 and / or image 521. In this way, the decoder can obtain the decoding tool parameters related to the strip 523 and / or the image 521 according to the header reference related to the corresponding strip 523 and / or image 521.

[0116] Decode the bitstream 500 into video coding layer (VCL) NAL units 535 and non-VCL NAL units 531. A NAL unit is a decoded data unit, and its size can be set to the payload of a single data packet for transmission over a network. The VCL NAL unit 535 is a NAL unit that includes decoded video data. For example, each VCL NAL unit 535 may include a slice 523 and / or a group of tiles including data, CTUs, and / or coded blocks. The non-VCL NAL unit 531 is a NAL unit that contains supporting syntax but does not contain decoded video data. For example, the non-VCL NAL unit 531 may include SPS 510, PPS 511, APS, slice header 515, etc. Thus, the decoder receives the bitstream 500 in discrete VCL NAL units 535 and non-VCL NAL units 531. An access unit is a group of VCL NAL units 535 and / or non-VCL NAL units 531 that includes data sufficient to decode a single picture 521.

[0117] In some examples, the ALF APS 512, scaling list APS 513, and LMCS APS 514 are each assigned to a separate non-VCL NAL unit 531 type. In this case, the ALF APS 512, scaling list APS 513, and LMCS APS 514 are included in the ALF APS NAL unit 532, scaling list APS NAL unit 533, and LMCS APS NAL unit 534, respectively. Thus, the ALF APS NAL unit 532 includes ALF parameters that remain valid until another ALF APS NAL unit 532 is received. In addition, the scaling list APS NAL unit 533 includes scaling list parameters that remain valid until another scaling list APS NAL unit 533 is received. In addition, the LMCS APS NAL unit 534 includes LMCS parameters that remain valid until another LMCS APS NAL unit 534 is received. In this way, it is not necessary to issue a new APS every time the APS parameters change. For example, a change in the LMCS parameters results in an additional LMCS APS 514, but does not result in an additional ALF APS 512 or scaling list APS 513. Therefore, by partitioning the APS into different NAL unit types according to the parameter type, redundant indication of irrelevant parameters is avoided. Therefore, separating the APS into different NAL unit types improves decoding efficiency, thereby reducing the use of processor, memory, and / or network resources on the encoder and decoder sides.

[0118] In addition, stripe 523 and / or image 521 can directly or indirectly reference ALF APS 512, ALF APS NAL unit 532, scaling list APS 513, scaling list APS NAL unit 533, LMCS APS 514, and / or LMCS APS NAL unit 534 that include decoding tool parameters for decoding stripe 523 and / or image 521. For example, each APS can include an APS ID 542 and a parameter type 541. The APS ID 542 is a value (e.g., a number) that identifies the corresponding APS. The APS ID 542 can include a predefined number of bits. Thus, the APS ID 542 can increase according to a predefined sequence (e.g., increment by 1), and once the sequence reaches the end of the predefined range, the APS ID 542 can be reset to the minimum value (e.g., 0). The parameter type 541 represents the type of parameter included in the APS (e.g., ALF, scaling list, and / or LMCS). For example, the parameter type 541 can include an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value represents the type of parameter included in each APS. Thus, the parameter type 541 can be used to distinguish between ALF APS 512, scaling list APS 513, and LMCS APS 514. In some examples, ALF APS 512, scaling list APS 513, and LMCS APS 514 can each be uniquely identified by a combination of the parameter type 541 and the APS ID 542. For example, each APS type can include an independent value space for the corresponding APS ID 542. Thus, each APS type can include an APS ID 542 that increases sequentially based on a previous APS of the same type. However, the APS ID 542 of a first APS type can be independent of the APS ID 542 of a previous APS of a different second APS type. Thus, the APS ID 542 of different APS types can include overlapping value spaces. For example, in some cases, an APS of a first type (e.g., ALF APS) can include the same APS ID 542 as an APS of a second type (e.g., LMCS APS). By allowing each APS type to include a different value space, the codec does not need to check for APS ID 542 conflicts between different APS types. Additionally, by allowing the value spaces to overlap, the codec can avoid using larger APS ID 542 values, thereby saving bits. Thus, using independent overlapping value spaces for the APS ID 542 of different APS types improves decoding efficiency, thereby reducing the use of network resources, memory resources, and / or processing resources on the encoder and decoder sides. As described above, the APS ID 542 can have a predefined range.In some examples, the predefined range of the APS ID 542 can vary according to the APS type indicated by the parameter type 541. This can allow different numbers of bits to be allocated to different APS types according to how frequently different types of parameters typically change. For example, the APS ID 542 of the ALF APS 512 can have a range from 0 to 7, the APS ID 542 of the scaling list APS 513 can have a range from 0 to 7, and the APS ID 542 of the LMCS APS 514 can have a range from 0 to 3.

[0119] In another example, the LMCS parameters are included in the LMCS APS 514. Some systems include the LMCS parameters in the strip header 515. However, the LMCS / shaper parameters can change approximately once per second. A video sequence can display 30 to 60 images 521 per second. Thus, the LMCS parameters may not change within 30 to 60 frames. Including the LMCS parameters in the LMCS APS 514 significantly reduces the redundant decoding of the LMCS parameters. In some examples, the strip header 515 and / or the picture header associated with the strip 523 and / or the picture 521, respectively, can refer to the relevant LMCS APS 514. Then, the strip 523 and / or the picture 521 refer to the strip header 515 and / or the picture header. This allows the decoder to obtain the LMCS parameters of the relevant strip 523 and / or picture 521. In this way, the LMCS parameters are encoded only when the LMCS parameters of the strip 523 and / or the picture 521 change. Therefore, encoding the LMCS parameters using the LMCS APS 514 improves the decoding efficiency, thereby reducing the use of network resources, memory resources, and / or processing resources on the encoder and decoder sides. Since not all videos use LMCS, the SPS 510 can include an LMCS enable flag 543. The LMCS enable flag 543 can be set to indicate that LMCS is enabled for the encoded video sequence. Thus, when the LMCS enable flag 543 is set (e.g., to 1), the decoder can obtain the LMCS parameters from the LMCS APS 514 according to the LMCS enable flag 543. In addition, when the LMCS enable flag 543 is not set (e.g., to 0), the decoder can refrain from attempting to obtain the LMCS parameters.

[0120] Figure 6Schematic diagram of an exemplary mechanism 600 for assigning APS ID 642 to different APS types over different value spaces. For example, mechanism 600 can be applied to bitstream 500 to assign APS ID 542 to ALF APS 512, scaling list APS 513, and / or LMCS APS 514. Additionally, when decoding video according to method 100, mechanism 600 can be applied to codec 200, encoder 300, and / or decoder 400.

[0121] Mechanism 600 assigns APS ID 642 to ALF APS 612, scaling list APS 613, and LMCS APS 614, which can be substantially similar to APS ID 542, ALF APS 512, scaling list APS 513, and LMCS APS 514, respectively. As described above, APS ID 642 can be sequentially assigned over multiple different value spaces, where each value space has a specific APS type. Additionally, each value space can have a different range specific to the APS type. In the example shown, the range of the value space for the APS ID 642 of ALF APS 612 is from 0 to 7 (e.g., 3 bits). Additionally, the range of the value space for the APS ID 642 of scaling list APS 613 is from 0 to 7 (e.g., 3 bits). Additionally, the range of the value space for the APS ID 642 of LMCS APS 611 is from 0 to 3 (e.g., 2 bits). When APS ID 642 reaches the end of the value space range, the APS ID 642 of the next APS of the corresponding type returns to the start (e.g., 0) of the value space range. When a new APS receives the same APS ID 642 as a prior APS of the same type, the prior APS is no longer active and can no longer be referenced. Thus, the range of the value space can be extended to allow more types of APS to be actively referenced. Additionally, the range of the value space can be decreased to improve decoding efficiency, but this decrease also reduces the number of APS of the corresponding type that can remain active and be available for reference simultaneously.

[0122] In the example shown, each of the ALF APS 612, the Scaling List APS 613, and the LMCS APS 614 is referenced by a combination of an APSID 642 and an APS type. For example, the ALF APS 612, the LMCS APS 614, and the Scaling List APS 613 each receive an APS ID 642 equal to 0. When a new ALF APS 612 is received, the APS ID 642 is incremented from the value used for a previous ALF APS 612. The same sequence applies to the Scaling List APS 613 and the LMCS APS 614. Thus, each APS ID 642 is related to the APS ID 642 of the previous APS of the same type. However, the APS ID 642 is not related to the APS ID 642 of previous APSs of other types. In this example, the APS ID 642 of the ALF APS 612 increments from 0 to 7 and then returns to 0 before continuing to increment. Additionally, the APS ID 642 of the Scaling List APS 613 increments from 0 to 7 and then returns to 0 before continuing to increment. Additionally, the APS ID 642 of the LMCS APS 611 increments from 0 to 3 and then returns to 0 before continuing to increment. As shown, these value spaces overlap because different APSs of different APS types can share the same APS ID 642 at the same point in the video sequence. It should also be noted that mechanism 600 depicts only the APSs. In the bitstream, the depicted APSs will be scattered among other VCL and non-VCL NAL units, such as SPS, PPS, slice headers, picture headers, slices, etc.

[0123] Accordingly, the present invention includes improvements to the APS design and some improvements to the indication of shaper / LMCS parameters. The APS is designed to indicate information that can be shared by multiple pictures and can include many variants. The shaper / LMCS parameters are for the adaptive in-loop shaper / LMCS video decoding tool. The above mechanism can be implemented as follows. To solve the problems listed herein, the present invention includes several aspects that can be used alone and / or in combination.

[0124] Modify the disclosed APS such that multiple APSs can be used to carry different types of parameters. Each APS NAL unit is only used to carry one type of parameter. Thus, when carrying two types of information for a particular block group / slice (e.g., one block group / slice for each type of information), two APS NAL units are encoded. The APS can include an APS parameter type field in the APS syntax. Only parameters of the type indicated by the APS parameter type field can be included in the APS NAL unit.

[0125] In some examples, different types of APS parameters are represented by different NAL unit types. For example, APS uses two different NAL unit types. These two types of APS can be referred to as ALF APS and Shaper APS, respectively. In another example, the type of tool parameter carried in the APS NAL unit is specified in the NAL unit header. In VVC, the NAL unit header has reserved bits (e.g., 7 bits represented as nuh_reserved_zero_7bits). In some examples, some of these bits (e.g., 3 out of 7 bits) can be used to specify the APS parameter type field. In some examples, specific types of APS can share the same value space of APS IDs. At the same time, different types of APS use different value spaces of APS IDs. Therefore, two APSs of different types can coexist and have the same APS ID value at the same time. In addition, the combination of APS ID and APS parameter type can be used to identify an APS from other APSs.

[0126] When the corresponding decoding tool is enabled for a tile group, the APS ID can be included in the tile group header syntax. Otherwise, the APS ID of the corresponding type may not be included in the tile group header. For example, when ALF is enabled for a tile group, the APS ID of the ALF APS is included in the tile group header. For example, this can be achieved by setting the APS parameter type field to indicate the ALF type. Therefore, when ALF is not enabled for a tile group, the APS ID of the ALF APS is not included in the tile group header. In addition, when the shaper decoding tool is enabled for a tile group, the APS ID of the shaper APS is included in the tile group header. For example, this can be achieved by setting the APS parameter type field to indicate the shaper type. Therefore, when the shaper decoding tool is not enabled for a tile group, the APS ID of the shaper APS may not be included in the tile group header.

[0127] In some examples, the presence of APS parameter type information in APS can be regulated by using the decoding tools related to the parameters. When only one APS-related decoding tool (e.g., LMCS, ALF, or Scaling List) is enabled for the bitstream, the APS parameter type information may not exist but can be inferred. For example, when APS can include parameters of ALF and shaper decoding tools, but only ALF is enabled (e.g., specified by a flag in the SPS) and the shaper is not enabled (e.g., specified by a flag in the SPS), the APS parameter type may not be signaled but can be inferred to be equal to the ALF parameter.

[0128] In another example, APS parameter type information can be inferred from the APS ID value. For example, a predefined range of APS ID values can be associated with corresponding APS parameter types. The above aspects can be implemented as follows. Instead of allocating Y bits for indicating the APS parameter type, X bits can be allocated for indicating the APS ID, and X + Y bits can be allocated for indicating the APS ID. Then, different ranges of APS ID values can be specified to represent different types of APS parameter types. For example, 8 bits can be allocated to indicate the APS ID (e.g., without increasing the bit cost), instead of using 5 bits to indicate the APS ID and 3 bits to indicate the APS parameter type. An APS ID value range from 0 to 63 indicates that the APS includes parameters of the ALF, an ID value range from 64 to 95 indicates that the APS includes parameters of the shaper, and values from 96 to 255 can be reserved for other parameter types, such as the scaling list. In another example, an APS ID value range from 0 to 31 indicates that the APS includes parameters of the ALF, an ID value range from 32 to 47 indicates that the APS includes parameters of the shaper, and values from 48 to 255 can be reserved for other parameter types, such as the scaling list. The advantage of this method is that the APS ID range can be allocated according to the frequency of change of each tool parameter. For example, ALF parameters may change more frequently than shaper parameters. In this case, a larger APS ID range can be adopted to represent that the APS includes ALF parameters.

[0129] In a first example, one or more of the above aspects can be implemented as follows. The ALF APS can be defined as an APS where aps_params_type is equal to ALF_APS. The APS of the shaper (or LMCS APS) can be defined as an APS where aps_params_type is equal to MAP_APS. The syntax and semantics of an exemplary SPS are as follows:

[0130]

[0131] The sps_reshaper_enabled_flag is set to 1, indicating that the shaper is used in the coded video sequence (CVS). The sps_reshaper_enabled_flag is set to 0, indicating that the shaper is not used in the CVS.

[0132] The syntax and semantics of an exemplary APS are as follows:

[0133]

[0134]

[0135] The aps_params_type indicates the type of APS parameters carried in APS, as shown in the following table.

[0136] Table 1: APS Parameter Type Codes and APS Parameter Types

[0137] aps_params_type Name of aps_params_type Type of APS parameters 0 ALF_APS ALF parameter 1 MAP_APS In-loop mapping (i.e., shaper) parameter 2..7 Reserved Reserved

[0138] The syntax and semantics of an exemplary tile group header are as follows:

[0139]

[0140]

[0141] tile_group_alf_aps_id indicates the adaptation_parameter_set_id of the ALF APS referred to by the tile group. The TemporalId of the ALF APS NAL unit whose adaptation_parameter_set_id is equal to tile_group_alf_aps_id shall be less than or equal to the TemporalId of the decoded tile group NAL unit. When multiple ALF APSs with the same adaptation_parameter_set_id value are referred to by two or more tile groups of the same picture, the multiple ALF APSs with the same adaptation_parameter_set_id value shall include the same content.

[0142] The tile_group_reshaper_enabled_flag is set to 1, indicating that the reshaper is enabled for the current tile group. The tile_group_reshaper_enabled_flag is set to 0, indicating that the reshaper is not enabled for the current tile group. If the tile_group_reshaper_enable_flag does not exist, it is inferred that the value of the tile_group_reshaper_enable_flag is equal to 0. The tile_group_reshaper_aps_id represents the adaptation_parameter_set_id of the reshaper APS referred to by the tile group. The TemporalId of the reshaper APS NAL unit with the adaptation_parameter_set_id equal to the tile_group_reshaper_aps_id should be less than or equal to the TemporalId of the decoded tile group NAL unit. When multiple reshaper APSs with the same adaptation_parameter_set_id value are referred to by two or more tile groups of the same picture, the multiple reshaper APSs with the same adaptation_parameter_set_id value should include the same content. The tile_group_reshaper_chroma_residual_scale_flag is set to 1, indicating that chroma residual scaling is enabled for the current tile group. The tile_group_reshaper_chroma_residual_scale_flag is set to 0, indicating that chroma residual scaling is not enabled for the current tile group. If the tile_group_reshaper_chroma_residual_scale_flag does not exist, it is inferred that the value of the tile_group_reshaper_chroma_residual_scale_flag is equal to 0.

[0143] The syntax and semantics of exemplary reshaper data are as follows:

[0144]

[0145]

[0146] reshaper_model_min_bin_idx represents the minimum bit (or segment) index used in the reshaper construction process. The value of reshaper_model_min_bin_idx should be within the range of 0 to MaxBinIdx (including the end values). The value of MaxBinIdx should be equal to 15. reshaper_model_delta_max_bin_idx represents the value of the maximum allowed bit (or segment) index MaxBinIdx minus the maximum bit index used in the reshaper construction process. The value of reshaper_model_max_bin_idx is set to MaxBinIdx – reshaper_model_delta_max_bin_idx. reshaper_model_bin_delta_abs_cw_prec_minus1+1 represents the number of bits used to represent the syntax reshaper_model_bin_delta_abs_CW[i]. reshaper_model_bin_delta_abs_CW[i] represents the absolute incremental codeword value of the i-th bit. The syntax element reshaper_model_bin_delta_abs_CW[i] is represented by reshaper_model_bin_delta_abs_cw_prec_minus1+1 bits. reshaper_model_bin_delta_sign_CW_flag[i] represents the sign of reshaper_model_bin_delta_abs_CW[i].

[0147] In a second example, one or more of the above aspects may be implemented as follows. The syntax and semantics of an exemplary SPS are as follows:

[0148]

[0149] The variables ALFEnabled and ReshaperEnabled are set as follows: ALFEnabled = sps_alf_enabled_flag, ReshaperEnabled = sps_reshaper_enabled_flag.

[0150] The syntax and semantics of an exemplary APS are as follows:

[0151]

[0152]

[0153] aps_params_type represents the type of APS parameters carried in APS, as shown in the following table.

[0154] Table 2: APS Parameter Type Codes and APS Parameter Types

[0155] aps_params_type Name of aps_params_type Type of APS parameters 0 ALF_APS ALF parameter 1 MAP_APS In-loop mapping (i.e., shaper) parameter 2..7 Reserved Reserved

[0156] If aps_params_type does not exist, the value of aps_params_type is inferred as follows: If ALFE is enabled, set aps_params_type to 0. Otherwise, set aps_params_type to 1.

[0157] In a second example, one or more of the above aspects may be implemented as follows. The syntax and semantics of an exemplary SPS are as follows:

[0158]

[0159] adaptation_parameter_set_id provides an identifier for APS for reference by other syntax elements. APS can be shared between pictures and can be different in different tile groups within a picture. The values and descriptions of the variable APSParamsType are defined in the following table.

[0160] Table 3: APS Parameter Type Codes and APS Parameter Types

[0161]

[0162]

[0163] The semantics of an exemplary tile group header are as follows: tile_group_alf_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the tile group. The TemporalId of the ALF APS NAL unit with adaptation_parameter_set_id equal to tile_group_alf_aps_id should be less than or equal to the TemporalId of the decoded tile group NAL unit. The value of tile_group_alf_aps_id should be in the range of 0 to 63 (including the end values).

[0164] When multiple ALF APSs with the same adaptation_parameter_set_id value are referenced by two or more tile groups of the same image, the multiple ALF APSs with the same adaptation_parameter_set_id value shall include the same content. The tile_group_reshaper_aps_id represents the adaptation_parameter_set_id of the reshaper APS referenced by the tile group. The TemporalId of the reshaper APS NAL unit with the adaptation_parameter_set_id equal to the tile_group_reshaper_aps_id shall be less than or equal to the TemporalId of the decoded tile group NAL unit. The value of the tile_group_reshaper_aps_id shall be in the range of 64 to 95 (including the end values). When multiple reshaper APSs with the same adaptation_parameter_set_id value are referenced by two or more tile groups of the same image, the multiple reshaper APSs with the same adaptation_parameter_set_id value shall include the same content.

[0165] Figure 7 FIG. is a schematic diagram of an exemplary video coding device 700. The video coding device 700 is suitable for implementing the disclosed examples / embodiments described herein. The video coding device 700 includes a downlink port 720, an uplink port 750, and / or a transceiver unit (Tx / Rx) 710, and the transceiver unit includes a transmitter and / or a receiver for transmitting data up and / or down through a network. The video coding device 700 further includes a processor 730 and a memory 732 for storing data, and the processor 730 includes a logic unit and / or a central processing unit (CPU) for processing data. The video coding device 700 may further include electronic components, optical-to-electrical (OE) components, electrical-to-optical (EO) components, and / or wireless communication components coupled to the uplink port 750 and / or the downlink port 720 for data communication through electrical, optical, or wireless communication networks. The video coding device 700 may further include an input and / or output (I / O) device 760 for sending data to and receiving data from a user. The I / O device 760 may include output devices such as a display for displaying video data and a speaker for outputting audio data. The I / O device 760 may further include input devices such as a keyboard, a mouse, a trackball, etc., and / or corresponding interfaces for interacting with such output devices.

[0166] The processor 730 is implemented by hardware and software. The processor 730 can be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), a field-programmable gate array (FPGA), an application specific integrated circuit (ASIC), and a digital signal processor (DSP). The processor 730 communicates with the downlink port 720, Tx / Rx 710, the uplink port 750, and the memory 732. The processor 730 includes a decoding module 714. The decoding module 714 implements the embodiments disclosed herein, such as methods 100, 800, and 900, which can employ the bitstream 500 and / or the mechanism 600. The decoding module 714 can also implement any other method / mechanism described herein. Additionally, the decoding module 714 can implement the codec system 200, the encoder 300, and / or the decoder 400. For example, the decoding module 714 can encode / decode images in the bitstream and encode / decode parameters related to the stripes of the images in the multiple APSs. In some examples, different types of parameters can be decoded into different types of APSs. Additionally, different types of APSs can be included in different NAL unit types. These APS types can include ALF APS, scaling list APS, and / or LMCS APS. Each APS can include an APS ID. The APS IDs of different APS types increase sequentially over different value spaces. Additionally, the stripe and / or the image can refer to the corresponding stripe header and / or image header. Then, these headers can refer to the APSs including the relevant decoding tools. These APSs can be uniquely referred to by the APS ID and the APS type. These examples reduce the redundant indication of decoding tool parameters and / or reduce the bit usage of the identifiers. Therefore, the decoding module 714 enables the video decoding device 700 to provide other functions and / or decoding efficiency when decoding video data. Thus, the decoding module 714 improves the function of the video decoding device 700 and solves the problems for video decoding technologies. Additionally, the decoding module 714 transforms the video decoding device 700 into different states. Alternatively, the decoding module 714 can be implemented as instructions (e.g., a computer program product stored on a non-transitory medium) stored in the memory 732 and executed by the processor 730.

[0167] The memory 732 includes one or more memory types, such as magnetic disks, tape drives, solid state drives, read only memory (ROM), random access memory (RAM), flash memory, ternary content-addressable memory (TCAM), static random-access memory (SRAM), etc. The memory 732 can be used as an overflow data storage device to store programs when a program is selected for execution, as well as instructions and data read during program execution.

[0168] Figure 8 FIG. 800 is a flowchart of an exemplary method 800 for encoding a video sequence into a bitstream 500 and the like by using multiple APS types, such as ALF APS 512, scalable list APS 513, and / or LMCS APS 514. The method 800 can be executed by an encoder such as the codec system 200, the encoder 300, and / or the video decoding device 700 when executing the method 100. The method 800 can also assign APS IDs to different types of APS according to the mechanism 600 by using different value spaces.

[0169] The method 800 can start with: the encoder receives a video sequence including multiple images and determines to encode the video sequence in a bitstream according to a user input or the like. The video sequence is segmented into pictures / frames before encoding for further segmentation. In step 801, a slice is encoded into the bitstream as part of the encoded video sequence. The slice can be encoded as part of an image. In addition, the slice can be encoded by encoding the CTUs and / or CUs included in the slice. These CUs can be decoded according to intra prediction and / or inter prediction. For example, the encoder can decode the CUs of the slice. Then, the encoder can decode the decoded slice by using a hypothetical reference decoder (HRD) and decode the decoded slice to improve the output quality of the slice.

[0170] In step 803, the encoder determines multiple types of parameters for encoding the slice. These parameters can include the parameters adopted by the filter applied by the HRD to improve the quality of the encoded slice. These parameters can include ALF parameters, scalable list parameters, and LMCS parameters. Determining these parameters allows the encoder to determine the parameters to be applied to the slice at the decoder side.

[0171] In step 805, multiple types of parameters are encoded in multiple APSs. Specifically, the multiple types of parameters are separated by type and included in the APSs of the corresponding type. Thus, the multiple types of parameters are included in multiple APS types. For example, the multiple APS types may include an ALF type APS with ALF parameters, a scaling list type APS with scaling list parameters, and an LMCS type APS with LMCS parameters.

[0172] In step 807, an APS ID is assigned to each APS. The step includes sequentially assigning APS IDs to APS types over multiple different value spaces. Thus, an APS ID is assigned to each APS such that each of the multiple APS types uses an independent value space of APS IDs. For example, each value space in the different value spaces may have a predefined range. In addition, the predefined range may be determined according to the APS type specified by the parameter type of the corresponding APS. Thus, each APS may include an APS ID selected from the predefined range. These predefined ranges may be overlapping, so multiple different value spaces may also be overlapping. In addition, APS IDs may be assigned in different orders according to the APS type. For example, the current APS may include a current APS ID selected from the predefined range in the current value space. The current APS ID is sequentially related to a prior APS ID, and the prior APS ID is related to a prior APS of the same type as the current APS type. In addition, the current APS ID is not related to another prior APS ID, and the other prior APS ID is related to another prior APS of a different type from the current APS, because the orders of different APS types are different.

[0173] In step 809, the APS ID is encoded into multiple APSs. The APS type may also be encoded into each APS. For example, each APS may include an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value represents the parameter type included in the corresponding APS. Then, each APS can be identified by the combination of the current APS type and the current APS ID. The code stream is stored in memory. Then, upon request, the code stream can be sent to the decoder by a transmitter.

[0174] Figure 9It is a flowchart of an exemplary method 900 for decoding a video sequence from a bitstream such as bitstream 500 by using multiple APS types, such as ALF APS 512, scaled list APS 513, and / or LMCS APS 514. Method 900 may be executed by a codec system 200, a decoder 400, and / or a video decoding device 700 and the like when executing method 100. Method 900 may also refer to an APS based on an APS ID assigned according to mechanism 600, where different types of APS use APS IDs assigned according to different value spaces.

[0175] Method 900 may begin with the decoder starting to receive a bitstream representing decoded data of a video sequence, for example, as a result of method 800. At step 901, the bitstream is received at the decoder. The bitstream includes coded strips and multiple APSs including multiple APS types. The multiple APS types may include an ALF type with ALF parameters, a scaled list type with scaled list parameters, and an LMCS type with LMCS parameters. For example, each APS may include an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value represents the parameter type included in each APS. Each APS includes an APS ID. In addition, APS IDs are sequentially assigned to APS types over multiple different value spaces. Thus, each APS type includes an independent value space of APS IDs.

[0176] The multiple different value spaces may overlap. For example, each value space in different value spaces may have a predefined range. The predefined range may be determined according to the APS type. For example, the current APS may include a current APS ID selected from a predefined range in the current value space. The current APS ID is related to a previous APS ID, and the previous APS ID is related to a previous APS of the same type as the current APS. However, the current APS ID is not related to another previous APS ID, and the other previous APS ID is related to another previous APS of a different type from the current APS. Thus, each APS may be identified by a combination of the current APS type and the current APS ID.

[0177] The decoder may obtain parameters from multiple APSs by using the APS ID and the APS type. For example, the decoder may use a header related to the strip referring to each type of APS. Then, the decoder may obtain the parameters of the strip according to these references. At step 903, the strip is decoded by using the parameters in multiple APSs. At step 905, the decoder may forward the strip for display as part of the decoded video sequence.

[0178] Figure 10 FIG. 1 is a schematic diagram of an exemplary system 1000 for decoding a video sequence of images in a bitstream 500 and the like using multiple APS types, such as ALF APS 512, scaled list APS 513, and / or LMCS APS 514. The system 1000 may be implemented by an encoder and decoder such as an encoding and decoding system 200, an encoder 300, a decoder 400, and / or a video decoding device 700. In addition, the system 1000 may be used to implement method 100, method 800, method 900, and / or mechanism 600.

[0179] The system 1000 includes a video encoder 1002. The video encoder 1002 includes: a determination module 1001 for determining multiple types of parameters for encoding a strip. The video encoder 1002 further includes an encoding module 1003 for encoding the strip into a bitstream. The encoding module 1003 further includes: encoding multiple types of parameters in multiple APSs into the bitstream by including the multiple types of parameters in multiple APS types. The encoding module 1003 is further configured to encode an APS ID into the multiple APSs. The video encoder 1002 further includes: an assignment module 1005 for assigning an APS ID to each APS by sequentially assigning APS IDs to APS types on multiple different value spaces. The video encoder 1002 further includes: a storage module 1006 for storing the bitstream for transmission to the decoder. The video encoder 1002 further includes: a transmission module 1007 for transmitting the bitstream including multiple APSs with multiple parameter types to support decoding the strip on the decoder side. The video encoder 1002 may also be used to perform any step of method 800.

[0180] The system 1000 further includes a video decoder 1010. The video decoder 1010 includes: a receiving module 1011 for receiving a bitstream, the bitstream including a strip and multiple APSs with multiple APS types, wherein each APS includes an APS ID, and APS IDs are sequentially assigned to APS types on multiple different value spaces. The video decoder 1010 further includes: a decoding module 1013 for decoding the strip using the parameters in the multiple APSs. The video decoder 1010 further includes a forwarding module 1015 for forwarding the strip to be displayed as part of a decoded video sequence. The video decoder 1010 may also be used to perform any step of method 900.

[0181] When there are no other intermediate components between the first component and the second component other than wires, traces, or other media, the first component is directly coupled to the second component. When there are other intermediate components between the first component and the second component other than wires, traces, or other media, the first component is indirectly coupled to the second component. The term "coupled" and its variants include direct coupling and indirect coupling. Unless otherwise specified, the term "about" refers to ±10% of the numbers described below.

[0182] It should also be understood that the steps of the exemplary methods set forth herein need not be performed in the order described, and the order of these method steps should be understood to be merely exemplary. Similarly, in methods consistent with various embodiments of the present invention, these methods may include other steps, and certain steps may be omitted or combined.

[0183] Although the present invention provides multiple specific embodiments, it should be understood that the disclosed systems and methods may also be embodied in many other specific forms without departing from the spirit or scope of the present invention. The examples of the present invention should be considered illustrative rather than restrictive, and the present invention is not limited to the details given herein. For example, various elements or components may be combined or merged in another system, or certain features may be omitted or not implemented.

[0184] In addition, without departing from the scope of the present invention, the techniques, systems, subsystems, and methods described and illustrated as discrete or separate in various embodiments may be combined or integrated with other systems, components, techniques, or methods. Other changes, substitutions, and alternation examples will be apparent to those skilled in the art and are all within the spirit and scope disclosed herein.

Claims

1. A method implemented in a decoder, characterized in that, The method includes: Receiving a bitstream, where the bitstream includes syntax elements of video data, and the video data includes a plurality of images; Dividing one image among the plurality of images into a plurality of decoded slices, where the syntax elements include a plurality of Adaptive Parameter Sets (APSs), the plurality of APSs include a plurality of APS types related to the decoded slices, each APS includes an APS identifier (ID), and each of the plurality of APS types uses an independent value space of the APS ID; Decoding the decoded slices by using parameters from the plurality of APSs, where the plurality of APSs are obtained according to the plurality of APS IDs; Wherein, the plurality of APS types include an ALF type having Adaptive Loop Filter (ALF) parameters and an LMCS type having Luminance Mapping and Chrominance Scaling (LMCS); The APS is a syntax structure including syntax elements applied to a slice, the LMCS parameters are for LMCS, the LMCS is a process of scaling chrominance values based on luminance mapping, and the ALF parameters are for ALF, and the ALF is a filter controlled by parameters included in the ALF APS; Each independent value space extends over a predefined range, and the predefined range is determined according to the APS type; Each APS includes an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value indicates the parameter type included in each APS, and the parameter type indicates the ALF parameters and / or the LMCS parameters; 2. The method according to claim 1, wherein The value spaces of the plurality of independent APS IDs overlap each other; 3. The method according to claim 1 or 2, characterized in that, The plurality of APS types further include a Scaling List type (SCALING_APS) having Scaling List parameters; 4. The method according to any one of claims 1 to 3, characterized in that The current APS includes a current APS ID, where the value of the current APS ID is selected from the predefined range of the current value space, the current APS ID is related to a prior APS ID, the prior APS ID is related to a prior APS of the same type as the current APS, and the current APS ID is not related to another prior APS ID, and the other prior APS ID is related to another prior APS of a different type from the current APS; 5. The method according to any one of claims 1 to 4, characterized in that, Each APS is identified by a combination of the current APS type and the current APS ID; 6. A method implemented in an encoder, characterized in that, The method includes: Receiving image data to be encoded including a plurality of images; Dividing one image among the plurality of images into a plurality of slices; Encoding the slices into the bitstream as decoded slices; Determining various types of parameters for encoding the decoded slices; Encoding the various types of parameters in the plurality of APSs into the bitstream by including the various types of parameters in a plurality of Adaptive Parameter Set (APS) types; An APS identifier ID is assigned to each APS such that each of the multiple APS types uses an independent value space of APS IDs; Encode each APS ID into the multiple APSs; Wherein, the multiple APS types include an ALF type having adaptive loop filter ALF parameters and an LMCS type having luminance mapping and chrominance scaling LMCS; The APS is a syntax structure containing syntax elements applied to a strip, the LMCS parameters are for LMCS, the LMCS is a process of scaling chrominance values based on luminance mapping, the ALF parameters are for ALF, and the ALF is a filter controlled by parameters included in the ALF APS; Each independent value space extends over a predefined range, and the predefined range is determined according to the APS type; Each APS includes an APS parameter type (aps_params_type) code set to a predefined value, wherein the predefined value represents the parameter type included in each APS, and the parameter type indicates the ALF parameter and / or the LMCS parameter; 7. The method according to claim 6, characterized in that, The value spaces of multiple independent APS IDs overlap each other; 8. The method according to claim 6 or 7, characterized in that, The multiple APS types further include a scaling list type (SCALING_APS) having scaling list parameters; 9. The method according to any one of claims 6 to 8, characterized in that, The current APS includes a current APS ID, wherein the value of the current APS ID is selected from the predefined range of the current value space, the current APS ID is related to a previous APS ID, the previous APS ID is related to a previous APS of the same type as the current APS, the current APS ID is not related to another previous APS ID, and the other previous APS ID is related to another previous APS of a different type from the current APS; 10. The method according to any one of claims 6 to 9, characterized in that Each APS is identified by a combination of the current APS type and the current APS ID; 11. A video decoding device, characterized in that, Comprising: A processor; A receiver coupled to the processor; A memory coupled to the processor; A transmitter coupled to the processor, wherein the processor, the receiver, and the transmitter are used to execute the method according to any one of claims 1 to 10; 12. A non-transitory computer-readable medium, characterized in that, Comprising a computer program product used by a video decoding device, wherein the computer program product includes computer-executable instructions stored in the non-transitory computer-readable medium, and when the processor executes the computer-executable instructions, the video decoding device executes the method according to any one of claims 1 to 10; 13. A decoder, characterized in that, Comprising: A receiving module for receiving a bitstream, the bitstream including syntax elements of video data, the video data including a plurality of images; A partitioning module for partitioning one of the multiple images into multiple decoded slices, where the syntax elements include multiple Adaptive Parameter Sets (APSs), the multiple APSs include multiple APS types related to the decoded slices, each APS includes an APS identifier (ID), and each of the multiple APS types uses an independent value space of APS IDs; A decoding module for decoding the decoded slices using parameters from the multiple APSs, the multiple APSs being obtained according to the multiple APS IDs; wherein the multiple APS types include an ALF type having Adaptive Loop Filter (ALF) parameters and an LMCS type having Luminance Mapping and Chrominance Scaling (LMCS); The APS is a syntax structure containing syntax elements applied to the slices, the LMCS parameters are for LMCS, which is a process of scaling chrominance values based on luminance mapping, and the ALF parameters are for ALF, which is a filter controlled by the parameters included in the ALF APS; Each independent value space extends over a predefined range, and the predefined range is determined according to the APS type; Each APS includes an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value indicates the parameter type included in each APS, and the parameter type indicates the ALF parameters and / or the LMCS parameters.

14. The decoder according to claim 13, wherein The decoder is further configured to perform the method according to any one of claims 1 to 5.

15. An encoder, characterized in that, Comprising: A receiving module for receiving image data to be encoded including multiple images; A partitioning module for partitioning one of the multiple images into multiple slices; A determining module for determining multiple types of parameters used for encoding the slices; An encoding module for: Encoding the slices into a bitstream as decoded slices; Encoding multiple types of parameters in multiple APSs into the bitstream by including the multiple types of parameters in multiple Adaptive Parameter Set (APS) types; Encoding each APS identifier (ID) into the multiple APSs; An assignment module for assigning an APS ID to each APS such that each of the multiple APS types uses an independent value space of APS IDs; wherein the multiple APS types include an ALF type having Adaptive Loop Filter (ALF) parameters and an LMCS type having Luminance Mapping and Chrominance Scaling (LMCS); The APS is a syntax structure containing syntax elements applied to the slices, the LMCS parameters are for LMCS, which is a process of scaling chrominance values based on luminance mapping, and the ALF parameters are for ALF, which is a filter controlled by the parameters included in the ALF APS; Each independent value space extends over a predefined range, and the predefined range is determined according to the APS type; Each of the APSs includes an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value represents the parameter type included in each of the APSs, and the parameter type indicates the ALF parameter and / or the LMCS parameter.

16. The encoder according to claim 15, characterized in that, The encoder is further configured to perform the method according to any one of claims 6 to 10.

17. A non-transitory computer-readable storage medium, characterized in that, The storage medium stores a bitstream, the bitstream including: Syntax elements of video data, the video data including a plurality of images, one of the plurality of images being divided into a plurality of decoded slices, where the syntax elements include a plurality of Adaptive Parameter Sets (APSs), the plurality of APSs including a plurality of APS types associated with the decoded slices, each APS including an APS identifier ID, and each of the plurality of APS types using a separate value space of APS IDs; Wherein, the plurality of APS types include an ALF type having Adaptive Loop Filter (ALF) parameters and an LMCS type having Luminance Mapping and Chroma Scaling (LMCS); The APS is a syntax structure including syntax elements applied to a slice, the LMCS parameters are for LMCS, which is a process of scaling chroma values based on luminance mapping, and the ALF parameters are for ALF, which is a filter controlled by the parameters included in the ALF APS; Each separate value space extends over a predefined range, and the predefined range is determined according to the APS type; Each of the APSs includes an APS parameter type (aps_params_type) code set to a predefined value, where the predefined value represents the parameter type included in each of the APSs, and the parameter type indicates the ALF parameter and / or the LMCS parameter.

18. The storage medium according to claim 17, characterized in that, The value spaces of multiple independent APS IDs overlap with each other.

19. The storage medium according to claim 17 or 18, characterized in that, The plurality of APS types further include a Scaling List type (SCALING_APS) having Scaling List parameters.

20. The storage medium according to any one of claims 17 to 19, characterized in that, The current APS includes a current APS ID, where the value of the current APS ID is selected from the predefined range of the current value space, the current APS ID is related to a prior APS ID, the prior APS ID is related to a prior APS of the same type as the current APS, and the current APS ID is not related to another prior APS ID, the other prior APS ID being related to another prior APS of a different type from the current APS.

21. The storage medium according to any one of claims 17 to 20, characterized in that Each of the APSs is identified by a combination of the current APS type and the current APS ID.

22. A computer program product, characterized in that, Including computer-executable instructions stored in a non-transitory computer storage medium, which, when executed by a processor, cause the computer to perform the method according to any one of claims 1 to 10.