Cross-component adaptive loop filtering for video coding

By optimizing CC-ALF syntax element signaling across multiple levels, the method addresses computational complexity and latency issues in video coding, enhancing coding efficiency and performance.

JP2024174874AInactive Publication Date: 2024-12-17HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024135473
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-01-13
Filing Date
2024-08-14
Publication Date
2024-12-17
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

Cross-component adaptive loop filtering (CC-ALF) in video coding is computationally complex and introduces additional pipeline latency, particularly in hardware implementations, and is associated with high signaling overhead.

Method used

The method involves reducing signaling overhead by signaling CC-ALF related syntax elements at various levels, including the video parameter set, sequence parameter set, picture parameter set, and slice header, allowing for efficient cross-component adaptive loop filtering with reduced complexity.

Benefits of technology

This approach enhances coding efficiency by reducing computational complexity and latency while maintaining effective filtering performance, thereby improving video coding performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2024174874000001_ABST
    Figure 2024174874000001_ABST
Patent Text Reader

Abstract

To provide syntax elements for a cross-component adaptive loop filter (CC-ALF).SOLUTION: A method in image encoding and / or image decoding is provided, in which picture header entries for a CCALF defining common CCALF data are introduced and then all slices can inherit this common information. The signaling overhead, in particular, the overhead of a slice header (in terms of number of bits) is reduced.SELECTED DRAWING: Figure 14
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] FIELD OF THE DISCLOSURE Embodiments of the present application (disclosure) relate generally to the field of picture processing, and more particularly to cross-component adaptive loop filters (CC-ALF) as in-loop or post-loop filters, and a high-level syntax for cross-component ALF (CCALF). [Background technology]

[0002] Image coding (encoding and decoding) is used in a wide variety of digital image applications, for example, broadcast digital TV, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat, video conferencing, DVDs and Blu-ray® discs, video content acquisition and editing systems, and camcorders in security applications.

[0003] Since the development of the block-based hybrid video coding method in the H.261 standard in 1990, new video coding techniques and tools have been developed and formed the basis for new video coding standards. One of the goals of most video coding standards has been to achieve a reduction in bit rate compared to previous standards without sacrificing picture quality. Further video coding standards include MPEG-1 video, MPEG-2 video, ITU-T H.262 / MPEG-2, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265, High Efficiency Video Coding (HEVC), ITU-T H.266 / Versatile Video Coding (VVC), and extensions of those standards, such as scalability and / or three-dimensional (3D) extensions.

[0004] Block-based image coding schemes have in common that edge artifacts may appear along the edges of blocks. These artifacts result from the independent coding of coding blocks. These edge artifacts are often easily visible to the user. The goal in block-based image coding is to reduce the edge artifacts below a visibility threshold. This is done by performing loop filtering such as a deblocking filter, SAO, and an adaptive loop filter (ALF). The order of the filtering process is a deblocking filter, then a SAO, then an ALF. In addition, a cross-component adaptive loop filter (CC-ALF) is further used.

[0005] In particular, for the cross-component adaptive loop filter (CC-ALF), the luma sample values ​​are used to refine each chroma component. Processing needs to be done on both the Cb and Cr components, and cross-component adaptive loop filtering can be computationally complex and therefore may add additional pipeline latency, especially for hardware implementations. Summary of the Invention [Means for solving the problem]

[0006] In view of the above problems, the present disclosure aims to improve cross-component adaptive loop filtering and syntax elements for CCALF. The present disclosure relates, inter alia, to the objective of providing an apparatus, an encoder, a decoder, and a corresponding method that can perform cross-component adaptive loop filtering with reduced signaling overhead, in particular, the overhead of slice headers (in terms of number of bits) can be reduced and thus filtering can be more efficient.

[0007] Examples of the present disclosure provide apparatus and methods for encoding and decoding images that can improve coding performance, and thereby improve coding efficiency of video signals. The present disclosure is detailed in the examples and claims contained within this file.

[0008] Embodiments of the present application provide apparatuses and methods for encoding and decoding according to the independent claims, so that the complexity of the cross-component ALF may be reduced and the performance of the cross-component adaptive loop filter (CC-ALF) as an in-loop filter or a post-loop filter may be improved, respectively.

[0009] The above and other objects may be achieved by the subject matter of the independent claims. Further implementations are evident from the dependent claims, the description and the figures.

[0010] Particular embodiments are outlined in the accompanying independent claims, while other embodiments are outlined in the dependent claims.

[0011] According to a first aspect, the present disclosure provides a method for producing a semiconductor device comprising: performing a filtering process (such as a cross-component filtering process) by applying a cross-component adaptive loop filter (CC-ALF); generating a bitstream including a plurality of CC-ALF-related syntax elements (e.g., M CC-ALF-related syntax elements, M≧1, where M is an integer), the plurality of CC-ALF-related syntax elements indicating CC-ALF-related information; The present invention relates to a method of encoding implemented by an encoding device, comprising: A number of CC-ALF-related syntax elements are signaled at any one or more of the video parameter set (VPS) level, the sequence parameter set (SPS) level, the picture parameter set (PPS) level, the picture header, the slice header, or the tile header; or Several CC-ALF related syntax elements are signaled at the sequence parameter set (SPS) level and / or in the picture header.

[0012] This bitstream may be reduced in size while providing relevant information in the structure of the bitstream related to the level at which the present application is actually applied or to which the present application is concerned, making it possible to perform cross-component adaptive loop filtering with reduced signaling overhead; thus, filtering may become more efficient and improved coding efficiency is achieved.

[0013] According to a second aspect, the present disclosure provides a method for producing a method for detecting a pulmonary circulation, comprising: Parsing one or more syntax elements from a bitstream of a video signal, the syntax elements indicating cross-component adaptive loop filter (CC-ALF) related information, the syntax elements being obtained from one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header of the bitstream, or the syntax elements being obtained from a sequence parameter set (SPS) level and / or a picture header; performing a filtering process (such as a cross-component filtering process) by applying CC-ALF based on syntax elements or based on values ​​of syntax elements; The present invention relates to a method of decoding implemented by a decoding device, comprising:

[0014] This method may allow relevant information to be obtained from the bitstream during decoding, so that the bitstream reduces in size, allowing improved compression of the data, and the method may also allow performing cross-component adaptive loop filtering with reduced signaling overhead, and thus filtering may become more efficient and improved coding efficiency is achieved.

[0015] According to a third aspect, the present invention relates to an apparatus for decoding video data, the apparatus comprising a processing circuit for performing the method according to the first aspect of the present disclosure.

[0016] According to a fourth aspect, the present invention relates to an apparatus for encoding video data, the apparatus comprising a processing circuit adapted to perform the method according to the second aspect of the present disclosure.

[0017] The method according to the first aspect of the present disclosure may be performed by an apparatus according to the third aspect of the present disclosure. Moreover, further features and implementations of the method according to the third aspect of the present disclosure correspond to the features and implementations of the apparatus according to the first aspect of the present disclosure.

[0018] The method according to the second aspect of the present disclosure may be performed by an apparatus according to the fourth aspect of the present disclosure. Further features and implementations of the method according to the fourth aspect of the present disclosure correspond to the features and implementations of the apparatus according to the second aspect of the present disclosure.

[0019] According to a fifth aspect, the present disclosure relates to an apparatus for decoding a video stream, comprising a processor and a memory, the memory storing instructions for causing the processor to perform a method according to the first aspect.

[0020] According to a sixth aspect, the present disclosure relates to an apparatus for encoding a video stream, comprising a processor and a memory, the memory storing instructions for causing the processor to perform a method according to the second aspect.

[0021] According to a seventh aspect, a computer-readable storage medium is proposed having stored thereon instructions which, when executed, result in one or more processors configured to code video data, the instructions causing the one or more processors to perform a method according to the first or second aspect or any possible embodiment of the first or second aspect.

[0022] According to an eighth aspect, the present disclosure relates to a computer program comprising a program code for performing, when said program is executed on a computer, the method according to the first or second aspect or any possible embodiment of the first or second aspect.

[0023] The present disclosure provides a method of encoding implemented by an encoding device, the method comprising: applying a cross-component adaptive loop filter CC-ALF to refine the chroma components; generating a bitstream including a plurality of ALF-related syntax elements (CC-ALF-related syntax elements as used below), the plurality of CC-ALF-related syntax elements indicating ALF-related information (CC-ALF-related information as used below); Including, A plurality of CC-ALF-related syntax elements are signaled at any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header; The multiple CC-ALF related syntax elements include a first syntax element, which indicates whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level, and a second syntax element, which indicates whether the cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level.

[0024] Although it is generally specified herein that the first and second syntax elements are signaled at the SPS level, this does not mean that the signaling of at least the second syntax element is unconditional. Rather, this embodiment also encompasses implementations in which the second syntax element is signaled, for example, based on the value of the first syntax element and / or depending on the value of another syntax element as discussed further below.

[0025] The first syntax element may hereinafter be referred to as sps_alf_enabled_flag and the second syntax element may hereinafter be referred to as sps_ccalf_enabled_flag. However, this is merely the nomenclature used herein. The present invention is not limited to the particular names of the first or second syntax elements or any other syntax elements referred to herein.

[0026] It can be understood that CC-ALF is a special type of ALF and CC-ALF may depend on whether ALF is enabled, and therefore the first syntax element, i.e., sps_alf_enabled_flag, is also related to CC-ALF, and therefore CC-ALF related syntax elements may be used hereinafter. Similarly, the information indicated by the first syntax element, i.e., sps_alf_enabled_flag, is also related to CC-ALF, and therefore CC-ALF related information may be used hereinafter.

[0027] This allows, for example, information that may be used for all pictures in a sequence to be efficiently signaled at the SPS level, reducing the size of the bitstream by reducing the amount of redundant information, and enabling cross-component adaptive loop filtering to be performed with reduced signaling overhead; thus, filtering may become more efficient and improved coding efficiency may be achieved.

[0028] In one embodiment, the multiple CC-ALF related syntax elements include a third syntax element if the second syntax element indicates that CC-ALF is enabled, where the third syntax element is signaled in the picture header, and the third syntax element indicates whether CC-ALF is enabled for a current picture that includes multiple slices.

[0029] This third syntax element may also be called pic_ccalf_enabled_flag. In this embodiment, relevant CC-ALF information related to a complete picture may be signaled while keeping the size of the bitstream small. In one example, slice 1... slice N share the same CCALF information, and therefore the common information may be inherited directly from the picture header instead of each slice header transmitting them redundantly.

[0030] In a further embodiment, the plurality of CC-ALF related syntax elements includes a fourth syntax element if the second syntax element indicates that CC-ALF is enabled, where the fourth syntax element is signaled in the picture header, and where the fourth syntax element indicates whether CC-ALF for the Cb color component is enabled for a current picture of a video sequence associated with the bitstream.

[0031] The fourth syntax element may be indicated, for example, by pic_cross_component_alf_cb_enabled_flag. However, this is not required. The fourth syntax element may, for example, efficiently signal CC-ALF for the Cb color component while keeping the amount of redundant information in the slice header small.

[0032] For example, it may be further specified that when the fourth syntax element has a value of 1, it indicates that CC-ALF for the Cb color component is enabled for the current picture, and / or when the fourth syntax element has a value of 0, it indicates that CC-ALF for the Cb color component is disabled for the current picture.

[0033] In one embodiment, the plurality of CC-ALF related syntax elements includes a fifth syntax element if the fourth syntax element indicates that CC-ALF for the Cb color component is enabled for the current picture, the fifth syntax element is signaled in the picture header, and the fifth syntax element indicates a parameter set to which the Cb color component of all slices in the current picture refers. This syntax element may be indicated by pic_cross_component_alf_cb_aps_id. However, this is merely a naming and is not to be construed as limiting the present disclosure. This embodiment may allow for signaling parameter sets that are already provided for all slices of a picture at the picture level, thereby reducing the amount of redundant information.

[0034] The multiple CC-ALF related syntax elements may further be specified to include a seventh syntax element if the second syntax element indicates that CC-ALF is enabled, the seventh syntax element being signaled in the picture header, and specifying whether CC-ALF for the Cr color component is enabled for a current picture of the video sequence associated with the bitstream. This syntax element may be indicated, for example, by pic_cross_component_alf_cr_enabled_flag, without limiting the present disclosure. With this syntax element, enablement of CC-ALF for the Cr color component may be reliably signaled.

[0035] It may be further specified that if the seventh syntax element has a value of 1, it indicates that CC-ALF for the Cr color component is enabled for the current picture, and / or if the seventh syntax element has a value of 0, it indicates that CC-ALF for the Cr color component is disabled for the current picture.

[0036] In one embodiment, the multiple CC-ALF related syntax elements include an eighth syntax element, if the seventh syntax element indicates that CC-ALF for the Cr color component is enabled for the current picture, the eighth syntax element is signaled in the picture header, and the eighth syntax element indicates a parameter set associated with the Cr color component of all slices in the current picture. The eighth syntax element may be indicated by pic_cross_component_alf_cr_aps_id, which is just an example. This syntax element may provide information about related parameters that may be used during filtering.

[0037] It may be further specified that the fourth, fifth, sixth, seventh, eighth, and ninth syntax elements are signaled if the third syntax element indicates that CC-ALF is enabled for the current picture of the video sequence associated with the bitstream. If CC-ALF is disabled, these elements may be set to default values ​​and still be signaled in the bitstream. In the alternative, if CC-ALF is disabled, these syntax elements may not be signaled in the bitstream, thereby reducing its size since unused information is eliminated from the bitstream.

[0038] In a further embodiment, the plurality of CC-ALF related syntax elements includes a tenth syntax element if the second syntax element indicates that CC-ALF is enabled, the tenth syntax element being signaled in a slice header, the tenth syntax element indicating whether CC-ALF for the Cb color component is enabled for a current slice of a current picture of a video sequence associated with the bitstream. This syntax element may be referred to as slice_cross_component_alf_cb_enabled_flag, without this being intended to limit the present disclosure. This may provide efficient signaling of whether CC-ALF should be enabled for the Cb color component.

[0039] It may be further specified that if the tenth syntax element has a value of 1, it indicates that CCALF for the Cb color component is enabled for the current slice, and / or if the tenth syntax element has a value of 0, it indicates that CCALF for the Cb color component is disabled for the current slice.

[0040] In a further embodiment, the multiple CC-ALF related syntax elements include a tenth syntax element, if CC-ALF for the Cb color component is enabled for the current slice, the tenth syntax element is signaled in the slice header, and the tenth syntax element specifies a parameter set to which the Cb color component of the current slice refers. This syntax element may be indicated by pic_cross_component_alf_cb_aps_id, although this is not intended to limit the present disclosure.

[0041] In a further embodiment, the plurality of CC-ALF related syntax elements includes a twelfth syntax element, where if the second syntax element indicates that CC-ALF is enabled, the twelfth syntax element is signaled in the slice header, where the twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for a current slice of a current picture of a video sequence associated with the bitstream. The twelfth syntax element may be indicated, for example, by slice_cross_component_alf_cr_enabled_flag.

[0042] In a further embodiment, it is specified that when the twelfth syntax element has a value of 1, it indicates that CCALF for the Cr color component is enabled for the current slice, and / or when the twelfth syntax element is set to a value of 0, it indicates that CCALF for the Cr color component is disabled for the current slice.

[0043] The multiple CC-ALF related syntax elements may further be specified to include a thirteenth syntax element, which is signaled in a slice header when the twelfth syntax element indicates that CC-ALF for the Cr color component is enabled for the current slice, and which specifies a parameter set to which the Cr color component of the current slice refers. The thirteenth syntax element may be indicated, for example, by slice_cross_component_alf_cr_aps_id. This may efficiently provide information regarding parameters to be used for filtering associated with the Cr color component.

[0044] The second syntax element may be specified to be signaled if the first syntax element has a first value, or the second syntax element may be conditionally signaled based on at least the value of the first syntax element. If ALF is not enabled (signaled by the first syntax element), CC-ALF is also not enabled. In this case, by not providing the second syntax element, the size of the bitstream may be further reduced.

[0045] In one embodiment, the CC-ALF related syntax elements include a fourteenth syntax element signaled at the SPS level, the fourteenth syntax element indicating the type of input to the CC-ALF. The fourteenth syntax element may be indicated in ChromaArrayType, but this is not a limitation of the present disclosure.

[0046] More specifically, the second syntax element is signaled when the first syntax element has a first value and the fourteenth syntax element has a second value, which may be any value different from the specific value indicating that CC-ALF should not be enabled.

[0047] In a further particular embodiment, the second syntax element is signaled when the first syntax element has a value equal to one and the fourteenth syntax element has a value not equal to zero.

[0048] For any of the above embodiments, it may be specified that the CC-ALF operates as part of the adaptive loop filtering process and utilizes luma sample values ​​to refine at least one chroma component.

[0049] The present disclosure further provides a method of decoding implemented by a decoding device, the method comprising: Parsing a plurality of cross-component adaptive loop filter CC-ALF related syntax elements from the bitstream, wherein the plurality of syntax elements, the plurality of CC-ALF related syntax elements are obtained from any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header; a plurality of CC-ALF related syntax elements including a first syntax element indicating whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at a sequence level, the first syntax element being signaled at an SPS level; and a second syntax element indicating whether the cross-component adaptive loop filter is enabled at a sequence level, the second syntax element being signaled at an SPS level; performing a CC-ALF process using at least one of a plurality of CC-ALF related syntax elements; Includes.

[0050] Although it is generally specified herein that the first and second syntax elements are provided at the SPS level, this does not mean that at least the second syntax element is provided in the bitstream in an unconditional manner. Rather, this embodiment also encompasses implementations in which the second syntax element is part of the bitstream, for example, based on the value of the first syntax element and / or depending on the value of another syntax element as discussed further below.

[0051] The first syntax element may hereinafter be referred to as sps_alf_enabled_flag and the second syntax element may hereinafter be referred to as sps_ccalf_enabled_flag. However, this is merely the nomenclature used herein. The invention is not limited to the specific names of the first or second syntax elements or any other syntax elements mentioned herein.

[0052] This allows, for example, information that can be used for all pictures in a sequence to be efficiently provided to the decoder at the SPS level, reducing the size of the bitstream by reducing the amount of redundant information, and making it possible to perform cross-component adaptive loop filtering with reduced signaling overhead; thus, filtering may be more efficient and improved coding efficiency may be achieved.

[0053] The multiple CC-ALF related syntax elements may include a third syntax element if the second syntax element is obtained as an indication that CC-ALF is enabled, the third syntax element may be obtained from a picture header, and the third syntax element may be specified to indicate whether CC-ALF is enabled for a current picture that includes multiple slices. This third syntax element may also be referred to as pic_ccalf_enabled_flag. In this embodiment, relevant CC-ALF information related to a complete picture may be provided while keeping the size of the bitstream small.

[0054] In a further embodiment, the plurality of CC-ALF related syntax elements includes a fourth syntax element if the second syntax element is obtained as an indication that CC-ALF is enabled, the fourth syntax element being obtained from a picture header, the fourth syntax element indicating whether CC-ALF is enabled for a Cb color component for a current picture of the video sequence. The fourth syntax element may be indicated, for example, by pic_cross_component_alf_cb_enabled_flag. However, this is not required. The fourth syntax element may, for example, allow a decoder to efficiently enable CC-ALF for the Cb color component while keeping the amount of redundant information in the slice header small.

[0055] In a further embodiment, it may be specified that when the fourth syntax element has a value of 1, it indicates that CC-ALF for the Cb color component is enabled for the current picture, and / or when the fourth syntax element has a value of 0, it indicates that CC-ALF for the Cb color component is disabled for the current picture.

[0056] Furthermore, the plurality of CC-ALF related syntax elements may include a fifth syntax element if the fourth syntax element is obtained as indicating that CC-ALF for the Cb color component is enabled for the current picture, the fifth syntax element being obtained from the picture header, the fifth syntax element indicating a parameter set associated with the Cb color component of all slices in the current picture. This syntax element may be indicated by pic_cross_component_alf_cb_aps_id. However, this is merely a naming and is not to be construed as limiting the present disclosure. This embodiment may enable providing parameter sets that are already provided for all slices of a picture at the picture level, thereby reducing the amount of redundant information.

[0057] In a further embodiment, the plurality of CC-ALF related syntax elements includes a seventh syntax element when the second syntax element is obtained as an indication that CC-ALF is enabled, the seventh syntax element being obtained from a picture header, the seventh syntax element specifying whether CC-ALF is enabled for the Cr color component for a current picture of a video sequence associated with the bitstream. This syntax element may be indicated, for example, by pic_cross_component_alf_cr_enabled_flag, without limiting the present disclosure. With this syntax element, CC-ALF, a decoder can reliably determine whether CC-ALF is enabled for the Cr color component.

[0058] It may be specified that when the seventh syntax element has a value of 1, it indicates that CC-ALF for the Cr color component is enabled for the current picture, and / or when the seventh syntax element has a value of 0, it indicates that CC-ALF for the Cr color component is disabled for the current picture.

[0059] In a further embodiment, the plurality of CC-ALF related syntax elements includes an eighth syntax element, when the seventh syntax element is obtained as indicating that CC-ALF for the Cr color component is enabled for the current picture, the eighth syntax element is obtained from the picture header, and the eighth syntax element indicates a parameter set associated with the Cr color component of all slices in the current picture. The eighth syntax element may be indicated by pic_cross_component_alf_cr_aps_id, which is merely an example. This syntax element may provide information about related parameters to be used during filtering.

[0060] It may be further specified that the fourth syntax element, the fifth syntax element, the sixth syntax element, the seventh syntax element, the eighth syntax element, and the ninth syntax element are obtained if the third syntax element is obtained as indicating that CC-ALF is enabled for a current picture of a video sequence associated with the bitstream.

[0061] In one embodiment, the plurality of CC-ALF related syntax elements includes a tenth syntax element when the second syntax element is obtained as indicating that CC-ALF is enabled, the tenth syntax element being obtained from a slice header, the tenth syntax element indicating whether CC-ALF for the Cb color component is enabled for a current slice of a current picture of a video sequence associated with the bitstream. This syntax element may be referred to as slice_cross_component_alf_cb_enabled_flag, without intending to limit this disclosure. This allows a decoder to determine whether CC-ALF should be enabled for a Cb color component for which it may be provided.

[0062] It may be further specified that if the tenth syntax element has a value of 1, it indicates that CCALF for the Cb color component is enabled for the current slice, and / or if the tenth syntax element has a value of 0, it indicates that CCALF for the Cb color component is disabled for the current slice.

[0063] In one embodiment, the plurality of CC-ALF related syntax elements includes an eleventh syntax element, where a tenth syntax element is obtained as indicating that CC-ALF for the Cb color component is enabled for the current slice, the tenth syntax element is obtained from a slice header, and the tenth syntax element specifies a parameter set to which the Cb color component of the current slice refers. This syntax element may be denoted by pic_cross_component_alf_cb_aps_id, although this is not intended to limit the present disclosure.

[0064] The plurality of CC-ALF related syntax elements may include a twelfth syntax element, where the second syntax element is obtained as indicating that CC-ALF is enabled, the twelfth syntax element being obtained from a slice header, the twelfth syntax element indicating whether CC-ALF for the Cb color component is enabled for a current slice of a current picture of a video sequence associated with the bitstream. The twelfth syntax element may be specified to be indicated, for example, by slice_cross_component_alf_cr_enabled_flag.

[0065] In a more specific embodiment, if the twelfth syntax element has a value of 1, it indicates that CCALF for the Cr color component is enabled for the current slice, and / or if the twelfth syntax element has a value of 0, it indicates that CCALF for the Cr color component is disabled for the current slice.

[0066] The multiple CC-ALF related syntax elements may further be specified to include a thirteenth syntax element when the twelfth syntax element is obtained as indicating that CC-ALF for the Cr color component is enabled for the current slice, the thirteenth syntax element being obtained from a slice header, and specifying a parameter set to which the Cr color component of the current slice refers. The thirteenth syntax element may be indicated, for example, by slice_cross_component_alf_cr_aps_id. This may efficiently provide information regarding parameters to be used for filtering associated with the Cr color component.

[0067] In one embodiment, the second syntax element is obtained if the first syntax element has a first value, or the second syntax element is obtained based on at least the value of the first syntax element.

[0068] The plurality of CC-ALF related syntax elements may further be specified to include a fourteenth syntax element obtained from the SPS level, the fourteenth syntax element indicating a type of input to the CC-ALF. The fourteenth syntax element may be indicated by ChromaArrayType, although this is not a limitation of the present disclosure.

[0069] More specifically, the second syntax element may be obtained when the first syntax element has a first value and the fourteenth syntax element has a second value, which may be any value different from the value that indicates or may be used to indicate that CC-ALF should be enabled.

[0070] More specifically, it may be specified that the second syntax element is obtained when the first syntax element has a value equal to 1 and the fourteenth syntax element has a value not equal to 0.

[0071] For any of the above embodiments, it may be further specified that the CC-ALF operates as part of an adaptive loop filter process and utilizes luma sample values ​​to refine at least one chroma component.

[0072] The present disclosure further relates to a device for encoding video data, the device comprising: A video data memory; Video Encoder and and a video encoder configured to apply a cross-component adaptive loop filter CC-ALF to refine chroma components and generate a bitstream including a plurality of CC-ALF-related syntax elements, the plurality of CC-ALF-related syntax elements indicating CCALF-related information, the plurality of CC-ALF-related syntax elements being signaled at any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header, the plurality of CC-ALF-related syntax elements including a first syntax element indicating whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at a sequence level and signaled at an SPS level, and a second syntax element indicating whether the cross-component adaptive loop filter is enabled at a sequence level and signaled at an SPS level, whereby the advantages of the encoding method mentioned above are provided to, for example, an encoder for encoding a video.

[0073] The present disclosure also relates to a device for decoding video data, the device comprising: A video data memory; 1. A video decoder configured to: parse a plurality of cross-component adaptive loop filter (CC-ALF) related syntax elements from a bitstream, the plurality of syntax elements being obtained from any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header, the plurality of CC-ALF related syntax elements including a first syntax element indicating whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at a sequence level and signaled at the SPS level; and a second syntax element indicating whether the cross-component adaptive loop filter is enabled at the sequence level and signaled at the SPS level; and performing a CC-ALF process using at least one of the plurality of CC-ALF related syntax elements. This realizes the advantage of reduced size of the bitstream while still obtaining reliable decoding of the video.

[0074] Furthermore, an encoder for encoding a video is provided, the encoder comprising processing circuitry for performing a method according to any of the above embodiments, whereby the advantages of the above mentioned encoding method are provided for example to an encoder for encoding a video.

[0075] Further, a decoder for decoding a bitstream is provided, the decoder comprising processing circuitry for performing a method according to any of the above embodiments.

[0076] This achieves the advantage of reduced size of the bitstream while still obtaining reliable decoding of the video.

[0077] Provided within the present disclosure is a computer-readable storage medium having stored thereon computer-executable instructions that, when executed by a computing device, cause the computing device to perform a method according to any of the above embodiments.

[0078] The present disclosure further provides an encoded bitstream for a video signal by including a plurality of CC-ALF-related syntax elements, the plurality of CC-ALF-related syntax elements indicating CC-ALF-related information; The plurality of CC-ALF-related syntax elements are signaled at any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header; The multiple CC-ALF related syntax elements include a first syntax element, which indicates whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level, and a second syntax element, which indicates whether the cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level.

[0079] The bitstream can be reduced in size while providing information to be used in decoding when applying CC-ALF in a robust manner.

[0080] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims.

[0081] In the following, embodiments of the invention are explained in more detail with reference to the accompanying figures and drawings. [Brief description of the drawings]

[0082] [Figure 1A]1 is a block diagram illustrating an example of a video coding system configured to implement embodiments of the present invention. [Figure 1B] 2 is a block diagram illustrating another example of a video coding system configured to implement embodiments of the present invention. [Diagram 2] FIG. 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention. [Diagram 3] 1 is a block diagram illustrating an exemplary structure of a video coder configured to implement embodiments of the present invention. [Figure 4] FIG. 1 is a block diagram showing an example of an encoding device or a decoding device. [Diagram 5] FIG. 13 is a block diagram showing another example of an encoding device or a decoding device. [Figure 6] (a) is a diagram of the placement of a CC ALF relative to other loop filters, and (b) and (c) are diagrams of a diamond-shaped filter. [Figure 7] FIG. 1 illustrates that in the prior art, every slice header must transmit CCALF data. [Figure 8] A figure showing an example of improved syntax elements of CC-ALF. [Figure 9A] FIG. 2 is a conceptual diagram illustrating the nominal relative vertical and horizontal positions of luma and chroma samples. [Figure 9B] FIG. 2 is a schematic diagram illustrating co-located luma and chroma blocks. [Figure 10] 31 is a block diagram showing an exemplary structure of a content delivery system 3100 for implementing a content distribution service. [Figure 11] FIG. 2 is a block diagram illustrating the structure of an example of a terminal device. [Figure 12] FIG. 2 is a block diagram illustrating an example of an encoder. [Figure 13] FIG. 2 is a block diagram illustrating an example of a decoder. [Figure 14] 1 is a flow diagram of a method for encoding video according to one embodiment. [Figure 15] 2 is a flow diagram of a method for decoding video according to one embodiment. [Figure 16] 5 is a schematic diagram of a data structure 5000, i.e. a video bitstream 500. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0083] In the following, identical reference signs refer to identical or at least functionally equivalent features, unless expressly specified otherwise.

[0084] The following definitions are for reference: Coding block: An M × N block of samples for some values ​​of M and N such that the division of the CTB into coding blocks is a partition. Coding tree block (CTB): An N×N block of samples for some value of N, such that the division of the components into the CTB is a partition. Coding tree unit (CTU): A CTB of luma samples, two corresponding CTBs of chroma samples for a picture with a three sample arrangement, or a CTB of samples for a picture coded using three separate color planes and a syntax structure used to code a monochrome picture or samples. Coding unit (CU): A coding block of luma samples and two corresponding coding blocks of chroma samples for a picture with a three sample arrangement, or a coding block of samples for a picture coded using three separate color planes and a syntax structure used to code a monochrome picture or samples. Component: An array or a single sample from one of the three arrays (luma and two chroma) that make up a picture in 4:2:0, 4:2:2 or 4:4:4 color formats, or an array or a single sample of an array that makes up a picture in monochrome formats.

[0085] In the following description, reference is made to the accompanying figures which form a part of this disclosure and which illustrate, by way of example, certain aspects of embodiments of the invention or in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical changes not shown in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.

[0086] For example, it is understood that disclosure related to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, when one or more particular method steps are described, the corresponding device may include one or more units, e.g., functional units, for performing the described one or more method steps, even if such one or more units are not explicitly described or shown in the figures. On the other hand, for example, when a particular apparatus is described based on one or more units, e.g., functional units, the corresponding method may include one step for performing the function of one or more units (e.g., one step for performing the function of one or more units, or multiple steps, each performing one or more functions of multiple units), even if such one or more steps are not explicitly described or shown in the figures. Furthermore, it is understood that features of various exemplary embodiments and / or aspects described herein may be combined with each other, unless specifically stated otherwise.

[0087] Video coding typically refers to the processing of a sequence of pictures forming a video or a video sequence. Instead of the term "picture", the terms "frame" or "image" may be used synonymously in the field of video coding. Video coding (or coding in general) includes two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed at the destination side and typically involves the reverse processing compared to the encoder to reconstruct the video picture. The embodiments referring to "coding" of a video picture (or pictures in general) should be understood to relate to "encoding" or "decoding" of the video picture or the respective video sequence. The combination of the encoding and decoding parts is also called a codec (coding and decoding).

[0088] In the case of lossless video coding, the original video picture may be reconstructed, i.e., the reconstructed video picture has the same quality as the original video picture (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, further compression, for example by quantization, is performed to reduce the amount of data representing the video picture that cannot be completely reconstructed at the decoder, i.e., the quality of the reconstructed video picture is low or poor compared to the quality of the original video picture.

[0089] Some video coding standards belong to the group of "lossy hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, at the encoder, the video is typically processed, i.e., encoded, at the block (video block) level, for example, by using spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to generate a predictive block, subtracting the predictive block from a current block (the block currently being / to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression), while at the decoder side, an inverse process is applied to the coded and compressed block compared to the encoder in order to reconstruct the current block for representation. Furthermore, the encoder replicates the decoder processing loop so that both generate the same predictions (eg, intra-prediction and inter-prediction) and / or reconstructions for processing, i.e., coding, subsequent blocks.

[0090] In the following, embodiments of a video coding system 10, a video encoder 20, and a video decoder 30 are described with reference to FIGS.

[0091] 1A is a schematic block diagram illustrating an example video coding system 10, e.g., video coding system 10 (or coding system 10 for short), that may utilize techniques of the present application. A video encoder 20 (or encoder 20 for short) and a video decoder 30 (or decoder 30 for short) of video coding system 10 represent examples of devices that may be configured to perform techniques according to various examples described in the present application.

[0092] As shown in FIG. 1A, coding system 10 includes, for example, a source device 12 configured to provide encoded picture data 21 to a destination device 14 for decoding the encoded picture data 13.

[0093] The source device 12 may comprise an encoder 20, and may additionally, i.e. optionally, comprise a picture source 16, a pre-processor (or pre-processing unit) 18, such as a picture pre-processor 18, and a communications interface or unit 22.

[0094] Picture source 16 comprises or can be any kind of picture capture device, e.g., a camera for capturing real-world pictures, and / or any kind of picture generation device, e.g., a computer graphics processor for generating computer-animated pictures, or any kind of other device for obtaining and / or providing real-world pictures, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). Picture source can be any kind of memory or storage that stores any of the aforementioned pictures.

[0095] To distinguish from the pre-processor 18 and the processing performed by the pre-processing unit 18 , the picture or picture data 17 may also be referred to as a raw picture or raw picture data 17 .

[0096] The pre-processor 18 may be configured to receive the (raw) picture data 17 and perform pre-processing on the picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. The pre-processing performed by the pre-processor 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal. It may be understood that the pre-processing unit 18 is an optional component.

[0097] Video encoder 20 may be configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details are described below, eg, with reference to FIG. 2).

[0098] The communications interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) via the communications channel 13 to another device, e.g., the destination device 14 or any other device, for storage or direct reconstruction.

[0099] Destination device 14 may comprise a decoder 30 (e.g., a video decoder 30), and may additionally, i.e. optionally, comprise a communications interface or unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.

[0100] The communications interface 28 of the destination device 14 may be configured to receive the encoded picture data 21 (or any further processed version thereof), for example, directly from the source device 12 or from any other source, for example a storage device, for example an encoded picture data storage device, and to provide the encoded picture data 21 to a decoder 30.

[0101] The communication interface 22 and the communication interface 28 may be configured to transmit or receive the encoded picture data 21 or the encoded data 13 via a direct communication link between the source device 12 and the destination device 14, e.g., a direct wired or wireless connection, or via any type of network, e.g., a wired or wireless network or any combination thereof, or any type of private and public network, or any combination thereof.

[0102] The communications interface 22 may be configured, for example, to package the encoded picture data 21 into a suitable format, e.g., packets, and / or process the encoded picture data using any type of transmission coding or processing, for transmission over a communications link or network.

[0103] Communications interface 28, which forms a counterpart of communications interface 22, may be configured, for example, to receive transmitted data and process the transmitted data using any type of corresponding transmission decoding or processing and / or unpackaging to obtain encoded picture data 21.

[0104] Both or at least one of communication interface 22 and communication interface 28 may be configured as a unidirectional communication interface, as indicated by the arrow for communication channel 13 in FIG. 1A pointing from source device 12 to destination device 14, or as a bidirectional communication interface, e.g., configured to send and receive messages, e.g., set up connections, and confirm and exchange communications links and / or any other information related to data transmission, e.g., encoded picture data transmission.

[0105] The decoder 30 may be configured to receive encoded picture data 21 and provide decoded picture data 31 or decoded pictures 31 (further details are described below, for example based on Figure 3 or Figure 5).

[0106] A post-processor 32 of destination device 14 may be configured to post-process the decoded picture data 31 (also referred to as reconstructed picture data), e.g., a decoded picture 31, to obtain post-processed picture data 33, e.g., a post-processed picture 33. The post-processing performed by post-processing unit 32 may include, for example, color format conversion (e.g., from RGB to YCbCr), color correction, cropping, or resampling, or any other processing, for example, to prepare the decoded picture data 31 for display by a display device 34.

[0107] A display device 34 of destination device 14 may be configured to receive the post-processed picture data 33, for example, for displaying the picture to a user or viewer. The display device 34 may be or comprise any type of display, e.g., an integrated or external display or monitor, for presenting the reconstructed picture. The display may comprise, for example, a liquid crystal display (LCD), an organic light emitting diode (OLED) plasma display, a projector, a micro-LED display, a liquid crystal display (LCoS), a digital light processor (DLP), or any type of other display.

[0108] 1A illustrates source device 12 and destination device 14 as separate devices, an embodiment of the devices may include both or both functionality, source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software or by separate hardware and / or software or any combination thereof.

[0109] The source device and / or the destination device may further be implemented using dedicated hardware and / or software. For example, one or both of these devices may be implemented using hardware specially designed to achieve one or more of the functions mentioned above and below. Alternatively or additionally, one or more of the functions described above and below may be implemented using specially designed software that may run on general-purpose hardware such as a processor. Furthermore, combinations of the above are also envisioned, and the source device and / or the destination device may be implemented using a combination of dedicated hardware for achieving one or more functions and software for achieving one or more other functions.

[0110] As will be clear to a person skilled in the art based on the description, the presence and (exact) division of functions or functions of different units within source device 12 and / or destination device 14 as shown in FIG. 1A may vary depending on the actual device and application.

[0111] The encoder 20 (e.g., video encoder 20) or the decoder 30 (e.g., video decoder 30), or both the encoder 20 and the decoder 30, may be implemented via processing circuitry as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated to video coding, or any combination thereof. The encoder 20 may be implemented via processing circuitry 46 to embody various modules as discussed with respect to the encoder 20 of FIG. 2 and / or any other encoder system or subsystem described herein. The decoder 30 may be implemented via processing circuitry 46 to embody various modules as discussed with respect to the decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. The processing circuitry may be configured to perform various operations, as discussed below. 5, where the techniques are implemented partially in software, a device may store instructions for the software in a suitable non-transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Either video encoder 20 and video decoder 30 may be integrated as part of a combined encoder / decoder (codec) in a single device, for example, as shown in FIG. 1B.

[0112] Source device 12 and destination device 14 may include any of a wide variety of devices, including any type of handheld or fixed device, e.g., a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or content distribution server), a broadcast receiver device, a broadcast transmitter device, and the like, and may use no operating system or any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

[0113] In some cases, the video coding system 10 shown in FIG. 1A is merely an example, and techniques of the present application may be applied to video coding settings (e.g., video encoding or video decoding) that do not necessarily include data communication between an encoding device and a decoding device. In other examples, data is retrieved from local memory, streamed over a network, etc. A video encoding device may encode data and store it in memory, and / or a video decoding device may retrieve data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data to memory and / or retrieve data from memory and decode it.

[0114] For ease of explanation, embodiments of the present invention are described herein by reference to, for example, High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next-generation video coding standard developed by the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will appreciate that embodiments of the present invention are not limited to HEVC or VVC.

[0115] Encoder and encoding method FIG. 2 shows a schematic block diagram of an example video encoder 20 that may be configured to implement the techniques of this disclosure. In the example of FIG. 2, the video encoder 20 includes an input 201 (or an input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270, and an output 272 (or an output interface 272). The mode selection unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a partition division unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder with a hybrid video codec.

[0116] The residual calculation unit 204, the transform processing unit 206, the quantization unit 208, and the mode selection unit 260 may be referred to as forming a forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 may be referred to as forming a backward signal path of the video encoder 20, which corresponds to the signal path of the decoder (see the video decoder 30 in FIG. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 may also be referred to as forming a "built-in decoder" of the video encoder 20.

[0117] Pictures and picture partitioning (pictures and blocks) Encoder 20 may be configured to receive, for example, via input 201, picture 17 (or picture data 17), e.g., a picture of a sequence of pictures forming a video or a video sequence. The received picture or picture data may also be a preprocessed picture 19 (or preprocessed picture data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be called a current picture or a picture to be coded (especially in video coding, to distinguish the current picture from other pictures, e.g., previously encoded and / or decoded pictures of the same video sequence, i.e., a video sequence that also includes the current picture).

[0118] A (digital) picture is or can be considered as a two-dimensional array or matrix of samples with intensity values. The samples in the array are sometimes called pixels (short for picture element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the picture. For color representation, typically three color components are used, i.e. a picture can be represented in or contain three sample arrays. In an RGB format or color space, a picture comprises corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented in a luminance and chrominance format or color space, e.g. YCbCr, which includes a luminance component denoted by Y (sometimes L is also used instead) and two chrominance components denoted by Cb and Cr. The luminance (or luma for short) component Y represents brightness or gray level intensity (e.g., as in a grayscale picture), and the two chrominance (or chroma for short) components Cb and Cr represent chromaticity or color information components. Thus, a picture in YCbCr format comprises a luminance sample array of luminance sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). A picture in RGB format may be converted or transformed to YCbCr format, or vice versa, a process also known as color transformation or conversion. If the picture is monochrome, the picture may comprise only a luminance sample array. Thus, a picture may be, for example, an array of luma samples in a monochrome format, or an array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats.

[0119] An embodiment of video encoder 20 may comprise a picture partitioning unit (not shown in FIG. 2) configured to partition picture 17 into multiple (typically non-overlapping) picture blocks 203. These blocks may also be called root blocks, macroblocks (H.264 / AVC), or coding tree blocks (CTBs) or coding tree units (CTUs) (H.265 / HEVC and VVC). The picture partitioning unit may be configured to use the same block size for all pictures of a video sequence and a corresponding grid that defines the block sizes, or to vary the block size between pictures, subsets of pictures, or groups of pictures, and to partition each picture into corresponding blocks.

[0120] In a further embodiment, the video encoder may be configured to directly receive block 203 of picture 17, e.g., one, some, or all of the blocks that form picture 17. Picture block 203 may also be referred to as a current picture block or a picture block to be coded.

[0121] Similar to the picture 17, the picture block 203 is or may be considered as a two-dimensional array or matrix of samples with intensity values ​​(sample values), again with smaller dimensions than the picture 17. In other words, the block 203 may comprise, for example, one sample array (e.g., a luma array for a monochrome picture 17, or a luma or chroma array for a color picture), or three sample arrays (e.g., a luma array and two chroma arrays for a color picture 17), or any other number and / or type of arrays depending on the color format applied. The number of samples in the horizontal and vertical directions (or axes) of the block 203 defines the size of the block 203. Thus, the block may be, for example, an M×N (M columns×N rows) array of samples, or an M×N array of transform coefficients.

[0122] An embodiment of video encoder 20 as shown in FIG. 2 may be configured to encode picture 17 block-by-block, eg, encoding and prediction are performed for each block 203.

[0123] An embodiment of video encoder 20 as shown in FIG. 2 may be further configured to partition and / or encode a picture by using slices (also referred to as video slices), where a picture may be partitioned or encoded using one or more slices (typically non-overlapping), each of which may comprise one or more blocks (e.g., CTUs), or one or more groups of blocks (e.g., tiles (H.265 / HEVC and VVC) or bricks (VVC)).

[0124] An embodiment of video encoder 20 as shown in FIG. 2 may be further configured to partition and / or encode a picture by using slice / tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles), where a picture may be partitioned or encoded using one or more slice / tile groups (typically non-overlapping), where each slice / tile group may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles, where each tile may be, for example, rectangular in shape and may comprise one or more blocks (e.g., CTUs), e.g., full or fragmentary blocks.

[0125] Residual calculation The residual calculation unit 204 may be configured to calculate the residual block 205 (also referred to as residual 205) based on the picture block 203 and the prediction block 265 (further details regarding the prediction block 265 are provided later), for example, by subtracting sample values ​​of the prediction block 265 from sample values ​​of the picture block 203 on a sample-by-sample (pixel-by-pixel) basis to obtain the residual block 205 in the sample domain.

[0126] conversion The transform processing unit 206 may be configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values ​​of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207, which may also be referred to as transform residual coefficients, may represent the residual block 205 in the transform domain.

[0127] The transform processing unit 206 may be configured to apply an integer approximation of a DCT / DST, such as the transform specified for H.265 / HEVC. Compared to an orthogonal DST transform, such an integer approximation is typically scaled by a particular factor. To maintain the norm of the residual block processed by the forward and inverse transforms, an additional scaling factor is applied as part of the transform processing. The scaling factor is typically selected based on particular constraints, such as scaling factors that are powers of two for shift operations, bit depth of the transform coefficients, a trade-off between accuracy and implementation cost, etc. A particular scaling factor may be specified, for example, for the inverse transform by the inverse transform processing unit 212 (and corresponding inverse transform by the inverse transform processing unit 312 in the video decoder 30, for example), and a corresponding scaling factor for the forward transform by the transform processing unit 206 in the encoder 20 may be specified accordingly.

[0128] An embodiment of the video encoder 20 (respectively the transform processing unit 206) may be configured to output, e.g., encoded or compressed transform parameters, e.g., one or more types of transform, e.g., directly or via the entropy coding unit 270, such that the video decoder 30 may receive and use the transform parameters for decoding.

[0129] Quantization The quantization unit 208 may be configured to quantize the transform coefficients 207, for example by applying scalar quantization or vector quantization, to obtain quantized coefficients 209. The quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.

[0130] The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient may be truncated to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be changed by adjusting a quantization parameter (QP). For example, in the case of scalar quantization, different scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to a finer quantization and a larger quantization step size corresponds to a coarser quantization. The applicable quantization step sizes may be indicated by a quantization parameter (QP). The quantization parameter may be, for example, an index into a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to fine quantization (small quantization step size) and a large quantization parameter may correspond to coarse quantization (large quantization step size), or vice versa. Quantization may include division by the quantization step size, and corresponding and / or inverse dequantization by, for example, the inverse quantization unit 210 may include multiplication by the quantization step size. Some standards, for example, HEVC, embodiments may be configured to use a quantization parameter to determine the quantization step size. In general, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of an equation that includes a division. Additional scaling factors may be introduced for quantization and dequantization to restore the norm of the residual block that may be changed due to the scaling used in the fixed-point approximation of the equation for the quantization step size and the quantization parameter. In one example implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, customized quantization tables may be used, for example, signaled in the bitstream from the encoder to the decoder. Quantization is a lossy operation, and the loss increases with increasing quantization step size.

[0131] An embodiment of video encoder 20 (respectively quantization unit 208) may be configured to output an encoded quantization parameter (QP), e.g., directly or via entropy encoding unit 270, such that video decoder 30 may receive and apply the quantization parameter for decoding.

[0132] inverse quantization Inverse quantization unit 210 may be configured to apply the inverse quantization of quantization unit 208 to the quantized coefficients to obtain dequantized coefficients 211, e.g., by applying the inverse of the quantization scheme applied by quantization unit 208, based on or using the same quantization step size as quantization unit 208. The dequantized coefficients 211, which may also be referred to as dequantized residual coefficients 211, typically correspond to the transform coefficients 207, although they are not identical to the transform coefficients due to losses due to quantization.

[0133] Reverse transformation The inverse transform processing unit 212 may be configured to apply an inverse transform of the transform applied by the transform processing unit 206, e.g., an inverse discrete cosine transform (DCT), or an inverse discrete sine transform (DST), or other inverse transform, to obtain a reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 213.

[0134] Rebuild The reconstruction unit 214 (e.g., an adder or analog adder 214) may be configured to add the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain a reconstructed block 215 in the sample domain, for example, by adding sample values ​​of the reconstructed residual block 213 and sample values ​​of the prediction block 265 sample by sample.

[0135] filtering The loop filter unit 220 (or "loop filter" 220 for short) may be configured to filter the reconstructed block 215 to obtain a filtered block 221, or in general, filter the reconstructed samples to obtain filtered sample values. The loop filter unit is configured, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter unit 220 may comprise one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, for example, an adaptive loop filter (ALF), a noise suppression filter (NSF), or any combination thereof. In one example, the loop filter unit 220 may comprise a deblocking filter, a SAO filter, and an ALF filter. The order of the filtering process may be deblocking filter, SAO, and ALF. In another example, a process called luma mapping with chroma scaling (LMCS) (i.e., adaptive in-loop reshaper) is added. This process is performed before deblocking. In another example, the deblocking filter process may also be applied to internal sub-block edges, such as affine sub-block edges, ATMVP sub-block edges, sub-block transform (SBT) edges, and intra sub-partition (ISP) edges.

[0136] To effectively remove blocking artifacts that occur for large "blocks", VVC uses a longer tap deblocking filter. Here, the term "block" is used in a very general way and may refer to a "transform block (TB), prediction block (PB), or coding unit block (CU)". The longer tap filter is applied to both luma and chroma components. The longer tap filter for the luma component modifies up to 7 samples for each line of samples that are perpendicular and adjacent to an edge, and is applied to blocks with a size of 32 samples or more in the direction of deblocking, i.e., for vertical edges, the block width should be 32 samples or more, and for horizontal edges, the block height should be 32 samples or more.

[0137] The chroma longer tap filter is applied to a chroma block when both blocks adjacent to a given edge have a size of 8 samples or more, modifying up to 3 samples on either side of the edge. Thus, for a vertical edge, the block width of both blocks adjacent to the edge should be 8 samples or more, and for a horizontal edge, the block height of both blocks adjacent to the edge should be 8 samples or more. Although loop filter unit 220 is shown in FIG. 2 as being an in-loop filter, in other configurations, loop filter unit 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221.

[0138] An embodiment of video encoder 20 (respectively loop filter unit 220) may be configured to output loop filter parameters (such as SAO filter parameters or ALF filter parameters or LMCS parameters) encoded, e.g., directly or via entropy encoding unit 270, such that decoder 30 may receive and apply the same loop filter parameters or the respective loop filters for decoding.

[0139] Decoded Picture Buffer Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures, or reference picture data in general, for encoding video data by video encoder 20. DPB 230 may be any type of memory, including dynamic random access memory (DRAM), including synchronous dynamic random access memory (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), and the like. The decoded picture buffer (DPB) 230 may be formed by any of a variety of memory devices, such as a memory device, a RAM, or other type of memory device. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may further be configured to store other previously filtered blocks, e.g., previously reconstructed and filtered blocks 221, of the same current picture or different pictures, e.g., previously reconstructed pictures, to provide, e.g., for inter prediction, a complete previously reconstructed, i.e., decoded picture (and corresponding reference blocks and samples), and / or a partially reconstructed current picture (and corresponding reference blocks and samples). The decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or generally unfiltered reconstructed samples, e.g., if the reconstructed blocks 215 have not been filtered by the loop filter unit 220, or any other further processed version of the reconstructed blocks or samples.

[0140] Mode Selection (Partitioning and Prediction) The mode selection unit 260 comprises a partitioning unit 262, an inter prediction unit 244, and an intra prediction unit 254, and is configured to receive or obtain original picture data, e.g., original block 203 (current block 203 of current picture 17), and reconstructed pictures, e.g., filtered and / or unfiltered reconstructed samples or blocks, of the same (current) picture and / or from one or more previously decoded pictures, e.g., from the decoded picture buffer 230 or other buffer (e.g., line buffer, not shown). The reconstructed picture data is used as a reference picture block for prediction, e.g., inter prediction or intra prediction, to obtain a prediction block 265 or a predictor 265.

[0141] The mode selection unit 260 may be configured to determine or select a partitioning (including no partitioning) and a prediction mode (intra or inter prediction mode) for the current block prediction mode, and generate a corresponding prediction block 265 used for calculation of the residual block 205 and reconstruction of the reconstructed block 215.

[0142] An embodiment of the mode selection unit 260 may be configured to select a partitioning and prediction mode (e.g., from those supported by or available to the mode selection unit 260) that provides the best match, or in other words, the smallest residual (which means better compression for transmission or storage), or the smallest signaling overhead (which means better compression for transmission or storage), or that considers or balances both. The mode selection unit 260 may be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., to select the prediction mode that provides the smallest rate distortion. Terms such as "best," "minimum," "optimum," etc. in this context do not necessarily refer to an overall "best," "minimum," "optimum," etc., or may refer to the achievement of a termination or selection criterion, such as a value that exceeds or falls below a threshold or other constraint that potentially leads to a "suboptimal selection," but that reduces complexity and processing time.

[0143] In other words, the partitioning unit 262 may be configured to partition pictures from a video sequence into a sequence of coding tree units (CTUs), and the CTUs 203 may be further partitioned into smaller block partitions or sub-blocks (again forming blocks), e.g., using quad-tree partitioning (QT), binary partitioning (BT), triple-tree partitioning (TT), or any combination thereof iteratively, e.g., to perform prediction on a block partitioning or sub-block basis, and the mode selection includes selecting a tree structure of the partitioned blocks 203, and a prediction mode is applied to each of the block partitions or sub-blocks.

[0144] The partitioning (eg, by partitioning unit 260) and prediction processes (by inter prediction unit 244 and intra prediction unit 254) performed by the exemplary video encoder 20 are described in more detail below.

[0145] Partitioning The partitioning unit 262 may be configured to partition a picture from a video sequence into a sequence of coding tree units (CTUs), and the partitioning unit 262 may partition (or divide) the coding tree units (CTUs) 203 into smaller partitions, e.g., smaller blocks of square or rectangular size. For a picture with a three-sample arrangement, a CTU is composed of an N×N block of luma samples and two corresponding blocks of chroma samples. The maximum allowed size of a luma block in a CTU is specified to be 128×128 in the developing Versatile Video Coding (VVC) standard, but may be specified in the future to a value other than 128×128, e.g., 256×256. The CTUs of a picture may be clustered / grouped as slice / tile groups, tiles, or bricks. A tile covers a rectangular area of ​​a picture, and a tile may be divided into one or more bricks. A brick is composed of several CTU rows in a tile. A tile that is not partitioned into multiple bricks may be referred to as a brick. However, a brick is a true subset of a tile and is not referred to as a tile. There are two modes of tile groups supported in VVC: raster scan slice / tile group mode and rectangular slice mode. In raster scan tile group mode, a slice / tile group contains a sequence of tiles in a raster scan of a picture. In rectangular slice mode, a slice contains several bricks of a picture that collectively form a rectangular region of the picture. The bricks in a rectangular slice are in order of the brick raster scan of the slice. These smaller blocks (sometimes called sub-blocks) may be further partitioned into even smaller partitions.This is also called tree partitioning or hierarchical tree partitioning, where for example, a root block at root tree level 0 (hierarchical level 0, depth 0) may be recursively partitioned, for example, into two or more blocks at the next lower tree level, for example, into nodes at tree level 1 (hierarchical level 1, depth 1), and these blocks may be partitioned again into two or more blocks at the next lower level, for example, tree level 2 (hierarchical level 2, depth 2), until the partitioning terminates, for example, because a termination criterion is met, for example, because a maximum tree depth or a minimum block size has been reached. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses a partitioning into two partitions is called a binary-tree (BT), a tree that uses a partitioning into three partitions is called a ternary-tree (TT), and a tree that uses a partitioning into four partitions is called a quad-tree (QT).

[0146] For example, a coding tree unit (CTU) may be or include a CTB of luma samples of a picture with three sample arrangements and two corresponding CTBs of chroma samples, or a CTB of a monochrome picture or a picture coded using three separate color planes and a syntax structure used to code the samples. Correspondingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that the division of components into CTBs is a partition division. A coding unit (CU) may be or include a coding block of luma samples of a picture with three sample arrangements and two corresponding coding blocks of chroma samples, or a coding block of samples of a monochrome picture or a picture coded using three separate color planes and a syntax structure used to code the samples. Correspondingly, a coding block (CB) may be an M×N block of samples for some value of M and N, such that the division of CTBs into coding blocks is a partition division.

[0147] In an embodiment, for example, according to HEVC, coding tree units (CTUs) may be divided into CUs by using a quadtree structure denoted as a coding tree. The decision of whether to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction is made at the leaf CU level. Each leaf CU may be further divided into one, two, or four PUs according to a PU partition type. Within one PU, the same prediction process is applied, and related information is transmitted to the decoder on a PU-by-PU basis. After obtaining residual blocks by applying a prediction process based on the PU partition type, the leaf CUs may be partitioned into transform units (TUs) according to another quadtree structure similar to the coding tree for CUs.

[0148] In an embodiment, for example, according to the latest video coding standard currently under development, called Versatile Video Coding (VCC), a combined quadtree nested multi-type tree using binary and ternary split segmentation structure is used to partition a coding tree unit, for example. In the coding tree structure within a coding tree unit, a CU can have either a square shape or a rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree. Then, the quadtree leaf node can be further partitioned by a multi-type tree structure. There are four split types in the multi-type tree structure: vertical binary split (SPLIT_BT_VER), horizontal binary split (SPLIT_BT_HOR), vertical ternary split (SPLIT_TT_VER), and horizontal ternary split (SPLIT_TT_HOR). The multi-type tree leaf nodes are called coding units (CUs), and this segmentation is used for prediction and transformation processing without any further partitioning, as long as the CU is not too large for the maximum transform length. This means that in most cases, the CU, PU, ​​and TU have the same block size in a quadtree with nested multi-type tree coding block structure. An exception occurs when the maximum supported transform length is smaller than the width or height of the color components of the CU. VCC has developed its own signaling mechanism for partitioning information in a quadtree with nested multi-type tree coding tree structure. In the signaling mechanism, the coding tree unit (CTU) is treated as the root of the quadtree and is first partitioned by the quadtree structure. Then, each quadtree leaf node (if it is large enough to allow it) is further partitioned by the multi-type tree structure.In the multi-type tree structure, a first flag (mtt_split_cu_flag) is signaled to indicate whether a node is further partitioned, a second flag (mtt_split_cu_vertical_flag) is signaled to indicate the split direction if the node is further partitioned, and then a third flag (mtt_split_cu_binary_flag) is signaled to indicate whether the split is binary or ternary. Based on the values ​​of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree slitting mode (MttSplitMode) of the CU may be derived by the decoder based on a predefined rule or table. For a particular design, for example, a 64x64 luma block and 32x32 chroma pipeline design in a VVC hardware decoder, it should be noted that TT splitting is prohibited if either the width or height of the luma coding block is greater than 64, as shown in FIG. 6. TT partitioning is also prohibited if either the width or height of a chroma coding block is greater than 32. The pipeline design divides a picture into virtual pipeline data units (VPDUs), which are defined as non-overlapping units in the pipeline. In a hardware decoder, consecutive VPDUs are processed simultaneously by multiple pipeline stages. It is important to keep the VPDU size small, since the VPDU size is roughly proportional to the buffer size in most pipeline stages. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in a VCC, ternary tree (TT) and binary tree (BT) partitions can lead to an increase in the VPDU size.

[0149] In addition, it should be noted that if any part of a tree node block exceeds the bottom or right picture boundary, the tree node block is forced to be split until all samples of all coded CUs are located inside the picture boundary.

[0150] As an example, an Intra Sub-Partition (ISP) tool may divide a luma intra-predicted block vertically or horizontally into two or four sub-partitions depending on the block size.

[0151] In one example, mode selection unit 260 of video encoder 20 may be configured to perform any combination of the partitioning techniques described herein.

[0152] As described above, video encoder 20 is configured to determine or select a best or optimal prediction mode from a (e.g., predetermined) set of prediction modes. The set of prediction modes may include, for example, intra-prediction modes and / or inter-prediction modes.

[0153] Intra prediction The set of intra prediction modes may include, for example, 35 different intra prediction modes, e.g., omnidirectional modes such as DC (or average) mode and planar mode, or directional modes, as defined in HEVC, or 67 different intra prediction modes, e.g., omnidirectional modes such as DC (or average) mode and planar mode, or directional modes, as defined for VVC. As an example, some conventional angular intra prediction modes are adaptively replaced with wide-angle intra prediction modes for non-square blocks, e.g., as defined in VVC. As another example, to avoid division operations for DC prediction, only the long side is used to calculate the average for non-square blocks. And the result of intra prediction of planar mode may be further modified by position dependent intra prediction combination (PDPC) method.

[0154] The intra prediction unit 254 is configured to use reconstructed samples of neighboring blocks of the same current picture to generate an intra prediction block 265 according to an intra prediction mode of the set of intra prediction modes.

[0155] The intra prediction unit 254 (or generally, the mode selection unit 260) is further configured to output the intra prediction parameters (or generally, information indicating the intra prediction mode selected for the block) to the entropy encoding unit 270 in the form of a syntax element 266 for inclusion in the encoded picture data 21, e.g., so that the video decoder 30 may receive and use the prediction parameters for decoding.

[0156] Inter Prediction The set of inter prediction modes (or possible inter prediction modes) depends on the available reference pictures (i.e., e.g., previous at least partially decoded pictures stored in DBP230) and other inter prediction parameters, whether other entire reference pictures or parts of reference pictures, e.g., search window areas around the area of ​​the current block, are used to search for the best matching reference block, and / or whether pixel interpolation, such as, e.g., half / semi-pel, quarter-pel and / or 1 / 16-pel interpolation, is applied.

[0157] In addition to the prediction modes listed above, skip mode, direct mode, and / or other inter prediction modes may be applied.

[0158] For example, in enhanced merge prediction, the merge candidate list of such a mode is constructed by including the following five types of candidates in order: spatial MVP from spatially neighboring CUs, temporal MVP from co-located CUs, history-based MVP from FIFO table, pair-wise average MVP, and zero MV. Also, bilateral matching-based decoder side motion vector refinement (DMVR) may be applied to enhance the accuracy of MV for merge mode. Merge mode with MVD (MMVD), which is derived from merge mode with motion vector difference. MMVD flag is signaled immediately after sending skip flag and merge flag to specify whether MMVD mode is used for a CU. Also, CU-level adaptive motion vector resolution (AMVR) scheme may be applied. AMVR allows MVD of a CU to be coded at different precisions. Depending on the prediction mode for the current CU, the MVD of the current CU may be adaptively selected. When a CU is coded in merge mode, a combined inter / intra prediction (CIIP) mode may be applied to the current CU. To obtain a CIIP prediction, a weighted averaging of the inter prediction signal and the intra prediction signal is performed. In affine motion compensation prediction, the affine motion field of a block is described by two-control point motion information (four parameters) or three-control point motion vectors (six parameters). Subblock-based temporal motion vector prediction (SbTMVP), which is similar to temporal motion vector prediction (TMVP) in HEVC, predicts the motion vectors of sub-CUs within the current CU.Bi-directional optical flow (BDOF), previously called BIO, is a simpler version that requires much less computation, especially in terms of the number of multiplications and the size of the multipliers. Triangular partition mode: In such a mode, the CU is evenly divided into two triangular shaped partitions using either diagonal or anti-diagonal partitioning. Moreover, the bi-prediction mode is extended beyond simple averaging to allow weighted averaging of the two prediction signals.

[0159] The inter prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (both not shown in FIG. 2). The motion estimation unit may be configured to receive or obtain a picture block 203 (current picture block 203 of current picture 17) and a decoded picture 231, or at least one or more previously reconstructed blocks, e.g., one or more other / different previously decoded pictures 231, for motion estimation. For example, a video sequence may include the current picture and the previously decoded picture 231, or in other words, the current picture and the previously decoded picture 231 may be part of or form a sequence of pictures that form a video sequence.

[0160] The encoder 20 may be configured to, for example, select a reference block from multiple reference blocks of the same or different pictures of multiple other pictures, and provide the reference picture (or reference picture index) and / or an offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as an inter-prediction parameter to the motion estimation unit. This offset is also called a motion vector (MV).

[0161] The motion compensation unit may be configured to obtain, for example, receive, inter prediction parameters and perform inter prediction based on or using the inter prediction parameters to obtain inter prediction block 265. The motion compensation performed by the motion compensation unit may include fetching or generating a predictive block based on a motion / block vector determined by motion estimation, and may possibly include performing interpolation to sub-pixel accuracy. Interpolation filtering may generate additional pixel samples from known pixel samples, thus increasing the number of candidate predictive blocks that may be used to code the picture block. Upon receiving a motion vector for the PU of the current picture block, the motion compensation unit may find the predictive block to which the motion vector points in one of the reference picture lists.

[0162] The motion compensation unit may also generate syntax elements associated with the blocks and video slices for use by video coder 30 in decoding picture blocks of the video slices. In addition to, or as an alternative to, slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be generated or used.

[0163] Entropy Coding The entropy encoding unit 270 may, for example, encode and encode the picture data 21 using an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC scheme (CAVLC), an arithmetic coding scheme, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC)), probability interval partitioning entropy (PIPE), etc.) to obtain encoded picture data 21 that may be output, for example, in the form of encoded bitstream 21, via an output 272, such that, for example, video decoder 30 may receive and use parameters for decoding. The bitstream 21 may be configured to apply a quantized coefficients 209, an inter-prediction parameter, an intra-prediction parameter, a loop filter parameter, and / or a bypass (uncompressed) on the quantized coefficients 209, the inter-prediction parameter, the intra-prediction parameter, the loop filter parameter, and / or other syntax elements. The bitstream may have a form, for example, as further specified in FIG. 16 below. Thus, the embodiments described in connection with this figure are considered to be encompassed within the bitstream 21 described herein. Furthermore, any structure of a bitstream referred to herein may be provided as a bitstream 21 in the sense of this embodiment. The encoded bitstream 21 may be transmitted to the video decoder 30 or stored in a memory for later transmission or retrieval by the video decoder 30.

[0164] Other structural variations of the video encoder 20 may be used to encode the video stream. For example, a non-transform-based encoder 20 may directly quantize the residual signal for a particular block or frame, without the transform processing unit 206. In another implementation, the encoder 20 may have the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.

[0165] Decoder and decoding method 3 shows an example of a video decoder 30 that may be configured to implement the techniques of this disclosure. The video decoder 30 may be configured to receive, for example, encoded picture data 21 (e.g., encoded bitstream 21) encoded by encoder 20 to obtain a decoded picture 331. The encoded picture data or bitstream includes information for decoding the encoded picture data, e.g., data representing picture blocks (and / or tile groups or tiles) of an encoded video slice, and associated syntax elements.

[0166] In the example of Figure 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., an analog summer 314), a loop filter 320, a decoded picture buffer (DBP) 330, a mode application unit 360, an inter prediction unit 344, and an intra prediction unit 354. The inter prediction unit 344 may be or include a motion compensation unit. The video decoder 30 may, in some examples, perform a decoding path that is generally inverse to the encoding path described with respect to the video encoder 100 from Figure 2.

[0167] As described with respect to encoder 20, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, loop filter 220, decoded picture buffer (DPB) 230, inter prediction unit 344, and intra prediction unit 354 are also referred to as forming a “built-in decoder” of video encoder 20. Thus, inverse quantization unit 310 may be identical in function to inverse quantization unit 110, inverse transform processing unit 312 may be identical in function to inverse transform processing unit 212, reconstruction unit 314 may be identical in function to reconstruction unit 214, loop filter 320 may be identical in function to loop filter 220, and decoded picture buffer 330 may be identical in function to decoded picture buffer 230. Thus, the descriptions provided for the respective units and functions of video encoder 20 apply correspondingly to the respective units and functions of video decoder 30.

[0168] Entropy Decoding The entropy decoding unit 304 may be configured to analyze the bitstream 21 (or the coded picture data 21 in general) and perform entropy decoding on the coded picture data 21, for example, to obtain quantization coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), for example, any or all of inter prediction parameters (e.g., reference picture indexes and motion vectors), intra prediction parameters (e.g., intra prediction modes or indices), transform parameters, quantization parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to an encoding scheme as described with respect to the entropy encoding unit 270 of the encoder 20. The entropy decoding unit 304 may be further configured to provide the inter prediction parameters, intra prediction parameters, and / or other syntax elements to the mode application unit 360 and provide other parameters to other units of the decoder 30. The video decoder 30 may receive syntax elements at a video slice level and / or a video block level. In addition to or as an alternative to slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be received and / or used.

[0169] inverse quantization Inverse quantization unit 310 may be configured to receive a quantization parameter (QP) (or generally, information related to inverse quantization) and quantized coefficients from encoded picture data 21 (e.g., by parsing and / or decoding, e.g., by entropy decoding unit 304) and apply inverse quantization to the decoded quantized coefficients 309 based on the quantization parameter to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process involves using the quantization parameter determined by video encoder 20 for each video block within a video slice (or tile or tile group) to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied.

[0170] Inverse transformation The inverse transform processing unit 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 to obtain a reconstructed residual block 213 in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 313. The transform may be an inverse transform, e.g., an inverse DCT, an inverse DST, an inverse integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may further be configured to receive transform parameters or corresponding information from the coded picture data 21 (e.g., by parsing and / or decoding, e.g., by the entropy decoding unit 304) to determine a transform to be applied to the dequantized coefficients 311.

[0171] Rebuild The reconstruction unit 314 (e.g., an adder or analog adder 314) may be configured to add the reconstructed residual block 313 to the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example, by adding sample values ​​of the reconstructed residual block 313 and sample values ​​of the prediction block 365.

[0172] filtering A loop filter unit 320 (either in the coding loop or after the coding loop) may be configured to filter the reconstructed block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter unit 320 may comprise one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or one or more other filters, for example, an adaptive loop filter (ALF), a noise suppression filter (NSF), or any combination thereof. In one example, the loop filter unit 220 may comprise a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process may be a deblocking filter, an SAO, and an ALF. In another example, a process called luma mapping with chroma scaling (LMCS) (i.e., adaptive in-loop reshaper) is added. This process is performed before deblocking. In another example, the deblocking filter process may also be applied to interior sub-block edges, e.g., affine sub-block edges, ATMVP sub-block edges, sub-block transform (SBT) edges, and intra-sub-partition (ISP) edges. Although loop filter unit 320 is shown in FIG. 3 as being an in-loop filter, in other configurations, loop filter unit 320 may be implemented as a post-loop filter.

[0173] JVET-P0080 and JVET-O0630 propose a new in-loop filter called a cross-component ALF filter, also referred to herein as CC-ALF or CCALF. CC-ALF operates as part of the adaptive loop filter process and utilizes luma sample values ​​to refine each chroma component (i.e., the Cr or Cb component of the first chroma component, i.e., the Cb component, the second chroma component, i.e., the Cr component). CC-ALF operates by applying a diamond-shaped filter on the luma component for each chroma sample of the chroma component, and then the output filtered value is used as a correction to the output of the chroma ALF process.

[0174] A cross-component adaptive loop filter (CC-ALF) may be used as the loop filter and a post-processing step, respectively.

[0175] Decoded Picture Buffer The decoded video blocks 321 of the picture are then stored in a decoded picture buffer 330, which stores the decoded picture 331 as a reference picture for subsequent motion compensation for other pictures and / or for output display, respectively.

[0176] Decoder 30 may be configured to output decoded pictures 311, for example via output 312, for presentation or display to a user.

[0177] prediction The inter prediction unit 344 may be identical to the inter prediction unit 244 (in particular, a motion compensation unit), and the intra prediction unit 354 may be identical in function to the inter prediction unit 254, performing the partitioning or partitioning decision and prediction based on received partitioning and / or prediction parameters or respective information from the coded picture data 21 (e.g., by analyzing and / or decoding, e.g., by the entropy decoding unit 304). The mode application unit 360 may be configured to perform prediction (intra or inter prediction) for each block based on the reconstructed picture, block, or respective samples (filtered or unfiltered) to obtain a prediction block 365.

[0178] If the video slice is coded as an intra-coded (I) slice, the intra prediction unit 354 of the mode application unit 360 is configured to generate a predictive block 365 for a picture block of the current video slice based on a signaled intra prediction mode and data from a previously decoded block of the current picture. If the video picture is coded as an inter-coded (i.e., B or P) slice, the inter prediction unit 344 (e.g., a motion compensation unit) of the mode application unit 360 is configured to generate a predictive block 365 for a video block of the current video slice based on a motion vector and other syntax elements received from the entropy decoding unit 304. For inter prediction, the predictive block may be generated from one of the reference picture lists in one of the reference picture lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using a default construction technique based on the reference pictures stored in the DPB 330. The same or similar may apply to or by embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or instead of slices (e.g., video slices), e.g., video may be coded using I, P, or B tile groups and / or tiles.

[0179] Mode application unit 360 may be configured to determine predictive information for video blocks of a current video slice by analyzing motion vectors or related information and other syntax elements, and use the predictive information to generate predictive blocks for the current video block being decoded. For example, mode application unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra or inter prediction) used to code the video blocks of the video slice, an inter prediction slice type (e.g., B slice, P slice, or GPB slice), a construction state for one or more of the reference picture lists for the slice, motion vectors for each inter coded video block of the slice, inter prediction status for each inter coded video block of the slice, and other information for decoding video blocks in the current video slice. The same or similar may apply to or with embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or instead of slices (e.g., video slices), e.g., video may be coded using I, P, or B tile groups and / or tiles.

[0180] An embodiment of video decoder 30 as shown in FIG. 3 may be configured to partition and / or decode a picture by using slices (also referred to as video slices), where a picture may be partitioned or decoded using one or more slices (typically non-overlapping), each of which may comprise one or more blocks (e.g., CTUs), or one or more groups of blocks (e.g., tiles (H.265 / HEVC and VVC) or bricks (VVC)).

[0181] An embodiment of video decoder 30 as shown in FIG. 3 may be configured to partition and / or decode a picture by using slice / tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles), where a picture may be partitioned or decoded using one or more (typically non-overlapping) slice / tile groups, each of which may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles, where each tile may be, for example, rectangular in shape and may comprise one or more blocks (e.g., CTUs), e.g., full or fragmentary blocks.

[0182] Other variations of the video decoder 30 may be used to decode the encoded picture data 21. For example, the decoder 30 may generate an output video stream without the loop filtering unit 320. For example, the non-transform-based decoder 30 may directly inverse quantize the residual signal for a particular block or frame, without the inverse transform processing unit 312. In another implementation, the video decoder 30 may have the inverse quantization unit 310 and the inverse transform processing unit 312 combined into a single unit.

[0183] It should be understood that in the encoder 20 and the decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after the interpolation filtering, the motion vector derivation, or the loop filtering, further operations such as clipping or shifting may be performed on the processing result of the interpolation filtering, the motion vector derivation, or the loop filtering.

[0184] It should be noted that further operations may be applied to the derived motion vector of the current block (including but not limited to control point motion vectors in affine mode, sub-block motion vectors in affine mode, planar mode, ATMVP mode, temporal motion vectors, etc.). For example, the value of the motion vector is constrained to a predefined range according to its representation bit. If the representation bit of the motion vector is bitDepth, the range is -2^(bitDepth-1) to 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 to 32767, and if bitDepth is set to 18, the range is -131072 to 131071. For example, the value of the derived motion vector (e.g., MVs of four 4x4 sub-blocks in one 8x8 block) is constrained such that the maximum difference between the integer parts of the four 4x4 sub-block MVs is less than or equal to N pixels, such as less than or equal to 1 pixel. Here, we provide two methods for constraining motion vectors according to bitDepth.

[0185] 4 is a schematic diagram of a video coding device 400 according to one embodiment of the present disclosure. The video coding device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, the video coding device 400 may be a decoder, such as the video decoder 30 of FIG. 1A, or an encoder, such as the video encoder 20 of FIG. 1A.

[0186] Video coding device 400 comprises an ingress port 410 (or input port 410) and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter unit (Tx) 440 and an egress port 450 (or output port 450) for transmitting data, and a memory 460 for storing data. Video coding device 400 may also comprise optical-to-electrical (OE) and electrical-to-optical (EO) components coupled to the ingress port 410, the receiver unit 420, the transmitter unit 440, and the egress port 450 for egress or ingress of optical or electrical signals.

[0187] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (as a multi-core processor), FPGA, ASIC, and DSP. The processor 430 is in communication with the ingress port 410, the receiver unit 420, the transmitter unit 440, the egress port 450, and the memory 460. The processor 430 comprises a coding module 470. The coding module 470 implements the disclosed embodiments described above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. Thus, the inclusion of the coding module 470 provides substantial improvements to the functionality of the video coding device 400 and results in the transformation of the video coding device 400 into different states. Alternatively, the coding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.

[0188] Memory 460 may comprise one or more disks, tape drives, and solid state drives, and may be used as an overflow data storage device to store programs when such programs are selected for execution and to store instructions and data read during program execution. Memory 460 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and / or static random-access memory (SRAM).

[0189] FIG. 5 is a simplified block diagram of an apparatus 500 that may be used as either or both of source device 12 and destination device 14 from FIG. 1, according to an example embodiment.

[0190] The processor 502 in the device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device, or devices, now existing or later developed, capable of manipulating or processing information. Alternatively, the disclosed implementations may be implemented with a single processor as shown, e.g., processor 202, although advantages in speed and efficiency may be achieved using two or more processors.

[0191] The memory 504 in the apparatus 500 may be a read-only memory (ROM) device or a random access memory (RAM) device in one implementation. Any other suitable type of storage device may be used as the memory 504. The memory 504 may include code and data 506 that is accessed by the processor 502 using a bus 512. The memory 504 may further include an operating system 508 and application programs 510, which include at least one program that enables the processor 502 to perform the methods described herein. For example, the application programs 510 may include applications 1 through N, which further include a video coding application that performs the methods described herein.

[0192] The apparatus 500 may also include one or more output devices, such as a display 518. The display 518, in one example, may be a touch-sensitive display that combines a display with a touch-sensing element operable to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.

[0193] Although shown here as a single bus, bus 512 of device 500 may be comprised of multiple buses. Additionally, secondary storage 514 may be directly coupled to other components of device 500 or accessed over a network, and may comprise a single integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, device 500 may be implemented in a wide variety of configurations.

[0194] DETAILED DESCRIPTION OF EMBODIMENTS OF THE DISCLOSURE Video coding may be performed based on color spaces and color formats. For example, color video plays an important role in multimedia systems where various color spaces are used to efficiently represent colors. A color space specifies a color using a number of components. A common color space is the RGB color space, where a color is represented as a combination of three primary color component values ​​(i.e., red, green, and blue). For color video compression, the YCbCr color space is widely used, as described in A. Ford and A. Roberts, "Colour space conversions," University of Westminster, London, Tech. Rep, August 1998.

[0195] YCbCr can be easily converted from RGB color space via linear transformation, and redundancy between different components, i.e., cross-component redundancy, is greatly reduced in YCbCr color space. One advantage of YCbCr is backward compatibility with black-and-white televisions, since the Y signal carries luminance information. In addition, by subsampling the Cb and Cr components in a 4:2:0 chroma sampling format, the chrominance bandwidth can be reduced with significantly less subjective impact than subsampling in RGB color space. Because of these advantages, YCbCr has been the predominant color space in video compression. There are also other color spaces, such as YCoCg, that are used in video compression. In this disclosure, luma (or L or Y) and two chromas (Cb and Cr) are used to represent the three color components in video compression schemes, regardless of the actual color space used.

[0196] For example, when the chroma format sampling structure is 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array. The nominal vertical and horizontal relative positions of the luma and chroma samples in a picture are shown in FIG. 9A. FIG. 9B shows an example of 4:2:0 sampling. FIG. 9C shows an example of co-located luma and chroma blocks. When the video format is YUV4:2:0, there is one 16×16 luma block and two 8×8 chroma blocks.

[0197] Specifically, a coding block or transform block includes a luma block and two chroma blocks.

[0198] As shown, the luma block contains four times as many samples as the chroma block. Specifically, the chroma block contains N samples by N samples, and the luma block contains 2N samples by 2N samples. Thus, the luma block is four times the resolution of the chroma block. For example, if a YUV4:2:0 format is used, the luma samples may be downsampled by four times (e.g., twice as wide and twice as high). YUV is a color encoding system that uses a color space for the luma component Y and the two chrominance components U and V.

[0199] Picture Header The concept of a picture header is newly introduced in the VVC standard (as presented in JVET-P1006, P0095, P0120, P0239). See section 7.3.2.6 in JVET-P2001-VE for the picture header syntax.

[0200] In the current VVC draft, the concept of a mandatory picture header is proposed to be transmitted once per picture as the first VCL NAL unit of the picture. The current VVC draft also moves some of the syntax elements currently present in the slice header to this picture header. Syntax elements that functionally only need to be transmitted once per picture are moved to the picture header, instead of being transmitted multiple times for a given picture, e.g., syntax elements in the slice header are transmitted once per slice. There are benefits to be seen by moving syntax elements out of the slice header, since the computation required for slice header processing can be a limiting factor to the overall throughput.

[0201] For the adaptive loop filter (ALF), the following syntax elements (ALF related syntax elements) are introduced in the picture header:

[0202] [Table 1]

[0203] Here, the syntax elements are: pic_alf_enabled_present_flag, pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc, pic_alf_aps_id_chroma. These syntax elements are provided in the picture header and their presence may depend on other syntax elements signaled earlier or in other ways. For example, sps_alf_enabled_flag and ChromaArrayType are such other syntax elements.

[0204] In the following, any syntax element indicated with a descriptor in the tables and / or provided in bold is a syntax element that is signaled or provided in the current syntax structure.

[0205] The following syntax changes have been introduced for ALF in the slice header:

[0206] [Table 2]

[0207] The semantics of the ALF picture header entry and slice header entries are as follows:

[0208] pic_alf_enabled_present_flag equal to 1 specifies that pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc, and pic_alf_aps_id_chroma are present in the PH. pic_alf_enabled_present_flag equal to 0 specifies that pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc, and pic_alf_aps_id_chroma are not present in the PH. If pic_alf_enabled_present_flag is not present, it is inferred to be equal to 0.

[0209] pic_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled for all slices associated with the PH and may be applied to the Y, Cb, or Cr color components within the slice. pic_alf_enabled_flag equal to 0 specifies that the adaptive loop filter may be disabled for one, more than one, or all slices associated with the PH. If not present, pic_alf_enabled_flag is inferred to be equal to 0.

[0210] pic_num_alf_aps_ids_luma specifies the number of ALF APS referenced by the slice associated with the PH.

[0211] pic_alf_aps_id_luma[ i ] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luma component of the slice associated with PH.

[0212] The value of alf_luma_filter_signal_flag for an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to pic_alf_aps_id_luma[ i ] shall be equal to 1.

[0213] pic_alf_chroma_idc equal to 0 specifies that no adaptive loop filter is applied to the Cb and Cr color components. pic_alf_chroma_idc equal to 1 indicates that an adaptive loop filter is applied to the Cb color component. pic_alf_chroma_idc equal to 2 indicates that an adaptive loop filter is applied to the Cr color component. pic_alf_chroma_idc equal to 3 indicates that an adaptive loop filter is applied to the Cb and Cr color components. If pic_alf_chroma_idc is not present, it is inferred to be equal to 0.

[0214] pic_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chroma components of the slice associated with the PH refer.

[0215] The value of alf_chroma_filter_signal_flag for an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to pic_alf_aps_id_chroma shall be equal to 1.

[0216] slice_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled and may be applied to the Y, Cb, or Cr color components in the slice. slice_alf_enabled_flag equal to 0 specifies that the adaptive loop filter is disabled for all color components in the slice. If not present, the value of slice_alf_enabled_flag is inferred to be equal to pic_alf_enabled_flag.

[0217] slice_num_alf_aps_ids_luma specifies the number of ALF APS that the slice references. If slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma is not present, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of pic_num_alf_aps_ids_luma.

[0218] slice_alf_aps_id_luma[ i ] specifies the adaptation_parameter_set_id of the i-th ALF APS to which the luma component of the slice refers. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[ i ] should be less than or equal to the TemporalId of the coded slice NAL unit. If slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[ i ] is not present, the value of slice_alf_aps_id_luma[ i ] is inferred to be equal to the value of pic_alf_aps_id_luma[ i ].

[0219] The value of alf_luma_filter_signal_flag for an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[ i ] shall be equal to 1.

[0220] slice_alf_chroma_idc equal to 0 specifies that no adaptive loop filter is applied to the Cb and Cr color components. slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. If slice_alf_chroma_idc is not present, it is inferred to be equal to pic_alf_chroma_idc.

[0221] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chroma components of the slice refer. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma should be less than or equal to the TemporalId of the coded slice NAL unit. If slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma is not present, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of pic_alf_aps_id_chroma.

[0222] The value of alf_chroma_filter_signal_flag for an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.

[0223] As explained above, if all slices have the same ALF filtering data, instead of transmitting the ALF filtering data separately in each of the slice headers, the ALF filtering data common across all slices is transmitted only once in the picture header, so that all slices inherit the ALF filtering data from the picture header. In this way, the overhead of the slice header is reduced (in terms of number of bits).

[0224] This disclosure collects all common syntax elements of CCALF that are signaled in each slice header of a picture and defined in the picture header. This disclosure seeks to extend the same principles of ALF signaling to cross-component ALF (CCALF). Currently, for CCALF, each slice header must transmit the following information in the conventional way:

[0225] [Table 3]

[0226] Therefore, each slice must transmit all of the above syntax elements even though the information is the same across all slices in a given picture.

[0227] Therefore, to reduce the slice header overhead, the present invention also defines a picture header entry for CCALF.

[0228] 1.1 Technical problem to be solved by the present disclosure The present disclosure introduces a picture header entry for CCALF to reduce slice overhead. As shown in FIG. 7, slice 1 to slice N contain the same CCALF filter information 7001. Thus, each slice header must transmit the same data, resulting in redundancy and slice bit signaling overhead. As shown in FIG. 8, to remove this redundancy in CCALF data, a picture header entry 8001 for CCALF is introduced that defines common CCALF data (i.e., also CCALF-related information), and then all slices can inherit this common information 8002. Thus, this removes redundancy in signaling and reduces slice header parsing overhead.

[0229] 1.2 Technical implementation embodiments of the present disclosure It should be noted that each of the following embodiments disclosed as "alternative" may be provided in combination with any of the other (alternative) embodiments, and in particular may be implemented using any of the devices described above, such as the encoders and / or decoders referred to in the figures above.

[0230] 1.2.1 Alternative embodiment 1 In a first step, a new Sequence Parameter Set (SPS) syntax element, called the "second syntax element" (hereinafter denoted, for example, by sps_ccalf_enabled_flag), is introduced that controls whether CCALF is enabled or not. The syntax is as shown below. The second syntax element (sps_ccalf_enabled_flag) completely separates ALF and CCALF operation, thus allowing ALF and CCALF to be turned on or off separately at the sequence level.

[0231] [Table 4]

[0232] Here, sps_alf_enabled_flag is an example of a first syntax element also provided in the SPS level syntax. The first and second syntax elements may be signaled independently of each other, as exemplarily provided in the above table. However, the second syntax element may also be signaled depending on, for example, the value that the first syntax element has or takes, as provided in alternative embodiment 5 below.

[0233] The new picture header entries (marked in bold and italics) are shown below:

[0234] [Table 5]

[0235] Here, further syntax elements are introduced in the picture header, which may only be present if the first and / or second syntax elements take on certain values, which is indicated using an "if" construct depending on the value of the first and / or second syntax elements.

[0236] Specifically, in the picture header, a third syntax element (here denoted pic_ccalf_enabled_flag) may be provided depending on the value of the second syntax element, which may indicate whether CCALF should be enabled for the current picture (as described below).

[0237] A fourth syntax element (such as pic_cross_component_alf_cb_enabled_flag) may be further provided in the picture header depending on the second syntax element.

[0238] For example, a fifth syntax element such as pic_cross_component_alf_cb_aps_id may be provided depending on the value of the second syntax element and / or the value of the third syntax element and / or the value of the fourth syntax element. Furthermore, a sixth syntax element, here denoted pic_cross_component_cb_filters_signalled_minus1, may be provided in the picture header, potentially depending on the second syntax element and / or the third syntax element and / or the fourth syntax element as well.

[0239] In parallel with this, a seventh syntax element, indicated above as pic_cross_component_alf_cr_enabled_flag, may be provided depending on the second syntax element and / or the third syntax element.

[0240] For example, depending on the value of the seventh syntax element, but potentially also depending on the second and / or third syntax elements, an eighth syntax element (e.g., pic_cross_component_alf_cr_aps_id) and / or a ninth syntax element (pic_cross_component_cr_filters_signalled_minus1) may be provided.

[0241] The meanings of the first to ninth syntax elements, as well as the meanings of the tenth to fourteenth syntax elements specified further below, are explained below.

[0242] The slice header syntax is:

[0243] [Table 6]

[0244] As provided above, in some embodiments, the further syntax elements provided in the slice header syntax may be provided only if the first and / or second syntax elements and / or one or more further syntax elements provided in the picture header take appropriate values.

[0245] Specifically, as indicated above, a tenth syntax element such as slice_cross_component_alf_cb_enabled_flag may be provided depending on the value of the second syntax element, and potentially also depending on a fourteenth syntax element (optionally provided at the level of the SPS, indicated here by ChromaArrayType) not equal to 0. Additionally, an eleventh syntax element, indicated above as slice_cross_component_alf_cb_aps_id, may be provided depending on the value of the second syntax element and / or depending on the value of the tenth syntax element.

[0246] Correspondingly, a twelfth syntax element, such as slice_cross_component_alf_cr_enabled_flag, may be provided depending on the value of the second syntax element, and potentially also depending on a fourteenth syntax element not equal to 0. Furthermore, a thirteenth syntax element, denoted above as slice_cross_component_alf_cr_aps_id, may be provided depending on the value of the second syntax element and / or depending on the value of the twelfth syntax element.

[0247] However, it is also encompassed that the syntax elements provided in the slice header (particularly the tenth through thirteenth syntax elements) may exist independently of the values ​​of other components such as the second syntax element or the fourteenth syntax element. Specifically, it may be specified that the syntax elements belonging to CC-ALF in the slice header (such as the tenth through thirteenth syntax elements, for example) take default values ​​if the first syntax element or the second syntax element or another syntax element indicates that CC-ALF is not enabled.

[0248] The semantics of the newly introduced syntax elements are as follows:

[0249] The second syntax element is denoted herein as sps_ccalf_enabled_flag, which is merely an example and does not limit the present disclosure. In an embodiment, a value of the second syntax element equal to 0 specifies that the cross-component adaptive loop filter is disabled for the current video sequence. A value of the second syntax element equal to 1 specifies that the cross-component adaptive loop filter is enabled for the current video sequence.

[0250] pic_ccalf_enabled_present_flag equal to 1 specifies that pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id, and pic_cross_component_alf_cr_filter_count_minus1 are present in the PH (Picture Header). pic_alf_enabled_present_flag equal to 0 specifies that pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, pic_cross_component_alf_cb_aps_id, pic_cross_component_alf_cb_filter_count_minus1, pic_cross_component_alf_cr_enabled_flag, pic_cross_component_alf_cr_aps_id, and pic_cross_component_alf_cr_filter_count_minus1 are not present in the PH. If pic_ccalf_enabled_present_flag is not present, it is inferred to be equal to 0.

[0251] A value of the third syntax element (herein denoted pic_ccalf_enabled_flag) equal to 1 specifies that the cross-component adaptive loop filter is enabled for all slices associated with the PH and may be applied to the Cb or Cr color components in the slice. A value of the third syntax element equal to 0 specifies that the cross-component adaptive loop filter may be disabled for one, more than one, or all slices associated with the PH (picture header). If not present, the value of the third syntax element may be inferred to be equal to 0.

[0252] The fourth syntax element was mentioned above and may be indicated here by pic_cross_component_alf_cb_enabled_flag. A value of the fourth syntax element equal to 0 specifies that the cross-component Cb filter is not applied to the Cb color components of all slices associated with the PH. When the value of the fourth syntax element is equal to 1, it indicates that the cross-component Cb filter is applied to the Cb color components of all slices associated with the PH. If the fourth syntax element is not present, it is inferred to be equal to 0.

[0253] The fifth syntax element may be denoted here as pic_cross_component_alf_cb_aps_id. The fifth syntax element specifies the adaptation_parameter_set_id for the Cb color component of all slices associated with the PH.

[0254] The sixth syntax element may be denoted here as pic_cross_component_cb_filters_signalled_minus1. The value of the sixth syntax element plus 1 specifies the number of cross-component Cb filters for all slices associated with the PH. The value of the sixth syntax element should be in the range of 0 to 3.

[0255] If the fourth syntax element is equal to 1, it is a bitstream conformance requirement that the sixth syntax element should be less than or equal to the value of alf_cross_component_cb_filters_signalled_minus1 in the ALF APS referenced by the fifth syntax element of the current picture.

[0256] The seventh syntax element mentioned above is indicated by pic_cross_component_alf_cr_enabled_flag. A value of the seventh syntax element equal to 0 specifies that the cross-component Cr filter is not applied to the Cr color component of all slices associated with the PH. A value of the seventh syntax element equal to 1 specifies that the cross-component Cr filter is applied to the Cr color component of all slices associated with the PH. If the seventh syntax element is not present, it is inferred to be equal to 0.

[0257] An eighth syntax element is also mentioned and exemplarily indicated as pic_cross_component_alf_cr_aps_id. The value of the eighth syntax element is intended to specify the adaptation_parameter_set_id for the Cr color component of all slices associated with the PH.

[0258] Additionally, reference is made to a ninth syntax element, which may be indicated by pic_cross_component_cr_filters_signalled_minus1. The value of the ninth syntax element plus one specifies the number of cross-component Cr filters for all slices associated with the PH. The value of the ninth syntax element shall be in the range of 0 to 3.

[0259] It is a bitstream conformance requirement that if the value of the seventh syntax element is equal to 1, the value of the ninth syntax element should be less than or equal to the value of alf_cross_component_cr_filters_signalled_minus1 in the ALF APS referenced by the eighth syntax element of the current picture.

[0260] The semantics of the CCALF slice header syntax elements are further adjusted as follows:

[0261] slice_ccalf_enabled_flag equal to 1 specifies that the cross-component adaptive loop filter is enabled and may be applied to the Cb or Cr color components in the slice. slice_alf_enabled_flag equal to 0 specifies that the cross-component adaptive loop filter is disabled for all color components in the slice. If not present, the value of slice_ccalf_enabled_flag is inferred to be equal to the third syntax element.

[0262] The tenth syntax element referred to above may be indicated by slice_cross_component_alf_cb_enabled_flag, and may be specified such that a value of the tenth syntax element equal to 0 specifies that a cross-component Cb filter is not applied to the Cb color component. A tenth syntax element equal to 1 indicates that a cross-component Cb filter is applied to the Cb color component. If the tenth syntax element is not present, it is assumed to be equal to the fourth syntax element (e.g., pic_cross_component_alf_cb_enabled_flag).

[0263] The eleventh syntax element mentioned above may be called slice_cross_component_alf_cb_aps_id. The value of the eleventh syntax element specifies the adaptation_parameter_set_id to which the Cb color component of the slice refers.

[0264] If the 10th syntax element has a value equal to 1, it is a bitstream conformance requirement that the ALF APS referenced by the 11th syntax element should be the same for all slices of the current picture.

[0265] If the tenth syntax element is equal to 1 and the eleventh syntax element is not present, the value of the eleventh syntax element is inferred to be equal to the value of the fifth syntax element.

[0266] slice_cross_component_cb_filters_signalled_minus1 plus 1 specifies the number of cross-component Cb filters. The value of slice_cross_component_cb_filters_signalled_minus1 should be in the range from 0 to 3.

[0267] If the 10th syntax element is equal to 1, it is a bitstream conformance requirement that slice_cross_component_cb_filters_signalled_minus1 should be less than or equal to the value of alf_cross_component_cb_filters_signalled_minus1 in the ALF APS referenced by the 11th one of the current slice.

[0268] If the 10th syntax element is equal to 1 and the 11th is not present, the value of slice_cross_component_cb_filters_signalled_minus1 is inferred to be equal to the value of pic_cross_component_cb_filters_signalled_minus1.

[0269] The mentioned twelfth syntax element may be referred to as slice_cross_component_alf_cr_enabled_flag. A value of the twelfth syntax element equal to 0 specifies that no cross-component Cr filter is applied to the Cr color component. A value of the twelfth syntax element equal to 1 indicates that a cross-component adaptive loop filter is applied to the Cr color component. If the twelfth syntax element is not present, it is inferred to be equal to the seventh syntax element, such as pic_cross_component_alf_cr_enabled_flag.

[0270] A thirteenth syntax element is mentioned, which may be further referred to as slice_cross_component_alf_cr_aps_id. The value of the thirteenth syntax element specifies the adaptation_parameter_set_id to which the Cr color component of the slice refers.

[0271] If the value of the 12th syntax element is equal to 1, it is a bitstream conformance requirement that the ALF APS referenced by the 13th syntax element should be the same for all slices of the current picture.

[0272] If the value of the twelfth syntax element is equal to 1 and the thirteenth syntax element is not present, the value of the thirteenth syntax element is inferred to be equal to the value of the eighth syntax element.

[0273] slice_cross_component_cr_filters_signalled_minus1 plus 1 specifies the number of cross-component Cr filters. The value of slice_cross_component_cr_filters_signalled_minus1 should be in the range from 0 to 3.

[0274] If the 12th syntax element is equal to 1, it is a bitstream conformance requirement that slice_cross_component_cr_filters_signalled_minus1 should be less than or equal to the value of alf_cross_component_cr_filters_signalled_minus1 in the referenced ALF APS referenced by the 13th syntax element of the current slice.

[0275] If the 12th syntax element is equal to 1 and the 13th syntax element is not present, the value of slice_cross_component_cr_filters_signalled_minus1 is inferred to be equal to the value of pic_cross_component_cr_filters_signalled_minus1.

[0276] Alternative embodiment 2 In alternative 2, the second syntax element at the SPS level (such as sps_ccalf_enabled_flag) is no longer introduced, and therefore the first syntax element (sps_alf_enabled_flag) also controls the application of the ccalf filter.

[0277] The syntax for alternative 2 is:

[0278] [Table 7]

[0279] In this second embodiment, a second syntax element, which may be sps_ccalf_enabled_flag, may be provided at the SPS level. Whether CCALF should be enabled may be specified based on further syntax elements, such as pic_ccalf_enabled_present_flag, which in this embodiment specifies whether there are further syntax elements belonging to CCALF, from which it may further be derived that CCALF should be enabled for the current picture to which pic_ccalf_enabled_present_flag belongs.

[0280] The slice header syntax is:

[0281] [Table 8]

[0282] As can be seen from above, the presence of syntax elements in the slice header, such as, for example, slice_ccalf_enabled_flag, slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cb_aps_id, slice_cross_component_cb_filters_signalled_minus1, slice_cross_component_alf_cr_enabled_flag, slice_cross_component_alf_cr_aps_id, and slice_cross_component_cr_filters_signalled_minus1, and / or the 10th to 13th syntax elements already mentioned above, may depend on a first syntax element provided at the SPS level, such as sps_alf_enabled_flag, and syntax elements provided in the picture header, such as pic_ccalf_enabled_present_flag, and potentially further syntax elements provided in the slice header, such as slice_ccalf_enabled_flag.

[0283] Alternative embodiment 3 Another alternative for the CCALF picture header entry is as follows: In this alternative, pic_alf_enabled_present_flag, pic_alf_enabled_flag control the CCALF picture header and CCALF slice header entries, respectively.

[0284] [Table 9]

[0285] The slice header syntax is:

[0286] [Table 10]

[0287] It may be noted that !(0)=1 or !(1)=0.

[0288] Alternative embodiment 4 Since in the current design of CCALF there is a restriction that slice_cross_component_alf_cb_aps_id, slice_cross_component_alf_cr_aps_id should be the same across all slices, it does not make sense to repeat this syntax element in the slice header and only signal pic_cross_component_alf_cb_aps_id and pic_cross_component_alf_cr_aps_id in the picture header. Then the values ​​of the syntax elements slice_cross_component_alf_cb_aps_id and slice_cross_component_alf_cr can be presumed to be the same as pic_cross_component_alf_cb_aps_id and pic_cross_component_alf_cr_aps_id. This can further reduce the amount of information in the bitstream.

[0289] The possible syntaxes are:

[0290] [Table 11]

[0291] Here, further syntax elements belonging to CCALF (i.e. syntax elements including at least the elements ccalf or cross_component_alf or cc_alf) are provided depending on the value of the second syntax element signaled at the SPS level, i.e. sps_ccalf_enabled_flag in this embodiment.

[0292] Specifically, depending on the value of the second syntax element, a third syntax element, such as pic_ccalf_enabled_flag, may be provided in the picture header, which may indicate whether CCALF is enabled for a slice of the current picture.

[0293] Further, a fourth syntax element, such as pic_cross_component_alf_cb_enabled_flag, and a seventh syntax element, such as pic_cross_component_alf_cb_enabled_flag, may be provided in the picture header depending on the value of the second syntax element.

[0294] The slice header syntax may be as follows:

[0295] [Table 12]

[0296] Also, for this embodiment, it may be specified that syntax elements in the slice header belonging to CCALF are provided depending on the value of a second syntax element provided at the SPS level and / or depending on the value of one or more syntax elements belonging to CCALF provided in the picture header, such as, for example, pic_ccalf_enabled_present_flag.

[0297] slice_cross_component_alf_cb_aps_id can always be assumed to be the same as the value of pic_cross_component_alf_cb_aps_id.

[0298] slice_cross_component_alf_cr_aps_id can always be assumed to be the same as the value of pic_cross_component_alf_cr_aps_id.

[0299] Another possible syntax is:

[0300] [Table 13]

[0301] In the syntax according to the above table, the presence of syntax elements belonging to CCALF depends on the value of a first syntax element provided at the SPS level, such as sps_alf_enabled_flag. A second syntax element, such as sps_ccalf_enabled_flag, may or may not be provided at the SPS level in this embodiment.

[0302] The slice header syntax may be as follows:

[0303] [Table 14]

[0304] slice_cross_component_alf_cb_aps_id is always assumed to be the same as the value of pic_cross_component_alf_cb_aps_id.

[0305] slice_cross_component_alf_cr_aps_id is always assumed to be the same as the value of pic_cross_component_alf_cr_aps_id.

[0306] Another possible syntax is:

[0307] [Table 15]

[0308] The slice header syntax is:

[0309] [Table 16]

[0310] In this embodiment, slice_cross_component_alf_cb_aps_id is assumed to always be the same as the value of pic_cross_component_alf_cb_aps_id.

[0311] In this embodiment, the twelfth syntax element, such as slice_cross_component_alf_cr_aps_id, is always presumed to be the same as the value of the eighth syntax element, such as pic_cross_component_alf_cr_aps_id).

[0312] Alternative embodiment 5 Another alternative syntax, possibly the following, is: In this syntax, the CCALF parameters are conditionally signaled based on the value of a second syntax element, as already mentioned above, which may be provided as or contain a flag, such as sps_ccalf_enabled_flag.

[0313] [Table 17A] [Table 17B] [Table 17C] [Table 17D] [Table 17E]

[0314] As can be seen in the above table, the second syntax element sps_ccalf_enabled_flag is provided depending on the value of the first syntax element sps_alf_enabled_flag and optionally depending on the fourteenth syntax element such as ChromaArrayType. Specifically, the second syntax element may be signaled in some embodiments when the fourteenth syntax element takes a value different from zero.

[0315] [Table 18]

[0316] Note: ChromaArrayType !=0, i.e. no luma component and no Cb, Cr chroma components

[0317] ChromaArrayType indicates the chroma sampling relative to luma sampling as specified in the table below.

[0318] [Table 19]

[0319] In monochrome sampling, there is only one sample alignment, nominally considered the luma alignment.

[0320] In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array.

[0321] In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.

[0322] In 4:4:4 sampling, each of the two chroma arrays has the same height and width as the luma array.

[0323] As specified in the above table, the second syntax element is provided if the first syntax element indicates "true", i.e., the first syntax element is sps_alf_enabled_flag, indicating that ALF is enabled. Furthermore, the second syntax element is provided if the fourteenth syntax element has a value not equal to 0.

[0324] [Table 20A] [Table 20B] [Table 20C] [Table 20D] [Table 20E]

[0325] [Table 21A] [Table 21B] [Table 21C]

[0326] [Table 22A] [Table 22B]

[0327] [Table 23]

[0328] Note: !(0)=1 !(1)=0

[0329] [Table 24A] [Table 24B] [Table 24C] [Table 24D] [Table 24E]

[0330] [Table 25]

[0331] alf_present_in_ph_flag equal to 1 specifies that syntax elements for enabling the use of ALF may be present in a PH (picture header) that references a PPS. alf_present_in_ph_flag equal to 0 specifies that syntax elements for enabling the use of ALF may be present in a slice header that references a PPS.

[0332] [Table 26]

[0333] As specified in the above table, the presence of further syntax elements belonging to CCALF in the picture header, such as the fourth syntax element (such as pic_cross_component_alf_cb_enabled_flag) and the seventh syntax element (such as pic_cross_component_alf_cr_enabled_flag) may depend on the presence and / or value of the second syntax element. The presence of the fifth syntax element, such as pic_cross_component_alf_cb_aps_id, may then depend on the presence and / or value of the second and / or fourth syntax elements, and the presence and / or value of the eighth syntax element, such as pic_cross_component_alf_cr_aps_id, may depend on the presence and / or value of the second and / or seventh syntax elements.

[0334] [Table 27]

[0335] In the above table, further syntax elements belonging to CCALF may further depend on the presence and / or value of the second syntax element. For example, a tenth syntax element such as slice_cross_component_alf_cb_enabled_flag may be provided depending on the second syntax element. Depending on the presence and value of this tenth syntax element and / or the second syntax element, an eleventh syntax element such as slice_cross_component_alf_cb_aps_id may be provided. Furthermore, a twelfth syntax element such as slice_cross_component_alf_cr_enabled_flag may be provided in the slice header depending on the value of the second syntax element. Depending on the presence and / or value of the twelfth syntax element and / or depending on the second syntax element, a thirteenth syntax element such as slice_cross_component_alf_cr_aps_id may be provided in the slice header.

[0336] Note: !(0) = 1 !(1) = 0 if( sps_alf_enabled_flag && !alf_present_in_ph_flag) means "if sps_alf_enabled_flag is true (and) if alf_present_in_ph_flag is false)".

[0337] [Table 28A] [Table 28B] [Table 28C]

[0338] In the above table, some elements are shown as strikethroughs. This means that in the first embodiment, these elements may be present. In alternative embodiments, these elements may be canceled, leaving the remaining syntax intact. For example, the element ChromaArrayType may not be provided. Correspondingly, any dependency from this element, including the conditional presence of other syntax elements, may be provided in the first embodiment. In alternative embodiments, this dependency does not exist, resulting in, for example, syntax elements being present in any case, but in alternative embodiments, they were only present if ChromaArrayType had a specific value.

[0339] Similarly, syntax elements such as slice_cross_component_cr_filters_signalled_minus1 and slice_cross_component_cb_filters_signalled_minus1 may not be provided at all (regardless of whether syntax elements such as ChromaArrayType are present).

[0340] The semantics of the newly introduced syntax elements are as follows:

[0341] A value of the second syntax element, such as (sps_ccalf_enabled_flag) equal to 0, specifies that the cross-component adaptive loop filter is disabled. A value of the first syntax element equal to 1 specifies that the cross-component adaptive loop filter is enabled. This may also be provided inversely, i.e., if the second syntax element has a value equal to 1, CCALF may be disabled, and if the second syntax element has a value equal to 0, CCALF may be enabled.

[0342] no_ccalf_constraint_flag equal to 1 specifies that the first syntax element (such as sps_ccalf_enabled_flag) should be equal to 0. no_ccalf_constraint_flag equal to 0 imposes no such constraint.

[0343] In an embodiment, the filtering process is presented in detail below.

[0344] Some general explanations are provided below regarding the meaning of certain syntax elements and the consequences of these syntax elements taking particular values ​​for the embodiments discussed above. The disclosure presented below is intended to be encompassed by any of the above embodiments, specifically alternative embodiments 1 through 5.

[0345] 8.8 In-the-loop filter processes 8.8.1 General

[0346] 4. If the first syntax element (shown above as sps_alf_enabled_flag) is equal to 1, the following applies: - If the second syntax element (e.g. sps_ccalf_enabled_flag) is equal to 1, the reconstructed picture sample array (before the adaptive loop filter) SL' is equal to the reconstructed picture sample array S Lis set equal to - the adaptive loop filter process as specified in clause 8.8.5.1 applies the reconstructed picture sample array S L and takes as input an array S if the 14th syntax element (in the table above, this is shown as ChromaArrayType) is not equal to 0. Cb and S Cr , and the modified reconstructed picture sample array S' L and if the 14th syntax element is not equal to 0, the output is the adaptive loop filter array S' Cb and S' Cr It is. - Array S' L , and if the 14th syntax element is not equal to 0, then the array S' Cb and S' Cr is an array S L , and if the 14th syntax element is not equal to 0, then Cb and S Cr (representing the decoded picture). - If the second syntax element (e.g., sps_ccalf_enabled_flag) is equal to 1, the following applies: - the cross-component adaptive loop filter specified in clause xxxx is adapted to process the reconstructed picture sample array S L and the 14th syntax element (e.g. ChromaArrayType) is not equal to 0, it takes an array S as input. Cb and S Cr , as well as the modified reconstructed picture sample array S', and the cross-component adaptive loop filter array S' as output if the 14th syntax element is not equal to 0. Cb and S' Cr It is. - Array S' L , and if the 14th syntax element is not equal to 0, then the array S' Cb and S' Cr is an array S L , and if the 14th syntax element is not equal to 0, thenCb and S Cr (representing the decoded picture).

[0347] It should be noted that the invention is not limited to the alternatives presented here, rather the invention in a very general way allows CCALF data present in the slice header to be conditionally signaled in the picture header. The main advantage of using CCALF in the picture header is the reduced signaling overhead in the slice header.

[0348] The present invention also covers the case where, if a particular CCALF syntax element signaled in a slice header has the same value across all slices (e.g., due to some bitstream conformance requirements), that particular syntax element is no longer signaled in the slice header, but rather is signaled only once in the picture header associated with all slices.

[0349] A cross-component adaptive loop filter (CC-ALF) may be used as the loop filter and a post-processing step, respectively.

[0350] CC-ALF uses luma sample values ​​to refine each chroma component. CC-ALF is applied to the luma samples to derive correction factors for chroma sample filtering.

[0351] JVET-P0080 and JVET-O0630 propose a new in-loop filter called the cross-component ALF filter. CC-ALF operates as part of the adaptive loop filter process and utilizes luma sample values ​​to refine each chroma component (Cr or Cb component). The tool is controlled by information in the bitstream, which includes both (a) the filter coefficients for each chroma component and (b) a mask that controls the application of the filter to a block of samples. The filter coefficients are signaled in the Adaptation parameter set (APS), and the block size and mask are signaled at the slice level.

[0352] A mask can be understood to be a bit (0 or 1) where the mask indicates whether a block of samples should be filtered or not, where mask=1 means filtered and mask=0 means not filtered. Essentially, the APS carries coefficients and other information related to the ALF.

[0353] The general design of CC-ALF is shown in Figures 6(a), 6(b), and 6(c). This general design can be applied to any of the above embodiments that address CC-ALF-related issues. Specifically, what is described here is intended to be encompassed by each of alternative embodiments 1 to 5.

[0354] The filter layout is as shown in Figure 6(a) (see left side), and the filter shape is as shown in Figure 6(b) and Figure 6(c).

[0355] CC-ALF works by applying a linear diamond-shaped filter (Figures 6(b) and 6(c)) to the luma channel for each chroma component, which

[0356]

number

[0357] where: (x,y) is the location of chroma component i being refined, (x C ,y C ) is the location of the luma based on (x,y), S i is the filter support in luma for chroma component i, c i (x0, y0) represents the filter coefficients.

[0358] It is noted that when i=1 for chroma component i, a first chroma component (such as a cb color component) exists, and when i=2 for chroma component i, a second chroma component (such as a cr color component) exists.

[0359] Key features of CC-ALF include: Luma location centered on the support region (x C ,y C ) is calculated based on the spatial scaling factors between the luma and chroma planes. Essentially, CCALF uses the luma samples to refine the chroma samples. Thus, a filter is applied to the luma samples and then a correction factor for chroma is derived. All filter coefficients are transmitted in APS and have a dynamic range of 8 bits. · APS can be referenced in the slice header. The CC-ALF coefficients used for each chroma component of the slice are also stored in a buffer corresponding to the temporal sub-layer. Reuse of these sets of temporal sub-layer filter coefficients is facilitated using a slice-level flag. It can be seen that the temporal sub-layers are essentially defined based on reference information. The application of the CC-ALF filter is controlled at variable block sizes and signaled by a context-coded flag received for each block of samples. The block size and the CC-ALF enable flag are received at slice level for each chroma component. Border padding for the horizontal virtual border uses repetition. For the remaining borders, the same type of padding as in regular ALF is used.

[0360] FIG. 8 is a block diagram showing that, compared to FIG. 7, a picture header entry for CCALF is introduced that defines common CCALF data, and then all slices can inherit this common information.

[0361] Figure 16 is a schematic diagram of a data structure 5000, which may represent a portion of the bitstream 21 generated by the encoder in Figure 2 and received by the decoder in Figure 3. The data structure 5000 (i.e., video bitstream 5000) may comprise a VPS 5005, an SPS 5010, a PPS 5015, and at least four slices 5020, 5025, 5030, and 5035. The slice 5020 may comprise a header 5040 and data 5045. The slices 5025, 5030, 5035 are similar to slice 5020. The data 5045 may include at least three blocks 5050, 5055, and 5060, i.e., coded representations of the at least three blocks 5050, 5055, and 5060. Although four slices 5020-5035 are shown, the video bitstream 5000 may include any suitable number of slices. Although three blocks 5050-5060 are shown, the data 5045 may include any suitable number of blocks. In addition, each of the remaining slices 5025, 5030, 5035 may also include blocks. Thus, the video bitstream 5000 includes a coded representation of a number of blocks, i.e., the video bitstream 5000 includes one SPS 5010 and significantly fewer slice headers than blocks. It may be appreciated that a bitstream including multiple CC-ALF related syntax elements may also be shown in FIG. 16. As illustrated by the syntax above and below, multiple CC-ALF related syntax elements are clearly specified. In addition, the process for encoding or decoding the bitstream is clearly specified in the syntax and / or semantics shown above and below.

[0362] The bitstream shown here may be obtained by encoding a video sequence using any of the embodiments described above. In particular, this bitstream may be obtained or may include syntax elements, in particular CC-ALF related syntax elements, as described in alternative embodiments 1 to 5 above.

[0363] 14, for example, shows a flowchart of a method 4200 for encoding a video. The method may be implemented, for example, using an encoder according to FIG. 12, although any other encoder and encoding device disclosed herein may also be used to perform the method.

[0364] The method of encoding 4200 includes a step 4201 of applying a cross-component adaptive loop filter CC-ALF to refine chroma components and a step 4202 of generating a bitstream including a plurality of CC-ALF related syntax elements, the plurality of CC-ALF related syntax elements indicating CC-ALF related information. In the bitstream generated in step 4202, the plurality of CC-ALF related syntax elements are signaled at any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header. The plurality of CC-ALF related syntax elements include a first syntax element indicating whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at a sequence level, the first syntax element being signaled at an SPS level, and a second syntax element indicating whether a cross-component adaptive loop filter is enabled at a sequence level, the second syntax element being signaled at an SPS level.

[0365] Figure 15 shows a flowchart of a method 4300 of decoding video, e.g., from a bitstream. The method 4300 may be implemented, for example, using a decoder according to Figure 13. Any other decoders and decoding devices disclosed herein may also be used to perform the method 4300.

[0366] The method 4300 includes a step 4301 of parsing a plurality of cross-component adaptive loop filter CC-ALF related syntax elements from a bitstream, where the plurality of CC-ALF related syntax elements are obtained from any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header. The plurality of CC-ALF related syntax elements includes a first syntax element, the first syntax element indicating whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at the sequence level and signaled at the SPS level, and a second syntax element, the second syntax element indicating whether the cross-component adaptive loop filter is enabled at the sequence level and signaled at the SPS level. The method 4300 further includes a step 4302 of performing a CC-ALF process using at least one of the plurality of CC-ALF related syntax elements.

[0367] In one embodiment, a method of encoding performed by an encoding device is provided, the method comprising: performing a filtering process (such as a cross-component filtering process) by applying a cross-component adaptive loop filter (CC-ALF); generating a bitstream including a plurality of CC-ALF-related syntax elements (e.g., M CC-ALF-related syntax elements, where M>1 and M is an integer), the plurality of CC-ALF-related syntax elements indicating CC-ALF-related information; Including, Multiple CC-ALF related syntax elements are signaled at any one or more of the video parameter set (VPS) level, the sequence parameter set (SPS) level, the picture parameter set (PPS) level, the picture header, the slice header, or the tile header, or multiple CC-ALF related syntax elements are signaled at the sequence parameter set (SPS) level and / or the picture header.

[0368] In this way, for example, a bitstream of reduced size may be provided since information relating to all slices of a picture may be provided only once, in the picture header.

[0369] In one embodiment, the multiple CC-ALF related syntax elements include a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) that is signaled at a sequence parameter set (SPS) level. This indicator may indicate whether ALF or CC-ALF or both may be enabled for the entire sequence.

[0370] In a further embodiment, a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag) indicates whether a cross-component adaptive loop filter (CC-ALF) is enabled at a sequence level; or A first syntax element (e.g., a first indicator such as sps_alf_enabled_flag) indicates whether an adaptive loop filter (ALF), including a cross-component adaptive loop filter (CC-ALF), is enabled at the sequence level. This first syntax element allows the mode of the adaptive loop filter to be provided specifically at the sequence level for all pictures or a portion of a sequence.

[0371] It may be further specified that a first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as or has a first value (true or 1), which may indicate, preferably using only a single bit value, whether ALF and / or CC-ALF are enabled.

[0372] In one embodiment, the plurality of CC-ALF related syntax elements include: a second syntax element (e.g., a second indicator such as pic_ccalf_enabled_present_flag) if the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as a first value (true or 1) or has a first value (true or 1), where the second syntax element (e.g., pic_ccalf_enabled_present_flag) is signaled in the picture header; or a ninth syntax element (e.g., a ninth indicator such as pic_alf_enabled_present_flag) when a first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as a first value (true or 1) or has a first value (true or 1), and the ninth syntax element (e.g., pic_alf_enabled_present_flag) is signaled in the picture header. Further includes:

[0373] The second syntax element being provided when the first syntax element is set as a first value (and correspondingly for the ninth syntax element) may be understood to mean that the respective syntax element is provided only if, or at least if, the first syntax element has the first value, and not provided otherwise. Nevertheless, this embodiment may encompass the second and ninth syntax elements being provided or present regardless of the value of the first syntax element. This meaning may apply to the presence or absence of all further syntax elements mentioned herein, provided that these syntax elements are referred to as being present when another syntax element takes a particular value.

[0374] The second and ninth syntax elements may specify, using a reduced amount of bits, whether ALF and / or CC-ALF is enabled for a slice of a picture.

[0375] In one embodiment, a second syntax element (eg, a second indicator such as pic_ccalf_enabled_present_flag) indicates whether a third syntax element and / or a fourth set of syntax elements are present in the picture header.

[0376] Several CC-ALF related syntax elements are and a third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag or pic_alf_enabled_flag) where the third syntax element (e.g., pic_ccalf_enabled_present_flag or pic_alf_enabled_flag) is signaled in the picture header if the second syntax element (e.g., pic_ccalf_enabled_present_flag) or the ninth syntax element (e.g., pic_alf_enabled_present_flag) is set as a first value (true or 1) or the second syntax element or the ninth syntax element has a first value (true or 1). It may be further defined that:

[0377] In a further embodiment, a third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag) indicates whether a cross-component adaptive loop filter (CCALF) is enabled for all slices associated with the picture header, or A third syntax element (e.g., a third indicator such as pic_alf_enabled_flag) indicates whether adaptive loop filters, including cross-component adaptive loop filters (CCALFs), are enabled for all slices associated with the picture header, allowing information regarding the application of ALF or CC-ALF to be signaled for all slices of a picture using a reduced amount of information.

[0378] In a further embodiment, the plurality of CC-ALF related syntax elements are If the third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag or pic_alf_enabled_flag) is set as the first value (true or 1) or has the first value (true or 1), the fourth set of syntax elements is further included, wherein the fourth set of syntax elements is signaled in the picture header (e.g., at the picture header level) or the fourth set of syntax elements is carried by a picture header entry.

[0379] Specifically, in one embodiment, the fourth set of syntax elements includes:

[0380] [Table 29]

[0381] It may additionally or alternatively be defined that the fourth set of syntax elements includes:

[0382] [Table 30]

[0383] Further, additionally or alternatively, the fourth set of syntax elements includes:

[0384] [Table 31]

[0385] In the above embodiment, relevant information regarding the filters to be applied may be provided for every slice already in the picture header, potentially reducing the size of the bitstream.

[0386] In a further embodiment, it is provided that for all slices of the same picture, the same CC-ALF related information (aps_ids, etc.) is inherited from the picture header, so that the information provided in the picture header does not need to be additionally included in the slice header etc., thereby potentially reducing the amount of information provided in the bitstream.

[0387] In one embodiment, the plurality of CC-ALF related syntax elements include: a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag or sps_alf_enabled_flag), where the first syntax element (e.g., the first indicator such as sps_ccalf_enabled_flag) is signaled at a sequence parameter set (SPS) level; a second syntax element (e.g., a second indicator such as pic_ccalf_enabled_present_flag) when a first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as or has a first value (true or 1), and the second syntax element (e.g., pic_ccalf_enabled_present_flag) is signaled in a picture header; Includes.

[0388] In addition, several CC-ALF related syntax elements are When the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as or has a first value (true or 1) and when the second syntax element (such as pic_ccalf_enabled_present_flag or pic_alf_enabled_present_flag) is set as or has a second value (false or 0), the fifth syntax element (e.g., a fifth indicator such as slice_ccalf_enabled_flag or slice_alf_enabled_flag) may be included, where the fifth syntax element (such as slice_ccalf_enabled_flag or slice_alf_enabled_flag) is signaled in the slice header.

[0389] Several CC-ALF related syntax elements are It may also be specified to further include a sixth set of syntax elements if the fifth syntax element (e.g., a fifth indicator such as slice_ccalf_enabled_flag or slice_alf_enabled_flag) is set as the first value (true or 1) or has the first value (true or 1), the sixth set of syntax elements being signaled in the slice header or carried by the slice header entry. This set of syntax elements indicates, for example, parameters to be used in the ALF or CC-ALF. By providing this set potentially dependent on the value of the fifth syntax element, the size of the bitstream may be further reduced.

[0390] Specifically, a sixth set of syntax elements may be defined to include:

[0391] [Table 32]

[0392] Additionally or alternatively, a sixth set of syntax elements may be defined to include:

[0393] [Table 33]

[0394] Additionally, a sixth set of syntax elements may be defined to include:

[0395] [Table 34]

[0396] In a further embodiment, the plurality of CC-ALF related syntax elements are If the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as or has a first value (true or 1), it further includes a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id) and an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id).

[0397] In one embodiment, the plurality of CC-ALF related syntax elements include: If the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set as or has a first value (true or 1), and if the ninth syntax element (such as pic_alf_enabled_present_flag) is set as or has a first value (true or 1), it further includes a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id) and an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id).

[0398] In one embodiment, the plurality of CC-ALF related syntax elements include: If the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set to or has a first value (true or 1), and if the ninth syntax element (such as pic_alf_enabled_present_flag) is set to or has a first value (true or 1), the ninth syntax element (such as pic_alf_enabled_present_flag) is set to or has a first value (true or 1), further including a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id), an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id), and a second syntax element (pic_ccalf_enabled_present_flag).

[0399] Several CC-ALF related syntax elements are When the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is set to or has a first value (true or 1), it may also be specified to further include a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id), an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id), and a ninth syntax element (pic_alf_enabled_present_flag).

[0400] Further, in one embodiment, CC-ALF is applied to perform a filtering operation on one or more luma samples of the luma component of the current image block to refine a chroma sample (e.g., each chroma sample) of the chroma component of the current image block.

[0401] Specifically, it may be specified that the CC-ALF is configured to refine each chroma component using luma sample values.

[0402] In one embodiment, the CC-ALF operates as part of the adaptive loop filter process.

[0403] The image block comprises a luma block and a chroma block; The first chroma block is the first chroma component (e.g., the Cb component) of the image block, and the second chroma block is the second chroma component (e.g., the Cr component) of the image block. It may also be specified.

[0404] The present disclosure relates to determining whether cross-component ALF (CC-ALF) is enabled; generating a bitstream including one or more syntax elements (e.g., CC-ALF related syntax elements such as pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, or pic_cross_component_alf_cr_enabled_flag), where the one or more syntax elements indicate whether cross-component ALF (CC-ALF) is enabled at the picture header level and corresponding CC-ALF related information, the syntax elements being signaled at the picture header level; Including, It further relates to a method of encoding implemented by an encoding device, whereby relevant information for later decoding can be provided in a bitstream with reduced size.

[0405] It may also be specified that the CC-ALF is applied to perform a filtering operation on one or more luma samples of the luma component of the current image block in order to refine a chroma sample (e.g., each chroma sample) of the chroma component of the current image block.

[0406] In one embodiment, the method comprises: The method further includes a step of performing a filtering process on a luma component of a current image block belonging to the picture by using a CC-ALF filter, wherein one or more luma samples of the luma component of the current image block are used to refine at least one chroma sample (e.g., each chroma sample) of a chroma component of the current image block.

[0407] It may also be specified that the CC-ALF is configured to refine each chroma component using the luma sample values.

[0408] In a further embodiment, the CC-ALF operates as part of the adaptive loop filter process.

[0409] The image block comprises a luma block and a chroma block; The first chroma block is the first chroma component (e.g., the Cb component) of the image block, and the second chroma block is the second chroma component (e.g., the Cr component) of the image block. It may also be specified.

[0410] The present disclosure further relates to a method of decoding implemented by a decoding device, the method comprising: Parsing one or more syntax elements from a bitstream of a video signal, where the one or more syntax elements indicate cross-component adaptive loop filter (CC-ALF) related information, and the one or more syntax elements are obtained from any one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header of the bitstream, or the one or more syntax elements are obtained from the sequence parameter set (SPS) level and / or a picture header; performing a filtering process (such as a cross-component filtering process) by applying CC-ALF based on syntax elements or based on values ​​of syntax elements; Includes.

[0411] The information that may be needed to determine the filtering method to be applied, and how it should be applied, may be provided in a bitstream that has a reduced size, while still allowing reliable decoding.

[0412] The present disclosure further describes a method of decoding implemented by a decoding device, the method comprising: Parsing a plurality of syntax elements from a bitstream of a video signal, the syntax elements being obtained from any one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header of the bitstream, or the syntax elements being obtained from a sequence parameter set (SPS) level and / or a picture header; determining cross-component adaptive loop filter (CC-ALF) related information based on one or more syntax elements from the plurality of syntax elements; performing a filtering process (such as a cross-component filtering process) by applying CC-ALF based on the CC-ALF related information; Includes.

[0413] The information that may be needed to determine the filtering method to be applied, and how it should be applied, may be provided in a bitstream that has a reduced size, while still allowing reliable decoding.

[0414] It may be specified that the one or more syntax elements or multiple syntax elements (e.g., CC-ALF related syntax elements) include a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag or sps_alf_enabled_flag), and that the first syntax element (the first indicator such as sps_ccalf_enabled_flag) is obtained from a sequence parameter set (SPS) level.

[0415] Specifically, a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag) indicates whether a cross-component adaptive loop filter (CC-ALF) is enabled at the sequence level; or A first syntax element (e.g., a first indicator such as sps_alf_enabled_flag) indicates whether an adaptive loop filter (ALF), including a cross-component adaptive loop filter (CC-ALF), is enabled at the sequence level. It may be further defined that:

[0416] Thereby, information regarding which filter method should be applied can be provided to the decoder with a reduced amount of information in the bitstream.

[0417] In one embodiment, the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1).

[0418] Several syntax elements (such as CC-ALF related syntax elements) are a second syntax element (e.g., a second indicator such as pic_ccalf_enabled_present_flag) where the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as a first value (true or 1) or has a first value (true or 1), and the second syntax element (e.g., pic_ccalf_enabled_present_flag) is obtained from the picture header; or a ninth syntax element (e.g., a ninth indicator, such as pic_alf_enabled_present_flag) when the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as a first value (true or 1) or has a first value (true or 1), and the ninth syntax element (e.g., pic_alf_enabled_present_flag) is obtained from a picture header. It may also be specified that the following is further included:

[0419] In a further embodiment, a second syntax element (eg, a second indicator such as pic_ccalf_enabled_present_flag) indicates whether a third syntax element and / or a fourth set of syntax elements are present in the picture header.

[0420] Several syntax elements (such as CC-ALF related syntax elements) are If the second syntax element (e.g., pic_ccalf_enabled_present_flag) or the ninth syntax element (e.g., pic_alf_enabled_present_flag) is derived as a first value (true or 1), or the second syntax element or the ninth syntax element has a first value (true or 1), the third syntax element may further include a third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag or pic_alf_enabled_flag), where the third syntax element (e.g., pic_ccalf_enabled_flag or pic_alf_enabled_flag) is obtained from the picture header.

[0421] Specifically, a third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag) indicates whether the Cross-Component Adaptive Loop Filter (CCALF) is enabled for all slices associated with the picture header, or A third syntax element (e.g., a third indicator such as pic_alf_enabled_flag) indicates whether adaptive loop filters, including the cross-component adaptive loop filter (CCALF), are enabled for all slices associated with the picture header. It can be stipulated that:

[0422] In one embodiment, the plurality of syntax elements (e.g., CC-ALF related syntax elements) are If a third syntax element (e.g., a third indicator such as pic_ccalf_enabled_flag or pic_alf_enabled_flag) is derived as a first value (true or 1) or has the first value (true or 1), it further includes a fourth set of syntax elements, wherein the fourth set of syntax elements is obtained from the picture header (e.g., at the picture header level) or the fourth set of syntax elements is carried by the picture header entry.

[0423] This set of syntax elements may be provided only if the third syntax element takes or is derived as the first value, and may not be present otherwise, or the values ​​of the set of syntax elements may be set to a default value, such as 0, if the third syntax element takes a different value. In both cases, reliable provision of relevant information for decoding may be ensured at a reduced size of the bitstream.

[0424] Specifically, the fourth set of syntax elements may include:

[0425] [Table 35]

[0426] Alternatively or additionally, the fourth set of syntax elements may include:

[0427] [Table 36]

[0428] In a further embodiment, the fourth set of syntax elements may include:

[0429] [Table 37]

[0430] It may be specified that for all slices of the same picture, the same CC-ALF related information (such as aps_ids) is inherited from the picture header, which may reduce the amount of information provided in the bitstream to indicate to the decoder the CC-ALF related information for slices of a picture.

[0431] In one embodiment, the plurality of syntax elements (e.g., CC-ALF related syntax elements) are a first syntax element (e.g., a first indicator such as sps_ccalf_enabled_flag or sps_alf_enabled_flag), where the first syntax element (e.g., the first indicator such as sps_ccalf_enabled_flag) is obtained from a sequence parameter set (SPS) level; a second syntax element (e.g., a second indicator such as pic_ccalf_enabled_present_flag) if the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1), where the second syntax element (e.g., pic_ccalf_enabled_present_flag) is obtained from a picture header; Includes.

[0432] In a further embodiment, the plurality of syntax elements (such as CC-ALF related syntax elements) If the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1) and if the second syntax element (such as pic_ccalf_enabled_present_flag or pic_alf_enabled_present_flag) is derived as or has a second value (false or 0), the fifth syntax element (e.g., a fifth indicator such as slice_ccalf_enabled_flag or slice_alf_enabled_flag) is obtained from the slice header.

[0433] Several syntax elements (such as CC-ALF related syntax elements) are If a fifth syntax element (e.g., a fifth indicator such as slice_ccalf_enabled_flag or slice_alf_enabled_flag) is derived as a first value (true or 1) or has the first value (true or 1), it may be specified that the sixth set of syntax elements further includes a sixth set of syntax elements, the sixth set of syntax elements being obtained from the slice header, or the sixth set of syntax elements being carried by the slice header entry.

[0434] Specifically, a sixth set of syntax elements may be defined to include:

[0435] [Table 38]

[0436] Alternatively or additionally, a sixth set of syntax elements may be defined to include:

[0437] [Table 39]

[0438] Similarly, a sixth set of syntax elements may be defined to include:

[0439] [Table 40]

[0440] In one embodiment, the plurality of syntax elements (e.g., CC-ALF related syntax elements) are If the first syntax element (e.g., sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1), it further includes a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id) and an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id).

[0441] Several syntax elements (such as CC-ALF related syntax elements) are When the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1), and when the ninth syntax element (such as pic_alf_enabled_present_flag) is derived as or has a first value (true or 1), it may also be specified to further include a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id) and an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id).

[0442] In another embodiment, the plurality of syntax elements (e.g., CC-ALF related syntax elements) are If the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1), and if the ninth syntax element (such as pic_alf_enabled_present_flag) is derived as or has a first value (true or 1), it further includes a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id), an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id), and a second syntax element (such as pic_ccalf_enabled_present_flag).

[0443] Several syntax elements (such as CC-ALF related syntax elements) are When the first syntax element (such as sps_ccalf_enabled_flag or sps_alf_enabled_flag) is derived as or has a first value (true or 1), it may also be specified to further include a seventh syntax element (e.g., a seventh indicator such as pic_cross_component_alf_cb_aps_id), an eighth syntax element (e.g., an eighth indicator such as pic_cross_component_alf_cr_aps_id), and a ninth syntax element (such as pic_alf_enabled_present_flag).

[0444] In one embodiment, CC-ALF is applied to perform a filtering process on one or more luma samples of a luma component of a current image block to refine a chroma sample (e.g., each chroma sample) of the chroma component of the current image block.

[0445] The CC-ALF may be configured to refine each chroma component using the luma sample values.

[0446] The CC-ALF may also be specified to operate as part of an adaptive loop filter process.

[0447] In one embodiment, the image block comprises a luma block and a chroma block; The first chroma block is a first chroma component (eg, a Cb component) of the image block, and the second chroma block is a second chroma component (eg, a Cr component) of the image block.

[0448] The present disclosure relates to parsing one or more syntax elements (e.g., M CC-ALF related syntax elements, where M is an integer and M≧1, such as pic_ccalf_enabled_flag, pic_cross_component_alf_cb_enabled_flag, or pic_cross_component_alf_cr_enabled_flag) from a bitstream of the video signal, where the one or more syntax elements indicate whether cross-component ALF (CCALF) is enabled at a picture header level and corresponding CCALF related information, and the one or more syntax elements are obtained from the picture header level; in response to determining that CC-ALF is enabled, performing a filtering process (e.g., a cross-component filtering process) by applying CC-ALF; Reference is further made to a method of decoding implemented by the decoding device, comprising:

[0449] This method may properly apply CC-ALF during decoding while allowing for a reduction in the size of the bitstream.

[0450] In one embodiment, CC-ALF is applied to perform a filtering operation on one or more luma samples of a luma component of a current image block to refine a chroma sample (e.g., each chroma sample) of the chroma component of the current image block.

[0451] It may also be specified that the CC-ALF is configured to refine each chroma component using the luma sample values.

[0452] In a further embodiment, the CC-ALF operates as part of the adaptive loop filter process.

[0453] An embodiment is an image block comprising a luma block and a chroma block, The first chroma block is a first chroma component (e.g., a Cb component) of the image block, and the second chroma block is a second chroma component (e.g., a Cr component) of the image block. It may further include.

[0454] The present disclosure further provides a device for encoding video data, the device comprising: A video data memory; Video Encoder and The video encoder comprises: performing a filtering process (cross-component filtering process) by applying a cross-component adaptive loop filter (CC-ALF); Generate a bitstream for a video signal by including multiple syntax elements (e.g., CC-ALF related syntax elements) The syntax elements indicate CC-ALF related information, The plurality of CC-ALF-related syntax elements are obtained from any one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header; or A number of CC-ALF related syntax elements are obtained from the sequence parameter set (SPS) level and / or the picture header.

[0455] The device is capable of implementing encoding that results in a bitstream having a reduced size.

[0456] Further provided is a device for decoding video data, the device comprising: A video data memory; 1. A video decoder, comprising: Parsing a plurality of syntax elements from a bitstream of a video signal, the plurality of syntax elements being obtained from any one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header of the bitstream, or the plurality of syntax elements being obtained from a sequence parameter set (SPS) level and / or a picture header of the bitstream; determining cross-component adaptive loop filter (CC-ALF) related information based on one or more syntax elements from the plurality of syntax elements; Performing a filtering process (such as a cross-component filtering process) by applying CC-ALF based on CC-ALF-related information a video decoder configured to: It is equipped with.

[0457] This decoder may be able to perform reliable decoding while requiring a bitstream with a reduced size to obtain information about the filters to be applied during decoding.

[0458] The present disclosure further provides an encoder, comprising a processing circuit for performing the method according to any one of the above embodiments.

[0459] The present disclosure also refers to a decoder, comprising a processing circuit for performing the method according to any one of the above embodiments.

[0460] Further provided is a computer program product comprising a program code for performing the method according to any one of the above embodiments.

[0461] The present disclosure further relates to a decoder, the decoder comprising: one or more processors; a non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor; wherein the programming, when executed by the processor, configures the decoder to perform a method according to any one of the above embodiments.

[0462] Further provided in the present disclosure is an encoder, the encoder comprising: one or more processors; a non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor; wherein the programming, when executed by a processor, configures the encoder to perform a method according to any one of the above embodiments.

[0463] Further provided is a non-transitory recording medium including an encoded bitstream decoded by an image decoding device, the bitstream being generated by dividing a frame of a video or image signal into a plurality of blocks and including a plurality of syntax elements (such as CC-ALF related syntax elements), the plurality of syntax elements indicating CC-ALF related information; The syntax elements (e.g., CC-ALF related syntax elements) are taken from any one or more of a video parameter set (VPS) level, a sequence parameter set (SPS) level, a picture parameter set (PPS) level, a picture header, a slice header, or a tile header; or A number of syntax elements (eg, CC-ALF related syntax elements) are obtained from at least one of a sequence parameter set (SPS) level or a picture header.

[0464] The present disclosure also relates to an apparatus, the apparatus comprising: a non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more processors, cause the one or more processors to perform operations for generating image data corresponding to a video bitstream, the image data comprising: a plurality of pictures in a video bitstream, the picture including N slices; a picture header associated with the N slices of the picture; Including, one or more, or each, of the N slices comprises a plurality of blocks of entropy coded samples; CC-ALF filtering information or CC-ALF filter parameters are inherited by the N slices from the picture header, or the N slices inherit ALF filtering data from the picture header.

[0465] In accordance with any of the above embodiments, it may be further specified that the values ​​of slice_cross_component_alf_cr_aps_id and slice_cross_component_alf_cb_aps_id are the same as pic_cross_component_alf_cb_aps_id and pic_cross_component_alf_cr_aps_id.

[0466] In a further embodiment, pic_cross_component_alf_cb_aps_id and pic_cross_component_alf_cr_aps_id are obtained from the picture header.

[0467] It may also be specified that the CCALF related syntax elements are obtained only once in the picture header associated with all N slices.

[0468] In one embodiment, N is a positive integer greater than one.

[0469] In one embodiment, a method for encoding a video bitstream is provided, the encoding method comprising: generating a bitstream for a video signal by including a plurality of syntax elements (e.g., ALF-related syntax elements, such as sps_alf_enabled_flag, and / or CCALF-related syntax elements, such as sps_ccalf_enabled_flag); A number of syntax elements include a cross-component adaptive loop filter (CC-ALF) enable flag (e.g., sps_ccalf_enabled_flag), CC-ALF related parameters are conditionally signaled based at least on the value of the CC-ALF enabled flag (eg, sps_ccalf_enabled_flag).

[0470] This may provide a bitstream that contains relevant information for decoding but has a reduced size.

[0471] Further provided in accordance with the present disclosure is a method for decoding a video bitstream, performed by a decoding device, the decoding method comprising: Obtaining (S110) a plurality of syntax elements from a video bitstream; A number of syntax elements include a cross-component adaptive loop filter (CC-ALF) enable flag (e.g., sps_ccalf_enabled_flag), CC-ALF related parameters are conditionally signaled based at least on the value of the CCALF enabled flag (eg, sps_ccalf_enabled_flag).

[0472] This method makes it possible to perform reliable decoding even when the video bitstream is reduced in size.

[0473] In one embodiment, a CCALF enabled flag (e.g., sps_ccalf_enabled_flag) is signaled at a sequence parameter set (SPS) level of the bitstream if one or more conditions are met, the one or more conditions including when a value of a first flag (e.g., sps_alf_enabled_flag) signaled at the sequence parameter set (SPS) level of the bitstream is an enabled value (e.g., a first value, e.g., true or 1); The CCALF enable flag indicates whether the cross-component adaptive loop filter (CCALF) is enabled at the sequence level or the SPS level.

[0474] The syntax element may include a third flag (such as alf_present_in_ph_flag), which is signaled at the picture parameter set (PPS) level of the bitstream, and the third flag may also be specified to indicate whether one or more syntax elements for enabling use of the ALF are present in the PH (picture header) that references the PPS.

[0475] A third flag (alf_present_in_ph_flag) equal to 1 may also be specified to specify that syntax elements for enabling use of the ALF may be present in a PH (picture header) that references a PPS. A third flag (alf_present_in_ph_flag) equal to 0 may specify that syntax elements for enabling use of the ALF may be present in a slice header that references a PPS.

[0476] In one embodiment, if the value of the first flag (e.g., sps_alf_enabled_flag) is a valid value (e.g., a first value, e.g., true or 1), and the value of the third flag (alf_present_in_ph_flag) is a valid value (e.g., a first value, e.g., true or 1), and It is specified that when the value of the CCALF enable flag (e.g., sps_ccalf_enabled_flag) is a valid value (e.g., a first value, e.g., true or 1), cross-component adaptive loop filter (CCALF) related parameters (e.g., syntax elements for enabling use of CCALF) are signaled at the picture header level of the bitstream.

[0477] In a further embodiment, if the value of the first flag (e.g., sps_alf_enabled_flag) is a valid value (e.g., a first value, e.g., true or 1) and the value of the third flag (alf_present_in_ph_flag) is an invalid value (e.g., a second value, e.g., false or 0), and It is specified that when the value of the CCALF enable flag (e.g., sps_ccalf_enabled_flag) is a valid value (e.g., a first value, e.g., true or 1), cross-component adaptive loop filter (CCALF) related parameters (e.g., syntax elements for enabling use of CCALF) are signaled at the slice header level of the bitstream.

[0478] In a further embodiment, a CC-ALF enabled flag (e.g., sps_ccalf_enabled_flag) equal to 0 specifies that the cross-component adaptive loop filter is disabled; A CC-ALF enabled flag (e.g., sps_ccalf_enabled_flag) equal to 1 specifies that the cross-component adaptive loop filter is enabled. It is stipulated that:

[0479] The syntax elements are: A second flag (e.g., no_ccalf_constraint_flag) equal to 1 specifies that the CCALF enabled flag (e.g., sps_ccalf_enabled_flag) is equal to 0, or a second flag (e.g., no_ccalf_constraint_flag) equal to 0 implies no such constraint. It may be further defined that:

[0480] In one embodiment, the method comprises: The filtered reconstructed picture (the modified reconstructed luma sample array S' L , the corrected reconstructed chroma array S' Cb , and / or the modified reconstructed chroma sample array S' Cr , etc.) to obtain the reconstructed picture (the reconstructed luma sample array S L , the reconstructed chroma sample array S Cb , and / or the reconstructed chroma sample array S Cr ) may further include performing a filtering process (cross-component adaptive loop filter process).

[0481] The present disclosure further provides an encoded bitstream for a video signal by including a plurality of syntax elements (e.g., an ALF-related syntax element, such as sps_alf_enabled_flag, and / or a CCALF-related syntax element, such as sps_ccalf_enabled_flag), the plurality of syntax elements including a cross-component adaptive loop filter (CCALF) enablement flag (e.g., sps_ccalf_enabled_flag); CCALF related parameters are conditionally signaled based on at least the value of the CCALF enabled flag (eg, sps_ccalf_enabled_flag).

[0482] The bitstream can be reduced in size while still providing in a reliable manner the information to be used in decoding when applying CC-ALF.

[0483] 12 illustrates an embodiment of an encoder 4000. The encoder 4000 may be implemented using any processing circuitry, here shown at 4001, to perform a method of encoding video. In particular, the processing circuitry 4001 may be adapted to apply a cross-component adaptive loop filter CC-ALF to refine chroma components. The processing circuitry may be further adapted to generate a bitstream including a plurality of CC-ALF-related syntax elements, the plurality of CC-ALF-related syntax elements indicating CC-ALF-related information, the plurality of CC-ALF-related syntax elements being signaled at any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header.

[0484] The multiple CC-ALF related syntax elements in this context include a first syntax element, which indicates whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level, and a second syntax element, which indicates whether the cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level.

[0485] The encoder may further comprise a receiver 4002 for receiving a video to be encoded and a transmitter 4003 for transmitting a bitstream including at least a plurality of syntax elements.

[0486] 13 illustrates an embodiment of a decoder 4100. The decoder 4100 may be implemented using any processing circuit 4101 to perform a method of decoding video. Specifically, the processing circuit 4101 may be adapted to parse a plurality of cross-component adaptive loop filter CC-ALF related syntax elements from a bitstream, the plurality of CC-ALF related syntax elements being obtained from any one or more of a sequence parameter set (SPS) level, a picture header, or a slice header.

[0487] Specifically, the multiple CC-ALF related syntax elements include a first syntax element, which indicates whether an adaptive loop filter (ALF) including a cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level, and a second syntax element, which indicates whether the cross-component adaptive loop filter is enabled at the sequence level and is signaled at the SPS level.

[0488] The processing circuitry may be further adapted to perform a CC-ALF process using at least one of a plurality of CC-ALF related syntax elements.

[0489] Further, the decoder 4100 may comprise a receiver 4102 for receiving the bitstream. In addition, the decoder may comprise a transmitter 4103 for outputting the decoded video, for example, to an output device not shown here.

[0490] The following is a description of the application of the encoding and decoding methods as shown in the above embodiments and a system using them.

[0491] 10 is a block diagram showing a content supply system 3100 for realizing a content distribution service. The content supply system 3100 includes a capture device 3102 and a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any type of combination thereof.

[0492] The capture device 3102 may generate data and encode the data by the encoding method as shown in the above embodiment. Alternatively, the capture device 3102 may deliver the data to a streaming server (not shown in the figure), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or pad, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any kind of combination thereof. For example, the capture device 3102 may include a source device 12 as described above. If the data includes video, a video encoder 20 included in the capture device 3102 may actually perform a video encoding process. If the data includes audio (i.e., voice), an audio encoder included in the capture device 3102 may actually perform an audio encoding process. For some practical scenarios, the capture device 3102 delivers the encoded video and audio data by multiplexing them together. For other practical scenarios, for example, in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. The capture device 3102 delivers the encoded audio data and the encoded video data separately to the terminal device 3106 .

[0493] In the content supply system 3100, the terminal device 310 receives and plays the encoded data. The terminal device 3106 may be a device having data receiving and playing capabilities, such as a smartphone or pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof, that can decode the above encoded data. For example, the terminal device 3106 may include a destination device 14 as described above. If the encoded data includes video, the video decoder 30 included in the terminal device prioritizes performing video decoding. If the encoded data includes audio, the audio decoder included in the terminal device prioritizes performing audio decoding processing.

[0494] For a terminal device having a display, for example, a smartphone or pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA) 3122, or an in-vehicle device 3124, the terminal device can provide the decoded data to its display. For a terminal device without a display, for example, an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is brought into contact therewith to receive and display the decoded data.

[0495] If each device in the system performs encoding and decoding, a picture encoding device or a picture decoding device may be used as shown in the above embodiment.

[0496] 11 is a diagram showing the structure of an example of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol progression unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hyper Text Transfer Protocol (HTTP), HTTP Live streaming protocol (HLS), MPEG-DASH, Real-time Transport protocol (RTP), Real Time Messaging Protocol (RTMP), or any kind of combination thereof.

[0497] After the protocol proceeding unit 3202 processes the stream, a stream file is generated. The file is output to the demultiplexing unit 3204. The demultiplexing unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As described above, for some practical scenarios, for example, in a video conference system, the encoded audio data and the encoded video data are not multiplexed. In this scenario, the encoded data is sent to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.

[0498] Through the demultiplexing process, a video elementary stream (ES), an audio ES, and optionally subtitles are generated. The video decoder 3206, including the video decoder 30 as described in the above embodiment, decodes the video ES by the decoding method as shown in the above embodiment to generate video frames, and supplies the data to the synchronization unit 3212. The audio decoder 3208 decodes the audio ES to generate audio frames, and supplies the data to the synchronization unit 3212. Alternatively, the video frames may be stored in a buffer (not shown in FIG. Y) before being supplied to the synchronization unit 3212. Similarly, the audio frames may be stored in a buffer (not shown in FIG. Y) before being supplied to the synchronization unit 3212.

[0499] The synchronization unit 3212 synchronizes video and audio frames and provides the video / audio to a video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in a syntax using timestamps for the presentation of the coded audio and visual data and timestamps for the delivery of the data stream itself.

[0500] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes it with the video and audio frames, and provides the video / audio / subtitles to the video / audio / subtitle display 3216.

[0501] The present invention is not limited to the above system, and either the picture encoding device or the picture decoding device in the above embodiments may be incorporated into other systems, for example, an automobile system.

[0502] mathematical operators The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and additional operations such as exponentiation and real division are defined. Numbering and counting rules generally start at 0, e.g., "first" corresponds to the 0th, "second" corresponds to the 1st, etc.

[0503] Arithmetic Operators The following arithmetic operators are defined as follows: + Add - subtraction (as a two-argument operator) or negation (as a unary prefix operator) * Multiplication, including matrix multiplication X y Power. Specifies x to the power of y. In other contexts, such notation is used for superscript designations that are not intended to be interpreted as powers. / Integer division that truncates the result towards zero. For example, 7 / 4 and -7 / -4 round down to 1, and -7 / 4 and 7 / -4 round down to -1. ÷ Used to indicate division in mathematical equations where truncation or rounding is not intended.

number

number

[0504] Logical Operators The following logical operators are defined as follows: x&&y The Boolean logic "and" of x and y x||y The Boolean logic "or" of x and y ! Boolean logic "not" x?y:zEvaluates to the value of y if x is true or not equal to 0, otherwise it evaluates to the value of z.

[0505] Relational Operators The following relational operators are defined as follows: > Greater than >= Greater than or equal to < Less than <= Less than or equal == Equal != Not equal

[0506] When a relational operator is applied to a syntax element or variable that has been assigned the value "na" (not applicable), the value "na" is treated as a separate value for the syntax element or variable. The value "na" is considered not equal to any other value.

[0507] Bitwise Operators The following bitwise operators are defined as follows: & Bitwise "and". When operating on integer arguments, it operates on the two's complement representation of the integer value. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by appending more significant bits equal to 0. Bitwise "or". When operating on integer arguments, it operates on the two's complement representation of the integer values. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by appending more significant bits equal to 0. ^ Bitwise "exclusive or". When operating on integer arguments, it operates on the two's complement representation of the integer values. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by appending more significant bits equal to 0. x >> y Arithmetic right shift of the two's complement integer representation of x by the number of bits in y. This function is defined only for non-negative integer values of y. The bit shifted into the most significant bit (MSB) as a result of the right shift has the same value as the MSB of x before the shift operation. x << y Arithmetic left shift of the two's complement integer representation of x by the number of bits in y. This function is defined only for non-negative integer values of y. The bit shifted into the least significant bit (LSB) as a result of the left shift has a value equal to 0.

[0508] Assignment operator The following arithmetic operators are defined as follows. = Assignment operator ++ Increment; that is, x++ is equivalent to x = x + 1, and when used in an array index, it is evaluated to the value of the variable before the increment operation. -- Decrement; that is, x-- is equivalent to x = x - 1, and when used in an array index, it is evaluated to the value of the variable before the decrement operation. += Increment by the specified amount; that is, x += 3 is equivalent to x = x + 3, and x += (-3) is equivalent to x = x + (-3). -= Decrement by the specified amount; that is, x -= 3 is equivalent to x = x - 3, and x -= (-3) is equivalent to x = x - (-3).

[0509] Range notation The following notations are used to specify a range of values. x = y..z x takes integer values starting from y up to z, where x, y, and z are integers and z is greater than y.

[0510] Mathematical functions The following mathematical functions are defined.

[0511]

Number

[0512] Asin(x) is the trigonometric arcsine function, operating on an argument x in the range -1.0 to 1.0, with an output value in the range -π÷2 to π÷2 in radians. Atan(x) is the trigonometric arctangent function, calculated on the argument x, with output values ​​in the range -π÷2 to π÷2 in radians.

[0513]

number

[0514] Ceil(x) The smallest integer greater than or equal to x. Clip1 Y (x)=Clip3(0,(1< <BitDepth Y )-1,x) Clip1 C (x)=Clip3(0,(1< <BitDepth C )-1,x)

[0515]

number

[0516] Cos(x) The trigonometric cosine function operated on the argument x in radians. Floor(x) The largest integer less than or equal to x.

[0517]

number

[0518] Ln(x) The natural logarithm of x (logarithm to base e, where e is the constant base of natural logarithms, 2.718 281 828...) Log2(x) The base 2 logarithm of x. Log10(x) The base 10 logarithm of x.

[0519]

number

[0520] Round(x)=Sign(x)*Floor(Abs(x)+0.5)

[0521]

number

[0522] Sin(x) The trigonometric sine function of the argument x in radians.

[0523]

number

[0524] Swap(x,y)=(y,x) Tan(x) The trigonometric tangent function of the argument x in radians.

[0525] Precedence of operations If precedence within an expression is not explicitly indicated by the use of parentheses, the following rules apply: - An operation with higher precedence is evaluated before any operation with lower precedence. - Operations of equal precedence are evaluated in order from left to right.

[0526] The following table specifies the precedence of operations from highest to lowest, with a higher position in the table indicating a higher precedence.

[0527] For those operators that are also used in the C programming language, the precedence used in this specification is the same as that used in the C programming language.

[0528] [Table 41]

[0529] A text description of the logical operation In the text, the following forms: if( condition 0 ) statement 0 else if( condition 1 ) statement 1 ... else / * informative comment on remaining condition * / statement n The logical statement as mathematically explained in ... as follows / ... the following applies: - If condition 0, statement 0 - Otherwise, if condition 1, statement 1 - ... - Otherwise (informative remark on remaining condition), statement n It can be written as:

[0530] Each "If ... Otherwise, if ... Otherwise, ..." statement in the text is introduced with "... as follows" or "... the following applies" immediately followed by "If ...". The last condition in an "If ... Otherwise, if ... Otherwise, ..." is always "Otherwise, ...". Interleaved "If ... Otherwise, if ... Otherwise, ..." statements can be identified by matching the "... as follows" or "... the following applies" with the trailing "Otherwise, ...".

[0531] In the text, the following forms: if( condition 0a && condition 0b ) statement 0 else if( condition 1a | | condition 1b ) statement 1 ... else statement n The logical operations described mathematically in ... as follows / ... the following applies: - If all of the following conditions are true, statement 0: - condition 0a - condition 0b - Otherwise, if one or more of the following conditions are true, statement 1: - condition 1a - condition 1b - ... - Otherwise, statement n It can be written as:

[0532] In the text, the following forms: if( condition 0 ) statement 0 if( condition 1 ) statement 1 The logical operations described mathematically in When condition 0, statement 0 When condition 1, statement 1 It can be written as:

[0533] Although embodiments of the present invention have been described primarily in terms of video coding, it should be noted that embodiments of the coding system 10, encoder 20, and decoder 30 (and correspondingly system 10), as well as other embodiments described herein, may also be configured for still picture processing or coding, i.e., processing or coding of an individual picture independent of any preceding or successive pictures, as in video coding. In general, when picture processing coding is limited to a single picture 17, only the inter prediction units 244 (encoder) and 344 (decoder) may not be available. All other functions (also called tools or techniques) of the video encoder 20 and video decoder 30, such as residual calculation 204 / 304, transform 206, quantization 208, inverse quantization 210 / 310, (inverse) transform 212 / 312, partitioning 262 / 362, intra prediction 254 / 354, and / or loop filtering 220, 320, as well as entropy coding 270 and entropy decoding 204, may be used equally for still picture processing.

[0534] For example, the embodiments of the encoder 20 and the decoder 30, and the functions described herein with reference to the encoder 20 and the decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted over a communication medium as one or more instructions or codes and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium, such as a data storage medium, or a communication medium including any medium that facilitates the transfer of a computer program from one place to another, for example according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementation of the techniques described in this disclosure. The computer program product may include a computer-readable medium.

[0535] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage, flash memory, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Also, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0536] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term "processor" as used herein may refer to any of the above structures or any other structures suitable for implementing the techniques described herein. In addition, in some aspects, the functions described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Also, the techniques may be implemented entirely in one or more circuits or logic elements.

[0537] The techniques of the present disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or provided by a collection of interoperable hardware units including one or more processors as described above in conjunction with appropriate software and / or firmware. [Explanation of symbols]

[0538] 10. Video Coding System 12 Source Device 13 Communication Channels 14 Destination Device 16 Picture Source 17 Picture or picture data, raw picture or raw picture data 18 Preprocessor, preprocessing unit 19 Preprocessed Picture, Preprocessed Picture Data 20 Video Encoders, Non-transform-based Encoders 21 Encoded picture data, encoded bit stream 22 Communication interface, communication unit 28 Communication interface, communication unit 30 Video Decoder, Non-Transform-Based Decoder 31 Decoded Picture, Decoded Picture Data 32 Post-processor, post-processing unit 33 Post-Processed Picture, Post-Processed Picture Data 34 Display Devices 46 Processing Circuit 100 Video Encoder 110 Inverse Quantization Unit 201 Input, input interface 203 Picture Block, CTU 204 Residual Calculation Unit 205 Residual Blocks, Residual 206 Conversion Processing Unit 207 Conversion Factors 208 Quantization Units 209 Quantized Coefficients, Quantized Transform Coefficients, Quantized Residual Coefficients 210 Inverse Quantization Unit 211 Dequantized coefficients, Dequantized residual coefficients 212 Inverse Transformation Processing Unit 213 Reconstructed residual block, dequantized coefficients, transform block 214 Reconstruction unit, adder, analog adder 215 Reconstructed Blocks, Unfiltered Reconstructed Blocks 216 Buffers 220 Loop filter unit, loop filter 221 Filtered Block, Filtered Reconstructed Block 230 Decoded Picture Buffer (DPB) 244 Inter Prediction Units 254 intra prediction units 260 Mode Selection Unit 262 partitioning units 265 predicted block, predictor, intra predicted block, inter predicted block 270 Entropy Coding Unit 272 Output, Output Interface 304 Entropy Decoding Unit 309 Quantization Coefficients 310 Inverse Quantization Unit 311 Dequantization coefficients, transform coefficients 312 Inverse Transformation Processing Unit 313 Reconstructed residual block, transform block 314 Reconstruction Unit, Adder, Analog Adder 315 Reconstructed Blocks 320 Loop filter, loop filter unit 321 Decoded Video Blocks, Filtered Blocks 330 Decoded Picture Buffer (DPB) 331 Decoded Pictures 344 Inter Prediction Units 354 intra prediction units 360 mode application unit 365 predicted blocks 400 Video Coding Device 410 inlet port, input port 420 Receiver Unit (Rx) 430 Processor, Logic Unit, Central Processing Unit (CPU) 440 Transmitter Unit (Tx) 450 Exit port, output port 460 Memory 470 Coding Module 500 devices 502 processor 504 Memory 506 Code and Data 508 Operating Systems 510 Application Program 512 Bus 514 Secondary storage device 518 Display 3100 Contents Supply System 3102 Capture Device 3104 Communication Links 3106 Terminal Device 3108 Smartphone or Pad 3110 Computer or Laptop 3112 Network Video Recorder (NVR) / Digital Video Recorder (DVR) 3114 TV 3116 Set-top box (STB) 3118 Video Conference System 3120 Video Surveillance System 3122 Personal digital assistant (PDA) 3124 In-vehicle devices 3126 Display, external display 3202 Protocol Progression Unit 3204 Demultiplexing Unit 3206 Video Decoder 3208 Audio Decoder 3210 Subtitle Decoder 3212 Synchronous Unit 3214 Video / Audio Display 3216 Video / Audio / Subtitle Display 4000 Encoder 4001 Processing circuit 4002 Receiver 4003 Transmitter 4100 Decoder 4101 Processing circuit 4102 Receiver 4103 Transmitter 4200 method 4300 method 5000 Data Structures, Video Bitstream 5005 VPS 5010 SPS 5015 PPS 5020 slice 5025 Slice 5030 slice 5035 Slice 5040 Header 5045 Data 5050 Block 5055 Block 5060 Block 7001 CCALF Filter Information 8001 Picture Header Entry 8002 Common Information

Claims

1. A method of encoding (4200) performed by an encoding device, comprising: generating a bitstream including cross-component adaptive loop filter (CC-ALF) related syntax elements; the CC-ALF-related syntax elements include a second syntax element, a tenth syntax element, and a twelfth syntax element; the second syntax element indicates whether CC-ALF is enabled at the sequence level and is signaled in a sequence parameter set; The tenth syntax element indicates whether CC-ALF for the Cb color component is enabled for the current slice and is signaled in a slice header; The twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for the current slice and is signaled in the slice header. method.

2. A method of decoding (4300) performed by a decoding device, comprising: Parsing (4301) cross-component adaptive loop filter (CC-ALF) related syntax elements from a bitstream; the CC-ALF-related syntax elements include a second syntax element, a tenth syntax element, and a twelfth syntax element; the second syntax element indicates whether CC-ALF is enabled at the sequence level and is signaled in a sequence parameter set; The tenth syntax element indicates whether CC-ALF for the Cb color component is enabled for the current slice and is signaled in a slice header; The twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for the current slice and is signaled in the slice header. method.

3. 1. A device for encoding video data, comprising: a video data memory; Video Encoder and Equipped with the video encoder is configured to generate a bitstream including cross-component adaptive loop filter (CC-ALF) related syntax elements; the CC-ALF-related syntax elements include a second syntax element, a tenth syntax element, and a twelfth syntax element; the second syntax element indicates whether CC-ALF is enabled at the sequence level and is signaled in a sequence parameter set; The tenth syntax element indicates whether CC-ALF for the Cb color component is enabled for the current slice and is signaled in a slice header; The twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for the current slice and is signaled in the slice header. device.

4. 1. A device for decoding video data, comprising: a video data memory; Video decoder and Equipped with the video decoder is configured to parse cross-component adaptive loop filter (CC-ALF) related syntax elements from a bitstream; the CC-ALF-related syntax elements include a second syntax element, a tenth syntax element, and a twelfth syntax element; the second syntax element indicates whether CC-ALF is enabled at the sequence level and is signaled in a sequence parameter set; The tenth syntax element indicates whether CC-ALF for the Cb color component is enabled for the current slice and is signaled in a slice header; The twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for the current slice and is signaled in the slice header. device.

5. 3. A computer-readable storage medium having stored thereon computer-executable instructions that, when executed by a computing device, cause the computing device to perform the method of claim 1 or 2.

6. 1. A device for storing and decoding video or image bitstreams, comprising: a communication interface; a processor; Storage media and Equipped with the communication interface is configured to receive and / or transmit a bitstream; the storage medium is configured to store the bitstream; the bitstream includes cross-component adaptive loop filter (CC-ALF) related syntax elements; the CC-ALF-related syntax elements include a second syntax element, a tenth syntax element, and a twelfth syntax element; the second syntax element indicates whether CC-ALF is enabled at the sequence level and is signaled in a sequence parameter set; The tenth syntax element indicates whether CC-ALF for the Cb color component is enabled for the current slice and is signaled in a slice header; The twelfth syntax element indicates whether CC-ALF for the Cr color component is enabled for the current slice and is signaled in the slice header. device.

Citation Information

Patent Citations

  • Cross-component adaptive loop filter signaling

    JP2022554307A

  • Device and method for coding video on basis of filtering

    WO2021040479A1