Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding
By decoding and dynamically adjusting ALF parameters in the video bitstream, the problem of inefficient video decoding in the prior art is solved, and a more efficient and high-quality video decoding process is achieved.
Patent Information
- Application Number
- CN202080022065.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-18
- Filing Date
- 2020-03-19
- Publication Date
- 2025-02-14
- Estimated Expiration
- 2040-03-19
AI Technical Summary
The existing video encoding technology is difficult to effectively utilize the adaptive parameter set during video decoding, resulting in insolable decoding efficiency.
By decoding syntax elements used to indicate adaptive loop filter (ALF) parameters in the video bitstream, the adaptive parameter set index of the luminance block and chrominance block is dynamically adjusted to apply ALF parameters different from each block.
The efficiency and visual quality of video decoding are improved, and by flexibly managing ALF parameters, adapting to the characteristics of different video blocks, reducing the redundant signaling and computing burden.
Smart Images

Figure CN113615189B_ABST
Abstract
Description
[0001] This application claims priority to U.S. Application No. 16 / 822,990, filed on March 18, 2020, which claims the benefit of U.S. Application No. 62 / 824,259, filed on March 26, 2019, the entire contents of each of which are hereby incorporated by reference. Technical Field
[0002] The present disclosure relates to video encoding and video decoding. Background Art
[0003] Digital video capabilities may be incorporated into a variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radiotelephones, so-called "smart phones", video conferencing devices, video streaming devices, etc. Digital video devices implement video compression techniques, such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), the recently finalized High Efficiency Video Coding (HEVC) standard, and extensions of such standards. Video devices may more efficiently send, receive, encode, decode, and / or store digital video information by implementing such video compression techniques.
[0004] Video compression techniques perform spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video frame or a portion of a video frame) can be divided into video blocks, which can also be referred to as tree blocks, coding units (CUs) and / or coding nodes. Video blocks in slices of intra-coded (I) pictures are encoded using spatial predictions relative to reference samples in neighboring blocks in the same picture. Video blocks in slices of inter-coded (P or B) pictures can use spatial predictions relative to reference samples in neighboring blocks in the same picture or temporal predictions relative to reference samples in other reference pictures. Pictures can be referred to as frames, and reference pictures can be referred to as reference frames.
[0005] The result of spatial or temporal prediction is a prediction block for the block to be decoded. The residual data represents the pixel differences between the original block to be decoded and the prediction block. Inter-coded blocks are encoded according to motion vectors pointing to blocks of reference samples constituting the prediction block and residual data indicating the difference between the decoded block and the prediction block. Intra-coded blocks are encoded according to the intra-coding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain to the transform domain, resulting in residual transform coefficients, which are then quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, can be scanned to produce a one-dimensional vector of transform coefficients, and entropy decoding can be applied to achieve even more compression. Summary of the invention
[0006] In general, the present disclosure describes techniques for using adaptive parameter sets to decode ALF parameters for application of a block-based adaptive loop filter (ALF) in a video decoding process. In particular, the present disclosure describes techniques for signaling a number of adaptive parameter sets and an index for each of the number of adaptive parameter sets when ALF is enabled for a picture, slice, tile, or tile group. In some examples of the present disclosure, the number and index of adaptive parameter sets may be different for luma blocks and chroma blocks of a picture, slice, tile, or tile group. In this way, ALF parameters can be signaled in a more flexible manner for different color components, and decoding efficiency can be improved.
[0007] In one example, a method includes: decoding, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element for indicating the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; decoding, based on the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the picture, the slice, the tile, or the tile group; and decoding, from a video bitstream for which adaptive loop filtering is enabled for the luma blocks in the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the picture, the slice, the tile, or the tile group. The method comprises decoding a second adaptive parameter set index for the chroma blocks in the picture, the slice, the tile, or the tile group in the video bitstream in which adaptive loop filtering is enabled for the chroma blocks in the one or more of the slices, the tiles, or the tile groups; applying a first adaptive loop filter to the luma blocks in the picture, the slice, the tile, or the tile group based on the multiple first adaptive parameter set indexes; and applying a second adaptive loop filter to the chroma blocks in the picture, the slice, the tile, or the tile group based on the second adaptive parameter set index.
[0008] In another example, a device includes a memory and one or more processors implemented in circuits and in communication with the memory, the memory being configured to store luma blocks in one or more of a picture, a slice, a tile, or a tile group and chroma blocks in the one or more of the picture, the slice, the tile, or the tile group, the one or more processors being configured to: decode a first syntax element indicating the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group from a video bitstream for which adaptive loop filtering is enabled for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; and based on the number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group, decode a first syntax element indicating the number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group. Decoding a plurality of first adaptive parameter set indices for the luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; decoding a second adaptive parameter set index for the chroma blocks in the picture, the slice, the tile, or the tile groups from the video bitstream for which adaptive loop filtering is enabled for the chroma blocks in the picture, the slice, the tile, or the tile groups; applying a first adaptive loop filter to the luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on the plurality of first adaptive parameter set indices; and applying a second adaptive loop filter to the chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on the second adaptive parameter set indices.
[0009] In another example, an apparatus includes: a unit for decoding, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element for indicating a number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; a unit for decoding, based on the number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; a unit for decoding, from a video bitstream for which adaptive loop filtering is enabled for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; and a unit for decoding, from a video bitstream for which adaptive loop filtering is enabled for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group. , a unit for decoding a second adaptive parameter set index for the chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups in the video bitstream in which adaptive loop filtering is enabled for the chroma blocks in the slice, the tile, or the one or more of the tile groups; a unit for applying a first adaptive loop filter to the luminance blocks in the picture, the slice, the tile, or the one or more of the tile groups based on the multiple first adaptive parameter set indexes; and a unit for applying a second adaptive loop filter to the chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups based on the second adaptive parameter set index.
[0010] In another example, a computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor to: decode, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element indicating a number of adaptation parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; based on the number of adaptation parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; The method comprises: decoding a parameter set index for decoding; decoding a second adaptive parameter set index for the chroma blocks in the picture, the slice, the tile, or the tile group from the video bitstream for which adaptive loop filtering is enabled for the chroma blocks in the picture, the slice, the tile, or the tile group; applying a first adaptive loop filter to the luma blocks in the picture, the slice, the tile, or the tile group based on the multiple first adaptive parameter set indexes; and applying a second adaptive loop filter to the chroma blocks in the picture, the slice, the tile, or the tile group based on the second adaptive parameter set index.
[0011] In one example, a method includes: for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, encoding a first syntax element for indicating the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; based on the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group, encoding a plurality of first adaptive parameter set indices for the luma blocks in the picture, the slice, the tile, or the tile group; and for the video bitstream for which adaptive loop filtering is enabled for chroma blocks in the picture, the slice, the tile, or the tile group, encoding second adaptive parameter set indices for the chroma blocks in the picture, the slice, the tile, or the tile group.
[0012] In another example, a device includes a memory and one or more processors implemented in circuits and in communication with the memory, the memory being configured to store luma blocks in one or more of a picture, a slice, a tile, or a tile group and chroma blocks in the one or more of the picture, the slice, the tile, or the tile group, the one or more processors being configured to: for a video bitstream for which adaptive loop filtering is enabled for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group, the number of adaptive parameter sets for indicating the luma blocks in the one or more of the picture, the slice, the tile, or the tile group encoding a first syntax element of a video bitstream for encoding a first grammatical element of a video bitstream; encoding a plurality of first adaptive parameter set indices for the luminance blocks in the picture, the slice, the tile, or the one or more of the tile groups based on the number of the adaptive parameter sets for the luminance blocks in the picture, the slice, the tile, or the one or more of the tile groups; and encoding a second adaptive parameter set indices for the chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups for the video bitstream for which adaptive loop filtering is enabled for the chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups.
[0013] In another example, the device includes: a unit for encoding, for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of the pictures, slices, tiles, or tile groups, a first syntax element for indicating the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; a unit for encoding, based on the number of adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group, a plurality of first adaptive parameter set indices for the luma blocks in the picture, the slice, the tile, or the tile group; and a unit for encoding, for the video bitstream for which adaptive loop filtering is enabled for chroma blocks in the picture, the slice, the tile, or the tile group, a second adaptive parameter set indices for the chroma blocks in the picture, the slice, the tile, or the tile group.
[0014] In another example, a computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor to: for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, encode a first syntax element for indicating a number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; based on the number of adaptive parameter sets for the one or more of the picture, the slice, the tile, or the tile group, encode a first syntax element for indicating a number of adaptive parameter sets for the luma blocks in the one or more of the picture, the slice, the tile, or the tile group; encoding a plurality of first adaptive parameter set indices for the luma blocks in the picture, the slice, the tile, or the tile group according to the number of the adaptive parameter sets for the luma blocks in the picture, the slice, the tile, or the tile group; and encoding a second adaptive parameter set indices for the chroma blocks in the picture, the slice, the tile, or the tile group for the video bitstream for which adaptive loop filtering is enabled for the chroma blocks in the picture, the slice, the tile, or the tile group.
[0015] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] Figure 1 is a block diagram illustrating an example video encoding and decoding system that may utilize the techniques described in this disclosure.
[0017] Figure 2 An example block diagram of a HEVC decoder is shown.
[0018] Figure 3A-3D Four 1-D orientation maps are shown for edge offset (EO) sample classification.
[0019] Figure 4A-4B An example array for storing adaptive loop filter (ALF) parameters is shown.
[0020] Figure 5 is a block diagram illustrating an example video encoder that may implement the techniques described in this disclosure.
[0021] Figure 6 is a block diagram illustrating an example video decoder that may implement the techniques described in this disclosure.
[0022] Figure 7 An example implementation of a filter unit for performing the techniques of this disclosure is shown.
[0023] Figure 8is a flow chart illustrating an example video encoding method of the present disclosure.
[0024] Fig. 9 is a flow chart illustrating an example video decoding method of the present disclosure. DETAILED DESCRIPTION
[0025] The present disclosure describes techniques related to filtering operations that can be used in a post-processing stage, as part of in-loop decoding, or in a prediction stage of video decoding. The techniques of the present disclosure can be implemented as improvements or extensions to existing video codecs, such as the ITU-T H.265 / HEVC (High Efficiency Video Coding) standard, and / or as efficient decoding tools for future video coding standards, such as the ITU-T H.266 / VVC (Versatile Video Coding) standard currently under development.
[0026] Video decoding typically includes predicting a block of video data from already decoded video data blocks in the same picture (i.e., intra-frame prediction) or predicting a block of video data from already decoded video data blocks in different pictures (i.e., inter-frame prediction). In some examples, the video encoder also calculates residual data by comparing the predicted block with the original block. Therefore, the residual data represents the difference between the predicted block and the original block. The video encoder can transform and quantize the residual data, and signal the transformed and quantized residual data in the encoded bitstream.
[0027] The video decoder adds the residual data to the prediction block to produce a reconstructed video block that matches the original video block more closely than the prediction block alone. In order to further improve the quality of the decoded video, the video decoder can perform one or more filtering operations on the reconstructed video block. Examples of these filtering operations include deblocking filtering, sample adaptive offset (SAO) filtering, and adaptive loop filtering (ALF). Parameters for these filtering operations can be determined by the video encoder and explicitly signaled in the coded video bitstream, or implicitly determined by the video decoder without the need for parameters to be explicitly signaled in the coded video bitstream.
[0028] The present disclosure describes techniques related to a filtering method called "Adaptive Loop Filter (ALF)". ALF can be used in a post-processing stage, or in-loop decoding or prediction process. SAO filtering and / or ALF can be used with various existing video codec technologies and extensions to such codecs, or be an efficient decoding tool in any future video decoding standard. The following discusses the Joint Exploration Model (JEM) technology of HEVC and the Joint Video Exploration Team (JVET) related to the present disclosure.
[0029] As used in the present disclosure, the term video decoding generally refers to video encoding or video decoding. Similarly, the term video decoder generally may refer to a video encoder or a video decoder. In addition, certain techniques described in the present disclosure relative to video decoding may also be applicable to video encoding, and vice versa. For example, a video encoder and a video decoder are often configured to perform the same process or a mutually inverse process. In addition, a video encoder generally performs video decoding as part of a process for determining how to encode video data.
[0030] Figure 1 is a block diagram illustrating an example video encoding and decoding system 10 that may utilize the techniques described in this disclosure. Figure 1 As shown, system 10 includes a source device 12 that generates encoded video data to be later decoded by a destination device 14. Source device 12 and destination device 14 may be any of a variety of devices, including desktop computers, notebook computers (i.e., laptop computers), tablet computers, set-top boxes, cell phones such as so-called "smart" phones, so-called "smart" tablets, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some cases, source device 12 and destination device 14 may be equipped for wireless communication.
[0031] The destination device 14 may receive the encoded video data to be decoded via the link 16. The link 16 may be any type of medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. For example, the encoded video data may be output from the output interface 22 to the link 16. In one example, the link 16 may be a communication medium for enabling the source device 12 to send the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard (such as a wireless communication protocol) and sent to the destination device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may constitute part of a packet-based network (such as a local area network, a wide area network, or a global network such as the Internet). The communication medium may include a router, a switch, a base station, or any other equipment that may be useful for facilitating communication from the source device 12 to the destination device 14.
[0032] In another example, the encoded video data can be output from the output interface 22 to the storage device 26. Likewise, the encoded video data can be accessed from the storage device 26 via the input interface 28. The storage device 26 may include any of a variety of distributed or locally accessed data storage media (such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data). In a further example, the storage device 26 may correspond to a file server or another intermediate storage device that can store the encoded video generated by the source device 12. The destination device 14 can access the stored video data from the storage device 26 via streaming or downloading. The file server can be any type of server capable of storing the encoded video data and sending the encoded video data to the destination device 14. Example file servers include (e.g., for a website) a web server, an FTP (File Transfer Protocol) server, a network attached storage (NAS) device, or a local disk drive. The destination device 14 can access the encoded video data through any standard data connection (including an Internet connection). This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing the encoded video data stored on the file server. The transmission of the encoded video data from the storage device 26 may be a streaming transmission, a download transmission, or a combination of both.
[0033] The technology of the present disclosure is not necessarily limited to wireless applications or settings. The technology can be applied to support video decoding of any multimedia application in various multimedia applications such as over-the-air television broadcasting, cable television transmission, satellite television transmission, streaming video transmission (e.g., via the Internet, encoding of digital video for storage on a data storage medium, decoding of digital video stored on a data storage medium), or other applications. In some examples, system 10 can be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.
[0034] exist Figure 1In the example of , source device 12 includes video source 18, video encoder 20 and output interface 22. In some cases, output interface 22 may include a modulator / demodulator (modem) and / or a transmitter. In source device 12, video source 18 may include, for example, a video capture device (e.g., a video camera), a video archive containing previously captured videos, a video feed interface for receiving videos from a video content provider, and / or a source of a computer graphics system for generating computer graphics data as source video, or a combination of such sources. As an example, if video source 18 is a video camera, source device 12 and destination device 14 may form a so-called camera phone or video phone. However, the techniques described in this disclosure may be generally applicable to video decoding, and may be applied to wireless and / or wired applications.
[0035] The captured, pre-captured, or computer-generated video may be encoded by a video encoder. The encoded video data may be sent directly to the destination device 14 via the output interface 22 of the source device 12. The encoded video data may also (or alternatively) be stored on the storage device 26 for later access by the destination device 14 or other devices for decoding and / or playback.
[0036] Destination device 14 includes input interface 28, video decoder 30, and display device 32. In some cases, input interface 28 may include a receiver and / or a modem. Input interface 28 of destination device 14 receives encoded video data via link 16. The encoded video data transmitted via link 16 or provided on storage device 26 may include various syntax elements generated by video encoder 20 for use by a video decoder (such as video decoder 30) in decoding the video data. Such syntax elements may be included with the encoded video data sent over a communication medium, stored on a storage medium, or stored on a file server.
[0037] Display device 32 may be integrated with destination device 14 or external to destination device 14. In some examples, destination device 14 may include an integrated display device and also be configured to interface with an external display device. In other examples, destination device 14 may be a display device. Typically, display device 32 displays the decoded video data to a user and may be any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.
[0038] The video encoder 20 and the video decoder 30 may operate according to a video compression standard such as the High Efficiency Video Coding (HEVC) standard. The video encoder 20 and the video decoder 30 may additionally operate according to HEVC extensions such as range extensions, multi-view extensions (MV-HEVC), or scalable extensions (SHVC) developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG) and the Joint Collaboration Team on 3D Video Coding Extension Development (JCT-3V). Alternatively, the video encoder 20 and the video decoder 30 may operate according to other proprietary or industry standards such as the ITU-T H.264 standard (or ISO / IEC MPEG-4), Part 10, Advanced Video Coding (AVC), or extensions of such standards such as scalable video coding (SVC) and multi-view video coding (MVC) extensions. However, the technology of the present disclosure is not limited to any particular coding standard. Other examples of video compression standards include ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, and ISO / IEC MPEG-4 Visual. HEVC (ITU-T H.265), including its range extension, multi-view extension (MV-HEVC), and scalable extension (SHVC), was developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG), and the Joint Collaboration Team on 3D Video Coding Extension Development (JCT-3V). The finalized HEVC draft (hereinafter referred to as HEVC) is available at http: / / phenix.int-evry.fr / jct / doc_end_user / documents / 14_Vienna / wg11 / JCTVC-N1003-v1.zip.
[0039] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are now studying the potential need for standardization of future video coding technologies with compression capabilities that potentially exceed those of the current HEVC standard (including current and near-term extensions for screen content coding and high dynamic range coding). The groups are jointly conducting this exploration activity under a joint collaborative effort called the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by their experts in the field. JVET met for the first time during October 19-21, 2015. The latest version of the reference software, namely the Joint Exploration Model 7 (JEM 7), can be downloaded from the following link: https: / / jvet.hhi.fraunhofer.de / svn / svn_HMJEMSoftware / tags / HM-16.6-7.0 / . The algorithm description for JEM7 is described in: J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7 (JEM7)” JVET-G1001, Torino, July 2017.
[0040] In the examples of the present disclosure described below, the video encoder 20 and the video decoder 30 may operate according to one or more versions of the developing ITU-T H.266 standard, also referred to as Versatile Video Coding (VVC). A draft of the VVC standard is described in Bross et al., "Versatile Video Coding (Draft 7)", Joint Video Experts Team (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 16th Meeting: Geneva, Switzerland, October 1-11, 2019, JVET-P2001-v14 (hereinafter referred to as "VVC Draft 7"). However, the techniques of the present disclosure are not limited to any particular coding standard.
[0041] Although not in Figure 120 and 30, respectively, may be integrated with an audio encoder and decoder and may include appropriate multiplexing-demultiplexing units or other hardware and software to handle the encoding of both audio and video in a common data stream or in separate data streams. If applicable, in some examples, the multiplexing-demultiplexing units may conform to the ITU H.223 multiplexer protocol or other protocols such as the User Datagram Protocol (UDP).
[0042] The video encoder 20 and the video decoder 30 can each be implemented as any of a variety of suitable encoder circuits or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device can store instructions for the software in a suitable, non-transitory computer-readable medium, and use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Each of the video encoder 20 and the video decoder 30 can be included in one or more encoders or decoders, any of which can be integrated in the respective devices as part of a combined encoder / decoder (CODEC).
[0043] As will be explained in more detail below, the video encoder 20 can be configured to: for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of the pictures, slices, tiles, or tile groups, encode a first syntax element for indicating the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups; encode multiple first adaptive parameter set indices for luma blocks in one or more of the pictures, slices, tiles, or tile groups based on the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups; and for a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups, encode second adaptive parameter set indices for chroma blocks in one or more of the pictures, slices, tiles, or tile groups.
[0044] In a reciprocal manner, the video decoder 30 may be configured to: decode, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of the pictures, slices, tiles, or tile groups, a first syntax element for indicating a number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups; index a plurality of first adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups based on the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups; row decoding; decoding a second adaptive parameter set index for chroma blocks in one or more of the pictures, slices, tiles, or tile groups from a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups; applying a first adaptive loop filter to luma blocks in one or more of the pictures, slices, tiles, or tile groups based on a plurality of first adaptive parameter set indexes; and applying a second adaptive loop filter to chroma blocks in one or more of the pictures, slices, tiles, or tile groups based on a second adaptive parameter set index.
[0045] In HEVC, VVC and other video coding specifications, a video sequence usually includes a series of pictures. A picture may also be referred to as a "frame". In one example, a picture may include three sample arrays, denoted as S L , S Cb and S Cr In such an example, S L is a two-dimensional array (i.e., block) of luminance samples. Cb is a two-dimensional array of Cb chrominance samples. Cr is a two-dimensional array of Cr chrominance samples. Chrominance samples may also be referred to herein as "chroma" samples. In other examples, a picture may be monochrome and may include only an array of luma samples.
[0046] In order to generate an encoded representation of a picture, the video encoder 20 may generate a set of coding tree units (CTUs). Each CTU in the CTU may include a coding tree block of luminance samples, two corresponding coding tree blocks of chrominance samples, and a syntax structure for decoding the samples of the coding tree block. In a monochrome picture or a picture with three separate color planes, the CTU may include a single coding tree block and a syntax structure for decoding the samples of the coding tree block. The coding tree block may be an NxN block of samples. The CTU may also be referred to as a "tree block" or a "largest coding unit" (LCU). The CTU of HEVC may be substantially similar to macroblocks of other standards, such as H.264 / AVC. However, a CTU is not necessarily limited to a specific size and may include one or more coding units (CUs). A slice may include an integer number of CTUs arranged continuously in a raster scan order.
[0047] To generate a coded CTU, the video encoder 20 may recursively perform quadtree partitioning on the coding tree blocks of the CTU to divide the coding tree blocks into coding blocks, hence the name "coding tree units". A coding block may be an NxN block of samples. A CU may include a coding block of luma samples and two corresponding coding blocks of chroma samples in a picture having a luma sample array, a Cb sample array, and a Cr sample array, and a syntax structure for decoding the samples of the coding blocks. In a monochrome picture or a picture with three separate color planes, a CU may include a single coding block and a syntax structure for decoding the samples of the coding block.
[0048] The video encoder 20 may divide the coding block of a CU into one or more prediction blocks. A prediction block is a rectangular (i.e., square or non-square) block of samples on which the same prediction is applied. A prediction unit (PU) in a CU may include a prediction block of luma samples, two corresponding prediction blocks of chroma samples, and a syntax structure for predicting the prediction block. In a monochrome picture or a picture with three separate color planes, a PU may include a single prediction block and a syntax structure for predicting the prediction block. The video encoder 20 may generate predictive luma, Cb, and Cr blocks for luma, Cb, and Cr prediction blocks for each PU in the CU.
[0049] The video encoder 20 may use intra prediction or inter prediction to generate a prediction block for a PU. If the video encoder 20 uses intra prediction to generate a prediction block for a PU, the video encoder 20 may generate the prediction block for the PU based on decoded samples of the picture associated with the PU. If the video encoder 20 uses inter prediction to generate a prediction block for a PU, the video encoder 20 may generate the prediction block for the PU based on decoded samples of one or more pictures other than the picture associated with the PU.
[0050] After the video encoder 20 generates predictive luma, Cb, and Cr blocks for one or more PUs in a CU, the video encoder 20 may generate a luma residual block for the CU. Each sample in the luma residual block of the CU indicates the difference between a luma sample in one of the predictive luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. In addition, the video encoder 20 may generate a Cb residual block for the CU. Each sample in the Cb residual block of the CU may indicate the difference between a Cb sample in one of the predictive Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU. The video encoder 20 may also generate a Cr residual block for the CU. Each sample in the Cr residual block of the CU may indicate the difference between a Cr sample in one of the predictive Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.
[0051] In addition, the video encoder 20 can use quadtree partitioning to decompose the luma, Cb, Cr residual blocks of the CU into one or more luma, Cb and Cr transform blocks. A transform block is a rectangular (e.g., square or non-square) sample block on which the same transform is applied. The transform unit (TU) of the CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and a syntax structure for transforming the transform block samples. Therefore, each TU of the CU may be associated with a luma transform block, a Cb transform block, and a Cr transform block. The luma transform block associated with the TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome picture or a picture with three separate color planes, a TU may include a single transform block and a syntax structure for transforming the samples of the transform block.
[0052] The video encoder 20 may apply one or more transforms to the luma transform block of the TU to generate a luma coefficient block for the TU. The coefficient block may be a two-dimensional array of transform coefficients. The transform coefficient may be a scalar. The video encoder 20 may apply one or more transforms to the Cb transform block of the TU to generate a Cb coefficient block for the TU. The video encoder 20 may apply one or more transforms to the Cr transform block of the TU to generate a Cr coefficient block for the TU.
[0053] The block structures with CTU, CU, PU and TU above generally describe the block structures used in HEVC. However, other video coding standards may use different block structures. As an example, although HEVC allows PU and TU to have different sizes or shapes, other video coding standards may require prediction blocks and transform blocks to have the same size. The technology of the present disclosure is not limited to the block structure of HEVC or VVC, and may be compatible with other block structures.
[0054] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), video encoder 20 may quantize the coefficient block. Quantization generally refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, thereby providing further compression. After video encoder 20 quantizes the coefficient block, video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, video encoder 20 may perform context-adaptive binary arithmetic coding (CABAC) on syntax elements indicating the quantized transform coefficients.
[0055] The video encoder 20 may output a bitstream comprising a sequence of bits constituting a representation of a decoded picture and associated data. The bitstream may include a series of network abstraction layer (NAL) units. The NAL unit is a syntax structure containing an indication of the type of data in the NAL unit and bytes containing the data in the form of a raw byte sequence payload (RBSP), with emulation prevention bits interspersed in the RBSP if necessary. Each NAL unit in the NAL unit includes a NAL unit header and an encapsulation RBSP. The NAL unit header may include syntax elements indicating a NAL unit type code. The NAL unit type code specified by the NAL unit header of the NAL unit indicates the type of the NAL unit. The RBSP may be a syntax structure containing an integer number of bytes encapsulated in the NAL unit. In some cases, the RBSP includes zero bits.
[0056] Different types of NAL units may encapsulate different types of RBSPs. For example, a first type of NAL unit may encapsulate an RBSP for a picture parameter set (PPS), a second type of NAL unit may encapsulate an RBSP for a coded slice, a third type of NAL unit may encapsulate an RBSP for a supplemental enhancement information (SEI) message, etc. A NAL unit that encapsulates an RBSP for video coding data (as opposed to an RBSP for a parameter set and SEI message) may be referred to as a video coding layer (VCL) NAL unit.
[0057] The video decoder 30 may receive a bitstream generated by the video encoder 20. In addition, the video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 may reconstruct a picture of the video data based at least in part on the syntax elements obtained from the bitstream. The process for reconstructing the video data may generally be reciprocal to the process performed by the video encoder 20. In addition, the video decoder 30 may inversely quantize the coefficient blocks associated with the TU of the current CU. The video decoder 30 may perform an inverse transform on the coefficient blocks to reconstruct the transform blocks associated with the TU of the current CU. The video decoder 30 may reconstruct the decoding block of the current CU by adding the samples of the prediction block for the PU of the current CU to the corresponding samples of the transform block of the TU of the current CU. By reconstructing the decoding blocks for each CU of the picture, the video decoder 30 may reconstruct the picture.
[0058] Aspects of HEVC, VVC, and JEM techniques will now be discussed. Figure 2 An example block diagram of a HEVC decoder 31 is shown. Figure 2 The video decoder 31 shown in FIG. 3 may correspond to the video decoder 30 described above, which will be described in more detail below. HEVC employs two in-loop filters, including a deblocking filter (DBF) and SAO. Additional details about HEVC decoding and SAO are described in C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755–1764 (2012).
[0059] like Figure 2As shown, the input to the DBF can be a reconstructed image after intra prediction or inter prediction, as shown with the output from the reconstruction block. The DBF performs detection of artifacts at the decoded block boundaries and attenuates the artifacts by applying a selected filter. Compared to the H.264 / AVC deblocking filter, the HEVC deblocking filter has lower computational complexity and better parallel processing capabilities while still achieving significant reductions in visual artifacts. For further examples, see A. Norkin, G. Bjontegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, Minhua Zhou, G. Van der Auwera, "HEVC Deblocking Filter," IEEE Trans. Circuits Syst. Video Technol., 22(12): 1746–1754 (2012).
[0060] In HEVC, deblocking filter decisions are made separately for each boundary of four sample lengths located on the grid that divides the picture into blocks of 8x8 samples. Deblocking is performed on a block boundary if the following conditions are true: (1) the block boundary is a prediction unit (PU) or transform unit (TU) boundary; (2) the boundary strength (Bs) as defined in Table 1 below is greater than zero; and (3) the change in the signal on both sides of the block boundary as defined in Equation (1) below is below a specified threshold.
[0061] Table 1. Strength (Bs) values for the boundary between two adjacent luminance blocks
[0062]
[0063] If Bs > 0 for a luma block boundary, then deblocking filtering is applied to that boundary if the following conditions are valid:
[0064] |p 2,0 -2p 1,0 +p 0,0 |+|p 2,3 -2p 1,3 +p 0,3 |+|q 2,0 -2q 1,0 +q 0,0 |+|q 2,3 -2q 1,3 +q 0,3 |<β (1)
[0065] HEVC considers two types of luma deblocking filters, namely: (i) normal filters and (ii) strong filters. The choice of deblocking filter depends on whether a particular signal variance term is less than some threshold (see "HEVC Deblocking Filters" by Norkin et al. (2012) cited above for details). Although the filtering decision is based only on two rows (columns) of a four-pixel long vertical (or horizontal, as the case may be) boundary, the filter is applied to every row (or column, as the case may be) in the boundary. The number of pixels used in the filtering process and the number of pixels that can be modified using each type of filtering are summarized in Table 2 below.
[0066] Table 2. Number of pixels used / modified per boundary in HEVC deblocking
[0067]
[0068]
[0069] Chroma deblocking is performed only when Bs is equal to two (2). Only one type of chroma deblocking filter is used. The chroma deblocking filter uses pixels p0, p1, q0, q1, and can modify pixels p0 and q0 in each row (for brevity, the second subscript indicating the row index is omitted in the above description because the filter is applied to each row). In JEM, deblocking is performed at the CU level. The size of the CU on either side of the boundary can be larger than 8x8. The smallest CU size in JEM is 4×4. Therefore, the deblocking filter can also be applied to the boundaries of 4x4 blocks.
[0070] The input to SAO can be the reconstructed image after applying a deblocking filter, such as using the Figure 2 The output of the deblocking filter in is shown. The concept / idea of SAO is to reduce the average sample distortion of the region by first classifying the region samples into multiple categories using a selected classifier, obtaining an offset for each category, and then adding the offset to each sample of the category, where the classifier index and the offset of the region are decoded in the bitstream. In HEVC, the region (the unit for SAO parameter signaling) is defined as CTU.
[0071] Two SAO types are used in HEVC that can meet the requirements of low complexity. These two types are edge offset (EO) and band offset (BO), which will be discussed in further detail below. The index of the SAO type is decoded. For EO, sample classification is based on the comparison between the current sample and the neighboring samples according to the following 1-D directional maps: horizontal, vertical, 135° diagonal, and 45° diagonal.
[0072] Figures 3A-3DFour 1-D orientation maps are shown for EO sample classification: horizontal ( Figure 3A , EO class = 0), vertical ( Figure 3B , EO class = 1), 135° diagonal ( Figure 3C , EO class = 2) and 45° diagonal ( Figure 3D , EO class = 3). Additional details related to SAO are described in C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, "Sample adaptive offset in the HEVC standard," IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012).
[0073] Depending on the selected EO style, five categories are further defined, represented by edge index (edgeIdx) in Table 3. For edge indexes equal to 0 to 3, the magnitude of the offset can be signaled when the sign flag is implicitly decoded (i.e., negative offsets equal to 0 or 1 for edge indexes and positive offsets equal to 2 or 3 for edge indexes). For edge index equal to 4, the offset is always set to 0, which means that no operation is required in this case.
[0074] Table 3: Classification of EO
[0075]
[0076] For BO, sample classification is based on sample values. Each color component can have its own SAO parameters for classification for BO type SAO filtering. BO means adding an offset to all samples of the same band. The sample value range is evenly divided into 32 bands. For 8-bit samples ranging from 0 to 255, the width of the band is 8, and sample values from 8k to 8k+7 belong to band k, where k ranges from 0 to 31. An offset is added to all samples of the same band. The average difference between the original samples and the reconstructed samples in the band (i.e., the offset of the band) is signaled to the decoder (e.g., video decoder 30). There is no constraint on the offset sign. The offset and starting band position of only four (4) consecutive bands are signaled to the decoder (e.g., video decoder 30).
[0077] The video encoder 20 and the video decoder 30 may be configured to implement the various ALF filtering techniques set forth in JEM. Various aspects of these JEM filtering techniques (e.g., ALF) will now be described. In addition to the modified deblocking and HEVC SAO methods, JEM includes another filtering method called geometrically-based adaptive loop filtering (GALF). The input to the ALF / GALF may be a reconstructed image after application of SAO (e.g., in Figure 2 Aspects of GALF are described in Tsai, C.Y., Chen, C.Y., Yamakage, T., Chong, I.S., Huang, Y.W., Fu, C.M., Itoh, T., Watanabe, T., Chujoh, T., Karczewicz, M., and Lei, S.M., “Adaptive loop filtering for video coding,” IEEE Journal of Selected Topics in Signal Processing, 7(6), pp. 934-945, 2013, and in M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter,” Picture Coding Symposium (PCS), 2016.
[0078] The ALF technique attempts to minimize the mean square error between the original samples and the decoded samples by using an adaptive Wiener filter. Denote the input image as p, the source image as S and the FIR (finite impulse response) filter as h. Then the following expression for the sum of squared errors (SSE) should be minimized, where (x, y) represents any pixel position in p or S.
[0079] SSE=∑ x,y (∑ i,j h(i,j)p(xi,yj)-S(x,y)) 2
[0080] Represented as h opt The optimal h can be obtained by setting the partial derivative of SSE with respect to h(i, j) equal to 0, as follows:
[0081]
[0082] This leads to the Wiener-Hopf equation shown below, which gives the optimal filter h opf :
[0083] ∑ i,j h opt (i,j)(∑ x,y p(xi,yj)p(xm,yn))=∑ x,y S(x,y)p(xm,yn)
[0084] In some examples of JEM, samples in a picture are classified into twenty-five (25) classes based on local gradients, rather than using one filter for the entire picture. A separate optimal Wiener filter is derived for pixels in each class. Several techniques have been employed to improve the effectiveness of ALF by reducing signaling overhead and computational complexity. The following lists some of the techniques that have been used to improve the effectiveness of ALF by reducing signaling overhead and / or computational complexity:
[0085] 1. Prediction from fixed filters: The optimal filter coefficients for each class are predicted using a prediction pool of fixed filters, which includes 16 candidate filters for each class. The best prediction candidate is selected for each class, and only the prediction error is sent.
[0086] 2. Class merging: Pixels in multiple classes can share one filter to reduce the number of filter parameters to be decoded, rather than using twenty-five (25) different filters (one filter for each class). Merging two classes can result in higher accumulated SSE, but lower rate-distortion (RD) cost.
[0087] 3. Variable number of taps: The number of filter taps is adaptive at the frame level. In theory, filters with more taps can achieve lower SSE, but may not be a good choice in terms of rate-distortion (RD) cost due to the bit overhead associated with more filter coefficients.
[0088] 4. Block level on / off control: ALF can be turned on and off on a block basis. The block size at which the on / off control flag is signaled is adaptively selected at the frame level. The filter coefficients can be recalculated using pixels from only those blocks where ALF is on.
[0089] 5. Temporal prediction: The filters derived for previously decoded frames are stored in a buffer. If the current frame is a P-frame or a B-frame, one of the filters in the stored set of filters can be used to filter the frame if it results in a better RD cost. A flag is signaled to indicate the use of temporal prediction. If temporal prediction is used, an index is signaled to indicate which set of stored filters is used. No additional signaling of ALF coefficients is required. A block level ALF on / off control flag can also be signaled for frames using temporal prediction.
[0090] Details of some aspects of ALF are briefly summarized in this and the following paragraphs. Some aspects of ALF involve pixel classification and geometric transformations. The sum of the absolute values of the vertical, horizontal, and diagonal Laplacian operators at all pixels within a 6x6 window covering each pixel in the reconstructed frame (before ALF) is calculated. The reconstructed frame is then divided into non-overlapping 2x2 blocks. The four pixels in these blocks are classified into twenty-five (25) categories (denoted as C) based on the total Laplacian activity and directionality of the block. k (k=0, 1, ..., 24)). In addition, one of four geometric transformations (no transformation, diagonal flip, vertical flip, or rotation) is also applied to a filter based on the gradient directionality of the block. Details can be found in M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, "Geometry transformation-based adaptive in-loop filter", Picture Coding Symposium (PCS), 2016.
[0091] Some aspects of ALF involve filter derivation and prediction from fixed filters. For each class C k , the optimal prediction filter is firstly obtained from the prediction for C based on the SSE given by the filter. k The pool is selected, denoted as h pred,k . C to be minimized k The SSE can be written as follows:
[0092] SSE k =∑ x,y (∑ i,j (h pred,k (i, j)+h Δ,k (i, j))p(xi, yj)-S(x, y)) 2 , k=0,...,24, (x, y)∈C k
[0093] Where h Δ,k Is targeting C k The optimal filter and h pred,k The difference between. Let p′(x, y) = ∑ i,j h pred,k (i, j)p(xi, yj) is obtained by h pred,k The result of filtering the pixel p(x, y). Then for SSE k The expression can be rewritten as:
[0094]
[0095] By enabling SSE k Relative to h Δ,k The partial derivative of (i, j) is equal to 0, and the modified Wiener-Hopf equation is obtained as follows:
[0096]
[0097] k=0,...,24,(x,y)∈C k
[0098] For simplicity of expression, we use R pp,k (im, jn) and R′ ps,k (m, n) represents a pair with (x, y)∈C k ∑ x,y p(xi,yj)p(xm,yn) and ∑ x,y (S(x, y)-p′(x, y))p(xm, yn). Then, the above equation can be written as:
[0099] ∑ i,j h Δ,k (i,j)R pp,k (im, jn) = R′ ps,k (m, n) k = 0, ..., 24 (1)
[0100] For each C k , for all (x, y)∈C k Calculate the autocorrelation matrix R pp,k (im, jn) and the cross-correlation vector R′ ps,k (m, n).
[0101] In one example of ALF, the difference between only the optimal filter and a fixed prediction filter is calculated and sent. If none of the candidate filters available in the pool is a good predictor, the identification filter (i.e., a filter with only one non-zero coefficient equal to 1 at the center that makes the input and output exactly the same) will be used as the predictor.
[0102] Some aspects of ALF involve merging pixel classes. Classes are merged to reduce the overhead of signaling filter coefficients. The cost of merging two classes is increased relative to SSE. Consider a class with m and SSE n Two classes of SSE are given separately: m and C n . Let C m+n It means that by m and C n Merged with SSE (denoted as SSE m+n ) and obtained the class. SSE m+n Always greater than or equal to SSE m +SSE n . Let ΔSSE m+n It means that by m and C n The increase in SSE caused by the merger, ΔSSE m+n Equal to SSE m+n -(SSE m +SSE n ). In order to calculate SSE m+n , a person skilled in the art needs to use the following expression similar to (1) to derive h Δ,m+n (For C m+n Filter prediction error): ∑ i,j h Δ,m+n (i,j)(R pp,m (iu,jv)+R pp,n (iu, jv)) = R′ ps,m (u,v)+R′ ps,n (u,v) (2)
[0103] Category C for mergers m+n The SSE can be calculated as:
[0104] SSE m+n =-∑ u,v h Δ,m+n (u,v)(R′ ps,m (u,v)+R′ ps,n (u,v))+(R ss,m +R ss,n )
[0105] To reduce the number of classes from N to N-1, we may need to find two classes C m and C n , so that combining them results in the smallest ΔSSE compared to any other combination m+nSome ALF designs examine every pair of available classes for merging to find the pair with the minimum merging cost.
[0106] If you merge C m and C n (with m<n), then C n is marked as unavailable for further merging, and for C m The autocorrelations and cross-correlations of are changed to combined autocorrelations and cross-correlations as follows:
[0107] R pp,m =R pp,m +R pp,n
[0108] R′ ps,m =R′ ps,m +R′ ps,n
[0109] R ss,m =R ss,m +R ss,n
[0110] The optimal number of ALF classes after merging for each frame needs to be decided based on the RD cost. This is done by starting with twenty-five (25) classes and sequentially merging pairs of classes (from the set of available classes) until only one class remains. For each possible number of classes remaining after merging (1, 2, ..., 25), a mapping is stored indicating which classes are merged together. The optimal number of classes is then selected so that the RD cost is minimized, as follows:
[0111]
[0112] where D| N is the total SSE using N classes R| N is the total number of bits used to code the N filters, and λ is a weighting factor determined by the quantization parameter (QP). opt A merge map of number of classes, indicating which classes are merged together.
[0113] A brief step-by-step description of the ALF parameter encoding process is given below:
[0114] 1. Signaling a frame level ALF on / off flag.
[0115] 2. If ALF is on, a temporal prediction flag is signaled.
[0116] 3. If temporal prediction is used, signal the index of the frame from which the current frame is filtered using the corresponding ALF parameters.
[0117] 4. If temporal prediction is not used, the auxiliary ALF information and filter coefficients are signaled as follows:
[0118] a. The following auxiliary ALF information is signaled before the filter coefficients are signaled.
[0119] i. The number of unique filters used after class merging.
[0120] ii. Number of filter taps.
[0121] iii. Merging information to indicate which classes share filter prediction errors.
[0122] iv. Index of fixed filter predictors for each class.
[0123] b. After signaling the auxiliary information, the filter coefficient prediction error is signaled as follows:
[0124] i. A flag is signaled to indicate whether the filter prediction error is forced to zero (0) for some of the remaining classes after merging.
[0125] ii. A flag is signaled to indicate (if the number of classes remaining after merging is greater than one (1)) whether differential decoding will be used to signal the filter prediction error.
[0126] iii. The filter coefficient prediction errors are then signaled using k-th order Exponential Golomb codes, where the values of k for different coefficient positions are chosen empirically.
[0127] c. The filter coefficients for chroma components (if available) are coded directly without any prediction method.
[0128] 5. Finally, the block level ALF on / off control flag is signaled.
[0129] ALF filter parameters are signaled in the APS in VVC. In the ALF APS in VVC, the signaling may include the following:
[0130] 1. Signal whether the ALF APS includes a luma ALF filter
[0131] 2. If the ALF APS contains a luminance ALF filter, then
[0132] a. Signals the number of unique luminance filters used after class merging
[0133] b. Signaling class merging information to indicate which classes share the same filter
[0134] c. If limiting is applied to the luma ALF filter, a flag is signaled
[0135] d. After ac, the filter coefficients are signaled and, if clipping is applied to the luma ALF filter, the clipping parameters are signaled.
[0136] 3. Signal whether the ALF APS includes a chroma ALF filter
[0137] a. Signaling the number of unique chroma filters
[0138] b. If limiting is applied to the chroma ALF filter, a flag is signaled
[0139] c. After ab, signal the filter coefficients and, if clipping is applied to the luma ALF filter, signal the clipping parameters
[0140] In VVC, the ALF APS index is used in a picture or is signaled in the picture and / or slice header.
[0141] brightness:
[0142] 1. Signaling picture / slice level brightness ALF on / off flag
[0143] 2. If ALF is on for luma, then signal the number of APSs applied to the luma component of the current picture / slice.
[0144] 3. If the number of APSs is greater than 0, then each APS index that applies to the luma component of the current picture / slice is signaled.
[0145] Chroma:
[0146] 1. Signaling picture / slice level chroma ALF on / off information
[0147] 2. If ALF is on for any chroma component, then the APS index that applies to the chroma component of the current picture / slice is signaled.
[0148] 3. If ALF is on for chroma CTB, the filter index is signaled.
[0149] Coding Tree Block (CTB) level on / off flag and filter index information are also signaled.
[0150] Signals the ALF on / off flag for the luma CTB.
[0151] If ALF is on for luma CTB, a fixed filter set index or APS index is signaled.
[0152] Chroma:
[0153] Signals the ALF on / off flag for the chroma CTB.
[0154] In some examples of JEM, one or more potential problems may occur with the design of the ALF. As an example, some example ALF designs perform multiple passes on each frame to design one filter set for the entire frame (one filter for each class of pixels or one filter shared among multiple classes in a frame). This introduces high encoder latency. This is particularly problematic in low-latency applications such as video conferencing, where it may be important to send even partially encoded frames to the channel as quickly as possible.
[0155] As another example, according to some ALF designs, one filter set is used for the entire picture. Local statistics in small blocks of the original picture and the reconstructed picture may be different from the cumulative statistics obtained using the entire picture. Therefore, the ALF filter that is optimal for the entire picture may not be optimal for a given block.
[0156] As another example, a potential problem in the case of using small patches of a picture to design a new set of Wiener filters in order to obtain better local adaptivity is that the number of pixels available in the small patch may not be sufficient to obtain a good estimate of the correlation matrix and vector. This may lead to an ill-posed Wiener-Hopf equation, which in turn may not give good ALF coefficients.
[0157] As another example, some example ALF designs define sixteen (16) fixed filters for each of twenty-five (25) classes, resulting in a total of four hundred (400) filters. These filters may be used as prediction filters for the final filter coefficients for each class. The index of the prediction filter used is signaled for each class. This may result in high signaling overhead and reduce overall decoding gain.
[0158] Another potential disadvantage of using a fixed set of filters as a predictor is that the predictor set is not modified based on new filters designed for previous frames. Since temporally adjacent frames are likely to have similar statistics, using the optimal filter for the previous frame can result in an efficient prediction of the optimal filter for the current frame.
[0159] As another example, some example ALF designs require two passes on the current frame to make block-level filter on / off decisions. This introduces additional encoder latency. The ALF on / off flag is a signaled block misalignment with the coding unit (CU). Therefore, CU information such as mode, coded block flag (CBF), etc. cannot be taken into account in the ALF on / off control decision. Using this information can reduce the on / off signaling overhead.
[0160] To address one or more of the issues discussed above, the present disclosure describes techniques for further improving the decoding gain and visual quality obtained by ALF. Video encoder 20 and / or video decoder 30 may apply any of the following itemized techniques individually. Alternatively, video encoder 20 and / or video decoder 30 may apply any combination of the itemized techniques discussed below.
[0161] According to some techniques of the present disclosure, video encoder 20 may signal an ALF filter set for each block in a picture / slice / tile / tile group. In one example, an ALF set (e.g., the ALF filter set mentioned above) may be indicated by a set index in a list of filter sets. In some examples, the index identifies a specific ALF filter set from among a plurality of ALF filter sets included in the list.
[0162] a. In one example, a block may be a coding tree unit (CTU) or any other block. A block may be decoupled from a partition.
[0163] b. In one example, a list of multiple filter sets per picture / slice / tile / tile group is provided, where each set may contain filters per class of allocation. A set index may be signaled per block. A flag may be signaled per block to indicate that ALF is not used.
[0164] c. The list of filter sets may contain a set of fixed pre-trained filters and a set of filters derived using previous frames or filters signaled in the bitstream.
[0165] According to some examples of the present disclosure, the video encoder 20 and / or the video decoder 30 may share a list of filter sets across different pictures. In one example, the filter set list may be initialized using pre-trained filters. After decoding a picture, the video encoder 20 may derive a new filter set based on the encoded picture, and add the new filter set to the filter set list. Alternatively, the new filter set may replace the existing filter set in the list. After decoding another picture, the video encoder 20 may derive another filter set, and include the derived filter set in the filter set list. In this example, the filter set list is common to all pictures, and may be updated after decoding the picture. From the decoder side, the video decoder 30 may detect the signaling of the new filter set after decoding the picture or before decoding the picture.
[0166] According to some examples of the present disclosure, video encoder 20 may allow signaling of a new filter set per picture / slice / tile / tile group.
[0167] a. In one example, a new set of filters may be added to the filter set list. The updated list may then be used to filter blocks in the next picture or pictures.
[0168] b. In another example, the updated list (containing the new set of filters derived using the current picture / slice / tile / tile group) can be used to filter the blocks in the current picture / slice / tile / tile group.
[0169] According to some examples of the present disclosure, the filter set list may be updated using filters derived using a previous picture / slice / tile / tile group. The order in which the filter sets are added or sorted in the filter set list may be fixed, predefined, or flexible. The list may be reordered per picture based on information about the current picture and information about the picture from which the corresponding filter in the list is derived. The video encoder 20 may use an index in the filter set list to indicate the filter set to the video decoder 30. In some examples, the video encoder 20 may assign smaller index values to more frequently used filters or newly added filters.
[0170] a. In one example, a newly derived filter set may be added to the beginning of the list. In another example, a filter set derived using a previous frame may be placed in the list before an existing filter set (eg, a fixed filter set) in the list.
[0171] b. The ordering of filter sets in the list may depend on other picture-related information. For example, filters derived from pictures in the same temporal layer may be placed in the list before filters derived using pictures in another temporal layer.
[0172] c. In one example, the index of the filter set in the list may depend on whether the corresponding picture from which the filter set is derived is a reference picture used for prediction of the current picture. Filters corresponding to more frequently used reference pictures may be placed before filters derived from other reference pictures.
[0173] d. In one example, filters derived using pictures coded with a similar QP as the current picture may be placed before filters derived from previous pictures coded with a different QP.
[0174] e. The maximum number of filters in the list may be limited. In one example, up to thirty-two (32) filter sets may be retained in the list. The maximum number of filter sets in the list may be signaled in the slice header, sequence parameter set, picture parameter set or other high-level syntax information or elsewhere.
[0175] f. Video encoder 20 may use different numbers of bits to signal different set indices. Fewer bits may be used to indicate lower index positions in the list than higher index positions (this is because filter sets near the top of the list are more likely to be selected).
[0176] According to some examples of the present disclosure, some blocks may share the same ALF information, for example, a merge of ALF information across two or more blocks. In one example, an index to a filter set and / or an ALF on / off flag (which indicates whether ALF is applied to a block) may be shared across multiple blocks. An ALF merge indicator may indicate which blocks are merged, and which ALF information is associated with the ALF merge indicator. The merge indicator may be an index, a flag, or any other syntax element.
[0177] a. The ALF information of a block can be merged with the block above or with the block on the left.
[0178] b. A more flexible ALF information merging may also be used, which allows merging of a block with any other block (ie, not necessarily adjacent blocks) in a picture.
[0179] In some examples of the present disclosure, the ALF on / off flag may be derived based on other existing block information. In one example, the video decoder 30 may derive the ALF on / off flag based on existing block information, and as such, the video encoder 20 may not signal the ALF on / off flag. The video encoder 20 may signal an ALF on / off signal for a group of blocks represented as ALF blocks. For example, blocks sharing the same ALF on / off flag may represent an ALF block. In another example, an ALF block may be equal to a block.
[0180] a. In one example, the ALF on / off flag can be derived based on the number of blocks in the ALF block that share the same ALF on / off flag and have a non-zero CBF flag. If the number of non-zero CBF flags is less than a certain threshold, the ALF can be disabled or the default ALF filter is applied to these blocks.
[0181] b. In the example of sub-bullet 'a' above, the number of non-zero transform coefficients may be counted instead of the CBF flag. A threshold may be introduced for the counted coefficients, and if the number of non-zero transform coefficients is less than the threshold, ALF may be disabled for blocks included in the ALF block, or a default ALF filter may be applied to these blocks.
[0182] c. In another example, if the number of blocks coded using skip mode in the ALF block is greater than a certain threshold, ALF may be disabled for these blocks.
[0183] d. In the example of sub-bullet 'c' above, skip mode is used as an example, and other decoding modes may be utilized when deriving the ALF on / off flag.
[0184] As discussed above, when using ALF, a block-based signaling mechanism can improve decoding efficiency. For example, the video encoder 20 can signal a filter set index for each block to indicate which filter set in a candidate set of filter sets to use for the block. The candidate set can include various filter sets, such as a recently signaled filter set for the current picture / slice / tile / tile group and / or a filter set from a previously decoded picture / slice / tile / tile group.
[0185] In the U.S. patent application numbered 16 / 567,966 filed on September 11, 2019, methods and systems for storing filter sets of previously decoded pictures are discussed. In the examples described in U.S. patent application 16 / 567,966, luminance and chrominance can have separate buffers. In one example, the ALF coefficients of the previously decoded pictures are stored and are allowed to be reused as the ALF coefficients of the current picture. For the current picture, the video encoder 20 can choose to use the ALF coefficients stored for the reference pictures and then bypass the ALF coefficient signaling. In this case, the video encoder 20 only signals an index to one of the reference pictures in the reference pictures, and the stored ALF coefficients of the indicated reference picture are simply inherited (e.g., reused) for the current picture. To indicate the use of temporal prediction, the video encoder 20 first decodes a flag before sending the index.
[0186] In some examples of JEM (e.g., JEM7), the ALF parameters from up to six previous pictures / slices are stored in a separate array for each temporal layer. For example, if there are 5 temporal layers in a hierarchical B / P decoding structure (which is the case in the random access setting used in current video decoding standards), both the video encoder 20 and the video decoder 30 use a 5x6 memory array so that there are a total of 30 storage units to store the previously obtained ALF parameters.
[0187] When encoding / decoding an intra random access picture (IRAP or I-frame), the design of JEM7 effectively deletes the stored ALF parameters. To avoid duplication, an ALF parameter is only stored in the memory if it is newly obtained by reception at the video decoder 30 (for the video encoder 20, new parameters are obtained via estimation / training). The storage of the parameters operates in a first-in-first-out (FIFO) manner; thus, if the array is full, the new set of ALF parameter values overwrites the oldest parameters in decoding order.
[0188] The main purpose of using a 2D array (e.g., in memory) to store ALF parameters is to maintain temporal scalability in a hierarchical B / P frame decoding structure. For i < k, the frame at layer T i cannot depend on the frame at layer T k (e.g., cannot be predicted from the frame at layer T kIn other words, frames / slices at lower temporal layers (e.g., T2) cannot depend on frames / slices at higher layers (e.g., T3 and T4). The current temporal prediction in ALF maintains temporal scalability by simply storing ALF parameters obtained from different temporal layers in different rows of a 2-D array and ensuring that these parameters are used without destroying the dependency structure in the layered B / P frames.
[0189] One of the problems in the design of temporal prediction in JEM7 is that it requires a large amount of memory. In particular, a 5x6 array with 30 storage cells is required at both the video encoder 20 and the video decoder 30 to store the ALF parameters. In view of this problem, the example described below can reduce the memory requirements by using a 1D array while still maintaining temporal scalability. The following section gives a description of an example for storing and using a 1D array in the ALF for temporal prediction.
[0190] Figure 4A The ALF parameters (P1, P2, ..., P N ) and the associated time layer ID (tld1, tld2, ..., tld n ). Each storage unit of the array 120 stores (i) ALF parameters and (ii) a temporal layer ID (tId) for indicating from which layer the corresponding ALF parameters are estimated. The temporal layer information is used to ensure that the ALF parameters obtained from a higher temporal layer (e.g., tId=4) are not used for encoding / decoding frames / slices at a lower temporal layer (e.g., tId=3).
[0191] A combination of the methods listed below can be applied to loads, stores, and using ALF parameters for temporal prediction.
[0192] 1) To be used in temporal prediction of ALF parameters, the array can store parameters from B slices or P slices.
[0193] 2) In the array, the entries of the ALF parameters should be stored in a certain order (e.g., in decoding order). When all N entries are used for storage (i.e., when the array is full), the newly obtained parameters can be stored by deleting an entry and then adding the new parameters to the array.
[0194] - As an example, this may be done in a FIFO (first in first out) manner, where the last entry in the array (ie the oldest parameter set) is deleted when the array is full,
[0195] and the new parameters are stored in the first element of the array.
[0196] - In another example, the ALF parameters replace certain stored parameters in the buffer with the same temporal layer ID; for example, certain parameters may be the oldest parameters in the buffer, or
[0197] Less commonly used, or any other rules may apply.
[0198] 3) A non-negative index value called prevIdx may be signaled to identify which ALF parameter set to load / use from the buffer for encoding / decoding.
[0199] - A variable length code (such as a unary code) may be used to signal prevldx. The total available number of parameters for a certain temporal layer Id may be counted in a stored buffer, and truncated binarization may be used to signal prevldx with the total available number of filters minus 1 as the maximum index. However, truncated decoding may introduce mismatches between the encoder and the decoder, for example when some pictures are lost in transmission.
[0200] -prevIdx can take values from 0 to N-1. Depending on the type of hierarchical frame structure used for decoding, the maximum value of prevIdx can be smaller.
[0201] - When decoding a slice / picture, possible candidates for temporal prediction may be determined by traversing the sets included in the array, and all or part of the parameter sets with equal or smaller tId are considered as valid candidates.
[0202] - Signaling of array entries (eg, determining ALF parameters for decoding) may depend on the temporal layer ID of the current frame being decoded. In particular, prevldx may correspond to different entries in the array depending on the temporal layer ID of the current frame being encoded / decoded.
[0203] i. Figure 4B An array 130 is shown for storing N=5 sets of ALF parameters obtained from different temporal layers (tId1=1, tId2=2, tId3=2, tId4=1 and tId5=3). Figure 4B As shown in , prevIdx=1 can point to the following two different entries in the array depending on the tId of the current frame being decoded:
[0204] 1. prevIdx=1 corresponds to the 4th entry in the array, and when decoding a frame with tId=1, ALF(P4,1) is stored because it is the second possible option allowed for decoding to maintain temporal scalability, where ALF(P4,1) is the first candidate signaled using prevIdx=0.
[0205] 2. prevIdx=1 corresponds to the 2nd entry in the array, and when decoding a frame with tId=2, ALF(P2,2) is stored because it is the second possible option allowed for decoding, where ALF(P1,1) is the first option corresponding to prevIdx=0.
[0206] - In case of frame loss (e.g., due to packet loss when sending the video bitstream over the network), the video decoder may choose not to add any entries to the array, and may introduce dummy entries so that even when a picture is lost, dummy entries are added to the buffer. In either case, temporal scalability remains unchanged as long as the methods listed above are applied. In other words, when a frame at a higher level is lost (e.g., T3), frames at lower layers are still decodable (e.g., T1 and T2).
[0207] - In another example, a picture or slice with a lower temporal layer ID may carry information about ALF parameters of a higher temporal layer ID. In this case, if a picture with a higher temporal layer ID is lost, the parameters may be obtained from the picture with the lower temporal layer ID. These parameters may also indicate whether the higher temporal layer ID picture carries such ALF parameters, so that these parameters or dummy parameters may be added to the buffer.
[0208] - In another example, the decoder picture buffer (DPB) management method can be applied to the temporal ALF parameter processing, because DPB management includes the handling of lost pictures.
[0209] 4) Depending on the importance of the ALF parameters (e.g., importance may be measured based on how frequently they are used or based on their temporal layer information), some of these important ALF parameters may be fixed and kept in a buffer until the next I slice is decoded. Such importance metrics may be used to rank and reorder the entries to reduce the signaling overhead of signaling prevIdx (e.g., unary decoding).
[0210] 5) Additional decisions or restrictions regarding loading and storing of ALF parameters (management of buffers) may be made based on any other side information (besides the temporal layer ID) or based on importance measures that may also be stored together with the ALF parameters.
[0211] 6) Separate buffers may be used to decode luma and chroma channels separately. As a result, each buffer may have different signaling of prevldx to determine the ALF parameters for luma and chroma channels separately.
[0212] In Y. Wang et al. "AHG17: On header parameter set (HPS)", Joint Video Experts Team (JVET) of ITU-TSG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th meeting: Marrakech, Morocco, January 9-18, 2019, (hereinafter referred to as "JVET-M0132"), adaptive parameter sets (APS) are proposed. In some examples, adaptive parameter sets are also referred to as adaptation parameter sets. APS is used to carry ALF parameters (e.g., both luminance filter parameters and chrominance filter parameters). When ALF is applied to a picture / slice / tile / tile group, the video encoder 20 signals the APS index so that the video decoder 30 will use the ALF parameters in the corresponding APS to apply the ALF to the picture / slice / tile / tile group. However, since the signaling of the APS itself is decoupled from the picture / slice / tile / tile group, it would be desirable to modify the above examples to align with such an APS in order to improve decoding efficiency. In other words, in some examples, the ALF is applied to blocks at the slice level, and the specific ALF parameters used are applied at the block level. However, the APS is signaled at a higher level. The present disclosure describes examples of APSs for indicating luma and chroma components that can be used for slices. In the following examples, the previously decoded filter may be an ALF or other type of filter.
[0213] In some examples, video encoder 20 may be configured to encode and signal a variable (or syntax element, in the following examples, the terms are used interchangeably) in a sequence parameter set / picture parameter set / slice header / tile / tile group header to indicate how many previously decoded filter sets may be used for each block corresponding to the sequence parameter set / picture parameter set / slice header / tile / tile group header. Video decoder 30 may be configured to decode such a variable / syntax element and use one or more of the previously decoded filter sets for various blocks.
[0214] In one such example, video encoder 20 may encode and signal a variable (e.g., a syntax element in the coded bitstream) that defines a maximum number of previously signaled filters that video decoder 30 may use for blocks in all components in a sequence / picture / slice / tile / tile group.
[0215] In another example, video encoder 20 may encode and signal a variable (e.g., a syntax element in the coded bitstream) to indicate a maximum number of previously signaled filters that video decoder 30 may use for luma blocks in a sequence / picture / slice / tile / tile group. Video encoder 20 may encode and signal another variable (e.g., a syntax element in the coded bitstream) to indicate a maximum number of previously signaled filters that video decoder 30 may use for luma blocks in a sequence / picture / slice / tile / tile group.
[0216] In another example, the maximum number of previously signaled filters that the video decoder may use for blocks from all color components (e.g., luma and chroma components) may be fixed and determined without signaling. In another example, the maximum number of previously signaled filters that the video decoder 30 may use for blocks from the same color component (e.g., luma and chroma) may be fixed and determined without signaling. In another example, the maximum number of previously signaled filters that the video decoder 30 may use for blocks from the same color component (e.g., luma or chroma) and having the same coding information may be fixed and determined without signaling. The coding information may be a slice type, a quantization parameter, a prediction type, motion information, an intra mode, and / or other coding information.
[0217] In some examples (which may be combined with the examples of the previous paragraphs, as will be appreciated by those skilled in the art), the video encoder 20 and the video decoder 30 may use a first-in, first-out (FIFO) buffer to store the parameters of the previously decoded ALF filter. In one example, the video encoder 20 and the video decoder 30 may be configured to use the same buffer for the luma component and the chroma component, so that one element in the buffer is used to store a set of luma filters and chroma filters from the same picture / slice / tile / tile group. In another example, the video encoder 20 and the video decoder 30 may be configured to use separate FIFO buffers for the luma component and the chroma component. When the filter parameters of the component are signaled, the video decoder 30 will push the signaled filter parameters into the buffer of the corresponding color component.
[0218] In order to align the block-based ALF filter set index signaling with the use of one or more APSs including the respective ALF parameter sets, the video encoder 20 and the video decoder 30 may be configured to decode a variable (e.g., a syntax element in the encoded bitstream) at each picture, slice, tile, and / or tile group header when ALF is enabled, the variable indicating the number of APSs used for the current picture, slice, tile, and / or tile group header. For example, at the slice level, the video encoder 20 and the video decoder 30 may be configured to decode a variable indicating the number of APSs used for the blocks of the current slice when ALF is enabled for the slice. In addition, after decoding the variable indicating the number of APSs, the video encoder 20 and the video decoder 30 may decode the index of each APS available for use in the current picture / slice / tile / tile group header. Then, for each respective block in the slice, the video encoder 20 and the video decoder 30 may decode the index of a specific APS including the ALF parameters to be used for the respective block. In the present example, video encoder 20 and video decoder 30 may code a set of APS indexes for luma components and a set of APS indexes for chroma components.
[0219] In one example, in order to reduce complexity, the video encoder 20 and the video decoder 30 may be configured to use the same number of APSs and the same index of APSs for both the luminance component and the chrominance component. In another example, in order to better adapt to the characteristics of the luminance component and the chrominance component and to achieve improved compression efficiency, the luminance component and the chrominance component have their own number of APSs and the index of APSs for the block of the picture, slice, tile and / or tile group header. In other words, the video encoder 20 and the video decoder 30 may be configured to decode the index of different numbers of APSs and APSs for the luminance component and the chrominance component of the block for the picture, slice, tile and / or tile group header. In other words, the number of APSs and the index of APSs (and therefore the ALF parameters) are independent for the luminance component and the chrominance component. In some examples, for simplicity, the number of APSs for the component can be fixed without signaling, which may depend on the decoding information. For example, for pictures / slices / tiles / tile groups decoded intra-frame, filter sets from other pictures / slices / tiles / tile groups are not allowed. In one example, two chroma components in a picture / slice / tile group may use only one APS. Another example is that each chroma component in a picture / slice / tile group may use only one APS.
[0220] According to an example of the present disclosure, the video encoder 20 may be configured to, for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, encode a first syntax element for indicating the number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. The video encoder 20 may be further configured to encode a plurality of first adaptive parameter set indices for luma blocks in one or more of a picture, a slice, a tile, or a tile group based on the number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. For example, if five APSs are used to apply ALF to luma blocks of a slice, the video encoder 20 will also encode the indices of the five APSs used. Of course, other numbers of APSs may be used for slices. The video encoder 20 is further configured to, for a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups, encode a second adaptive parameter set index for the chroma blocks in one or more of the pictures, slices, tiles, or tile groups. In this case, the chroma blocks have only a single APS, and as such, only the index of the APS is encoded and only the index of the APS is signaled.
[0221] The video decoder 30 may be configured to perform a technique that is inverse to the technique described above for the video encoder 20. For example, the video decoder 30 may be configured to decode a first syntax element indicating the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of the pictures, slices, tiles, or tile groups. The video decoder 30 may further be configured to decode a plurality of first adaptive parameter set indexes for luma blocks in one or more of the pictures, slices, tiles, or tile groups based on the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups. The video decoder 30 may also decode a second adaptive parameter set index for chroma blocks in one or more of the pictures, slices, tiles, or tile groups from a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups. The video decoder 30 may then apply the first adaptive loop filter to luma blocks in one or more of the pictures, slices, tiles, or tile groups based on the plurality of first adaptive parameter set indexes. For example, the video decoder 30 may decode a syntax element indicating a particular APS to be used for a particular luma block in one or more of the pictures, slices, tiles, or tile groups, and then apply the ALF parameters from the indicated APS to the particular luma block. Similarly, the video decoder 30 may apply the second adaptive loop filter to chroma blocks in one or more of the pictures, slices, tiles, or tile groups based on the second adaptive parameter set indexes. For example, the video decoder 30 may apply the ALF parameters from the indicated APS of the second adaptive parameter set index to the chroma blocks.
[0222] In the above example, the video encoder 20 may signal and the video decoder 30 may receive a first syntax element in a picture / slice / tile or tile group header that indicates a number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups, a plurality of first adaptive parameter set indices for luma blocks in one or more of the pictures, slices, tiles, or tile groups, and a second adaptive parameter set indices for chroma blocks in one or more of the pictures, slices, tiles, or tile groups.
[0223] In some examples, a video bitstream may be defined so that information of the APS is separated such that an APS for the luma component (luma_APS) is used to carry only the luma filter set, and an APS for the chroma component (chroma_APS) is used to carry only the chroma filter parameters.
[0224] Thus, in one example, each of the plurality of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group includes a respective luma adaptive loop filter set. In other examples, each of the plurality of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group includes only a respective luma adaptive loop filter set. Similarly, in one example, the adaptive parameter set corresponding to the second adaptive parameter set index includes a chroma adaptive loop filter set. In another example, the adaptive parameter set corresponding to the second adaptive parameter set index includes only a chroma adaptive loop filter set.
[0225] As described above, instead of using one APS index for both luma and chroma components, separate APS indexes are used so that the APS can be partially updated. For example, the video encoder 20 and the video decoder 30 may decode an index for the luma APS index (Luma_APS_index) to indicate the APS for which the luma filter information is updated. The video encoder 20 and the video decoder 30 may decode the chroma APS index (Chroma_APS_index) to indicate the APS for which the chroma filter information is updated.
[0226] Therefore, in another example of the disclosure, the video encoder 20 and the video decoder 30 may encode / decode a second syntax element indicating whether luma adaptive loop filter information for luma blocks in one or more of a picture, a slice, a tile, or a tile group is updated, and encode / decode a third syntax element indicating whether chroma adaptive loop filter information for chroma blocks in one or more of a picture, a slice, a tile, or a tile group is updated.
[0227] According to some examples, when using APS, the video encoder 20 and the video decoder 30 may use a first-in, first-out (FIFO) buffer to store previously decoded ALF filters. For each picture / slice / tile / tile group, the video encoder 20 may signal new_filter_set_flag so that a new filter set is derived from the APS index signaled; otherwise, filter parameters are not derived from any APS. After decoding the picture / slice / tile / tile group, if new_filter_set_flag is true, the video decoder 30 may push the filter set information from the APS to the FIFO buffer. Otherwise, the FIFO buffer is not changed. The FIFO buffer may be fixed length or variable length. The techniques described above for the FIFO buffer may also be applied.
[0228] In some examples, the FIFO buffer may be shared among all tile groups / slices in a picture. The index of the APS to be added to the FIFO buffer after decoding the picture may be signaled at a certain point in the middle of the bitstream of the picture. For example, the video encoder 20 may signal such information at the beginning, end, or other places of the picture. In another example, the parameters of the filter set from one or more fixed tile groups / slices may be used to update the FIFO buffer without signaling which filter set will be added to the buffer. For example, after the entire picture is reconstructed, the first n signaled filter sets from the tile group / slice in the picture will be added to the FIFO buffer. In another example, after the entire picture is reconstructed, the last n signaled filter sets from the tile group / slice in the picture will be added to the FIFO buffer. In the above example, n is a positive integer. The value of n may be fixed or signaled. In another example, some rules for selecting more than one filter set in a picture may be defined and applied at both the video encoder 20 and the video decoder 30.
[0229] Figure 5 is a block diagram illustrating an example video encoder 20 that may use the APS described in the present disclosure to implement techniques for ALF. The video encoder 20 may perform intra-coding and inter-coding of video blocks within a video slice. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy in video within a given video frame or picture. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames or pictures of a video sequence. Intra-mode (I-mode) may refer to any of several spatial-based compression modes. Inter-modes such as unidirectional prediction (P-mode) or bidirectional prediction (B-mode) may refer to any of several temporal-based compression modes.
[0230] exist Figure 5 In the example of , the video encoder 20 includes a video data memory 33, a partition unit 35, a prediction processing unit 41, a summer 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 includes a motion estimation unit (MEU) 42, a motion compensation unit (MCU) 44, and an intra-prediction processing unit 46. For video block reconstruction, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, a summer 62, a filter unit 64, and a decoded picture buffer (DPB) 66.
[0231] like Figure 5As shown, the video encoder 20 receives video data and stores the received video data in a video data memory 33. The video data memory 33 can store video data to be encoded by components in the video encoder 20. The video data stored in the video data memory 33 can be, for example, obtained from a video source 18. The DPB 66 can be a reference picture memory that stores reference video data for use when the video encoder 20, for example, encodes the video data in an intra-frame decoding mode or an inter-frame decoding mode. The video data memory 33 and the DPB 66 can be formed by any storage device in a variety of storage devices, such as a dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), a magnetoresistive RAM (MRAM), a resistive RAM (RRAM) or other types of storage devices. The video data memory 33 and the DPB 66 can be provided by the same storage device or a separate storage device. In various examples, the video data memory 33 can be on a chip with other components in the video encoder 20, or off a chip relative to these components.
[0232] The partition unit 35 retrieves the video data from the video data memory 33 and divides the video data into video blocks. Such partitioning may also include, for example, partitioning into slices, tiles or other larger units and video block partitioning according to the quadtree structure of LCUs and CUs. The video encoder 20 generally shows a component for encoding a video block within a video slice to be encoded. The slice may be divided into a plurality of video blocks (and may be divided into a collection of video blocks called tiles). The prediction processing unit 41 may select a decoding mode in a plurality of possible decoding modes for the current video block based on the error result (e.g., decoding rate and distortion degree), such as an intra-frame decoding mode in a plurality of intra-frame decoding modes or an inter-frame decoding mode in a plurality of inter-frame decoding modes. The prediction processing unit 41 may provide the obtained intra-frame decoded block or the inter-frame decoded block to the summer 50 to generate residual block data, and to the summer 62 to reconstruct the encoded block for use as a reference picture.
[0233] Intra-prediction unit processing 46 within prediction processing unit 41 may perform intra-predictive coding of the current video block relative to one or more neighboring blocks in the same frame or slice as the current block to be coded to provide spatial compression. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-predictive coding of the current video block relative to one or more prediction blocks in one or more reference pictures to provide temporal compression.
[0234] Motion estimation unit 42 may be configured to determine an inter-prediction mode for a video slice according to a predetermined pattern for a video sequence. The predetermined pattern may designate a video slice in a sequence as a P slice or a B slice. Motion estimation unit 42 and motion compensation unit 44 may be highly integrated, but are shown separately for conceptual purposes. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors, which estimate motion for video blocks. For example, a motion vector may indicate the displacement of a PU of a video block within a current video frame or picture relative to a prediction block within a reference picture.
[0235] A prediction block is a block that is found to closely match a PU of a video block to be decoded in terms of pixel differences, which may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics. In some examples, video encoder 20 may calculate values for sub-integer pixel positions of a reference picture stored in DPB 66. For example, video encoder 20 may interpolate values for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of a reference picture. Thus, motion estimation unit 42 may perform motion searches relative to full pixel positions and fractional pixel positions, and output motion vectors with fractional pixel precision.
[0236] Motion estimation unit 42 calculates a motion vector for a PU of a video block in an inter-coded slice by comparing the position of the PU to the position of a prediction block of a reference picture. The reference picture may be selected from a first reference picture list (List 0) or a second reference picture list (List 1), each of which identifies one or more reference pictures stored in DPB 66. Motion estimation unit 42 sends the calculated motion vector to entropy encoding unit 56 and motion compensation unit 44.
[0237] Motion compensation, performed by motion compensation unit 44, may involve obtaining or generating a prediction block based on a motion vector determined by motion estimation, possibly performing interpolation to sub-pixel accuracy. Upon receiving a motion vector for a PU of a current video block, motion compensation unit 44 may locate the prediction block to which the motion vector points in one of a reference picture list. Video encoder 20 forms a residual video block by subtracting pixel values of the prediction block from pixel values of the current video block being decoded, forming pixel difference values. The pixel difference values form residual data for the block, and may include a luma difference component and a chroma difference component. Summer 50 represents a component or components that perform this subtraction operation. Motion compensation unit 44 may also generate syntax elements associated with video blocks and video slices for use by video decoder 30 in decoding video blocks of video slices.
[0238] After the prediction processing unit 41 generates a prediction block for the current video block via intra prediction or inter prediction, the video encoder 20 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more TUs and applied to the transform processing unit 52. The transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform. The transform processing unit 52 may convert the residual video data from a pixel domain to a transform domain, such as a frequency domain.
[0239] The transform processing unit 52 may send the resulting transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, the quantization unit 54 may then perform a scan of the matrix including the quantized transform coefficients. In another example, the entropy coding unit 56 may perform the scan.
[0240] After quantization, entropy encoding unit 56 performs entropy encoding on the quantized transform coefficients. For example, entropy encoding unit 56 may perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioned entropy (PIPE) coding, or another entropy encoding methodology or technique. After entropy encoding by entropy encoding unit 56, the encoded bitstream may be sent to video decoder 30, or archived for later transmission or retrieval by video decoder 30. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements for the current video slice being decoded.
[0241] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual block in the pixel domain for later use as a reference block of a reference picture. Motion compensation unit 44 may calculate the reference block by adding the residual block to a prediction block of one of the reference pictures in one of the reference picture lists. Motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. Summer 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reconstructed block.
[0242] Filter unit 64 filters the reconstructed block (e.g., the output of summer 62) and stores the filtered reconstructed block in DPB 66 for use as a reference block. The reference block can be used as a reference block by motion estimation unit 42 and motion compensation unit 44 to perform inter-frame prediction on blocks in subsequent video frames or pictures. Filter unit 64 can perform any type of filtering (such as deblocking filtering, SAO filtering, peak SAO filtering, ALF and / or GALF) and / or other types of loop filters. Deblocking filters can, for example, apply deblocking filtering to filter block boundaries to remove block effect artifacts from reconstructed video. Peak SAO filters can apply offsets to reconstructed pixel values to improve overall decoding quality. Additional loop filters (in the loop or after the loop) can also be used.
[0243] The filter unit 64 or other structural components of the video encoder 20 may be configured to perform the techniques of the present disclosure. For example, the filter unit 64 may be configured to: for a video bitstream for which adaptive loop filtering is enabled for a luma block in one or more of a picture, a slice, a tile, or a tile group, encode a first syntax element for indicating the number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. The filter unit 64 may be further configured to encode a plurality of first adaptive parameter set indices for luma blocks in one or more of a picture, a slice, a tile, or a tile group based on the number of the adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. For example, if five APSs are used to apply ALF to the luma blocks of a slice, the filter unit 64 will also encode the indexes of the five APSs used. Of course, other numbers of APSs may be used for slices. Filter unit 64 may further be configured to: for a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups, encode a second adaptive parameter set index for the chroma blocks in one or more of the pictures, slices, tiles, or tile groups. In this case, the chroma blocks have only a single APS, and as such, only the index of the APS is encoded and signaled.
[0244] Figure 6 is a block diagram illustrating an example video decoder 30 that may implement the techniques described in this disclosure. For example, Figure 6 The video decoder 30 may be configured, for example, to receive the above with respect to Figure 5 The signaling described in the video encoder 20. Figure 6In the example of FIG. 1 , video decoder 30 includes video data memory 78, entropy decoding unit 80, prediction processing unit 81, inverse quantization unit 86, inverse transform processing unit 88, summer 90, DPB 94, and filter unit 92. Prediction processing unit 81 includes motion compensation unit 82 and intra prediction processing unit 84. Video decoder 30 may perform some examples generally related to relative to the video from Figure 5 The encoding path described for video encoder 20 is the inverse of the decoding path.
[0245] During the decoding process, the video decoder 30 receives a coded video bitstream representing video blocks and associated syntax elements in a coded video slice from the video encoder 20. The video decoder 30 stores the received coded video bitstream in a video data memory 78. The video data memory 78 can store video data to be decoded by components in the video decoder 30, such as a coded video bitstream. The video data stored in the video data memory 78 can be obtained, for example, from the storage device 26 or from a local video source (such as a camera) via the link 16 or by accessing a physical data storage medium. The video data memory 78 can form a decoded picture buffer (CPB) that stores coded video data from the coded video bitstream. The DPB 94 can be a reference picture memory that stores reference video data for use when the video decoder 30, for example, decodes the video data in an intra-frame decoding mode or an inter-frame decoding mode. The video data memory 78 and the DPB 94 can be composed of any storage device in a variety of storage devices (such as DRAM, SDRAM, MRAM, RRAM or other types of storage devices). Video data memory 78 and DPB 94 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 78 may be on-chip with other components in video decoder 30, or off-chip relative to these components.
[0246] Entropy decoding unit 80 in video decoder 30 decodes the video data stored in video data memory 78 to generate quantized coefficients, motion vectors, and other syntax elements. Entropy decoding unit 80 forwards the motion vectors and other syntax elements to prediction processing unit 81. Video decoder 30 may receive syntax elements at a video slice level and / or a video block level.
[0247] When the video slice is decoded as an intra-coded (I) slice, the intra-prediction processing unit 84 in the prediction processing unit 81 can generate prediction data for the video block of the current video slice based on the signaled intra-prediction mode and data from the previously decoded block of the current frame or picture. When the video frame is decoded as an inter-coded slice (e.g., a B slice or a P slice), the motion compensated prediction 82 in the prediction processing unit 81 generates a prediction block for the video block of the current video slice based on the motion vector and other syntax elements received from the entropy decoding unit 80. The prediction block can be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 can construct the reference frame lists, List 0 and List 1, using a default construction technique based on the reference pictures stored in the DPB 94.
[0248] Motion compensation unit 82 determines prediction information for a video block of the current video slice by parsing the motion vectors and other syntax elements, and uses the prediction information to generate a prediction block for the current video block being decoded. For example, motion compensation unit 82 uses some of the received syntax elements to determine a prediction mode (e.g., intra-prediction or inter-prediction) for decoding the video block of the video slice, an inter-prediction slice type (e.g., B slice or P slice), construction information for one or more reference picture lists in the reference picture list of 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 the video blocks in the current video slice.
[0249] Motion compensation unit 82 may also perform interpolation based on interpolation filters. Motion compensation unit 82 may calculate interpolated values for sub-integer pixels of a reference block using interpolation filters as used by video encoder 20 during encoding of the video block. In this case, motion compensation unit 82 may determine the interpolation filters used by video encoder 20 from received syntax elements and use the interpolation filters to produce a prediction block.
[0250] Inverse quantization unit 86 inverse quantizes (i.e., dequantizes) the quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 80. The inverse quantization process may include the use of quantization parameters calculated by video encoder 20 for each video block in a video slice to determine the degree of quantization and, likewise, the degree of inverse quantization that should be applied. Inverse transform processing unit 88 applies an inverse transform (e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients to produce residual blocks in the pixel domain.
[0251] After prediction processing unit 88 generates a prediction block for the current video block using, for example, intra-prediction or inter-prediction, video decoder 30 forms a reconstructed video block by summing the residual block from inverse transform processing unit 88 with the corresponding prediction block generated by motion compensation unit 82. Summer 90 represents the component or components that perform this summing operation.
[0252] The filter unit 92 filters the reconstructed block (e.g., the output of the summer 90), and stores the filtered reconstructed block in the DPB 94 for use as a reference block. The reference block can be used as a reference block by the motion compensation unit 82 to perform inter-frame prediction on blocks in subsequent video frames or pictures. The filter unit 92 can perform any type of filtering (such as deblocking filtering, SAO filtering, peak SAO filtering, ALF and / or GALF) and / or other types of loop filters. The deblocking filter can, for example, apply deblocking filtering to filter block boundaries to remove block effect artifacts from the reconstructed video. The peak SAO filter can apply an offset to the reconstructed pixel value to improve the overall decoding quality. Other loop filters (in the loop or after the loop) can also be used.
[0253] Components of filter unit 92 and / or other structures of video decoder 30 may be configured to perform techniques reciprocal to those described above for video encoder 20 and filter unit 64. For example, video decoder 30 may be configured to decode, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element for indicating a number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. Video decoder 30 may be further configured to decode a plurality of first adaptive parameter set indices for luma blocks in one or more of a picture, a slice, a tile, or a tile group based on the number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group. The video decoder 30 may also decode a second adaptive parameter set index for a chroma block in one or more of a picture, a slice, a tile, or a tile group from a video bitstream for which adaptive loop filtering is enabled for a chroma block in one or more of a picture, a slice, a tile, or a tile group. The filter unit 92 may then apply a first adaptive loop filter to a luminance block in one or more of a picture, a slice, a tile, or a tile group based on a plurality of first adaptive parameter set indexes. For example, the video decoder 30 may decode a syntax element indicating a specific APS used for a specific luminance block of a slice, and then the filter unit 92 applies the ALF parameters from the indicated APS to the specific luminance block. Similarly, the filter unit 92 may apply a second adaptive loop filter to a chroma block in one or more of a picture, a slice, a tile, or a tile group based on a second adaptive parameter set index. For example, the filter unit 92 may apply the ALF parameters of the indicated APS from the second adaptive parameter set index to the chroma block.
[0254] Figure 7 An example implementation of filter unit 92 is shown. Filter unit 64 may be implemented in the same manner. Filter unit 64 and filter unit 92 may perform the techniques of the present disclosure, possibly in conjunction with other components in video encoder 20 or video decoder 30. Figure 7 In the example of , filter unit 92 includes a deblocking filter 102, an SAO filter 104, and an ALF / GALF filter 106. SAO filter 104 may, for example, be configured to determine offset values for samples of a block in the manner described in the present disclosure.
[0255] The filter unit 92 may include fewer filters and / or may include additional filters. Figure 7The specific filters shown may be implemented in a different order. Other loop filters (either in the decoding loop or after the decoding loop) may also be used to smooth pixel transitions or otherwise improve video quality. The decoded video blocks in a given frame or picture are then stored in DPB 94, which stores reference pictures for subsequent motion compensation. DPB 94 may be part of or separate from additional memory that stores decoded video for later display on a display device such as a video card. Figure 1 The image is presented on a display device 32).
[0256] Figure 8 is a flow chart illustrating an example video encoding method of the present disclosure. Figure 8 The techniques may be performed by one or more components in video encoder 20, including filter unit 64.
[0257] According to an example of the present disclosure, the video encoder 20 may be configured to: for a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, encode a first syntax element for indicating the number of adaptive parameter sets for luma blocks in one or more of the picture, the slice, the tile, or the tile group (800). The video encoder 20 may be further configured to encode a plurality of first adaptive parameter set indices for luma blocks in one or more of the picture, the slice, the tile, or the tile group based on the number of adaptive parameter sets for luma blocks in one or more of the picture, the slice, the tile, or the tile group (802). For example, if five APSs are used to apply ALF to luma blocks of a slice, the video encoder 20 will also encode the indices of the five APSs used. Of course, other numbers of APSs may be used for slices. The video encoder 20 is further configured to, for a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups, encode a second adaptive parameter set index for the chroma blocks in one or more of the pictures, slices, tiles, or tile groups (804). In this case, the chroma blocks have only a single APS, and as such, only the index of the APS is encoded and signaled.
[0258] In the above example, the video encoder 20 may signal a first syntax element in a picture / slice / tile / tile group header to indicate the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups, a plurality of first adaptive parameter set indices for luma blocks in one or more of the pictures, slices, tiles, or tile groups, and a second adaptive parameter set indices for chroma blocks in one or more of the pictures, slices, tiles, or tile groups.
[0259] Fig. 9 is a flow chart illustrating an example video decoding method of the present disclosure. Fig. 9 The techniques may be performed by one or more components in video decoder 30, including filter unit 92.
[0260] Video decoder 30 may be configured to perform techniques reciprocal to those described above for video encoder 20. For example, video decoder 30 may be configured to decode, from a video bitstream for which adaptive loop filtering is enabled for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element indicating a number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group (900). Video decoder 30 may be further configured to decode, based on the number of adaptive parameter sets for luma blocks in one or more of a picture, a slice, a tile, or a tile group, a plurality of first adaptive parameter set indices for luma blocks in one or more of a picture, a slice, a tile, or a tile group (902).
[0261] The video decoder 30 may also decode a second adaptive parameter set index for a chroma block in one or more of the pictures, slices, tiles, or tile groups from a video bitstream for which adaptive loop filtering is enabled for chroma blocks in one or more of the pictures, slices, tiles, or tile groups (904). The video decoder 30 may then apply a first adaptive loop filter to a luma block in one or more of the pictures, slices, tiles, or tile groups based on a plurality of first adaptive parameter set indexes (906). For example, the video decoder 30 may decode a syntax element indicating a specific APS used for a specific luma block in one or more of the pictures, slices, tiles, or tile groups, and then apply ALF parameters from the indicated APS to the specific luma block. Similarly, the video decoder 30 may apply a second adaptive loop filter to a chroma block in one or more of the pictures, slices, tiles, or tile groups based on a second adaptive parameter set index (908). For example, video decoder 30 may apply the ALF parameters of the indicated APS from the second adaptation parameter set index to the chroma blocks.
[0262] In the above example, the video decoder 30 may receive a first syntax element in a picture / slice / tile / tile group header for indicating the number of adaptive parameter sets for luma blocks in one or more of the pictures, slices, tiles, or tile groups, a plurality of first adaptive parameter set indices for luma blocks in one or more of the pictures, slices, tiles, or tile groups, and a second adaptive parameter set indices for chroma blocks in one or more of the pictures, slices, tiles, or tile groups.
[0263] Illustrative examples of the present disclosure include:
[0264] Example 1: A method of coding video data, the method comprising determining a set of adaptive loop filter (ALF) filters from among a plurality of sets of ALF information for a block of a picture.
[0265] Example 2: The method of Example 1, wherein the block represents a coding tree unit (CTU) of the picture.
[0266] Example 3: The method of Example 1 or Example 2, wherein each respective ALF information set includes a filter assigned to a class.
[0267] Example 4: A method of coding video data, the method comprising allocating a list of adaptive loop filter (ALF) sets across two or more pictures.
[0268] Example 5: The method of Example 4, further comprising deriving a new filter set after decoding the picture, the new filter set not included in the allocated list.
[0269] Example 6: The method according to Example 5 further includes adding the new filter set to the list.
[0270] Example 7: The method of Example 5, further comprising replacing one of the ALF sets in the list with the new filter set.
[0271] Example 8: A method according to any combination of Examples 5-7, wherein deriving the new filter set includes deriving the new filter set using data from one of a previously decoded picture, a previously decoded slice, or a previously decoded tile.
[0272] Example 9: A method of coding video data, the method comprising merging adaptive loop filter (ALF) information across multiple blocks of a picture.
[0273] Example 10: The method according to Example 9, wherein the plurality of blocks include a current block of the picture and an upper adjacent block of the current block.
[0274] Example 11: The method according to Example 9, wherein the plurality of blocks include a current block of the picture and a left adjacent block of the current block.
[0275] Example 12: The method according to Example 9, wherein the plurality of blocks include current blocks of the picture and blocks included in a picture different from the picture.
[0276] Example 13: A method of decoding video data, the method comprising deriving a value of an adaptive loop filter (ALF) on / off flag from previously decoded video data.
[0277] Example 14: The method of Example 13, wherein deriving the value of the ALF on / off flag comprises deriving the value based on a number of blocks included in ALF blocks sharing the ALF on / off flag.
[0278] Example 15: The method of Example 14, wherein deriving the value of the ALF on / off flag comprises deriving the value further based on a non-zero coded block flag (CBF) or a non-zero transform coefficient in the ALF block.
[0279] Example 16: A video decoding device, comprising: a video data memory storing the video data; and a processing circuit in communication with the video data memory, the processing circuit being configured to execute the method of any of Examples 1-15.
[0280] Example 17: A video decoding device according to Example 16, wherein the video decoding device comprises a video decoding device.
[0281] Example 18: A video decoding device according to Example 16, wherein the video decoding device comprises a video encoding device.
[0282] Example 19: A video encoding device according to Example 18, wherein the video encoding device is configured to decode the encoded video bitstream.
[0283] Example 20: An apparatus comprising a unit for performing the method of any of Examples 1-15.
[0284] Example 21: A computer-readable storage medium encoded with instructions, which, when executed, cause a processor of a video decoding device to perform the method of any of Examples 1-15.
[0285] Example 22: Any combination of techniques described in this disclosure.
[0286] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted on a computer-readable medium as one or more instructions or codes, and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to tangible media such as data storage media or communication media, including any media that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. In this manner, computer-readable media 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. Data storage media 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 the implementation of the techniques described in the present disclosure. A computer program product may include a computer-readable medium.
[0287] By way of example and not limitation, such computer-readable storage media can be any one of RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage device, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if the instruction is sent from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technology (such as infrared, radio, and microwave), then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (such as infrared, radio, and microwave) is included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but point to non-transient, tangible storage media. Disks and optical disks as used herein include compact discs (CDs), laser optical disks, optical disks, digital versatile discs (DVDs), floppy disks, and blue-ray discs, wherein disks usually copy data magnetically, and optical disks use lasers to optically copy data. Combinations of the above should also be included within the scope of computer-readable media.
[0288] 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 refers to any of the above structures or any other structure suitable for the implementation of the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may be fully implemented in one or more circuits or logic elements.
[0289] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or a set of ICs (e.g., chipsets). The various components, modules, or units described in the present disclosure are described to emphasize aspects of the functionality of a device configured to perform the disclosed techniques, but are not necessarily required to be implemented by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit, or provided by a group of interoperable hardware units including one or more processors as described above in combination with suitable software and / or firmware.
[0290] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for decoding video data, the method comprising: decoding, from a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; decoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; decoding, from the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups, respective second adaptation parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; applying a first adaptive loop filter to respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding plurality of first adaptive parameter set indices; as well as A second adaptive loop filter is applied to respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding second adaptive parameter set index.
2. The method according to claim 1, further comprising: Receive the first syntax element in one or more of a picture header, a slice header, a tile header, or a tile group header of the video bitstream for indicating the number of corresponding adaptive parameter sets for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, corresponding multiple first adaptive parameter set indices for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, and corresponding second adaptive parameter set indices for respective chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups.
3. The method according to claim 1, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group comprises a respective set of luma adaptive loop filters.
4. The method according to claim 3, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group includes only a respective luma adaptive loop filter set.
5. The method according to claim 1, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes a chroma adaptive loop filter set.
6. The method according to claim 5, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes only the chroma adaptive loop filter set.
7. The method according to claim 1, further comprising: decoding from the video bitstream a second syntax element for indicating whether luma adaptive loop filter information for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated; as well as A third syntax element is decoded from the video bitstream to indicate whether chroma adaptive loop filter information for respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated.
8. The method according to claim 1, further comprising: A picture is displayed that includes filtered luma blocks in the one or more of the picture, the slice, the tile, or the tile group and filtered chroma blocks in the one or more of the picture, the slice, the tile, or the tile group.
9. An apparatus configured to decode video data, the apparatus comprising: a memory configured to store luma blocks in one or more of a picture, a slice, a tile, or a tile group and chroma blocks in the one or more of the picture, the slice, the tile, or the tile group; as well as One or more processors implemented in circuitry and in communication with the memory, the one or more processors being configured to: decoding, from a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups, a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; decoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; decoding, from the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups, respective second adaptation parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; applying a first adaptive loop filter to respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding plurality of first adaptive parameter set indices; as well as A second adaptive loop filter is applied to respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding second adaptive parameter set index.
10. The device according to claim 9, wherein: The one or more processors are further configured to: Receive the first syntax element in one or more of a picture header, a slice header, a tile header, or a tile group header of the video bitstream for indicating the number of corresponding adaptive parameter sets for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, corresponding multiple first adaptive parameter set indices for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, and corresponding second adaptive parameter set indices for respective chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups.
11. The device according to claim 9, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group comprises a respective set of luma adaptive loop filters.
12. The device according to claim 11, wherein Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group includes only a respective luma adaptive loop filter set.
13. The device according to claim 9, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes a chroma adaptive loop filter set.
14. The device according to claim 13, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes only the chroma adaptive loop filter set.
15. The device according to claim 9, wherein: The one or more processors are further configured to: decoding from the video bitstream a second syntax element for indicating whether luma adaptive loop filter information for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated; as well as A third syntax element is decoded from the video bitstream to indicate whether chroma adaptive loop filter information for respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated.
16. The apparatus according to claim 9, further comprising: A display configured to display a picture, the picture comprising filtered luma blocks in one or more of the picture, the slice, the tile, or the tile group and filtered chroma blocks in one or more of the picture, the slice, the tile, or the tile group.
17. An apparatus configured to decode video data, the apparatus comprising: means for decoding, from a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element for indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; means for decoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; means for decoding, from the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups, respective second adaptation parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; means for applying a first adaptive loop filter to respective luma blocks in said one or more of said picture, said slice, said tile, or said tile group based on a corresponding plurality of first adaptive parameter set indices; as well as Means for applying a second adaptive loop filter to respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding second adaptive parameter set index.
18. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors in a device configured to decode video data to: decoding, from a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; decoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; decoding, from the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups, respective second adaptation parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; applying a first adaptive loop filter to respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding plurality of first adaptive parameter set indices; as well as A second adaptive loop filter is applied to respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group based on a corresponding second adaptive parameter set index.
19. A method for encoding video data, the method comprising: For a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, encoding a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; encoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; as well as For the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in one or more of the pictures, the slices, the tiles, or the tile groups, corresponding second adaptive parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups are encoded.
20. The method according to claim 19, further comprising: Signaling the first syntax element in one or more of a picture header, a slice header, a tile header, or a tile group header of the video bitstream for indicating the number of corresponding adaptive parameter sets for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, corresponding multiple first adaptive parameter set indices for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, and corresponding second adaptive parameter set indices for respective chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups.
21. The method according to claim 19, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group comprises a respective set of luma adaptive loop filters.
22. The method according to claim 21, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group includes only a respective luma adaptive loop filter set.
23. The method according to claim 19, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes a chroma adaptive loop filter set.
24. The method according to claim 23, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes only a chroma adaptive loop filter set.
25. The method of claim 19, further comprising: encoding a second syntax element for indicating whether luma adaptive loop filter information for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated; as well as A third syntax element for indicating whether chroma adaptive loop filter information for respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated is encoded.
26. The method of claim 19, further comprising: A picture is captured that includes respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups and respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups.
27. An apparatus configured to encode video data, the apparatus comprising: a memory configured to store luma blocks in one or more of a picture, a slice, a tile, or a tile group and chroma blocks in the one or more of the picture, the slice, the tile, or the tile group; as well as One or more processors implemented in circuitry and in communication with the memory, the one or more processors being configured to: encoding, for a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group, a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; encoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; as well as For the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in one or more of the pictures, the slices, the tiles, or the tile groups, corresponding second adaptive parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups are encoded.
28. The device according to claim 27, wherein The one or more processors are further configured to: Signaling the first syntax element in one or more of a picture header, a slice header, a tile header, or a tile group header of the video bitstream for indicating the number of corresponding adaptive parameter sets for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, corresponding multiple first adaptive parameter set indices for respective luma blocks in the picture, the slice, the tile, or the one or more of the tile groups, and corresponding second adaptive parameter set indices for respective chroma blocks in the picture, the slice, the tile, or the one or more of the tile groups.
29. The device according to claim 27, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group comprises a respective set of luma adaptive loop filters.
30. The device according to claim 29, wherein: Each adaptive parameter set of the number of adaptive parameter sets for a respective luma block in the one or more of the picture, the slice, the tile, or the tile group includes only a respective luma adaptive loop filter set.
31. The apparatus of claim 27, wherein: The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes a chroma adaptive loop filter set.
32. The device according to claim 31, wherein The adaptive parameter set corresponding to the corresponding second adaptive parameter set index includes only a chroma adaptive loop filter set.
33. The apparatus of claim 27, wherein: The one or more processors are further configured to: encoding a second syntax element for indicating whether luma adaptive loop filter information for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated; as well as A third syntax element for indicating whether chroma adaptive loop filter information for respective chroma blocks in the one or more of the picture, the slice, the tile, or the tile group is updated is encoded.
34. The apparatus of claim 27, further comprising: A camera configured to capture a picture, the picture comprising respective luma blocks in one or more of the picture, the slice, the tile, or the tile group and respective chroma blocks in one or more of the picture, the slice, the tile, or the tile group.
35. An apparatus configured to encode video data, the apparatus comprising: means for encoding, for a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; means for encoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; as well as A unit for encoding, for the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in one or more of the pictures, the slices, the tiles, or the tile groups, corresponding second adaptive parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups.
36. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors in a device configured to encode video data to: For a video bitstream for which adaptive loop filtering is enabled for respective luma blocks in one or more of a picture, a slice, a tile, or a tile group, encoding a first syntax element indicating a number of respective adaptation parameter sets for respective luma blocks in the one or more of the picture, the slice, the tile, or the tile group; encoding a respective plurality of first adaptation parameter set indices for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups based on a number of respective adaptation parameter sets for respective luma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups; as well as For the video bitstream for which adaptive loop filtering is enabled for respective chroma blocks in one or more of the pictures, the slices, the tiles, or the tile groups, corresponding second adaptive parameter set indices for respective chroma blocks in the one or more of the pictures, the slices, the tiles, or the tile groups are encoded.
Citation Information
Patent Citations
Prediction of adaptive loop filter parameters with reduced memory consumption for video coding
US11284075B2
Modified adaptive loop filter temporal prediction for temporal scalability support
US20180192050A1