Modified Adaptive Loop Filter Temporal Prediction for Temporal Scalability Support.

JP7631438B2Active Publication Date: 2025-02-18QUALCOMM INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023123350
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-01-03
Filing Date
2023-07-28
Publication Date
2025-02-18
Estimated Expiration
2038-01-04

Smart Images

  • Figure 0007631438000008
    Figure 0007631438000008
  • Figure 0007631438000009
    Figure 0007631438000009
  • Figure 0007631438000010
    Figure 0007631438000010
Patent Text Reader

Abstract

To provide video coders (video encoding and decoding devices) and methods for reconstructing a current picture of video data.SOLUTION: A current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs. Furthermore, for each of multiple arrays that correspond to different temporal layers, the video coder may store, in the array, sets of adaptive loop filtering (ALF) parameters used in applying ALF filters to samples of regions of pictures of the video data that are decoded prior to the current region and that are in the temporal layer corresponding to the array or a lower temporal layer than the temporal layer corresponding to the array. The video coder determines an applicable set of ALF parameters on the basis of a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs.SELECTED DRAWING: Figure 10
Need to check novelty before this filing date? Find Prior Art

Description

Related Applications

[0001]

[0001] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 442,322, filed January 4, 2017, and U.S. Provisional Patent Application No. 62 / 445,174, filed January 11, 2017, the entire contents of each of which are incorporated herein by reference. [Technical field]

[0002]

[0002] This disclosure relates to video encoding and decoding. [Background technology]

[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, electronic book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite radio telephones, so-called "smartphones," video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video compression techniques, such as those described in standards defined by the MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265, High Efficiency Video Coding (HEVC) standards, and extensions to such standards. By implementing such video compression techniques, video devices may transmit, receive, encode, decode, and / or store digital video information more efficiently.

[0004]

[0004] Video compression techniques may 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 (e.g., a video frame or a portion of a video frame) may be partitioned into video blocks, such as coding tree blocks and coding blocks. The spatial or temporal prediction results in a predictive block for a block to be coded. The residual data represents pixel differences between the original block to be coded and the predictive block. For further compression, the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients, which may then be quantized. Summary of the Invention

[0005] In general, this disclosure describes techniques related to adaptive loop filtering (ALF), particularly for prediction of ALF filters from previously coded frames, slices, or tiles. The techniques may be used in the context of advanced video codecs, such as extensions of HEVC or next-generation video coding standards.

[0006]

[0006] In one example, the disclosure describes a method for decoding video data, the method comprising: receiving a bitstream including an encoded representation of a current picture of the video data, wherein a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; for each respective array of a plurality of arrays corresponding to different temporal layers, storing in the respective array a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs; and applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0007]

[0007] In another example, the disclosure describes a method for encoding video data, the method comprising: generating a bitstream including an encoded representation of a current picture of the video data, wherein a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; for each respective array of a plurality of arrays corresponding to different temporal layers, storing in the respective array a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; and using the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region.

[0008]

[0008] In another example, the disclosure describes a device for decoding video data, the device comprising: one or more storage media configured to store the video data; and one or more processors configured to: receive a bitstream including an encoded representation of a current picture of the video data, wherein a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstruct the current picture; and for each respective array of a plurality of arrays corresponding to different temporal layers, store in a respective array a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs; and apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0009] In another example, this disclosure describes a device for encoding video data, the device comprising: one or more storage media configured to store the video data; generating a bitstream including an encoded representation of a current picture of the video data, wherein a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and for each respective array of a plurality of arrays corresponding to different temporal layers, reconstructing a bitstream including a pixel of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array. the one or more processors configured to: store in respective arrays sets of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of the image; determine an applicable set of ALF parameters for a current region based on a selected set of ALF parameters in one of the arrays corresponding to a temporal layer to which the current region belongs; apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; and use the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region.

[0010]

[0010] In another example, the disclosure describes a device for decoding video data, the device comprising: means for receiving a bitstream including an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; means for reconstructing the current picture; means for storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; means for determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs; and means for applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0011]

[0011] In another example, the disclosure describes a device for encoding video data, the device comprising: means for generating a bitstream including an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; means for reconstructing the current picture; means for storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or a temporal layer lower than the temporal layer corresponding to the respective array; means for determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; means for applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; and means for using the current region for prediction of a subsequent picture of the video data after applying adaptive loop filtering to the current region.

[0012]

[0012] In another example, the disclosure describes a computer-readable data storage medium storing instructions that, when executed, cause one or more processors to receive a bitstream including an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; for each respective array of a plurality of arrays corresponding to different temporal layers, storing in a respective array a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs; and applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0013]

[0013] In another example, the disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors to: generate a bitstream including an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstruct the current picture; for each respective array of a plurality of arrays corresponding to different temporal layers, store in the respective array a set of adaptive loop filtering (ALF) parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or a temporal layer lower than the temporal layer corresponding to the respective array; determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; and use the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region.

[0014]

[0014] The details of one or more aspects of this disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the techniques described in this disclosure will become apparent from the description, drawings, and claims. [Brief description of the drawings]

[0015] [Figure 1] A block diagram illustrating an example video encoding and decoding system that may use one or more techniques described in this disclosure. [Diagram 2] 1 illustrates three different exemplary adaptive loop filtering (ALF) filter supports. [Diagram 3]1 illustrates an example of a random access configuration with Group of Pictures (GOP) equal to 16. [Figure 4A] 1 illustrates an array for storing filter parameters. [Figure 4B] 1 illustrates different states of an array for storing filter parameters. [Diagram 5] 1 illustrates multiple arrays corresponding to different temporal layers according to a first technique of this disclosure. [Figure 6] 1 illustrates an array for storing ALF parameters and associated temporal layer index values ​​according to a second technique of this disclosure. [Figure 7] 1 is a block diagram illustrating an example video encoder that may implement one or more techniques described in this disclosure. [Figure 8] 1 is a block diagram illustrating an example video decoder that may implement one or more techniques described in this disclosure. [Figure 9] 1 is a flowchart illustrating an example operation of a video encoder in accordance with a first technique of this disclosure. [Figure 10] 1 is a flowchart illustrating an example operation of a video decoder in accordance with the first technique of this disclosure. [Figure 11] 11 is a flowchart illustrating an example operation of a video encoder in accordance with a second technique of this disclosure. [Figure 12] 11 is a flowchart illustrating an example operation of a video decoder in accordance with a second technique of this disclosure. Detailed Description

[0016]

[0028] Adaptive loop filtering (ALF) is a process of applying one or more adaptive filters (i.e., ALF filters) as part of a coding loop to improve the quality of decoded video data. An ALF filter is associated with a set of coefficients. A video coder (i.e., a video encoder or a video decoder) may apply ALF filters with different coefficients to different blocks of the same picture based on characteristics of the blocks. To reduce overhead associated with signaling coefficients associated with ALF filters, the video coder may store in one array sets of ALF parameters for ALF filters used in previously coded pictures, tiles, or slices. The set of ALF parameters may include multiple coefficients associated with one or more ALF filters. For example, the set of ALF parameters may indicate coefficients associated with multiple filters. The video coder replaces the sets of ALF parameters in the array according to a first-in first-out (FIFO) basis.

[0017]

[0029] Different pictures in a video sequence may belong to different temporal layers. Different temporal layers are associated with different temporal identifiers. Pictures in a given temporal layer may be decoded with reference to other pictures that have the temporal identifier of the given temporal layer and to pictures that have temporal identifiers that have values ​​that are less than the value of the temporal identifier of the given temporal layer.

[0018]

[0030] Because the video coder stores filter data (e.g., sets of ALF parameters) in an array according to a FIFO basis, the array may contain filter data from pictures with a higher temporal identifier than the temporal identifier of the currently decoded picture. This can potentially cause errors in the filtering process because it can cause the current picture to depend on a picture in a temporal layer with a higher temporal identifier than the current picture's temporal layer if the picture with the higher temporal identifier is lost or does not need to be decoded.

[0019]

[0031] This disclosure describes techniques that may address this shortcoming. In one example, a video coder may store in multiple arrays a set of ALF parameters to be used in applying one or more ALF filters to samples of a region of a picture of video data coded prior to a current picture. Each respective array of the multiple arrays corresponds to a respective different temporal layer. Furthermore, the video coder may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs. This disclosure may use the term "region" to refer to a slice or other type of area of ​​the current picture for performing ALF. The video coder may apply an ALF filter to the current region based on the applicable set of ALF parameters for the current region.

[0020]

[0032] In some examples, the video coder stores in an array a set of ALF parameters used in applying one or more ALF filters to samples of pictures of the video data decoded prior to a current picture. In addition, in this example, the video coder stores in an array a temporal layer index associated with the set of ALF parameters. The temporal layer index associated with the set of ALF parameters indicates a temporal layer of a region to which the set of ALF parameters was used to apply the ALF filter. In this example, the video coder may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs. Furthermore, in this example, the video coder may apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0021]

[0033] In any of these examples, associating ALF parameters with a temporal layer may help avoid problems with the current picture potentially depending on the decoding of a picture in a higher temporal layer.

[0022]

[0034] FIG. 1 is a block diagram illustrating an example video encoding and decoding system 10 that may use the techniques of this disclosure. As shown in FIG. 1, the system 10 includes a source device 12 that provides encoded video data to be decoded at a later time by a destination device 14. In particular, the source device 12 provides the encoded video data to the destination device 14 via a computer-readable medium 16. The source device 12 and the destination device 14 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, tablet computers, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, or the like. In some cases, the source device 12 and the destination device 14 are equipped for wireless communication. As such, the source device 12 and the destination device 14 may be wireless communication devices. The techniques described in this disclosure may be applied to wireless and / or wired applications. The source device 12 is an example video encoding device (i.e., a device for encoding video data). Destination device 14 is an illustrative video decoding device (ie, a device for decoding video data).

[0023]

[0035] The illustrated system 10 of FIG. 1 is merely an example. The techniques for processing video data may be performed by any digital video encoding and / or decoding device. In some examples, the techniques may be performed by a video coder, typically referred to as a "CODEC." Source device 12 and destination device 14 are examples of such coding devices, in which source device 12 generates coded video data for transmission to destination device 14. In some examples, source device 12 and destination device 14 operate in a substantially symmetrical manner, such that each of source device 12 and destination device 14 includes video encoding and decoding components. Thus, system 10 may support one-way or two-way video transmission between source device 12 and destination device 14, for example, video streaming, video playback, video broadcasting, or video telephony.

[0024]

[0036] 1, source device 12 includes a video source 18, a storage medium 19 configured to store video data, a video encoder 20, and an output interface 22. Destination device 14 includes an input interface 26, a storage medium 28 configured to store encoded video data, a video decoder 30, and a display device 32. In other examples, source device 12 and destination device 14 include other components or arrangements. For example, source device 12 may receive video data from an external video source, such as an external camera. Similarly, destination device 14 may interface with an external display device rather than including an integrated display device.

[0025]

[0037] Video source 18 is a source of video data. The video data may comprise a series of pictures. Video source 18 may include a video capture device such as a video camera, a video archive containing previously captured video, and / or a video feed interface for receiving video data from a video content provider. In some examples, video source 18 generates computer graphics-based video data, or a combination of live video, archived video, and computer-generated video. Storage medium 19 may be configured to store the video data. In each case, the captured, pre-captured, or computer-generated video may be encoded by video encoder 20.

[0026]

[0038] Output interface 22 may output the encoded video information to computer-readable medium 16. Output interface 22 may comprise various types of components or devices. For example, output interface 22 may comprise a wireless transmitter, a modem, a wired networking component (e.g., an Ethernet card), or another physical component. In examples in which output interface 22 comprises a wireless transmitter, output interface 22 may be configured to transmit data, such as encoded video data, modulated according to a cellular communication standard, such as 4G, 4G-LTE, LTE Advanced, 5G, and the like. In some examples in which output interface 22 comprises a wireless transmitter, output interface 22 may be configured to transmit data, such as encoded video data, modulated according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee), the Bluetooth standard, and the like. Thus, in some examples, source device 12 comprises a wireless communication device including a transmitter configured to transmit the encoded video data. In some such examples, the wireless communication device comprises a telephone handset, and the transmitter is configured to modulate a signal comprising the encoded video data in accordance with a wireless communication standard.

[0027]

[0039] In some examples, the circuitry of output interface 22 is integrated into the circuitry of video encoder 20 and / or other components of source device 12. For example, video encoder 20 and output interface 22 may be part of a system on a chip (SoC). The SoC may also include other components, such as a general-purpose microprocessor, a graphics processing unit, etc.

[0028]

[0040] The destination device 14 may receive the encoded video data to be decoded via a computer-readable medium 16. The computer-readable medium 16 may comprise any type of medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In some examples, the computer-readable medium 16 comprises a communication medium to enable the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form 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 routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 12 to the destination device 14. The destination device 14 may comprise one or more data storage media configured to store the encoded video data and the decoded video data.

[0029]

[0041] In some examples, output interface 22 may output data, such as the encoded video data, to an intermediate device, such as a storage device. Similarly, input interface 26 of destination device 14 may receive the encoded data from an intermediate device. The intermediate device may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing the encoded video data. In some examples, the intermediate device corresponds to a file server. Illustrative file servers include a web server, an FTP server, a network-attached storage (NAS) device, or a local disk drive.

[0030]

[0042] Destination device 14 may 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., DSL, cable modem, etc.), or a combination of both, suitable for accessing encoded video data stored on a file server. The transmission of the encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.

[0031]

[0043] Computer-readable medium 16 may include a transitory medium, such as a wireless broadcast or wired network transmission, or a storage medium (i.e., a non-transitory storage medium), such as a hard disk, a flash drive, a compact disc, a digital video disc, a Blu-ray disc, or other computer-readable medium. In some examples, a network server (not shown) may receive the encoded video data from source device 12, e.g., via a network transmission, and provide the encoded video data to destination device 14. Similarly, a computing device at a medium production facility, such as a disc stamping facility, may receive the encoded video data from source device 12 and manufacture discs that incorporate the encoded video data. Thus, computer-readable medium 16 may be understood to include one or more computer-readable media of various forms in various examples.

[0032]

[0044] The input interface 26 of the destination device 14 receives data from the computer-readable medium 16. The input interface 26 may comprise various types of components or devices. For example, the input interface 26 may comprise a wireless receiver, a modem, a wired networking component (e.g., an Ethernet card), or another physical component. In examples in which the input interface 26 comprises a wireless receiver, the input interface 26 may be configured to receive data, such as a bitstream, modulated according to a cellular communication standard, such as 4G, 4G-LTE, LTE Advanced, 5G, and the like. In some examples in which the input interface 26 comprises a wireless receiver, the input interface 26 may be configured to receive data, such as a bitstream, modulated according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee), the Bluetooth standard, and the like. Thus, in some examples, the destination device 14 may comprise a wireless communication device comprising a receiver configured to receive encoded video data. In some such examples, the wireless communication device comprises a telephone handset and the receiver is configured to demodulate a signal comprising the encoded video data in accordance with a wireless communication standard. In some examples, source device 12 may comprise a transmitter, and destination device 14 may comprise a transmitter and a receiver.

[0033]

[0045] In some examples, the circuitry of input interface 26 may be integrated into the circuitry of video decoder 30 and / or other components of destination device 14. For example, video decoder 30 and input interface 26 may be part of a SoC. The SoC may also include other components, such as a general-purpose microprocessor, a graphics processing unit, etc.

[0034]

[0046] Storage medium 28 may be configured to store encoded video data, such as the encoded video data (e.g., a bitstream) received by input interface 26. Display device 32 displays the decoded video data to a user. Display device 32 may comprise 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.

[0035]

[0047] The video encoder 20 and the video decoder 30 may each be implemented as any of a variety of suitable fixed-function and / or programmable 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 techniques are implemented partially in software, the device may store instructions for the software in a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device.

[0036]

[0048] In some examples, video encoder 20 and video decoder 30 encode and decode video data in accordance with a video coding standard or specification. For example, video encoder 20 and video decoder 30 may encode and decode video data in accordance with ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual, and ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions, or another video coding standard or specification. In some examples, video encoder 20 and video decoder 30 encode and decode video data in accordance with High Efficiency Video Coding (HEVC), also known as ITU-T H.265, its scope and screen content coding extensions, its 3D video coding extensions (3D-HEVC), its multiview extensions (MV-HEVC), or its scalable extensions (SHVC). In some examples, video encoder 20 and video decoder 30 operate in accordance with other standards, including standards currently under development.

[0037]

[0049] In HEVC and other video coding specifications, video data includes a series of pictures. A picture may also be referred to as a "frame." A picture may include one or more sample arrays. Each respective sample array of a picture may comprise an array of samples for a respective color component. A picture may be a set of S L , S Cb , and S Cr The sample array may include three sample arrays denoted as S L is a two-dimensional array (i.e., block) of luma samples. Cb is a two-dimensional array of Cb chroma samples. Cris a two-dimensional array of Cr chroma samples. In other cases, the picture may be monochrome and may only contain an array of luma samples.

[0038]

[0050] As part of encoding the video data, video encoder 20 may encode pictures of the video data. In other words, video encoder 20 may generate encoded representations of the pictures of the video data. The encoded representations of the pictures may be referred to herein as “coded pictures” or “encoded pictures.”

[0039]

[0051] To generate an encoded representation of a picture, video encoder 20 may encode a block of the picture. Video encoder 20 may include the encoded representation of the video block in a bitstream. In some examples, to encode a block of a picture, video encoder 20 performs intra or inter prediction to generate one or more predictive blocks. In addition, video encoder 20 may generate residual data for the block. The residual block comprises residual samples. Each residual sample may indicate a difference between a sample of one of the generated predictive blocks and a corresponding sample of the block. Video encoder 20 may apply a transform to the block of residual samples to generate transform coefficients. Additionally, video encoder 20 may quantize the transform coefficients. In some examples, video encoder 20 may generate one or more syntax elements to represent the transform coefficients. Video encoder 20 may entropy encode one or more of the syntax elements representing the transform coefficients.

[0040]

[0052] More specifically, when encoding video data according to HEVC or other video coding specifications, to generate an encoded representation of a picture, video encoder 20 may partition each sample array of a picture into coding tree blocks (CTBs) and encode the CTBs. A CTB may be an N×N block of samples in a sample array of a picture. In the HEVC Main Profile, a CTB size of 8×8 may technically be supported, but the size of the CTB may range from 16×16 to 64×64.

[0041]

[0053] A coding tree unit (CTU) of a picture may comprise one or more CTBs and may comprise a syntax structure used to code samples of one or more CTBs. For example, each CTU may comprise a CTB for luma samples, two corresponding CTBs for chroma samples, and a syntax structure used to code samples of the CTBs. In a monochrome picture or a picture with three separate color planes, a CTU may comprise a single CTB and a syntax structure used to code samples of the CTBs. A CTU may also be referred to as a "tree block" or "largest coding unit" (LCU). In this disclosure, a "syntax structure" may be defined as zero or more syntax elements present together in a bitstream in a specified order. In some codecs, a coded picture is a coded representation that encompasses all CTUs of a picture.

[0042]

[0054] To encode a CTU of a picture, video encoder 20 may partition the CTB of the CTU into one or more coding blocks. A coding block is an N×N block of samples. In some codecs, to encode a CTU of a picture, video encoder 20 may recursively perform quadtree partitioning on the coding tree blocks of the CTU to partition the CTB into coding blocks, hence the name “coding tree unit”. A coding unit (CU) may comprise one or more coding blocks and a syntax structure used to code samples of one or more coding blocks. For example, a CU may comprise a coding block of luma samples and two corresponding coding blocks of chroma samples of a picture having a luma sample array, a Cb sample array, and a Cr sample array, and a syntax structure used to code samples of the coding blocks. In a monochrome picture or a picture with three separate color planes, a CU may comprise a single coding block and a syntax structure used to code samples of the coding block.

[0043]

[0055] Further, video encoder 20 may encode a CU of a picture of the video data. In some codecs, as part of encoding a CU, video encoder 20 may partition a coding block of the CU into one or more predictive blocks. A predictive block is a rectangular (i.e., square or non-square) block of samples to which the same prediction is applied. A prediction unit (PU) of a CU may comprise one or more predictive blocks of the CU and a syntax structure used to predict the one or more predictive blocks. For example, a PU may comprise a predictive block of luma samples, two corresponding predictive blocks of chroma samples, and a syntax structure used to predict the predictive block. In a monochrome picture or a picture with three separate color planes, a PU may comprise a single predictive block and a syntax structure used to predict the predictive block.

[0044]

[0056] Video encoder 20 may generate a predictive block (e.g., luma, Cb, and Cr predictive block) for a PU of a CU. Video encoder 20 may use intra prediction or inter prediction to generate the predictive pixel block. If video encoder 20 uses intra prediction to generate the predictive block, video encoder 20 may generate the predictive block based on decoded samples of a picture including the CU. If video encoder 20 uses inter prediction to generate the predictive block of a PU of a current picture, video encoder 20 may generate the predictive block of the PU based on decoded samples of a reference picture (i.e., a picture other than the current picture). In HEVC, video encoder 20 generates a "prediction_unit" syntax structure in the "coding_unit" syntax structure for an inter-predicted PU but does not generate a "prediction_unit" syntax structure in the "coding_unit" syntax structure for an intra-predicted PU. Rather, in HEVC, syntax elements related to intra-predicted PUs are included directly in the "coding_unit" syntax structure.

[0045]

[0057] Video encoder 20 may generate one or more residual blocks for the CU. For example, video encoder 20 may generate a luma residual block for the CU. Each sample in the luma residual block of the CU indicates a 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, video encoder 20 may generate a Cb residual block for the CU. Each sample in the Cb residual block of the CU may indicate a 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. 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 a 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.

[0046]

[0058] Further, video encoder 20 may decompose the residual block of a CU into one or more transform blocks. For example, video encoder 20 may use quadtree partitioning to decompose the residual block of a CU into one or more transform blocks. A transform block is a rectangular (e.g., square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may comprise one or more transform blocks. For example, a TU may comprise a transform block of luma samples, two corresponding transform blocks of chroma samples, and a syntax structure used to transform the transform block samples. Thus, each TU of a CU may have a luma transform block, a Cb transform block, and a Cr transform block. The luma transform block of 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 comprise a single transform block and a syntax structure used to transform the samples of the transform block.

[0047]

[0059] Video encoder 20 may apply one or more transforms to a transform block of a TU to generate a coefficient block for the TU. The coefficient block may be a two-dimensional array of transform coefficients. The transform coefficients may be scalar quantities. In some examples, the one or more transforms convert the transform block from the pixel domain to the frequency domain. Thus, in such examples, the transform coefficients may be scalar quantities considered to be in the frequency domain. A transform coefficient level is an integer quantity that represents a value associated with a particular two-dimensional frequency index in the decoding process prior to scaling for computation of the transform coefficient value.

[0048]

[0060] In some examples, video encoder 20 skips applying a transform to a transform block. In such examples, video encoder 20 may treat the residual sample values ​​in the same manner as transform coefficients. Thus, in examples in which video encoder 20 skips applying a transform, the following discussion of transform coefficients and coefficient blocks may be applicable to the transform blocks of residual samples.

[0049]

[0061] After generating a coefficient block, video encoder 20 may quantize the coefficient block to possibly reduce the amount of data used to represent the coefficient block, potentially providing further compression. Quantization generally refers to a process in which a range of values ​​is compressed into a single value. For example, quantization may be performed by dividing a value by a constant and then rounding the fraction to the nearest integer. To quantize a coefficient block, video encoder 20 may quantize transform coefficients of the coefficient block. In some examples, video encoder 20 skips quantization.

[0050]

[0062] Video encoder 20 may generate syntax elements indicating some or all of the potentially quantized transform coefficients. Video encoder 20 may entropy code one or more of the syntax elements indicating the quantized transform coefficients. For example, video encoder 20 may perform Context-Adaptive Binary Arithmetic Coding (CABAC) on the syntax elements indicating the quantized transform coefficients. From this, a coded block (e.g., a coded CU) may include entropy coded syntax elements indicating the quantized transform coefficients.

[0051]

[0063] Video encoder 20 may output a bitstream including the encoded video data. In other words, video encoder 20 may output a bitstream including an encoded representation of the video data. The encoded representation of the video data may include an encoded representation of a picture of the video data. For example, the bitstream may comprise a sequence of bits that form an encoded picture representation of the video data and associated data. In some examples, the encoded picture representation may include an encoded representation of a block of the picture.

[0052]

[0064] A bitstream may comprise a sequence of network abstraction layer (NAL) units. A NAL unit is a syntax structure that contains an indication of the type of data in the NAL unit and bytes that contain that data in the form of a raw byte sequence payload (RBSP) interspersed as necessary with emulation prevention bits. Each of the NAL units may contain a NAL unit header and may encapsulate the RBSP. The NAL unit header may contain a syntax element that indicates 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 that contains an integer number of bytes encapsulated within the NAL unit. In some instances, the RBSP contains a 0 bit.

[0053]

[0065] Video decoder 30 may receive a bitstream generated by video encoder 20. As described above, the bitstream may comprise an encoded representation of the video data. Video decoder 30 may decode the bitstream to reconstruct pictures of the video data. As part of decoding the bitstream, video decoder 30 may obtain syntax elements from the bitstream. Video decoder 30 may reconstruct pictures of the video data based at least in part on the syntax elements obtained from the bitstream. The process for reconstructing pictures of the video data may generally be the opposite to the process performed by video encoder 20 to encode the pictures.

[0054]

[0066] For example, as part of decoding a picture of the video data, video decoder 30 may use inter prediction or intra prediction to generate a predictive block. In addition, video decoder 30 may determine transform coefficients based on syntax elements obtained from the bitstream. In some examples, video decoder 30 may inverse quantize the determined transform coefficients. Further, video decoder 30 may apply an inverse transform to the determined transform coefficients to determine values ​​of residual samples. Video decoder 30 may reconstruct a block of the picture based on the residual samples and corresponding samples of the generated predictive block. For example, video decoder 30 may add the residual samples to corresponding samples of the generated predictive block to determine reconstructed samples of the block.

[0055]

[0067] More specifically, in HEVC and other video coding specifications, video decoder 30 may use inter prediction or intra prediction to generate one or more predictive blocks for each PU of the current CU. In addition, video decoder 30 may inverse quantize coefficient blocks of the TUs of the current CU. Video decoder 30 may perform an inverse transform on the coefficient blocks to reconstruct transform blocks of the TUs of the current CU. Video decoder 30 may reconstruct coding blocks of the current CU based on samples of the predictive blocks of the PUs of the current CU and residual samples of the transform blocks of the TUs of the current CU. In some examples, video decoder 30 may reconstruct coding blocks of the current CU by adding samples of the predictive blocks for the PUs of the current CU to corresponding decoded samples of the transform blocks of the TUs of the current CU. By reconstructing coding blocks for each CU of a picture, video decoder 30 may reconstruct the picture.

[0056]

[0068] As described above, a video coder (e.g., video encoder 20 or video decoder 30) may apply inter prediction to generate a predictive block for a video block of a current picture. For example, the video coder may apply inter prediction to generate a predictive block of a CU. When the video coder applies inter prediction to generate a predictive block, the video coder generates the predictive block based on decoded samples of one or more reference pictures. Typically, a reference picture is a picture other than the current picture. In some video coding specifications, the video coder may also treat the current picture itself as a reference picture.

[0057]

[0069] When a video coder (e.g., video encoder 20 or video decoder 30) begins processing a current picture, the video coder may determine one or more reference picture set (RPS) subsets for the current picture. For example, in HEVC, the video coder may determine the following RPS subsets: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetFoll, RefPicSetLtCurr, and RefPicSetLtFoll. In addition, the video coder may determine one or more reference picture lists. Each of the reference picture lists of the current picture includes zero or more reference pictures from the RPS of the current picture. One of the reference picture lists may be referred to as reference picture list 0 (RefPicList0), and the other reference picture list may be referred to as reference picture list 1 (RefPicList1).

[0058]

[0070] A slice of a picture may include an integer number of blocks of a picture. For example, in HEVC and other video coding specifications, a slice of a picture may include an integer number of CTUs of a picture. The CTUs of a slice may be consecutively ordered in a scan order, such as a raster scan order. In HEVC and other video coding standards, a slice is defined as an integer number of CTUs contained within an independent slice segment and all subsequent dependent slice segments (if any) that precede the next independent slice segment (if any) in the same access unit. Furthermore, in HEVC and other video coding standards, a slice segment is defined as an integer number of CTUs that are consecutively ordered in a tile scan and contained within a single NAL unit. A tile scan is a specific sequential ordering of CTBs that partition a picture, where the CTBs are consecutively ordered in a CTB raster scan in tiles, whereas tiles in a picture are consecutively ordered in a raster scan of tiles in a picture. A tile is a rectangular region of CTBs within a specific tile column and a specific tile row in a picture.

[0059]

[0071] As mentioned above, a bitstream may include a representation of a coded picture of video data and associated data. The associated data may include parameter sets. A NAL unit may encapsulate RBSPs for a video parameter set (VPS), a sequence parameter set (SPS), and a picture parameter set (PPS). A VPS is a syntax structure comprising syntax elements that apply to zero or more entire coded video sequences (CVS). An SPS is also a syntax structure comprising syntax elements that apply to zero or more entire CVS. An SPS may include a syntax element that identifies a VPS that is active when an SPS is active. From this, the syntax elements of a VPS may be more generally applicable than those of an SPS. A PPS is a syntax structure comprising syntax elements that apply to zero or more coded pictures. A PPS may include a syntax element that identifies a SPS that is active when a PPS is active. A slice header of a slice segment may include a syntax element that indicates a PPS that is active when the slice segment is coded.

[0060]

[0072] As described above, a video encoder may generate a bitstream comprising a series of NAL units. In multi-layer video coding, different NAL units of a bitstream may be associated with different layers of the bitstream. A layer may be defined as a set of VCL NAL units and associated non-VCL NAL units having the same layer identifier. A layer may be equivalent to a view in multi-view video coding. In multi-view video coding, a layer may encompass all view components of the same layer with different time instances. Each view component may be a coded picture of a video scene that belongs to a particular view at a particular time instance. In multi-layer video coding, the term "access unit" may refer to a set of pictures corresponding to the same time instance. From this, a "view component" may be a coded representation of a view in a single access unit. In some examples, a view component may comprise a texture view component (i.e., a texture picture) or a depth view component (i.e., a depth picture).

[0061]

[0073] In some examples of multiview video coding, a layer may encompass either all coded depth pictures of a particular view or coded texture pictures of a particular view. In other examples of multiview video coding, a layer may encompass both texture and depth view components of a particular view. Similarly, in the context of scalable video coding, a layer typically corresponds to a coded picture that has different video characteristics than the coded pictures in other layers. Such video characteristics typically include spatial resolution and quality level (e.g., signal-to-noise ratio).

[0062]

[0074] For each respective layer of a bitstream, data in a lower layer may be decoded without reference to data in any higher layer. In scalable video coding, for example, data in a base layer may be decoded without reference to data in an enhancement layer. In general, a NAL unit may only encapsulate data of a single layer. From this, an NAL unit that encapsulates data of the top remaining layer of the bitstream may be removed from the bitstream without affecting the decodability of the data in the remaining layers of the bitstream. In multiview coding, a higher layer may include additional view components. In SHVC, a higher layer may include signal-to-noise ratio (SNR) enhancement data, spatial enhancement data, and / or temporal enhancement data. In MV-HEVC and SHVC, a layer may be referred to as a "base layer" if a video decoder can decode pictures in the layer without reference to data of any other layers. The base layer may conform to the HEVC base specification (eg, Rec. ITU-T H.265 | ISO / IEC 23008-2).

[0063]

[0075] In scalable video coding, layers other than the base layer may be called "enhancement layers" and may provide information that improves the visual quality of video data decoded from a bitstream. Scalable video coding can improve spatial resolution, signal-to-noise ratio (i.e., quality), or temporal rate.

[0064]

[0076] Multiview coding may support inter-view prediction, which is similar to inter-prediction used in HEVC and may use the same syntax elements. However, when a video coder performs inter-view prediction on a current video unit (such as a PU), video encoder 20 may use pictures that are in the same access unit as the current video unit but in a different view as reference pictures. In contrast, conventional inter prediction only uses pictures in different access units as reference pictures.

[0065]

[0077] In multiview coding, a view may be called a "base view" if a video decoder (e.g., video decoder 30) can decode a picture in the view without reference to pictures in any other views. When coding a picture in one of the non-base views, a video coder (such as video encoder 20 or video decoder 30) may add a picture to a reference picture list if the picture is in a different view but within the same time instance (i.e., access unit) as the picture the video coder is currently coding. As with other inter-prediction reference pictures, the video coder may insert an inter-view prediction reference picture at any position in the reference picture list.

[0066]

[0078] For example, a NAL unit may include a header (i.e., a NAL unit header) and a payload (e.g., a RBSP). The NAL unit header may include a layer identifier syntax element (e.g., a nuh_layer_id syntax element in HEVC). NAL units with layer identifier syntax elements that specify different values ​​belong to different "layers" of the bitstream. Hence, in multi-layer view coding (e.g., MV-HEVC, SVC, or SHVC), the layer identifier syntax element of a NAL unit specifies the layer identifier (i.e., layer ID) of the NAL unit. The layer identifier of a NAL unit is equal to 0 if the NAL unit is associated with a base layer in multi-layer coding. Data in a base layer of a bitstream may be decoded without reference to data in any other layer of the bitstream. If a NAL unit is not associated with a base layer in multi-layer coding, the layer identifier of the NAL unit may have a non-zero value. In multi-view coding, different layers of a bitstream may correspond to different views. In scalable video coding (e.g., SVC or SHVC), layers other than the base layer may be called "enhancement layers" and may provide information that improves the visual quality of video data decoded from the bitstream.

[0067]

[0079] Furthermore, some pictures in a layer may be decoded without reference to other pictures in the same layer. Hence, NAL units encapsulating data of a particular picture of a layer may be removed from the bitstream without affecting the decodability of other pictures in the layer. Removing NAL units encapsulating data of such pictures may reduce the frame rate of the bitstream. A subset of pictures in a layer that may be decoded without reference to other pictures in the layer may be referred to herein as a "sub-layer," "temporal layer," or "temporal sub-layer." The topmost temporal layer may include all pictures in the layer. Thus, temporal scalability may be achieved within one layer by defining a group of pictures having a particular temporal level as a sub-layer (i.e., a temporal layer).

[0068]

[0080] A NAL unit may include a temporal identifier (e.g., temporal_id in HEVC) syntax element. The temporal identifier syntax element of a NAL unit specifies the temporal identifier of the NAL unit. The temporal identifier of a NAL unit identifies the temporal sublayer with which the NAL unit is associated. From this, each temporal sublayer of a bitstream may be associated with a different temporal identifier. If the temporal identifier of a first NAL unit is less than the temporal identifier of a second NAL unit, the data encapsulated by the first NAL unit may be decoded without reference to the data encapsulated by the second NAL unit.

[0069]

[0081] Video coding 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, ISO / IEC MPEG-4 Visual, and ITU-T H.264 with its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions (also known as ISO / IEC MPEG-4 AVC). In addition, a new video coding standard, namely High Efficiency Video Coding (HEVC), has recently been developed by the ITU-T Video Coding Experts Group (VCEG) and the Joint Collaboration Team on Video Coding (JCT-VC) of the ISO / IEC Motion Picture Experts Group (MPEG). Wang et al., “High Efficiency Video Coding (HEVC) Defect Report,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14 th Meeting, Vienna, AT, 25 July - 2 Aug. 2013, document JCTVC-N1003-v1 is a draft specification for HEVC. The HEVC standard was finalized in January 2013.

[0070]

[0082] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are currently studying the potential need for standardization of future video coding technologies with compression capabilities significantly exceeding that of the current HEVC standard (including its current and upcoming extensions for screen content coding and high dynamic range coding). The groups are collaborating on this exploration effort in a joint collaboration effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by their experts in this area. JVET held its first meeting during October 19-21, 2015. The Joint Exploration Model (JEM) is a test model produced by JVET. J. Chen et al., “Description of Exploration Experiments on Coding Tools,” JVET-D1011, Chengdu, Oct. 2016, is an algorithmic description for the fourth version of JEM (i.e., JEM4).

[0071]

[0083] In the field of video coding, it is common to apply filtering to improve the quality of the decoded video signal. Filters can be applied as a post-filter, where the filtered frames are not used for prediction of future frames, or as an in-loop filter, where the filtered frames are used to predict future frames. Filters can be designed, for example, by minimizing the error between the original signal and the decoded filtered signal. Similar to the transform coefficients, the coefficients of the filter h(k,l), k = -K,...,K, l = -K,...K, can be quantized and coded as f(k,l) = round(normFactor·h(k,l)) and sent to the decoder. The normFactor is usually a factor of 2n The larger the value of normFactor, the more precise the quantization and the better the quantized filter coefficients f(k,l) will perform. On the other hand, a larger value of normFactor will produce coefficients f(k,l) that require more bits to transmit.

[0072]

[0084] At video decoder 30, the decoded filter coefficients f(k,l) are applied to the reconstructed image R(i,j) as follows:

[0073]

number

[0074] where i and j are the coordinates of a pixel in the frame. The in-loop adaptive filter was evaluated in the HEVC stage but is not included in the final version.

[0075]

[0085] The in-loop adaptive loop filter used in JEM was described in J. Chen et al., “Coding tools investigation for next generation video coding”, SG16-Geneva-C806, Jan. 2015. The basic idea is the same as the ALF with block-based adaptation in T. Wiegand et al., “WD3: Working Draft 3 of High-Efficiency Video Coding,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, JCTVC-E603, 5th Meeting: Geneva, CH, 16-23 March 2011, hereinafter referred to as “JCTVC-E603”.

[0076]

[0086] For the luma component, 4x4 blocks in the whole picture are classified based on the 1D Laplacian direction (up to three directions) and the 2D Laplacian activity (up to five activity values). b and non-quantized activity Act b The calculation of is shown in equations (2) to (5), where:

[0077]

number

[0078] Act denotes the reconstructed pixel with coordinates (i,j) relative to the top left corner of the 4x4 block. b is further quantized to the range 0 to 4 inclusive as described in JCTVC-E603.

[0079]

number

[0080]

[0087] In total, each block can be categorized into one of 15 (5×3) groups, and the index is the Dir b and Act b The group index is assigned to each 4 × 4 block according to the value of

[0081]

number

[0082] where:

[0083]

number

[0084] Act b, where σ is the quantized value of σ. Thus, video encoder 20 may signal up to 15 sets of ALF parameters for the luma component of a picture. To save signaling costs, video encoder 20 may merge groups along the group index value. For each merged group, video encoder 20 may signal a set of ALF coefficients. FIG. 2 illustrates three different example ALF filter support. In the example of FIG. 2, up to three circularly symmetric filter shapes are supported. For both chroma components in a picture, a single set of ALF coefficients is applied, and a 5×5 diamond-shaped filter is always used.

[0085]

[0088] On the decoder side, the video decoder 30 receives each pixel sample

[0086]

number

[0087] may be filtered to obtain pixel values ​​I′ as shown in equation (6). i, j where L is the filter length and f m, n denotes the filter coefficients, and o denotes the filter offset.

[0088]

number

[0089] In some designs, only up to one filter is supported for each of the two chroma components.

[0090] Below is a list of data that may be signaled for the filter coefficients: 1. Total number of filters:The total number of filters (or the total number of merged groups) is initially signaled when ALF is enabled for a slice. The signaled total number of filters applies to the luma component. For the chroma components, there is no need to signal the total number of filters since only one filter may be applied. 2. Filter Support: Three filter support indices are signaled. 3. Filter Index: Indicates which ALF filter, i.e., class merging information, is used. Classes with non-contiguous values ​​of C may be merged, i.e., share the same filter. The filter index can be derived by coding one flag for each class to indicate whether the class is merged or not. In some examples, the class merging information can also be signaled to merge from the left or top filter index. 4. forceCoeff0 flag: The forceCoeff0 flag is used to indicate whether at least one of the filters should not be coded. When this flag is equal to 0, all of the filters should be coded. When the forceCoeff0 flag is equal to 1, one flag of each merged group, indicated by CodedVarBin, is further signaled to indicate whether the filter should be signaled or not. When a filter is not signaled, it means that all of the filter coefficients associated with the filter are equal to 0. 5. Forecasting Methodology: When multiple groups of filters need to be signaled, one of two methods can be used: All filters are directly coded into the filter information. In this case, for example, the values ​​of the filter coefficients can be coded into the bitstream without using any predictive coding techniques. In other words, the filters are explicitly signaled. The filter coefficients of the first filter are directly coded, while for the remaining filters, the filter coefficients are predictively coded into the filter information. In this case, the value of the filter coefficients may be defined by a difference or residual value with respect to the filter coefficients associated with a previously coded filter. The previously coded filter is the most recent filter (i.e., the filter indexes of the current filter and its predictor are consecutive). To indicate the use of one of the above two prediction methods, video encoder 20 may signal a flag when the number of merged groups is greater than 1 and forceCoeff0 is equal to 0.

[0091]

[0090] The set of ALF parameters may include one or more of the syntax elements listed above, and may also include filter coefficients.

[0092]

[0091] A video coder (e.g., video encoder 20 or video decoder 30) may also use temporal prediction of filter coefficients. The video coder may store ALF coefficients of a previously coded picture and reuse the ALF coefficients of the previously coded picture as the ALF coefficients of the current picture. The video encoder 20 may choose to use the stored ALF coefficients for the current picture and avoid signaling the ALF coefficients. In this case, the video encoder 20 only signals an index (which is actually equal to the index of the candidate in the stored array for ALF parameters) to one of the reference pictures, and the stored ALF coefficients of the indicated picture are simply carried over for the current picture. To indicate the use of temporal prediction, the video encoder 20 may first encode a flag indicating the use of temporal prediction before sending the index to the reference picture.

[0093]

[0092] In JEM4, the video coder stores ALF parameters from at most six previously coded pictures that are coded with the signaled ALF parameters (i.e., temporal prediction is disabled) in a separate array. The video coder effectively empties the array for Intra Random Access Point (IRAP) pictures. To avoid duplication, the video coder stores ALF parameter values ​​in the array only if they are explicitly signaled. The storage of ALF parameters operates in a FIFO manner, so that when the array is full, the video coder overwrites the oldest ALF parameter values ​​(i.e., ALF parameters) with a new set of ALF parameter values, in decoding order.

[0094]

[0093] M. Karczewicz et al., “Improvements on adaptive loop filter”, Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, Doc. JVET-B0060_r1, 2nd Meeting: San Diego, USA, 20-26 February 2016 (hereinafter referred to as “JVET-B0060”) proposes the Geometric transformations-based ALF (GALF). In GALF, the classification is modified taking into account the diagonal gradient, and a geometric transformation can be applied to the filter coefficients.

[0095]

[0094] Based on all gradient information, including horizontal, vertical and diagonal gradients, one of four geometric transformations of the filter coefficients is determined. That is, samples that fall into the same category will share the same filter coefficients. However, the filter support region may be transformed based on the selected geometric transformation index. The method described in JVET-B0060 may effectively reduce the number of filters that must be sent to the decoder, and therefore the number of bits required to represent them, or alternatively, reduce the difference between the reconstructed frame and the original frame. Each 2x2 block is categorized into one of 25 classes based on its orientation and the quantized value of the activity.

[0096]

[0095] Furthermore, in JVET-B0060, to improve coding efficiency when temporal prediction is not available (e.g., in intra frames), the video coder assigns a set of 16 fixed filters to each class. That is, 16*25 (class) filters may be predefined. To indicate the use of a fixed filter, a flag for each class and, if necessary, the index of the fixed filter are signaled. Even when a fixed filter is selected for a given class, the coefficients f(k,l) of the adaptive filter can still be sent for this class, and in that case, the coefficients of the filter to be applied to the reconstructed image are the sum of both sets of coefficients. One or more of the classes can share the same coefficients f(k,l) signaled in the bitstream even if different fixed filters are chosen for them. U.S. Patent Application Publication No. 2017 / 0238020, published on August 17, 2017, describes how fixed filters can also be applied to inter-coded frames.

[0097] In JVET-B0060, the design of temporal prediction from previously coded frames as in the second version of JEM (i.e., JEM2) is kept unchanged. JEM2 is based on Jianle Chen et al., “Algorithm Description of Joint Exploration Test Model 2,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 2 nd Meeting, San Diego, USA, 20-26 February 2016, document JVET-B1001_v3. That is, a flag is coded to indicate whether temporal prediction of ALF coefficients is used. If temporal prediction of ALF coefficients is used, the index of the selected picture for the stored ALF parameters is further signaled. In this case, it is not necessary to signal the filter index and the filter coefficients for each class.

[0098]

[0097] Furthermore, explicit coding of ALF filter coefficients can be used in GALF. For example, prediction patterns and prediction indices from fixed filters can be explicitly coded in GALF. Three cases are defined: Case 1: None of the 25 classes are predicted from the fixed filter. · Case 2: All filters for a class are predicted from a fixed filter. · Case 3: Filters associated with some classes are predicted from a fixed filter, and filters associated with the remaining classes are not predicted from a fixed filter. The index may initially be coded to indicate one of three cases. In addition, the following applies: If the indicated case is case 1, there is no need to further signal the index of the fixed filter. Otherwise, if the indicated case is case 2, the index of the selected fixed filter for each class is signaled. Otherwise, if the indicated case is case 3, one bit for each class is signaled first, and if a fixed filter is used, the index of the fixed filter is further signaled.

[0099] In GALF, different classes can be merged to reduce the number of bits required to represent the filter coefficients. However, unlike JCTVC-E603, any set of classes can be merged, even classes with non-contiguous values ​​of C. The information about which classes are merged is stored in the index i C for each of the 25 classes. C The classes with index i share the same coded filter coefficients. C are coded in a truncated fixed-length manner.

[0100]

[0099] Similarly, the forceCoeff0 flag may also be used. When the forceCoeff0 flag is equal to 1, a 1-bit flag indicated by CodedVarBin is further signaled for each of the merged groups (all filters to be coded) to indicate whether the signaled filter coefficients are all 0. Moreover, when forceCoeff0 is equal to 1, predictive coding (i.e., coding the difference between the current filter and the previously coded filter) is disabled. When prediction from a fixed filter is enabled, the filter to be signaled / coded as described above is the difference between the filter applied to the reconstructed image and the selected fixed filter. Other information such as coefficients are coded in the same way as in JEM2.0.

[0101]

[0100] Because GALF is a form of ALF, this disclosure may use the term "ALF" to apply to both ALF and GALF.

[0102]

[0101] The current design for temporal prediction of filters in ALF and GALF has some drawbacks. For example, if a picture uses explicit coding of filters, after decoding the picture, the corresponding ALF filter may be added to the array of ALF filters for temporal prediction regardless of the temporal layer. That is, after decoding the picture, the video coder may include a set of ALF parameters in an entry in the array. The set of ALF parameters may include group merging information and filter coefficients for each of the ALF filters used in the picture. This design leads to failures when decoding a subset of temporal layers under certain configurations, such as random access. An example is given in FIG. 3, where the GOP size is equal to 16. In the example of FIG. 3, five temporal layers are supported (indicated by T0 to T4). The coding / decoding order of the pictures is Picture Order Counter (POC) 0[T0], POC16[T0], POC8[T1], POC4[T2], POC2[T3], POC1[T4], POC3[T4], POC6[T3], POC5[T4], POC7[T4], POC12[T2], POC10[T3], POC9[T4], POC11[T4], POC14[T3], POC13[T4], POC15[T4]. The arrows with different dash patterns point to pictures that may use the pointed from pictures as reference pictures. Note that Figure 3 omits certain arrows for clarity.

[0103]

[0102] Figure 4A illustrates an array 50 for storing filter parameters. Figure 4B illustrates different states of the array 50. Assuming that each picture is coded with ALF enabled and the ALF filter for each picture is explicitly signaled, before decoding POC3 in Figure 3, the array for stored filters has the state shown in Figure 4A. After decoding POC3 in Figure 3 and before decoding POC6, the array for stored ALF filters is updated as shown in Figure 4B. As shown in the example of Figure 4B, the filter for POC0 is replaced with the filter for POC3 because the filters are replaced in a FIFO manner and the filter for POC0 was the first filter added to the array 50.

[0104]

[0103] Therefore, to decode POC6 with temporal layer index (TempIdx) equal to 3, filters POC1, POC3 with temporal layer index equal to 4 need to be decoded. This is contrary to the spirit of temporal scalability, where decoding a picture with a certain value of TempIdx should not depend on pictures with a larger value of TempIdx.

[0105]

[0104] A second drawback of the current design for temporal prediction of filters in ALF is that when temporal prediction of ALF filters is enabled for a slice, in some instances, all ALF filters from a particular previously coded frame should be carried over, which means that the merge of classes and filter coefficients is directly reused without the possibility to slightly modify the classes and filter coefficients to better capture the characteristics for the current slice.

[0106]

[0105] The following techniques are proposed to address one or more of the shortcomings of current designs for temporal prediction of filters in ALF described above. The following itemized techniques may be applied individually. Alternatively, any combination of them may be applied.

[0107]

[0106] According to the first technique, multiple arrays may be allocated to store one or more sets of previously coded ALF filters. In other words, the video coder may store a set of ALF parameters in multiple arrays. Each array corresponds to an assigned temporal layer index (TempIdx, which is equivalent to TemporalID defined in the HEVC specification). According to the first technique, each array contains only ALF parameters from pictures with the same TempIdx or lower TempIdx. A slice (or other unit for performing ALF) with TempIdx may select one set of filters configured in this array. In other words, the video coder may apply the ALF filters to samples in blocks of the slice based on the ALF parameters in the array corresponding to the slice's TempIdx. For a region coded with enabled ALF and assuming that the ALF parameters are explicitly signaled (i.e., no temporal prediction), the set of ALF parameters for this region may be added to the array associated with the same or higher TempIdx. This may solve the drawbacks discussed above with respect to a stored array of ALF parameters that includes one or more ALF parameters corresponding to ALF filters used in pictures of a temporal layer higher than the temporal layer of the current picture.

[0108]

[0107] Figure 5 illustrates multiple arrays 60A-60E (collectively, "arrays 60") corresponding to different temporal layers in accordance with the techniques of this disclosure. In the example of Figure 5, assuming that each picture in Figure 3 is coded with ALF enabled and that the ALF filter for each picture is explicitly signaled, prior to decoding POC6 in Figure 3, the arrays for stored ALF filters have the state shown in Figure 5.

[0109]

[0108] In the example of Figure 5, because POC6 is in temporal layer T3, the video coder may use ALF filters from array 60D. Therefore, unlike the example of Figure 4B, whether POC1 is decoded or not has no effect on which ALF filters are available for use when decoding POC6.

[0110]

[0109] Thus, according to the first technique, the video encoder 20 may generate a bitstream including an encoded representation of a current picture of the video data. A current region of the current picture (e.g., a slice or other type of unit for performing ALF) is associated with a temporal index (i.e., a temporal layer index) indicating a temporal layer to which the current region belongs. Furthermore, the video encoder 20 reconstructs all or a portion of the current picture. The video encoder 20 stores in a plurality of arrays a set of ALF parameters used in applying an ALF filter to samples of a region of the picture of the video data that was decoded before the current region and is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array. Each respective array of the plurality of arrays corresponds to a respective different temporal layer. Furthermore, video encoder 20 determines an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to a temporal layer to which the current region belongs or corresponding to a temporal layer lower than the temporal layer to which the current region belongs. In some examples, video encoder 20 may determine the selected set of ALF parameters based on a rate-distortion analysis of the set of ALF parameters in the array. Video encoder 20 may signal an index of the selected set of ALF parameters in the bitstream. Furthermore, in this example, video encoder 20 applies adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region. Applying adaptive loop filtering to the current region may comprise applying an ALF filter to one or more, but not necessarily all, blocks in the current region.After applying adaptive loop filtering to the current region, video encoder 20 may use the current region for prediction of a subsequent picture of the video data.

[0111]

[0110] Similarly, according to the first technique, the video decoder 30 may receive a bitstream including an encoded representation of a current picture of the video data. A current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs. The video decoder 30 may then reconstruct all or a portion of the current picture. In addition, the video decoder 30 stores in a plurality of arrays a set of ALF parameters used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current picture. Each respective array of the plurality of arrays corresponds to a respective different temporal layer. For example, for each respective array of the plurality of arrays corresponding to different temporal layers, the video decoder 30 may store in the respective array a set of ALF parameters used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array. Video decoder 30 determines an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array corresponding to a temporal layer to which the current region belongs or an array among a plurality of arrays corresponding to a temporal layer lower than the temporal layer to which the current region belongs. In some examples, video decoder 30 determines the selected set of ALF parameters based on an index signaled in the bitstream. Video decoder 30 may then apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region. Applying the ALF filter to the current region may comprise applying the ALF filter to one or more, but not necessarily all, blocks in the current region.

[0112] Each array assigned by TempIdx may comprise a set of previously decoded filters associated with pictures with equal or lower TempIdx. For example, the kth array will be assigned to be associated with TempIdx equal to k, and it will contain only the full set or a subset of filters (e.g., ALF parameters for the filters) from pictures with TempIdx equal to or lower than k.

[0113]

[0112] Thus, for each respective array of the plurality of arrays, the video coder (e.g., video encoder 20 or video decoder 30) may store in the respective array a set of ALF parameters to be used in applying an ALF filter to samples of a region of a picture of video data decoded prior to the current picture that belongs to a temporal layer corresponding to the respective array and that belongs to a temporal layer lower than the temporal layer corresponding to the respective array.

[0114]

[0113] In some examples, the number of filter sets associated with different arrays may be different (it can be 0 or more). Alternatively, in some examples, the number of filter sets associated with different temporal layers may be different and may depend on the temporal layer index. Hence, in some examples, at least two of the multiple arrays include different numbers of sets of ALF parameters. For example, in the example of FIG. 5, in a GOP of 16 pictures, it may be unnecessary to have five locations in array 60A, since there will never be more than two pictures in temporal layer T0. Thus, array 60A may have only two locations. Similarly, in the example of FIG. 5, in a GOP of 16 pictures, there will be at most one picture in temporal layer T1. Thus, array 60B may have only three locations.

[0115]

[0114] In some examples, after coding a certain slice / unit for performing ALF, the video coder may use a set of filters associated with the slice to update those arrays associated with equal or higher TempIdx. For example, the video coder may store a set of ALF parameters applicable to the current region (i.e., a slice or another unit for performing ALF) in one array corresponding to the temporal layer to which the current region belongs (and in some cases, multiple arrays corresponding to temporal layers higher than the temporal layer to which the current region belongs). For example, in the examples of Figures 3 and 5, if the current region is in a picture associated with POC8, the video coder may update arrays 60B, 60C, 60D, and 60E to include the ALF parameters applicable to the current region.

[0116]

[0115] In some examples, the POC value associated with each filter set (e.g., set of ALF parameters) may also be recorded. From this, the video coder may store the POC values ​​of the current picture in one array corresponding to the temporal layer to which the current region of the current picture belongs. In one example, when selecting a filter from a given array as a candidate for ALF temporal prediction, it may be required that the POC value associated with the filter is equal to the POC value of one of the reference pictures in the current reference picture list. For example, in addition to storing the ALF parameters for the ALF filter used by the picture in POC0 of FIG. 5, the video coder may store data in array 60A indicating the value of POC0. In this example, when encoding a region of a picture in POC6, if the picture in POC0 is not among the reference pictures of the picture in POC6, video encoder 20 is not allowed to select an ALF filter from among the ALF filters stored in array 60A for the picture in POC0.

[0117]

[0116] According to the second technique, an array is still used to store sets of previously coded ALF filters. In addition to the filters, for each set (which may contain multiple filters used to code a slice / picture), the temporal layer index (TempIdx) associated with the filter set is also recorded. In other words, the temporal layer index may be stored together with the ALF parameters for the ALF filter.

[0118] In some examples based on the second technique, the size of the array may be set to (number of possible temporal layers) * (maximum number of sets of filters for temporal prediction for a slice / picture or other unit for ALF use). In one example, the number of possible temporal layers may depend on the coding structure (e.g., how many levels are supported in the hierarchical B structure) or the low-latency check flag (NoBackwardPredFlag in the HEVC specification).

[0119]

[0118] In one example, the maximum number of sets of filters for temporal prediction for a slice / picture or other unit for ALF use may be predefined or signaled or may depend on TempIdx. In one example, the number of possible temporal layers is set to 5, and the maximum number of sets of filters for temporal prediction for a slice / picture or other unit for ALF use is set to 6. When coding a slice / picture, possible candidates for temporal prediction may be determined by traversing the sets contained in the array, and all or some filter sets with equal or smaller TempIdx are treated as valid candidates.

[0120]

[0119] After coding a certain slice / unit for performing ALF, the set of filters associated with the slice and the associated TempIdx may be used to update the array. For example, a video coded (e.g., video encoder 20 or video decoder 30) may determine an applicable set of ALF parameters for a region based on a selected set of ALF parameters in the array. In this example, the encoder or decoder may store the applicable set of ALF parameters in one array. The encoder or decoder may also store the applicable set of ALF parameters in one or more of the arrays corresponding to a temporal layer higher than the temporal layer to which the current region belongs. In this example, the video coder may not store the ALF parameters in the array if the ALF parameters were not explicitly signaled in the bitstream. In some examples, the encoder or decoder stores the applicable set of ALF parameters in the array only if the applicable set of ALF parameters is not already stored in the array.

[0121]

[0120] Figure 6 illustrates an array 70 for storing ALF parameters and temporal layer index (TempIdx) values ​​according to the second technique of this disclosure. In the example of Figure 6, the number of possible temporal layers is 5, and the maximum number of sets of filters for temporal prediction for a region is set to 6, resulting in an array 70 containing 30 entries. In the example of Figure 6, assuming that each picture in Figure 3 is coded with ALF enabled and the ALF filter for each picture is explicitly signaled, before decoding POC6 in Figure 3, the array for stored ALF filters has the state shown in Figure 6.

[0122]

[0121] In the example of Figure 6, the video coder may review the TempIdx values ​​stored in array 70 to determine which of the entries in array 70 store ALF parameters that the video coder may use as predictors of ALF parameters used in coding POC6. In doing so, the video coder may ignore any entries that specify a TempIdx value greater than T3 (i.e., the TempIdx for POC6). In contrast to the example of Figure 4B, the filter for POC0 is not overwritten by the filter for POC3.

[0123]

[0122] Thus, according to the second technique of this disclosure, the video encoder 20 may generate a bitstream including an encoded representation of a current picture of the video data. A current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs. In addition, the video encoder 20 may reconstruct the current picture. The video encoder 20 also stores in an array a set of ALF parameters used in applying the ALF filter to samples of pictures of the video data decoded before the current picture. Furthermore, the video encoder 20 stores in an array a temporal layer index associated with the set of ALF parameters. The temporal layer index associated with the set of ALF parameters indicates a temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter. In this example, the video encoder 20 determines an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs. Video encoder 20 may then apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region. After applying adaptive loop filtering to the current region, video encoder 20 may use the current region for prediction of a subsequent picture of the video data.

[0124]

[0123] Similarly, according to the second technique of this disclosure, the video decoder 30 may receive a bitstream including an encoded representation of a current picture of the video data. A current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs. Furthermore, the video decoder 30 may reconstruct the current picture. In this example, the video decoder 30 stores in an array a set of ALF parameters used in applying an ALF filter to samples of a picture of the video data decoded before the current picture. In addition, the video decoder 30 stores in an array a temporal layer index associated with the set of ALF parameters. The temporal layer index associated with the set of ALF parameters indicates a temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter. In this example, the video decoder 30 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs. Additionally, in this example, video decoder 30 may apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region.

[0125]

[0124] In some examples based on the second technique of this disclosure, the POC values ​​associated with each set of ALF filters may also be stored. For example, the video coder may also store in an array (e.g., array 70) the POC values ​​of a current picture for which the ALF parameters are explicitly coded. Thus, in this example, after encoding / decoding a plurality of multiple pictures, the video coder stores in an array the sets of ALF parameters used in applying the ALF filters to samples of pictures of the video data decoded before the new current picture.

[0126]

[0125] In one example, possible candidates for temporal prediction may be determined by traversing the sets included in the array, and all or some filter sets with equal or smaller TempIdx and those with POC values ​​equal to the POC value of one of the reference pictures in the current reference picture list may be treated as valid candidates. For example, the video coder may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates the temporal layer to which the current region of the current picture belongs or a temporal layer lower than the temporal layer to which the current region belongs. In this example, when determining the applicable set of ALF parameters for the current region, it is required that the POC value associated with the applicable set of ALF parameters for the current region is equal to the POC value of the reference picture in the reference picture list of the current picture.

[0127] In some examples based on the second technique of this disclosure, each ALF filter to be stored in the array should be associated with reference pictures included in the reference picture set of the current picture (these pictures will also be available in the decoded picture buffer). That is, if a picture is not included in the reference picture set of the current picture, the filter associated with the current picture cannot be stored and used for ALF temporal prediction.

[0128] In some examples based on the second technique of this disclosure, the size of the array may depend on the size of the reference picture set. For example, the size of the array may be equal to the maximum number of reference pictures allowed to be in the reference picture set.

[0129]

[0128] In some examples, the video coder does not generate a list specifically for the ALF filter parameters (i.e., ALF parameters), but the list is the same as the reference picture list generated for the current slice. In this case, the ALF parameters associated with the reference pictures of the current region are directly stored together with other information required by the reference picture store (such as reconstructed samples, motion information of each block that comprises a region). As another alternative, the list of ALF filter parameters is set equal to the reference picture set of the current slice (or picture).

[0130]

[0129] In another example, where each ALF filter stored in an array (e.g., array 70) is associated with a reference picture included in the reference picture set of the current picture, a list (array) of ALF filter parameters (associated with reference pictures included in the reference picture set of the current picture) is generated separately and independently from the reference picture list for the current slice. For efficient generation of an efficient list of ALF filter parameters, syntax elements for signaling a particular order of candidate sets of ALF filter parameters in the list of ALF filter parameters can be included in the slice header, similar to the reference picture list modification syntax in the slice header, such that more frequently used sets of ALF filter parameters are at an earlier position in the list of ALF filter parameters.

[0131]

[0130] According to the third technique, instead of using the FIFO rule to update the array(s) for the stored ALF filters, it is proposed to further consider the picture order count (POC) difference to update the array(s). For example, when an array (e.g., array 50 in Fig. 4A and Fig. 4B, one of arrays 60 in Fig. 5, or array 70 in Fig. 6) is full, the video coder may determine which entry in the array stores the ALF filter associated with a POC value that is most different from the POC value of the current picture. In an example based on the first technique, when a set of ALF parameters is explicitly signaled for a region of the current picture, the video coder may determine which set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs to replace the applicable set of ALF parameters for the current region based on the difference between the POC value of the current picture and the POC value associated with the set of ALF parameters. In an example based on the second technique, when a set of ALF parameters is explicitly signaled for a region of the current picture, the video coder may determine which set of ALF parameters in the array to replace with the applicable set of ALF parameters for the current region based on the difference between the POC value of the current picture and the POC value associated with the set of ALF parameters.

[0132] In some examples, a separate list of selecting filters from a reference picture set may be defined that is different from selecting reference pictures from the reference picture set. In this case, the selected filters may be from pictures that are not included in any reference picture list of the current slice / tile / picture.

[0133]

[0132] According to the fourth technique, the signaling of the index of the selected set / subset of filters for ALF temporal prediction may depend on the temporal layer index. The subset of filters for ALF temporal prediction is a partial set of ALF filters. For example, currently there may be 25 ALF filters per picture. In this example, when using temporal prediction, the video coder may choose 10 ALF filters instead of 25 to be associated with the picture. In one example, a truncated unary binarization method may be used to code the selected index of the set of filters, and the maximum allowed number of sets depends on the temporal layer index.

[0134]

[0133] For example, according to an example of the fourth technique, the video encoder 20 may include in the bitstream a syntax element indicating an index of a selected set of ALF parameters. Similarly, the video decoder 30 may obtain from the bitstream a syntax element indicating an index of a selected set of ALF parameters. The selected set of ALF parameters may be in one of a plurality of arrays of a type used in the first technique or in one array of a type used in the second technique. In this example, the video encoder 20 and / or the video decoder 30 may determine an applicable set of ALF parameters for the current region based on the selected set of ALF parameters in the array. The video encoder 20 and / or the video decoder 30 may apply an ALF filter to the current region based on the applicable set of ALF parameters for the current region. In this example, the format of the syntax element depends on the temporal layer index. For example, a truncated unary binarization method may be used to code the syntax element, and the maximum value of the allowed number of sets of ALF parameters depends on the temporal layer index.

[0135]

[0134] In some examples based on the fourth technique, the signaling of the index may further depend on the POC difference. In other words, in the context of the example of the previous paragraph, the format of the syntax element further depends on the POC difference. For example, if the index is 0, the selected set of ALF parameters is associated with the picture having the closest POC value to the POC value of the current picture, if the index is 1, the selected set of ALF parameters is associated with the picture having the next closest POC value to the POC value of the current picture, and so on. In this example, if two or more of the sets of ALF parameters in an array or arrays are associated with pictures having the same POC distance from the current picture, the set of ALF parameters associated with the picture having the lower (or, in another example, higher) POC value is associated with the lower index value.

[0136]

[0135] According to the fifth technique, instead of inheriting both the filter coefficients and the class merging information, it is proposed that only the class merging information can be inherited. That is, the filter indexes for different classes can be inherited from the previously coded information. Alternatively, further separate arrays can be allocated, one array for recording the filter indexes for each class, and the other for recording the filter coefficients.

[0137]

[0136] Hence, in an example according to the fifth technique, a video coder may store sets of ALF parameters used in applying an ALF filter to samples of pictures of the video data decoded before a current picture in multiple arrays, each respective array of the multiple arrays corresponding to a respective different temporal layer. In this example, the video coder may determine class merging information, rather than filter coefficients, from a set of ALF parameters in an array corresponding to a temporal layer to which the current region belongs or corresponding to a temporal layer lower than the temporal layer to which the current region belongs.

[0138]

[0137] Furthermore, in some examples, the video coder may store sets of filter coefficients used in applying the ALF filter to samples of pictures of the video data decoded prior to the current picture in a second plurality of arrays, each respective array of the second plurality of arrays corresponding to a respective different temporal layer. As part of determining the applicable set of ALF parameters for the current region, the video coder may determine the applicable set of ALF parameters based on a set of filter coefficients in one of the arrays of the second plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs, and based on a set of ALF parameters in one of the arrays of the first plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0139]

[0138] In an example according to the fifth technique, the video coder may store in an array a set of ALF parameters to be used in applying an ALF filter to samples of pictures of the video data decoded before a current picture. In this example, the video coder may determine class merging information, rather than filter coefficients, from a set of ALF parameters in the array whose associated temporal layer index indicates the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0140]

[0139] Furthermore, in some examples, the video coder may store in a second one array a set of filter coefficients used in applying the ALF filter to samples of pictures of the video data decoded prior to the current picture. In such examples, the video coder may store in a second one array a temporal layer index associated with the set of filter coefficients. The temporal layer index associated with the set of filter coefficients indicates a temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter. As part of determining the applicable set of ALF parameters for the current region, the video coder may determine the applicable set of ALF parameters for the current region based on a set of filter coefficients in one of the arrays of the second plurality of arrays corresponding to a temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs, and based on a set of ALF parameters in one of the arrays of the first plurality of arrays corresponding to a temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0141] According to the sixth technique, it is proposed that instead of inheriting both the filter coefficients and the class merging information, only the filter coefficients may be inherited, i.e., for the current slice / picture, the relationship between the class index and the filter index may be further signaled even if temporal prediction is used.

[0142]

[0141] Hence, according to an example of the sixth technique, the video coder may store in a plurality of arrays a set of ALF parameters to be used in applying an ALF filter to samples of pictures of the video data decoded prior to a current picture, each respective array of the plurality of arrays corresponding to a respective different temporal layer. In this example, as part of determining an applicable set of ALF parameters for the current region, the video coder may determine filter coefficients, rather than class merging information, from a set of ALF parameters in an array corresponding to a temporal layer to which the current region belongs or corresponding to a temporal layer lower than the temporal layer to which the current region belongs.

[0143]

[0142] Furthermore, in some examples, the video coder may store in a second plurality of arrays a set of class merging information used in applying the ALF filter to samples of pictures of the video data decoded before the current picture. Each respective array of the second plurality of arrays corresponds to a respective different temporal layer. As part of determining the applicable set of ALF parameters for the current region, the video coder may determine the applicable set of ALF parameters based on a set of class merging information in one of the arrays of the second plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs, and based on a set of ALF parameters in one of the arrays of the first plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0144]

[0143] According to another example of the sixth technique, the video coder may store in an array a set of ALF parameters to be used in applying an ALF filter to samples of pictures of the video data decoded before a current picture. In this example, the video coder may determine filter coefficients, rather than class merging information, from a set of ALF parameters in the array whose associated temporal layer index indicates the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0145]

[0144] Furthermore, in some examples, the video coder may store in a second one array a set of class merging information used in applying the ALF filter to samples of pictures of the video data decoded prior to the current picture. In this example, the video coder may also store in the second one array a temporal layer index associated with the set of class merging information. The temporal layer index associated with the set of filter coefficients indicates the temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter. As part of determining the applicable set of ALF parameters for the current region, the video coder may determine the applicable set of ALF parameters for the current region based on a set of filter coefficients in one of the arrays of the second plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs, and based on a set of ALF parameters in one of the arrays of the first plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs.

[0146]

[0145] According to the seventh technique, even when temporal prediction is used, the difference between the selected stored filter and the derived filter may be further signaled. In one example, the current design for signaling temporal prediction enabling the index of the set of filters and a flag may still be used. In addition, a flag may be used to indicate whether to signal the filter difference or not. If so, the difference may be further signaled. In some examples, a filter from a previously coded frame or slice may be added and treated as part of the fixed filter. In this case, the size of the fixed filter and the coefficients of the fixed filter may be adaptively changed. Alternatively, in some examples, when a set of filters is added to the fixed filter, pruning should be applied to avoid overlap.

[0147]

[0146] In an example according to the seventh technique, the video encoder 20 may determine the applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array corresponding to a temporal layer to which the current region belongs. Alternatively, in this example, the video encoder 20 may determine the applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array whose associated temporal layer index indicates the temporal layer to which the current region belongs. In either case, the video encoder 20 may include in the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region. In some examples, the video encoder 20 may include in the bitstream a syntax element indicating whether the bitstream includes an indication of the difference.

[0148]

[0147] In another example according to the seventh technique, the video decoder 30 may determine the applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array corresponding to a temporal layer to which the current region belongs. Alternatively, in this example, the video decoder 30 may determine the applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array whose associated temporal layer index indicates the temporal layer to which the current region belongs. In either case, the video decoder 30 may obtain from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region. In this example, as part of determining the applicable set of ALF parameters for the current region, the video decoder 30 may determine the applicable set of ALF parameters for the current region based on the selected set of ALF parameters and the difference. In some examples, the video decoder 30 may obtain from the bitstream a syntax element indicating whether the bitstream includes an indication of the difference.

[0149]

[0148] According to the eighth technique, one or more sets of ALF filters may be stored in a parameter set (e.g., a sequence parameter set or a picture parameter set) so that even pictures in different coded video sequences may use them. To avoid error resilience or random access problems, the ALF filters signaled in the slice header are not allowed to be used to update the set of ALF filters in the parameter set. For example, when coding a bitstream, the video coder may store in one array the set of ALF filters specified in the parameter set of the bitstream. In this example, the slice header may include ALF parameters that define additional ALF filters or filter differentials. The slice header is a part of a coded slice (or a coded slice segment) that contains data elements related to the first or all coding tree units represented in the slice (or slice segment).

[0150]

[0149] Figure 7 is a block diagram illustrating an example video encoder 20 that may implement the techniques of this disclosure. Figure 7 is provided for purposes of explanation and should not be considered a limitation of the techniques as broadly illustrated and described in this disclosure. The techniques of this disclosure may be applicable to a variety of coding standards or methodologies.

[0151]

[0150] The processing circuit includes a video encoder 20, and the video encoder 20 is configured to perform one or more of the illustrative techniques described in this disclosure. For example, the video encoder 20 includes an integrated circuit, and the various units illustrated in FIG. 5 may be formed as hardware circuit blocks interconnected by means of a circuit bus. These hardware circuit blocks may be separate circuit blocks, or two or more of the units may be combined into a common hardware circuit block. The hardware circuit blocks may be formed as combinations of electrical components forming operation blocks such as arithmetic logic units (ALUs), elementary function units (EFUs), and logic blocks such as AND, OR, NAND, NOR, XOR, XNOR, and other similar logic blocks.

[0152]

[0151] In some examples, one or more of the units illustrated in FIG. 7 may be software units executing on a processing circuit. In such examples, object code for these software units is stored in memory. An operating system may cause the video encoder 20 to retrieve and execute the object code, which causes the video encoder 20 to perform operations to implement the illustrative techniques. In some examples, the software units may be firmware that the video encoder 20 executes upon startup. Thus, the video encoder 20 is a structural component that has software / firmware executing on hardware to specialize the hardware to perform the illustrative techniques, or has hardware to perform the illustrative techniques.

[0153] 7, video encoder 20 includes a prediction processing unit 100, a video data memory 101, a residual generation unit 102, a transform processing unit 104, a quantization unit 106, an inverse quantization unit 108, an inverse transform processing unit 110, a reconstruction unit 112, a filter unit 114, a decoded picture buffer 116, and an entropy coding unit 118. Prediction processing unit 100 includes an inter-prediction processing unit 120 and an intra-prediction processing unit 126. Inter-prediction processing unit 120 may include a motion estimation unit and a motion compensation unit (not shown).

[0154]

[0153] The video data memory 101 may be configured to store video data to be encoded by the components of the video encoder 20. The video data stored in the video data memory 101 may be obtained, for example, from the video source 18. The decoded picture buffer 116 may be a reference picture memory that stores reference video data for use in encoding the video data by the video encoder 20, for example, in intra- or inter-coding modes. The video data memory 101 and the decoded picture buffer 116 may be formed by any of a variety of memory devices, such as DRAM, including synchronous dynamic random access memory (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 101 and the decoded picture buffer 116 may be provided by the same memory device or separate memory devices. In various examples, the video data memory 101 may be on-chip with other components of the video encoder 20 or off-chip relative to those components. The video data memory 101 may be the same as or part of the storage medium 19 of FIG. 1.

[0155]

[0154] Video encoder 20 receives video data. Video encoder 20 may encode each CTU in a slice of a picture of the video data. Each of the CTUs may be associated with an equal-sized luma coding tree block (CTB) and a corresponding CTB of the picture. As part of encoding the CTUs, prediction processing unit 100 may perform partitioning to divide the CTB of the CTU into progressively-smaller blocks. The smaller blocks may be coding blocks of a CU. For example, prediction processing unit 100 may partition the CTB associated with the CTU according to a tree structure.

[0156]

[0155] Video encoder 20 may encode a CU of a CTU to generate an encoded representation of the CU (i.e., a coded CU). As part of encoding a CU, prediction processing unit 100 may partition a coding block associated with the CU among one or more PUs of the CU. From this, each PU may be associated with a luma prediction block and a corresponding chroma prediction block. Video encoder 20 and video decoder 30 may support PUs having various sizes. As mentioned above, the size of a CU may refer to the size of the luma coding block of the CU, and the size of a PU may refer to the size of the luma prediction block of the PU. Assuming that the size of a particular CU is 2N×2N, video encoder 20 and video decoder 30 may support a PU size of 2N×2N or N×N for intra prediction, and a symmetric PU size of 2N×2N, 2N×N, N×2N, N×N, or the like for inter prediction. Video encoder 20 and video decoder 30 may also support asymmetric partitioning for PU sizes of 2N×nU, 2N×nD, nL×2N, and nR×2N for inter prediction.

[0157]

[0156] Inter-prediction processing unit 120 may generate prediction data for the PU. As part of generating prediction data for the PU, inter-prediction processing unit 120 performs inter prediction on the PU. The prediction data for the PU may include a prediction block of the PU and motion information for the PU. Inter-prediction processing unit 120 may perform different operations on a PU of a CU depending on whether the PU is in an I slice, a P slice, or a B slice. In an I slice, all PUs are intra predicted. Thus, if the PU is in an I slice, inter-prediction processing unit 120 does not perform inter prediction on the PU. Thus, for blocks coded in I mode, a predicted block is formed using spatial prediction from previously coded neighboring blocks in the same frame. If the PU is in a P slice, inter-prediction processing unit 120 may use uni-directional inter prediction to generate a prediction block of the PU. If the PU is in a B slice, inter-prediction processing unit 120 may use uni-directional or bi-directional inter prediction to generate the predictive blocks of the PU.

[0158]

[0157] The intra-prediction processing unit 126 may generate predictive data for a PU by performing intra prediction on the PU. The predictive data for a PU may include predictive blocks and various syntax elements of the PU. The intra-prediction processing unit 126 may perform intra prediction on the PU in an I slice, a P slice, and a B slice.

[0159]

[0158] To perform intra prediction for a PU, intra prediction processing unit 126 may use multiple intra prediction modes to generate multiple sets of prediction data for the PU. Intra prediction processing unit 126 may use samples from a sample block of a neighboring PU to generate a prediction block for the PU. The neighboring PU may be above, above-right, above-left, or to the left of the PU, assuming a left-to-right, top-to-bottom coding order for the PU, CU, and CTU. Intra prediction processing unit 126 may use a variety of intra prediction modes, for example, 33 directional intra prediction modes. In some examples, the number of intra prediction modes may depend on the size of the region associated with the PU.

[0160]

[0159] Prediction processing unit 100 may select prediction data for a PU of a CU from among prediction data generated by inter-prediction processing unit 120 for the PU or prediction data generated by intra-prediction processing unit 126 for the PU. In some examples, prediction processing unit 100 selects prediction data for a PU of a CU based on a rate / distortion metric of a set of prediction data. A prediction block of the selected prediction data may be referred to herein as a selected prediction block.

[0161]

[0160] Residual generation unit 102 may generate a residual block (e.g., luma, Cb, and Cr residual block) for a CU based on a coding block (e.g., luma, Cb, and Cr coding block) for the CU and a selected predictive block (e.g., predicted luma, Cb, and Cr block) for a PU of the CU. For example, residual generation unit 102 may generate the residual block of a CU such that each sample in the residual block has a value equal to a difference between a sample in the coding block of the CU and a corresponding sample in a corresponding selected predictive block of a PU of the CU.

[0162]

[0161] Transform processing unit 104 may partition the residual blocks of a CU into transform blocks of the TUs of the CU. For example, transform processing unit 104 may perform quadtree partitioning to partition the residual blocks of a CU into transform blocks of the TUs of the CU. From this, a TU may be associated with one luma transform block and two chroma transform blocks. The size and position of the luma and chroma transform blocks of a TU of a CU may or may not be based on the size and position of the prediction blocks of the PUs of the CU. A quadtree structure known as a "residual quadtree" (RQT) may include a node associated with each of the regions. The TUs of a CU may correspond to the leaf nodes of the RQT.

[0163]

[0162] Transform processing unit 104 may generate transform coefficient blocks for each TU of a CU by applying one or more transforms to the transform block of the TU. Transform processing unit 104 may apply various transforms to the transform block associated with the TU. For example, transform processing unit 104 may apply a discrete cosine transform (DCT), a directional transform, or a conceptually similar transform to the transform block. In some examples, transform processing unit 104 does not apply a transform to the transform block. In such examples, the transform block may be treated as a transform coefficient block.

[0164]

[0163] Quantization unit 106 may quantize the transform coefficients in the coefficient block. The quantization process may reduce the bit depth associated with some or all of the transform coefficients. For example, an n-bit transform coefficient may be truncated to an m-bit transform coefficient during quantization, where n is greater than m. Quantization unit 106 may quantize the coefficient blocks associated with the TU of a CU based on a quantization parameter (QP) value associated with the CU. Video encoder 20 may adjust the degree of quantization applied to the coefficient blocks associated with a CU by adjusting the QP value associated with the CU. Quantization may result in loss of information. From this, the quantized transform coefficients may have less precision than the original ones.

[0165]

[0164] Inverse quantization unit 108 and inverse transform processing unit 110 may apply inverse quantization and inverse transform to the coefficient blocks, respectively, to reconstruct residual blocks from the coefficient blocks. Reconstruction unit 112 may add samples of the reconstructed residual blocks to corresponding samples from one or more predictive blocks generated by prediction processing unit 100 to produce reconstructed transform blocks associated with the TUs. By reconstructing the transform blocks for each TU of a CU in this manner, video encoder 20 may reconstruct the coding blocks of the CU.

[0166]

[0165] Filter unit 114 may perform one or more deblocking operations to reduce blocking artifacts in the coding blocks associated with the CU. Filter unit 114 may perform the filter techniques of this disclosure. For example, filter unit 114 may store in a plurality of arrays a set of ALF parameters used in applying an ALF filter to samples of a picture of the video data decoded prior to the current picture. In this example, each respective array of the plurality of arrays corresponds to a respective different temporal layer. Furthermore, in this example, filter unit 114 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs. In this example, filter unit 114 may apply adaptive loop filtering to one or more blocks in the current region based on the applicable set of ALF parameters for the current region.

[0167]

[0166] In another example, filter unit 114 may store in an array (e.g., array 70 of FIG. 6) a set of ALF parameters used in applying an ALF filter to samples of pictures of the video data decoded prior to the current picture. In addition, filter unit 114 may store in an array a temporal layer index associated with the set of ALF parameters. The temporal layer index associated with the set of ALF parameters indicates a temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter. Furthermore, in this example, filter unit 114 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs. In this example, filter unit 114 may apply adaptive loop filtering to one or more blocks in the current region based on the applicable set of ALF parameters for the current region.

[0168]

[0167] The decoded picture buffer 116 may store the reconstructed coding block after the filter unit 114 performs one or more deblocking operations on the reconstructed coding block. The inter-prediction processing unit 120 may use a reference picture containing the reconstructed coding block to perform inter prediction on PUs of other pictures. In addition, the intra-prediction processing unit 126 may use the reconstructed coding block in the decoded picture buffer 116 to perform intra prediction on other PUs in the same picture as the CU.

[0169]

[0168] Entropy encoding unit 118 may receive data from other functional components of video encoder 20. For example, entropy encoding unit 118 may receive coefficient blocks from quantization unit 106 and syntax elements from prediction processing unit 100. Entropy encoding unit 118 may perform one or more entropy encoding operations on that data to generate entropy encoded data. For example, entropy encoding unit 118 may perform a CABAC operation, a context-adaptive variable length coding (CAVLC) operation, a variable-to-variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a Probability Interval Partitioning Entropy (PIPE) coding operation, an Exponential-Golomb coding operation, or another type of entropy coding operation on the data. Video encoder 20 may output a bitstream including the entropy encoded data generated by entropy encoding unit 118. For example, the bitstream may include data representing values ​​of transform coefficients for the CUs.

[0170]

[0169] Figure 8 is a block diagram illustrating an example video decoder 30 configured to implement the techniques of this disclosure. Figure 8 is provided for purposes of explanation and is not limiting on the techniques as broadly illustrated and described in this disclosure. For purposes of explanation, this disclosure describes the video decoder 30 in the context of HEVC coding. However, the techniques of this disclosure may be applicable to other coding standards or methodologies.

[0171]

[0170] The processing circuit includes a video decoder 30, and the video decoder 30 is configured to perform one or more of the illustrative techniques described in this disclosure. For example, the video decoder 30 includes an integrated circuit, and the various units illustrated in FIG. 8 may be formed as hardware circuit blocks interconnected by means of a circuit bus. These hardware circuit blocks may be separate circuit blocks, or two or more of the units may be combined into a common hardware circuit block. The hardware circuit blocks may be formed as combinations of electrical components forming arithmetic blocks such as an arithmetic logic unit (ALU), an elementary function unit (EFU), and logic blocks such as AND, OR, NAND, NOR, XOR, XNOR, and other similar logic blocks.

[0172]

[0171] In some examples, one or more of the units illustrated in FIG. 8 may be software units executing on a processing circuit. In such examples, object code for these software units is stored in memory. An operating system may cause the video decoder 30 to retrieve and execute the object code, which causes the video decoder 30 to perform operations to implement the illustrative techniques. In some examples, the software units may be firmware that the video decoder 30 executes upon startup. Thus, the video decoder 30 is a structural component that has software / firmware executing on hardware to specialize the hardware to perform the illustrative techniques, or has hardware to perform the illustrative techniques.

[0173] 8, video decoder 30 includes entropy decoding unit 150, video data memory 151, prediction processing unit 152, inverse quantization unit 154, inverse transform processing unit 156, reconstruction unit 158, filter unit 160, and decoded picture buffer 162. Prediction processing unit 152 includes motion compensation unit 164 and intra-prediction processing unit 166. In other examples, video decoder 30 may include more, fewer, or different functional components.

[0174]

[0173] Video data memory 151 may store encoded video data, such as an encoded video bitstream, to be decoded by components of video decoder 30. The video data stored in video data memory 151 may be obtained, for example, from computer-readable medium 16, for example, from a local video source, such as a camera, via wired or wireless network communication of video data, or by accessing a physical data storage medium. Video data memory 151 may form a coded picture buffer (CPB) that stores encoded video data from an encoded video bitstream. Decoded picture buffer 162 may be a reference picture memory that stores reference video data for use in decoding video data by video decoder 30 or for output, for example, in intra- or inter-coding mode. Video data memory 151 and decoded picture buffer 162 may be formed by any of a variety of memory devices, such as DRAM, including synchronous dynamic random access memory (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. Video data memory 151 and decoded picture buffer 162 may be provided by the same memory device or separate memory devices. In various examples, video data memory 151 may be on-chip with other components of video decoder 30 or off-chip relative to those components. Video data memory 151 may be the same as or part of storage medium 28 of FIG. 1.

[0175]

[0174] Video data memory 151 receives and stores encoded video data (e.g., NAL units) of a bitstream. Entropy decoding unit 150 may receive encoded video data (e.g., NAL units) from video data memory 151 and parse the NAL units to obtain syntax elements. Entropy decoding unit 150 may entropy decode entropy-encoded syntax elements in the NAL units. Prediction processing unit 152, inverse quantization unit 154, inverse transform processing unit 156, reconstruction unit 158, and filter unit 160 may generate decoded video data based on the syntax elements extracted from the bitstream. Entropy decoding unit 150 may perform a process that is generally opposite to that of entropy encoding unit 118.

[0176]

[0175] In addition to obtaining syntax elements from the bitstream, video decoder 30 may perform a reconstruction operation on a non-partitioned CU. To perform a reconstruction operation on a CU, video decoder 30 may perform a reconstruction operation on each TU of the CU. By performing a reconstruction operation on each TU of the CU, video decoder 30 may reconstruct residual blocks of the CU.

[0177]

[0176] As part of performing a reconstruction operation on a TU of a CU, inverse quantization unit 154 may inverse quantize, or de-quantize, a coefficient block associated with the TU. After inverse quantization unit 154 inverse quantizes a coefficient block, inverse transform processing unit 156 may apply one or more inverse transforms to the coefficient block to generate a residual block associated with the TU. For example, inverse transform processing unit 156 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse transform, or another inverse transform to the coefficient block.

[0178]

[0177] Inverse quantization unit 154 may perform certain techniques of this disclosure. For example, for at least one respective quantization group of the multiple quantization groups in the CTB of a CTU of a picture of video data, inverse quantization unit 154 may derive a respective quantization parameter for the respective quantization group based at least in part on the local quantization information signaled in the bitstream. In addition, in this example, inverse quantization unit 154 may inverse quantize at least one transform coefficient of a transform block of a TU of a CU of the CTU based on the respective quantization parameter for the respective quantization group. In this example, each quantization group is defined as a group of consecutive CUs or coding blocks in coding order such that the boundaries of each quantization group must be boundaries of CUs or coding blocks, and the size of each quantization group is equal to or greater than a threshold. Video decoder 30 (e.g., inverse transform processing unit 156, reconstruction unit 158, and filter unit 160) may reconstruct the coding block of the CU based on the inverse quantized transform coefficients of the transform block.

[0179]

[0178] If a PU is coded using intra prediction, intra-prediction processing unit 166 may perform intra prediction to generate a predictive block of the PU. Intra-prediction processing unit 166 may use an intra-prediction mode to generate a predictive block of the PU based on samples spatially neighboring the block. Intra-prediction processing unit 166 may determine the intra-prediction mode for the PU based on one or more syntax elements obtained from the bitstream.

[0180]

[0179] When a PU is encoded using inter prediction, entropy decoding unit 150 may determine motion information for the PU. Motion compensation unit 164 may determine one or more reference blocks based on the motion information of the PU. Motion compensation unit 164 may generate a predictive block (e.g., predictive luma, Cb, and Cr blocks) for the PU based on the one or more reference blocks.

[0181]

[0180] Reconstruction unit 158 ​​may use transform blocks (e.g., luma, Cb, and Cr transform blocks) for the TUs of a CU and predictive blocks (e.g., luma, Cb, and Cr blocks) of the PUs of a CU, i.e., either intra-predicted data or inter-predicted data, as appropriate, to reconstruct a coding block (e.g., luma, Cb, and Cr coding block) for the CU. For example, reconstruction unit 158 ​​may add samples of the transform blocks (e.g., luma, Cb, and Cr transform blocks) to corresponding samples of the predictive blocks (e.g., luma, Cb, and Cr predictive blocks) to reconstruct a coding block (e.g., luma, Cb, and Cr coding block) of a CU.

[0182]

[0181] Filter unit 160 may perform a deblocking operation to reduce blocking artifacts associated with the coding blocks of the CU. Filter unit 160 may perform the filter techniques of this disclosure. For example, filter unit 160 may store in a plurality of arrays a set of ALF parameters used in applying an ALF filter to samples of a picture of the video data decoded before the current picture. In this example, each respective array of the plurality of arrays corresponds to a respective different temporal layer. For example, for each respective array of the plurality of arrays corresponding to different temporal layers, filter unit 160 may store in a respective array a set of ALF parameters used in applying an ALF filter to samples of a region of a picture of the video data decoded before the current region and in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array. In this example, filter unit 160 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. Further, in this example, filter unit 160 may apply an ALF filter to one or more blocks in the current region based on the applicable set of ALF parameters for the current region.

[0183]

[0182] In another example, filter unit 160 stores in an array a set of ALF parameters used in applying an ALF filter to samples of pictures of video data decoded prior to a current picture. Furthermore, in this example, filter unit 160 stores in an array a temporal layer index associated with the set of ALF parameters. The temporal layer index associated with the set of ALF parameters indicates a temporal layer of a region to which the set of ALF parameters was used to apply the ALF filter. In this example, filter unit 160 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs. In this example, filter unit 160 may apply an ALF filter to one or more blocks of the current region based on the applicable set of ALF parameters for the current region.

[0184]

[0183] Video decoder 30 may store coding blocks of a CU in decoded picture buffer 162. Decoded picture buffer 162 may provide reference pictures for subsequent motion compensation, intra prediction, and presentation on a display device, such as display device 32 of FIG. 1. For example, video decoder 30 may perform intra prediction or inter prediction operations on PUs of other CUs based on blocks in decoded picture buffer 162.

[0185]

[0184] Certain aspects of this disclosure have been described in the context of extensions to the HEVC standard for illustrative purposes, however, the techniques described in this disclosure may be useful for other video coding processes, including other standard or proprietary video coding processes yet to be developed.

[0186]

[0185] Figure 9 is a flowchart illustrating an example operation of video encoder 20 in accordance with the first technique of this disclosure. The flowcharts of this disclosure are provided as examples. In other examples, actions may be performed in a different order, or the operations may include more, fewer, or different actions.

[0187]

[0186] In the example of Figure 9, video encoder 20 generates a bitstream including an encoded representation of a current picture of video data (200). A current region (e.g., a current slice or other unit) of the current picture is associated with a temporal index that indicates the temporal layer to which the current region belongs. Video encoder 20 may generate the bitstream according to any of the examples described elsewhere in this disclosure, such as the example of Figure 5.

[0188]

[0187] In addition, video encoder 20 reconstructs the current picture (202). For example, video encoder 20 may reconstruct a block of the current picture by adding samples of a reconstructed residual block to corresponding samples from one or more predictive blocks to produce a reconstructed block. By reconstructing the block in this manner, video encoder 20 may reconstruct a coding block of the current picture.

[0189]

[0188] Furthermore, for each respective array of the plurality of arrays corresponding to different temporal layers, video encoder 20 may store in a respective array (e.g., one of arrays 60 of FIG. 5) a set of ALF parameters to be used in applying the ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array (204). Each set of ALF parameters may include a set of filter coefficients and / or a set of ALF class merging information.

[0190]

[0189] The video encoder 20 determines an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs (206). For example, the video encoder 20 may select the selected set of ALF parameters by using a rate-distortion analysis of the set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. In some examples, the applicable set of ALF parameters for the current region may be the same as the selected set of ALF parameters. In some examples, the video encoder 20 may include in the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region.

[0191]

[0190] Video encoder 20 may then apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region (208). When applying adaptive loop filtering to the current region, video encoder 20 may apply an ALF filter to one or more, but not necessarily all, blocks in the current region. For example, video encoder 20 may divide the current region into blocks (e.g., 4x4 blocks). In this example, for each of the blocks, video encoder 20 may determine a corresponding category for the block (e.g., based on the block's orientation and activity). In this example, the applicable set of ALF parameters for the current region may include filter coefficients of an ALF filter of the category for the block. In this example, video encoder 20 may then apply an ALF filter to the blocks.

[0192]

[0191] After applying adaptive loop filtering to the current region, video encoder 20 uses the current region for prediction of a subsequent picture of the video data (210). For example, video encoder 20 may use the current region for inter prediction of a block of the subsequent picture.

[0193]

[0192] Figure 10 is a flowchart illustrating an example operation of video decoder 30 in accordance with the first technique of this disclosure. In the example of Figure 10, video decoder 30 receives a bitstream including an encoded representation of a current picture of video data (250). A current region of the current picture is associated with a temporal index that indicates the temporal layer to which the current region belongs.

[0194]

[0193] Furthermore, video decoder 30 reconstructs the current picture (252). Video decoder 30 may reconstruct the current picture according to any of the examples provided elsewhere in this disclosure. For example, video decoder 30 may reconstruct a block of the current picture by adding samples of a reconstructed residual block to corresponding samples from one or more predictive blocks to produce a reconstructed block. By reconstructing the block in this manner, video decoder 30 may reconstruct a coding block of the current picture.

[0195]

[0194] The video decoder 30 also stores in a plurality of arrays a set of ALF parameters used in applying the ALF filter to samples of a picture of the video data decoded before the current picture (254). Each respective array of the plurality of arrays corresponds to a respective different temporal layer. For example, for each respective array of the plurality of arrays corresponding to different temporal layers, the video decoder 30 may store in a respective array (e.g., one of the arrays 60 of FIG. 5) a set of ALF parameters used in applying the ALF filter to samples of a region of a picture of the video data decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array.

[0196]

[0195] Additionally, video decoder 30 may determine an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs (256). For example, video decoder 30 may obtain from the bitstream an index indicating a selected set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. In some examples, the applicable set of ALF parameters for the current region may be the same as the selected set of ALF parameters. In some examples, video decoder 30 may obtain from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region.

[0197]

[0196] Video decoder 30 may then apply adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region (258). When applying adaptive loop filtering to the current region, video decoder 30 may apply an ALF filter to one or more, but not necessarily all, blocks in the current region. For example, video decoder 30 may divide the current region into blocks (e.g., 4x4 blocks). In this example, for each of the blocks, video decoder 30 may determine a corresponding category for the block (e.g., based on the block's orientation and activity). In this example, the applicable set of ALF parameters for the current region may include filter coefficients of an ALF filter of the category for the block. In this example, video decoder 30 may then apply an ALF filter to the blocks.

[0198]

[0197] Figure 11 is a flowchart illustrating an example operation of video encoder 20 according to the second technique of this disclosure. In the example of Figure 11, video encoder 20 generates a bitstream including an encoded representation of a current picture of video data (300). A current region (e.g., a current slice or other unit) of the current picture is associated with a temporal index that indicates the temporal layer to which the current region belongs. Video encoder 20 may generate the bitstream according to any of the examples described elsewhere in this disclosure, such as the example of Figure 5.

[0199]

[0198] Furthermore, video encoder 20 may reconstruct the current picture (302). For example, video encoder 20 may reconstruct a block of the current picture by adding samples of the reconstructed residual block to corresponding samples from one or more predictive blocks to produce a reconstructed block. By reconstructing the block in this manner, video encoder 20 may reconstruct a coding block of the current picture.

[0200]

[0199] The video encoder 20 stores in an array (e.g., array 70 of FIG. 6) a set of ALF parameters used in applying the ALF filter to samples of pictures of the video data decoded prior to the current picture (304). In addition, the video encoder 20 stores in an array a temporal layer index associated with the set of ALF parameters (306). The temporal layer index associated with the set of ALF parameters indicates the temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter.

[0201]

[0200] Furthermore, the video encoder 20 determines an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array whose associated temporal layer index indicates a temporal layer to which the current region belongs or a temporal layer lower than the temporal layer to which the current region belongs (308). For example, the video encoder 20 may select the selected set of ALF parameters by using a rate-distortion analysis of the sets of ALF parameters in the array. In some examples, the applicable set of ALF parameters for the current region may be the same as the selected set of ALF parameters. In some examples, the video encoder 20 may include in the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region.

[0202]

[0201] Video encoder 20 applies the ALF to the current region based on the applicable set of ALF parameters for the current region (310). Video encoder 20 may apply an ALF filter to the current region according to any of the examples provided elsewhere in this disclosure.

[0203]

[0202] After applying the ALF filter to the current region, video encoder 20 uses the current region for prediction of a subsequent picture of the video data (312). For example, video encoder 20 may use the current region for inter prediction of a block of the subsequent picture.

[0204]

[0203] Figure 12 is a flowchart illustrating an example operation of video decoder 30 in accordance with the techniques of this disclosure. In the example of Figure 12, video decoder 30 receives a bitstream including an encoded representation of a current picture of video data (350). A current region of the current picture (e.g., a current slice or other unit) is associated with a temporal index that indicates the temporal layer to which the current region belongs.

[0205]

[0204] Video decoder 30 may then reconstruct the current picture (352). Video decoder 30 may reconstruct the current picture according to any of the examples provided elsewhere in this disclosure. For example, video decoder 30 may reconstruct a block of the current picture by adding samples of the reconstructed residual block to corresponding samples from one or more predictive blocks to produce a reconstructed block. By reconstructing the block in this manner, video decoder 30 may reconstruct a coding block of the current picture.

[0206]

[0205] In the example of Figure 12, the video decoder 30 stores in an array a set of ALF parameters used in applying the ALF filter to samples of pictures of the video data decoded before the current picture (354). In addition, the video decoder 30 stores in an array a temporal layer index associated with the set of ALF parameters (356). The temporal layer index associated with the set of ALF parameters indicates the temporal layer of the region to which the set of ALF parameters was used to apply the ALF filter.

[0207]

[0206] Video decoder 30 may determine the applicable set of ALF parameters for the current region based on a selected set of ALF parameters in an array whose associated temporal layer index indicates the temporal layer to which the current region belongs (358). For example, video decoder 30 may obtain an index indicating the selected set of ALF parameters in the array from the bitstream. In some examples, the applicable set of ALF parameters for the current region may be the same as the selected set of ALF parameters. In some examples, video decoder 30 may obtain an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region from the bitstream.

[0208]

[0207] Video decoder 30 then applies an ALF filter to the current region based on the applicable set of ALF parameters for the current region (360). Video decoder 30 may apply an ALF filter to the current region according to any of the examples provided elsewhere in this disclosure.

[0209] A video coder may refer to a video encoder or a video decoder, as described throughout this disclosure. Similarly, a video coding unit may refer to a video encoder or a video decoder. In the same manner, video coding may refer to video encoding or video decoding, as appropriate. In this disclosure, the phrase "based on" may indicate based only on, based at least in part on, or based in any manner on. This disclosure may use the terms "video unit" or "video block" or "block" to refer to one or more sample blocks and syntax structures used to code samples of one or more blocks of samples. Illustrative types of video units may include CTUs, CUs, PUs, transform units (TUs), macroblocks, macroblock partitions, and the like. In some contexts, discussion of a PU may be substituted for discussion of a macroblock or macroblock partition. Illustrative types of video blocks may include coding tree blocks, coding blocks, and other types of blocks of video data.

[0210]

[0209] The techniques of this disclosure may be applied to video coding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions such as Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications.

[0211]

[0210] It should be appreciated that, depending on the example, certain acts or events of any of the techniques described herein may be performed in different sequences, added, combined, or omitted entirely (e.g., not all described acts or events are necessary to practice the techniques). Moreover, in certain examples, acts or events may be performed simultaneously, rather than sequentially, for example, through multithreading, interrupt processing, or multiple processors.

[0212]

[0211] 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 on or transmitted through a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium such as a data storage medium, or a communication medium, which includes any medium that facilitates the transfer of a computer program from one place to another, for example according to a communication protocol. As such, a computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processing circuits to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0213]

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

[0214]

[0213] The functions described in this disclosure may be performed by fixed-function and / or programmable processing circuitry. For example, instructions may be executed by fixed-function and / or programmable processing circuitry. Such processing circuitry may include one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term "processor", as used herein, may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Also, the techniques may be fully implemented in one or more circuits or logic elements. The processing circuitry may be coupled to other components in various ways. For example, the processing circuitry may be coupled to other components via an internal device interconnect, a wired or wireless network connection, or another communication medium.

[0215]

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

[0216]

[0215] Various examples have been described. These and other examples are within the scope of the following claims. The invention as originally claimed in the present application is set forth below. [C1] 1. A method for decoding video data, comprising the steps of: receiving a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A method comprising: [C2] Storing the set of ALF parameters includes: The method of claim [C1], comprising: storing, for each respective array of the plurality of arrays, a set of ALF parameters to be used in applying an ALF filter to samples of the region of the picture of the video data that belongs to the temporal layer corresponding to the respective array and that belongs to a temporal layer lower than the temporal layer corresponding to the respective array and that was decoded before the current region of the current picture. [C3] At least two of the plurality of arrays include a different number of sets of ALF parameters. The method according to [C1]. [C4] The method of [C1], further comprising, if the applicable set of ALF parameters for the current region is not already stored in the array, storing the applicable set of ALF parameters for the current region in at least one of the arrays of the plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer higher than the temporal layer to which the current region belongs. [C5] storing the applicable set of ALF parameters for the current region comprises determining which set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs to replace the applicable set of ALF parameters for the current region based on a difference between a POC value of the current picture and a POC value associated with a set of ALF parameters. The method described in [C4]. [C6] when determining the applicable set of ALF parameters for the current region, a POC value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture. The method according to [C1]. [C7] and obtaining from the bitstream a syntax element indicating an index of the selected set of ALF parameters; determining the applicable set of ALF parameters for the current region comprises determining the selected set of ALF parameters based on the syntax elements; The format of the syntax element depends on the temporal index. The method according to [C1]. [C8] determining the applicable set of ALF parameters for the current region comprises determining class merging information rather than filter coefficients from the set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. The method according to [C1]. [C9] determining the applicable set of ALF parameters for the current region comprises determining filter coefficients, but not class merging information, from the set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. The method according to [C1]. [C10] obtaining from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region; determining the applicable set of ALF parameters for the current region comprises determining the applicable set of ALF parameters for the current region based on the selected set of ALF parameters and the difference. The method according to [C1]. [C11] 1. A method for encoding video data, comprising the steps of: generating a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; using the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region; A method comprising: [C12] Storing the set of ALF parameters includes: The method of claim 11, further comprising: storing, for each respective array of the plurality of arrays, a set of ALF parameters to be used in applying an ALF filter to samples of the region of the picture of the video data that belongs to the temporal layer corresponding to the respective array and that belongs to a temporal layer lower than the temporal layer corresponding to the respective array and that was decoded before the current region of the current picture. [C13] At least two of the plurality of arrays include a different number of sets of ALF parameters. The method according to [C11]. [C14] The method of claim 11, further comprising: if the applicable set of ALF parameters for the current region is not already stored in the array, storing the applicable set of ALF parameters for the current region in at least one of the arrays of the plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer higher than the temporal layer to which the current region belongs. [C15] storing the applicable set of ALF parameters for the current region comprises determining which set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs to replace the applicable set of ALF parameters for the current region based on a difference between a POC value of the current picture and a POC value associated with a set of ALF parameters. The method described in [C14]. [C16] when determining the applicable set of ALF parameters for the current region, a POC value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture. The method according to [C11]. [C17] and including in the bitstream a syntax element indicating an index of the selected set of ALF parameters. The method according to [C11]. [C18] determining the applicable set of ALF parameters for the current region comprises determining class merging information rather than filter coefficients from the set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. The method according to [C11]. [C19] determining the applicable set of ALF parameters for the current region comprises determining filter coefficients, but not class merging information, from the set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs. The method according to [C11]. [C20] including in the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region. The method according to [C11]. [C21] 1. A device for decoding video data, comprising: one or more storage media configured to store the video data; receiving a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; one or more processors configured to A device comprising: [C22] As part of storing the set of ALF parameters, the one or more processors: and storing, for each respective array of the plurality of arrays, a set of ALF parameters to be used in applying an ALF filter to samples of the region of the picture of the video data that belongs to the temporal layer corresponding to the respective array and that belongs to a temporal layer lower than the temporal layer corresponding to the respective array and that was decoded before the current region of the current picture. A device as described in [C21]. [C23] At least two of the plurality of arrays include a different number of sets of ALF parameters. A device as described in [C21]. [C24] the one or more processors are further configured to, if the applicable set of ALF parameters for the current region is not already stored in the array, store the applicable set of ALF parameters for the current region in at least one of the arrays of the plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer higher than the temporal layer to which the current region belongs. A device as described in [C21]. [C25] the one or more processors are configured, as part of storing the applicable set of ALF parameters for the current region, to determine which set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs to replace the applicable set of ALF parameters for the current region based on a difference between a POC value of the current picture and a POC value associated with a set of ALF parameters. A device as described in [C24]. [C26] when determining the applicable set of ALF parameters for the current region, a POC value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture. A device as described in [C21]. [C27] The one or more processors: and further configured to obtain from the bitstream a syntax element indicating an index of the selected set of ALF parameters; the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, the one or more processors determine the selected set of ALF parameters based on the syntax elements; The format of the syntax element depends on the temporal index. A device as described in [C21]. [C28] the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, to determine class merging information, rather than filter coefficients, from the set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs. A device as described in [C21]. [C29] the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, to determine filter coefficients, but not class merging information, from the set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs. A device as described in [C21]. [C30] The one or more processors: and further configured to obtain from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region; the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, to: determine the applicable set of ALF parameters for the current region based on the selected set of ALF parameters and the difference. A device as described in [C21]. [C31] The device comprises a wireless communication device and further comprises a receiver configured to receive the encoded video data. A device as described in [C21]. [C32] the wireless communication device comprises a telephone handset and the receiver is configured to demodulate a signal comprising the encoded video data in accordance with a wireless communication standard. A device as described in [C31]. [C33] 1. A device for encoding video data, comprising: one or more storage media configured to store the video data; One or more processors wherein the one or more processors: generating a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; using the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region; A device configured to: [C34] As part of storing the set of ALF parameters, the one or more processors: storing in each respective array of the plurality of arrays a set of ALF parameters to be used in applying an ALF filter to samples of the region of the picture of the video data that belongs to the temporal layer corresponding to the respective array and that belongs to a temporal layer lower than the temporal layer corresponding to the respective array and that was decoded before the current region of the current picture; The device according to [C33], configured to: [C35] At least two of the plurality of arrays include a different number of sets of ALF parameters. A device as described in [C33]. [C36] the one or more processors are further configured to, if the applicable set of ALF parameters for the current region is not already stored in the array, store the applicable set of ALF parameters for the current region in at least one of the arrays of the plurality of arrays corresponding to the temporal layer to which the current region belongs or a temporal layer higher than the temporal layer to which the current region belongs. A device as described in [C33]. [C37] the one or more processors are configured, as part of storing the applicable set of ALF parameters for the current region, to determine which set of ALF parameters in the array corresponding to the temporal layer to which the current region belongs to replace the applicable set of ALF parameters for the current region based on a difference between a POC value of the current picture and a POC value associated with a set of ALF parameters. A device as described in [C36]. [C38] when determining the applicable set of ALF parameters for the current region, a POC value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture. A device as described in [C33]. [C39] the one or more processors are further configured to include in the bitstream a syntax element indicating an index of the selected set of ALF parameters. A device as described in [C33]. [C40] the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, the one or more processors are configured to determine class merging information, rather than filter coefficients, from the set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs. A device as described in [C33]. [C41] the one or more processors are configured, as part of determining the applicable set of ALF parameters for the current region, the one or more processors are configured to determine filter coefficients, but not class merging information, from the set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs. A device as described in [C33]. [C42] The one or more processors: and further configured to include in the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region. A device as described in [C33]. [C43] The device comprises a wireless communication device and further comprises a transmitter configured to transmit the encoded video data. A device as described in [C33]. [C44] the wireless communication device comprises a telephone handset, and the transmitter is configured to modulate a signal comprising the encoded video data in accordance with a wireless communication standard. A device as described in [C43]. [C45] 1. A device for decoding video data, comprising: means for receiving a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; means for reconstructing the current picture; means for storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; means for determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs; means for applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A device comprising: [C46] 1. A device for encoding video data, comprising: means for generating a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; means for reconstructing the current picture; means for storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; means for determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; means for applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; means for using the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region; A device comprising: [C47] When executed, it causes one or more processors to receiving a bitstream comprising an encoded representation of a current picture of video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in the array that corresponds to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A computer-readable data storage medium having stored thereon instructions to cause a [C48] When executed, it causes one or more processors to generating a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a temporal index indicating a temporal layer to which the current region belongs; reconstructing the current picture; and storing, for each respective array of a plurality of arrays corresponding to different temporal layers, a set of adaptive loop filtering (ALF) parameters to be used in applying an ALF filter to samples of a region of a picture of the video data that was decoded before the current region and that is in the temporal layer corresponding to the respective array or in a temporal layer lower than the temporal layer corresponding to the respective array; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters in one of the arrays corresponding to the temporal layer to which the current region belongs; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; using the current region for prediction of a subsequent picture of the video data after applying the adaptive loop filtering to the current region; A computer-readable storage medium storing instructions to cause a

Claims

1. 1. A device for decoding video data, comprising: The device comprises: Memory, a processor coupled to the memory; wherein the processor: receiving a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a first temporal index indicating a first temporal layer to which the current region belongs; reconstructing the current picture; and storing in at least one array a set of adaptive loop filtering (ALF) parameters among a plurality of sets of ALF parameters used in applying an ALF filter to samples of a region of a picture of the video data decoded before the current region, when the set of ALF parameters is in the first temporal layer corresponding to the first temporal index; storing a set of ALF parameters among the plurality of sets of ALF parameters in the at least one array when the set of ALF parameters is in a temporal layer corresponding to a temporal index lower than the first temporal index; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters from a plurality of sets of ALF parameters stored in the at least one array; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A device configured to:

2. the number of sets of ALF parameters in the plurality of sets of ALF parameters is variable; The device of claim 1 .

3. The processor is further configured to allocate a plurality of arrays, and the plurality of sets of ALF parameters are stored in the plurality of arrays. The device of claim 1 .

4. The processor is further configured to allocate a list data structure, and the plurality of sets of ALF parameters are stored in the list data structure. The device of claim 1 .

5. The processor, configured to store the applicable set of ALF parameters for the current region by determining which set of ALF parameters to replace the applicable set of ALF parameters for the current region based on a difference between a Picture Order Counter (POC) value of the current picture and POC values ​​associated with the multiple sets of ALF parameters. The device of claim 1 .

6. when determining the applicable set of ALF parameters for the current region, a Picture Order Counter (POC) value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture; The device of claim 1 .

7. The processor, and obtaining from the bitstream a syntax element indicating an index of the selected set of ALF parameters; Determining the applicable set of ALF parameters for the current region comprises determining the selected set of ALF parameters based on the syntax elements; The format of the syntax element depends on the temporal index. The device of claim 1 .

8. determining the applicable set of ALF parameters for the current region comprises determining class merging information, but not filter coefficients, from the selected set of ALF parameters. The device of claim 1 .

9. determining the applicable set of ALF parameters for the current region comprises determining filter coefficients, but not class merging information, from the selected set of ALF parameters. The device of claim 1 .

10. The processor, and further configured to obtain from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region; determining the applicable set of ALF parameters for the current region comprises determining the applicable set of ALF parameters for the current region based on the selected set of ALF parameters and the difference. The device of claim 1 .

11. The device of claim 1 , wherein the device comprises a wireless communication device.

12. 1. A method for decoding video data, comprising the steps of: receiving a bitstream comprising an encoded representation of a current picture of the video data, where a current region of the current picture is associated with a first temporal index indicating a first temporal layer to which the current region belongs; reconstructing the current picture; and storing in at least one array a set of adaptive loop filtering (ALF) parameters among a plurality of sets of ALF parameters used in applying an ALF filter to a region of a picture of the video data that was decoded before the current region, when the set of ALF parameters is in the first temporal layer corresponding to the first temporal index; storing a set of ALF parameters among the plurality of sets of ALF parameters in the at least one array when the set of ALF parameters is in a temporal layer corresponding to a temporal index lower than the first temporal index; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters from a plurality of sets of ALF parameters stored in the at least one array; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A method comprising:

13. the number of sets of ALF parameters in the plurality of sets of ALF parameters is variable; The method of claim 12.

14. and allocating a plurality of arrays, the plurality of sets of ALF parameters being stored in the plurality of arrays. The method of claim 12.

15. and allocating a list data structure, wherein the plurality of sets of ALF parameters are stored in the list data structure. The method of claim 12.

16. and storing the applicable set of ALF parameters for the current region by determining which set of ALF parameters to replace the applicable set of ALF parameters for the current region based on a difference between a Picture Order Counter (POC) value of the current picture and POC values ​​associated with the multiple sets of ALF parameters. The method of claim 12.

17. when determining the applicable set of ALF parameters for the current region, a Picture Order Counter (POC) value associated with the applicable set of ALF parameters for the current region is required to be equal to a POC value of a reference picture in a reference picture list of the current picture; The method of claim 12.

18. determining the applicable set of ALF parameters for the current region comprises determining class merging information, but not filter coefficients, from the selected set of ALF parameters. The method of claim 12.

19. obtaining from the bitstream an indication of a difference between the selected set of ALF parameters and the applicable set of ALF parameters for the current region; determining the applicable set of ALF parameters for the current region comprises determining the applicable set of ALF parameters for the current region based on the selected set of ALF parameters and the difference. The method of claim 12.

20. A computer-readable data storage medium having instructions stored thereon that, when executed, cause a processor to: receiving a bitstream comprising an encoded representation of a current picture of video data, where a current region of the current picture is associated with a first temporal index indicating a first temporal layer to which the current region belongs; reconstructing the current picture; and storing in at least one array a set of adaptive loop filtering (ALF) parameters among a plurality of sets of ALF parameters used in applying an ALF filter to a region of a picture of the video data that was decoded before the current region, when the set of ALF parameters is in the first temporal layer corresponding to the first temporal index; storing a set of ALF parameters among the plurality of sets of ALF parameters in the at least one array when the set of ALF parameters is in a temporal layer corresponding to a temporal index lower than the first temporal index; determining an applicable set of ALF parameters for the current region based on a selected set of ALF parameters from a plurality of sets of ALF parameters stored in the at least one array; applying adaptive loop filtering to the current region based on the applicable set of ALF parameters for the current region; A computer-readable data storage medium.

Citation Information

Patent Citations

  • Adaptive parameter set for video coding

    JP2014525197A

  • Interlayer reference picture processing for encoding standard scalability

    JP2015537409A