Method and device for encoding and decoding pictures

The method and device for encoding and decoding blocks of picture portions address inefficiencies in traditional SAO filtering by allowing flexible inheritance and sorting of filter parameters, enhancing video coding efficiency and image quality.

JP7794726B2Active Publication Date: 2026-01-06INTERDIGITAL MADISON PATENT HLDG
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2022182959
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-03-30
Filing Date
2022-11-15
Publication Date
2026-01-06
Estimated Expiration
2038-05-17

AI Technical Summary

Technical Problem

Traditional video coding schemes using sample adaptive offset (SAO) filtering are inefficient due to limited candidate sets of filter parameters being coded, leading to increased bandwidth usage and reduced flexibility in parameter inheritance among coding tree units.

Method used

A method and device for decoding and encoding blocks of picture portions that allow decoding and encoding multiple candidate sets of filter parameters, including sorting and inserting these parameters based on spatial distance and usage order, and enabling flexible inheritance of SAO parameters among coding tree units.

Benefits of technology

This approach enhances the efficiency of video coding by reducing bandwidth requirements and improving the flexibility of SAO parameter inheritance, leading to better image quality and reduced computational overhead.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007794726000013
    Figure 0007794726000013
  • Figure 0007794726000014
    Figure 0007794726000014
  • Figure 0007794726000015
    Figure 0007794726000015
Patent Text Reader

Abstract

An efficient filter parameter signaling method, decoder and encoder are provided. [Solution] A decoding method includes decoding multiple candidate sets of filter parameters from a bitstream, decoding an index from the bitstream that identifies one of the candidate sets of filter parameters for a current block of a picture, decoding the current block from the bitstream, and filtering the decoded current block using the candidate set of filter parameters identified by the decoded index.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present principles relate generally to methods and devices for encoding and decoding blocks of picture portions, and more particularly to methods and devices for encoding and decoding pictures using in-loop filtering, e.g., sample adaptive offset filtering. [Background technology]

[0002] To achieve high compression efficiency, video coding schemes typically use prediction and transformation to exploit spatial and temporal redundancy within the video content. Typically, intra- or inter-prediction is used to exploit intra- or inter-frame correlation, and then the difference between a group of samples in the original image and a group of samples in the predicted image, often referred to as the residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by the inverse process corresponding to prediction, transformation, quantization, and entropy coding.

[0003] Traditional video coding schemes include an in-loop filtering process to improve the quality of the reconstructed image. In-loop filtering can include multiple filtering processes, such as deblocking filtering (DF), HEVC's sample adaptive offset (SAO) filtering, and / or adaptive loop filtering (ALF) such as the Wiener filter. These filters may be applied sequentially, in this order or in a different order. The sample adaptive offset filtering process is described in Section 8.7.3 of the document ITU-T H.265, entitled "High Efficiency Video Coding" (April 2015 edition). SAO filtering involves adding an offset to some reconstructed samples to reduce coding artifacts, such as ringing or banding artifacts. When SAO filtering is enabled (or activated), two types of filtering can be performed: edge offset (EO) type and band offset (BO) type. SAO filtering reduces sample distortion by first classifying samples in a coding tree block (CTB) into multiple categories and then adding a specific offset to each sample depending on the category. Therefore, a set of SAO parameters for each color component (e.g., an offset, possibly including an offset code and a filter type) is determined at the encoder side and coded at the coding tree unit (CTU) level, after the other syntax elements of the CTU. To save bandwidth, SAO parameters are not necessarily coded for each CTU. Therefore, a CTU can inherit its SAO parameters from neighboring CTUs. This decoding mode of SAO parameters is called merge mode. More precisely, in HEVC, a CTU can inherit its SAO parameters from the CTU located directly above it (merge up) or to its immediate left (merge left), as shown in Figure 1.In this diagram, a set of SAO parameters is effectively coded for CTUs 0, 2, and 6. The other CTUs inherit the SAO parameters. As an example, CTUs 1, 4, and 5 inherit their SAO parameters from CTU 0, CTU 3 inherits its SAO parameters from CTU 2, and CTU 7 inherits its SAO parameters from CTU 6.

[0004] Because CTUs are encoded / decoded in raster-scan order, the selection of candidate sets of SAO parameters for merging is limited. As an example, CTU 3 can only inherit its SAO parameters from CTU 2, and CTUs 1, 4, and 5 can only inherit their SAO parameters from CTU 0. CTU 7 can inherit its SAO parameters directly from CTU 6 (merge-left) or indirectly from CTU 2 (i.e., merge-up via CTU 3). Thus, although most of the CTUs in Figure 1 can only inherit their SAO parameters from a single CTU, this approach is inefficient because three sets of SAO parameters were coded in the bitstream (i.e., one set for each of CTUs 0, 2, and 6). Summary of the Invention

[0005] decoding a plurality of candidate sets of filter parameters from the bitstream; - decoding from the bitstream an index that identifies one of the candidate sets of filter parameters for a current block of the picture; - decoding the current block from the bitstream; filtering the current decoded block using a candidate set of filter parameters identified by the decoded index; A decoding method is disclosed for decoding a block of a picture portion, including:

[0006] - means for decoding a plurality of candidate sets of filter parameters from the bitstream; - means for decoding from the bitstream an index that identifies one of the candidate sets of filter parameters for a current block of the picture; means for decoding the current block from the bitstream; - filtering the current decoded block using a candidate set of filter parameters identified by the decoded index; A decoding device including the

[0007] In a variant, a communications interface configured to access the bitstream; decoding multiple candidate sets of filter parameters from the accessed bitstream; decoding from the accessed bitstream an index that identifies one of the candidate sets of filter parameters for a current block of the picture; - Decoding the current block from the accessed bitstream; - filtering the current decoded block using the candidate set of filter parameters identified by the decoded index; and at least one processor configured to:

[0008] The following embodiments apply to the decoding method and decoding device disclosed above.

[0009] In a particular embodiment, multiple candidate sets of filter parameters are decoded from the slice header of the slice to which the current block belongs.

[0010] Advantageously, the multiple candidate sets of filter parameters are decoded from a portion of the bitstream associated with a block of the picture portion that is decoded first in decoding order.

[0011] In another particular embodiment, the decoding method further includes decoding, from the bitstream, data representing a plurality of candidate sets of filter parameters.

[0012] Advantageously, the candidate sets of multiple candidate sets of filter parameters are decoded from the bitstream in the order of their use.

[0013] In certain embodiments, the maximum value of the index of the current block is an increasing function of the number of candidate sets of filter parameters used to filter blocks decoded before the current block.

[0014] In another particular embodiment, the decoding method further comprises permuting the candidate set of filter parameters before filtering the current block.

[0015] Advantageously, the candidate sets of filter parameters are sorted so that the set of filter parameters used to filter a block located immediately to the left of the current block when such a block is available is listed first.

[0016] Advantageously, the candidate sets of filter parameters are sorted such that the candidate sets of filter parameters used for filtering the blocks decoded before the current block are listed in an order that depends on the spatial distance between the blocks decoded before the current block and the current block.

[0017] Advantageously, the candidate sets of filter parameters are reordered such that at least one candidate set of filter parameters not used for filtering a block decoded before the current block is inserted before the last candidate set of filter parameters used for filtering a block decoded before the current block.

[0018] Advantageously, the candidate sets of filter parameters are reordered such that the candidate set of filter parameters not used by a block decoded before the current block and which is the first candidate to be used next is inserted at a position which is a function of the number of blocks of the picture portion to be decoded after the current block and the number of candidate sets of filter parameters not yet used by a block to be decoded before the current block.

[0019] Advantageously, the method further comprises inserting within the plurality of candidate sets of filter parameters a predefined candidate set of filter parameters, for example a candidate set of filter parameters specifying that the block is not to be filtered.

[0020] Advantageously, candidate sets of filter parameters specifying blocks that are not to be filtered are inserted between candidate sets of filter parameters at predefined positions.

[0021] In certain embodiments, the plurality of candidate sets of filter parameters include filter luma parameters, and the method further includes decoding another plurality of candidate sets of filter chroma parameters and another index identifying one of the candidate sets of filter chroma parameters, wherein filtering of the decoded luma samples of the current block is performed using the candidate set of filter luma parameters identified by the decoded index, and filtering of the decoded chroma samples of the current block is performed using the candidate set of filter chroma parameters identified by the decoded index.

[0022] - determining a reconstructed version of a current block of the picture portion, called a reconstructed block; obtaining a plurality of candidate sets of filter parameters and determining an index of a current block that identifies one of the candidate sets of filter parameters; filtering the reconstructed block using a candidate set of filter parameters from a plurality of candidate sets of filter parameters identified by an index; encoding multiple candidate sets of filter parameters, the current block, and an index within the bitstream; Also disclosed is a coding method for coding a block of a picture portion, including:

[0023] means for determining a reconstructed version of a current block of the picture portion, called a reconstructed block; - obtaining a plurality of candidate sets of filter parameters; and means for determining an index of a current block that identifies one of the candidate sets of filter parameters; - means for filtering the reconstructed block using a candidate set of filter parameters from a plurality of candidate sets of filter parameters identified by an index; - means for encoding multiple candidate sets of filter parameters, the current block, and an index within the bitstream; Also disclosed is an encoding device including:

[0024] In a variant, a communication interface configured to access the picture portion; - determining a reconstructed version of a current block of the accessed picture portion, called a reconstructed block; obtaining a plurality of candidate sets of filter parameters and determining an index of a current block that identifies one of the candidate sets of filter parameters; filtering the reconstructed block using a candidate set of filter parameters from a plurality of candidate sets of filter parameters identified by an index; Encoding multiple candidate sets of filter parameters, the current block, and an index in the bitstream and at least one processor configured to:

[0025] Also disclosed is a bitstream representing a block of a picture portion, the bitstream including coded data representing a plurality of candidate sets of filter parameters, coded data representing at least one current block of the picture portion, and coded data representing at least one index that identifies a candidate set of the candidate sets of filter parameters to be used for filtering a decoded version of the current block.

[0026] In a variant, a non-transitory processor-readable medium is disclosed having stored thereon a bitstream representing blocks of a picture portion, the bitstream including coded data representing multiple candidate sets of filter parameters, coded data representing at least one current block of the picture portion, and coded data representing at least one index identifying a candidate set of the candidate sets of filter parameters to be used for filtering a decoded version of the current block.

[0027] transmitting coded data representing a plurality of candidate sets of filter parameters; - transmitting coded data representing at least one current block of a picture portion; transmitting coded data representing at least one index that identifies a candidate set of filter parameters to be used for filtering a decoded version of the current block; A transmission method is disclosed, including:

[0028] - means for transmitting coded data representing multiple candidate sets of filter parameters; - means for transmitting coded data representative of at least one current block of a picture portion; - means for transmitting coded data representing at least one index that identifies a candidate set of filter parameters to be used to filter a decoded version of the current block; A transmitting device is disclosed that includes:

[0029] a communications interface configured to access the picture portion; - transmitting coded data representing multiple candidate sets of filter parameters; - transmitting coded data representative of at least one current block of a picture portion; transmitting coded data representing at least one index that identifies a candidate set of filter parameters to be used to filter the decoded version of the current block; and at least one processor configured to:

[0030] The following embodiments apply to the coding method, coding device, bitstream, processor-readable medium, transmission method, and transmission device disclosed above.

[0031] Advantageously, multiple candidate sets of filter parameters are coded in the slice header of the slice to which the current block belongs.

[0032] Advantageously, the plurality of candidate sets of filter parameters are coded within a portion of the bitstream associated with a block of the picture portion to be coded first in coding order.

[0033] Advantageously, the method includes encoding data representing a plurality of candidate sets of filter parameters within the bitstream.

[0034] Advantageously, the candidate sets of multiple candidate sets of filter parameters are coded in the bitstream in the order of their use.

[0035] Advantageously, the maximum value of the index of the current block is an increasing function of the number of candidate sets of filter parameters used for filtering the blocks coded before the current block.

[0036] Advantageously, the method further comprises permuting the candidate set of filter parameters before coding the current block.

[0037] Advantageously, the candidate sets of filter parameters are sorted so that the set of filter parameters used to filter a block located immediately to the left of the current block when such a block is available is listed first.

[0038] Advantageously, the candidate sets of filter parameters are sorted such that the candidate sets of filter parameters used to filter the blocks coded before the current block are listed in an order that depends on the spatial distance between the blocks coded before the current block and the current block.

[0039] Advantageously, the candidate sets of filter parameters are reordered such that at least one candidate set of filter parameters not used for filtering a block coded before the current block is inserted before the last candidate set of filter parameters used for filtering a block coded before the current block.

[0040] Advantageously, the candidate sets of filter parameters are reordered such that the candidate set of filter parameters not used by a block coded before the current block and which is the first candidate to be used next is inserted at a position which is a function of the number of blocks of the picture portion coded after the current block and the number of candidate sets of filter parameters not yet used by a block to be coded before the current block.

[0041] Advantageously, the method further comprises inserting within the plurality of candidate sets of filter parameters a predefined candidate set of filter parameters, for example a candidate set of filter parameters specifying that the block is not to be filtered.

[0042] Advantageously, candidate sets of filter parameters specifying blocks that are not to be filtered are inserted between candidate sets of filter parameters at predefined positions.

[0043] In certain embodiments, the plurality of candidate sets of filter parameters include filter luma parameters, and the method further includes obtaining another plurality of candidate sets of filter chroma parameters and determining another index of the current block that identifies one of the candidate sets of filter chroma parameters. Filtering of the reconstructed block luma samples is performed using the candidate set of filter luma parameters identified by the index, and filtering of the reconstructed block chroma samples is performed using the candidate set of filter chroma parameters identified by the other index. The method further includes encoding, in a bitstream, the plurality of candidate sets of filter luma parameters and the another plurality of candidate sets of filter chroma parameters, the current block, and the index. [Brief explanation of the drawings]

[0044] [Figure 1] FIG. 1 illustrates a CTU inheriting its SAO parameters from a neighboring CTU located above or to the left, according to the prior art. [Figure 2] FIG. 1 depicts an exemplary architecture of a transmitter configured to encode pictures in a bitstream, according to certain non-limiting embodiments. [Figure 3] 1 shows an exemplary video encoder adapted to perform an encoding method according to the present principles; [Figure 4] FIG. 1 shows an example of a pictorial diagram showing four 1D directional patterns for EO (Edge Offset) sample classification according to the prior art. [Figure 5] FIG. 1 shows an example of a pictorial diagram showing BO (Band Offset) along with the associated starting band position and offset of four consecutive bands according to the prior art. [Figure 6A] 1 is a flow diagram illustrating a method for encoding blocks of a picture portion in a bitstream, according to a particular non-limiting embodiment. [Figure 6B] 1 is a flow diagram illustrating a method for encoding blocks of a picture portion in a bitstream, according to a particular non-limiting embodiment. [Figure 6C] 1 is a flow diagram illustrating a method for encoding blocks of a picture portion in a bitstream, according to a particular non-limiting embodiment. [Figure 7] FIG. 10 shows an example pictorial diagram illustrating blocks of a picture portion referencing multiple candidate sets of filter parameters, in accordance with present principles. [Figure 8] FIG. 10 is a pictorial example of a bitstream representing blocks of a picture portion, where multiple candidate sets of filter parameters are signaled using syntax elements associated with a first block, in accordance with the present principles. [Figure 9] 1 is a flow diagram illustrating a method for obtaining multiple candidate sets of filter parameters and determining an index for each block of a picture portion. [Figure 10] 1A-1C show examples of pictorial diagrams illustrating different scans of blocks of a picture portion. [Figure 11] FIG. 1 illustrates an exemplary architecture of a receiver configured to decode pictures from a bitstream, according to certain non-limiting embodiments. [Figure 12] 1 shows an exemplary video decoder adapted to perform a decoding method in accordance with the present principles; [Figure 13A]1 is a flow diagram illustrating a method for decoding blocks of a picture portion from a bitstream, according to a particular non-limiting embodiment. [Figure 13B] 1 is a flow diagram illustrating a method for decoding blocks of a picture portion from a bitstream, according to a particular non-limiting embodiment. [Figure 13C] 1 is a flow diagram illustrating a method for decoding blocks of a picture portion from a bitstream, according to a particular non-limiting embodiment. [Figure 14] FIG. 10 shows an example pictorial diagram illustrating blocks of a picture portion referencing multiple candidate sets of filter parameters, in accordance with present principles. [Figure 15] FIG. 10 shows another pictorial example illustrating blocks of a picture portion referencing multiple candidate sets of filter parameters, in accordance with present principles. [Figure 16] FIG. 10 shows an example of a pictorial diagram showing one CTU block and filter block size when the size and shape of the filter block differs from the size and shape of the CTU. [Figure 17] FIG. 10 shows a pictorial example illustrating a filter block map when the filter block size is rectangular. DETAILED DESCRIPTION OF THE INVENTION

[0045] It should be understood that the drawings and descriptions are simplified to show elements relevant to a clear understanding of the present principles, while omitting many other elements found in a typical encoding / decoding device for clarity. Although the terms first and second may be used to describe various elements herein, it should be understood that these elements should not be limited by these terms. These terms are used only to distinguish one element from another.

[0046] A picture is an array of luma samples in monochrome formats, an array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats, or more generally, an array of three color components, such as green, red, and blue. Generally, a "block" addresses a specific area within the sample array (e.g., luma Y), and a "unit" contains co-located blocks of all color components (e.g., luma Y and possibly chroma Cb and chroma Cr). A slice is an integer number of basic coding units, such as HEVC coding tree units or H.264 macroblock units. Slices can consist of complete pictures as well as portions thereof. Each slice can contain one or more slice segments.

[0047] In the following, the words "reconstructed" and "decoded" may be used interchangeably. Usually, but not always, "reconstructed" is used on the encoder side, and "decoded" is used on the decoder side. Note that the terms "decoded" or "reconstructed" may refer to a signal where the bitstream is partially "decoded" or "reconstructed," e.g., obtained after deblocking filtering but before SAO filtering, and the reconstructed samples may differ from the final decoded output used for display. We may also use the terms "image," "picture," and "frame" interchangeably.

[0048] Various embodiments are described with respect to the HEVC standard. However, the present principles are not limited to HEVC and may be applied to other standards, recommendations, and extensions thereof, including, for example, HEVC or HEVC extensions such as Format Range Extension (RExt), Scalability Extension (SHVC), Multi-View Extension (MV-HEVC), and H.266. Various embodiments are described with respect to encoding / decoding blocks of picture portions, e.g., blocks of slices. They may be applied to encoding / decoding entire pictures or entire sequences of pictures.

[0049] Various methods are described above, each of which includes one or more steps or actions to achieve the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions can be varied or combined.

[0050] FIG. 2 illustrates an exemplary architecture of a transmitter 1000 configured to encode pictures in a bitstream, according to a particular, non-limiting embodiment.

[0051] The transmitter 1000 includes one or more processors 1005 along with internal memory 1030 (e.g., RAM, ROM, and / or EPROM), which may include, for example, a CPU, GPU, and / or DSP (an English acronym for digital signal processor). The transmitter 1000 includes one or more communication interfaces 1010 (e.g., keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data, and a power supply 1020, which may be external to the transmitter 1000. The transmitter 1000 may also include one or more network interfaces (not shown). The encoder module 1040 represents a module that may be included within a device to perform coding functions. Furthermore, as known to those skilled in the art, the encoder module 1040 may be implemented as a separate element of the transmitter 1000 or may be incorporated within the processor(s) 1005 as a combination of hardware and software.

[0052] The picture may be obtained from a source, which according to different embodiments may be, but is not limited to: - Local memory, for example, video memory, RAM, flash memory, hard disk, - storage interfaces, for example, interfaces to mass storage, ROM, optical disks, or magnetic supports; a communication interface, for example a wired interface (e.g. a bus interface, a wide area network interface, a local area network interface) or a wireless interface (e.g. an IEEE 802.11 interface or a Bluetooth interface), - Picture capture circuitry (for example, a sensor such as a CCD (ie charge coupled device) or CMOS (ie complementary metal oxide semiconductor)).

[0053] According to different embodiments, the bitstream can be sent to a destination. By way of example, the bitstream can be stored in a remote or local memory, such as a video memory or RAM, or a hard disk. In variants, the bitstream can be sent to a storage interface, such as an interface to a mass storage, a ROM, a flash memory, an optical disk, or a magnetic support, and / or transmitted via a communications interface, such as a point-to-point link, a communications bus, a point-to-multipoint link, or an interface to a broadcast network.

[0054] According to an exemplary, non-limiting embodiment, the transmitter 1000 further includes a computer program stored in the memory 1030. The computer program includes instructions that, when executed by the transmitter 1000, specifically the processor 1005, enable the transmitter 1000 to perform the encoding method described with reference to FIGS. 6A to 6C. According to a variant, the computer program is stored outside the transmitter 1000 on a non-transitory digital data support, for example, on an external storage medium such as a HDD, a CD-ROM, a DVD, a read-only and / or DVD drive, and / or a writable DVD drive, all known in the art. Thus, the transmitter 1000 includes a mechanism for reading the computer program. Furthermore, the transmitter 1000 can access one or more USB-type storage devices (e.g., "memory sticks") via a corresponding Universal Serial Bus (USB) port (not shown).

[0055] According to an exemplary, non-limiting embodiment, the transmitter 1000 may be, but is not limited to: -Mobile devices, -communication devices, -gaming devices, - a tablet (or tablet computer), -Laptop, -still camera, -Video cameras, - coding chips or coding devices / apparatus, -still image server, -Video servers (e.g. broadcast servers, video-on-demand servers, or web servers).

[0056] 3 shows an exemplary video encoder 100, e.g., an HEVC video encoder, adapted to perform the encoding methods of FIGS. 6A to 6C. The video encoder 100 is an example of a transmitter 1000 or a portion of such a transmitter 1000.

[0057] For coding purposes, a picture is typically partitioned into basic coding units, such as coding tree units (CTUs) in HEVC or macroblock units in H.264. A set of possibly contiguous basic coding units is grouped into a slice. A basic coding unit contains basic coding blocks for all color components. In HEVC, the smallest luma coding tree block (CTB) size, 16x16, corresponds to the macroblock size used in previous video coding standards. While the terms CTU and CTB are used herein to describe encoding / decoding methods and encoding / decoding devices, it should be understood that these methods and devices should not be limited by these specific terms, and that these specific terms may be expressed differently (e.g., macroblock, coding block) in other standards.

[0058] In HEVC, the CTB is the root of the quadtree partitioning into coding blocks (CBs), which are then partitioned into one or more prediction blocks (PBs), forming the root of the quadtree partitioning into transform blocks (TBs). Corresponding to coding blocks, prediction blocks, and transform blocks, coding units (CUs) include prediction units (PUs) and a tree-structured set of transform units (TUs), where a PU contains prediction information for all color components and a TU contains the residual coding syntax structure for each color component. The sizes of the CBs, PBs, and TBs for the luma component apply to the corresponding CUs, PUs, and TUs. In this application, the terms "block" or "picture block" may be used to refer to any of CTUs, CUs, PUs, TUs, CBs, PBs, and TBs. Furthermore, the terms "block" or "picture block" may be used to refer to macroblocks, partitions, and sub-blocks specified in H.264 / AVC or other video coding standards, or more generally to arrays of samples of various sizes.

[0059] In the exemplary encoder 100, pictures are coded by the encoder elements described below. A picture to be coded is processed on a CU-by-CU basis. Each CU is coded using either intra or inter mode. When a CU is coded in intra mode, the encoder elements perform intra prediction (160). In inter mode, motion estimation (175) and motion compensation (170) are performed. The encoder determines (105) whether intra or inter mode should be used to code the CU and indicates the intra / inter decision with a prediction mode flag. A residual is calculated by subtracting (110) a predicted sample block (also called a predictor) from the original picture block.

[0060] Intra mode CUs are predicted from neighboring reconstructed samples within the same slice. A set of 35 intra prediction modes is available in HEVC, including DC mode, planar mode, and 33 angular prediction modes. The intra prediction reference is reconstructed from rows and columns neighboring the current block. The reference extends across twice the block size in the horizontal and vertical directions, using available samples from previously reconstructed blocks. When an angular prediction mode is used for intra prediction, the reference samples may be copied along the direction indicated by the angular prediction mode.

[0061] The luma intra prediction modes applicable to the current block can be coded using two different options: If the applicable mode is included in a configured list of three most probable modes (MPM), the mode is signaled by an index in the MPM list; otherwise, the mode is signaled by a fixed-length binarization of the mode index. The three most probable modes are derived from the intra prediction modes of the neighboring blocks above and to the left.

[0062] For an inter CU, the corresponding coding block is further partitioned into one or more prediction blocks. Inter prediction is performed at the BP level, and the corresponding PU contains information about how inter prediction is performed.

[0063] In HEVC, the precision of the motion information for motion compensation is 1 / 4 sample for the luma component and 1 / 8 sample for the chroma components. A 7-tap or 8-tap interpolation filter is used for interpolation of fractional sample positions, i.e., 1 / 4, 1 / 2, and 3 / 4 of a full sample position both horizontally and vertically can be addressed for luma.

[0064] The residual is transformed (125) and quantized (130). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded (145) to output a bitstream. The encoder can also skip the transform and apply quantization directly to the untransformed residual signal based on 4x4 TUs. The encoder can also bypass both the transform and quantization, i.e., the residual is coded directly without the use of the transform or quantization processes. In direct PCM coding, no prediction is applied, and coding unit samples are coded directly into the bitstream.

[0065] The encoder includes a decoding loop, which decodes coded blocks to provide references for further prediction. Quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the residual. Picture blocks are reconstructed by combining the decoded residual with predicted sample blocks (155). An in-loop filter (165) is applied to the reconstructed picture, for example, to perform deblocking / sample adaptive offset (SAO) filtering to reduce coding artifacts. The filtered picture is stored in a reference picture buffer (180) and can be used as a reference for other pictures.

[0066] In HEVC, SAO filtering can be activated or deactivated at the video, slice, and CTB levels. Two SAO modes are specified: edge offset (EO) and band offset (BO). For EO, ​​sample classification is based on the local directional structure within the picture being filtered. For BO, sample classification is based on the sample value. EO or BO parameters can be explicitly coded or derived from neighbors (merge-up or merge-left). SAO can be applied to the luma and chroma components, and the SAO mode is identical for the Cb and Cr components. SAO parameters are configured separately for each color component. More precisely, a set of SAO parameters (i.e., offset, SAO type (EO, BO, and deactivated), class in the case of EO, and band position in the case of BO) is coded at the CTU level.

[0067] When SAO filtering is activated for a CTB, the samples in that CTB are classified into N C categories, for example, N C = 5 categories in HEVC. For sample s in category c(s), the sample may be adjusted to s = s + off(c(s)), where off(n) is the offset value of category n. In HEVC, offset values ​​of only four (= N C - 1) categories are decoded from the bitstream, and other offset values ​​are set to 0. For BO, the absolute offset value and sign are decoded. For EO, ​​only the absolute offset value is decoded, and the sign is inferred from the category (positive sign for categories 1 and 2, negative sign for categories 3 and 4).

[0068] Edge Offset EO uses four 1D orientation patterns for sample classification, namely horizontal, vertical, 135° diagonal, and 45° diagonal, as shown in Figure 4. In Figure 4, the label “p c" represents the current sample, and the labels "p0" and "p1" represent the two adjacent samples. Four EO classes are specified based on direction, with each EO class corresponding to one direction. Only one selected EO class per CTB that enables EO is signaled as side information in the bitstream. [Table 1] Table 1

[0069] For a given EO class, each sample inside the CTB is classified into one of five (NC=5) categories based on the local gradient. c The current sample value, labeled as "," is compared with its two neighbors along the selected 1D direction. The sample classification rules are summarized in Table 1. Categories 1 and 4 relate to local valleys and local peaks along the selected 1D pattern, respectively, and categories 2 and 3 relate to concave and convex corners along the selected 1D pattern, respectively. A positive offset is used for categories 1 and 2, and a negative offset is used for categories 3 and 4.

[0070] If the current sample value does not belong to category 1-4 (i.e., the current sample value is not identical to its two neighbors, or p0 <p c <p1もしくはp0> p c > p1), the current sample value is in category 0 and no SAO is applied (i.e., the offset is 0). For categories 1 to 4, the offset is coded. More precisely, four absolute values ​​of the offset are signaled by the encoder, one absolute value per category. The sign of the offset is not coded but is implicitly derived from the corresponding EO category.

[0071] Band Offset For BO, the sample value range (e.g., 0 to 255 in 8 bits) is evenly divided into 32 bands. One offset is added to all samples whose value belongs to the same band. In HEVC, only the offsets and starting band positions of (NC-1)=4 consecutive bands are signaled to the decoder as shown in FIG. 5. In this figure, the starting band is the 18th band, and the coded offset value is {0, 0, 2, 3}. The starting band position (i.e., index) indicates the position of the first band along with the coded offset within the 32 bands. One offset is coded for each of the (NC-1) bands, and the remaining bands have an offset equal to 0. When the starting band position is close to the last band position, the offset values ​​can correspond to discontinuous bands because the bands are managed as a circular buffer. For BO, the four signaled bands can be considered as four categories, and the remaining bands can be considered as another category. In this application, we use the terms "band" and "category" interchangeably. For BO in HEVC, the offset is coded for four bands. More precisely, the absolute values ​​of four offsets (one absolute value for each of the four bands) are signaled by the encoder. The sign of the offset is also signaled by the encoder.

[0072] 6A illustrates a flow diagram of a method for encoding blocks of a picture portion in a bitstream according to a particular, non-limiting embodiment. The picture portion can be a whole picture or a portion of it, such as a slice.

[0073] The method begins at step S100. In step S110, a transmitter 1000, eg, encoder 100, accesses a current block of a picture portion.

[0074] In step S120, the transmitter determines a reconstructed version of the accessed block, also named a reconstructed block. The reconstructed block typically includes a luma block, i.e., a block of luma samples, and a chroma block, i.e., a block of chroma samples. Determining the reconstructed block typically, but not necessarily, includes partial encoding (possibly without entropy coding) followed by decoding. The partial encoding includes subtracting a predictor from the accessed block to obtain a block of residuals, transforming the block of residuals into a block of transform coefficients, and quantizing the block of coefficients using a quantization step size to obtain a quantized block of transform coefficients. Decoding the block at the encoder typically, but not necessarily, includes dequantizing and inverse transforming the quantized block of transform coefficients to obtain a block of residuals, and adding the predictor to the block of residuals to obtain a reconstructed block. The method may loop through steps S110 and S120 over all blocks of the picture portion to obtain a reconstructed picture portion consisting of all reconstructed blocks before continuing to step S130.

[0075] In step S130, the transmitter obtains multiple candidate sets of filter parameters for both components luma and chroma, and further determines, for each block of the picture portion, an index (merge_idx) that identifies one candidate set among the multiple candidate sets to be used for filtering the reconstructed block in step S140. The set of filter parameters includes at least one filter parameter.

[0076] The candidate sets of filter parameters may be determined offline and thus obtained from memory. In a variant, the candidate sets of filter parameters are determined on the fly from the content of the picture portion by rate-distortion optimization, referred to as RDO, as illustrated by FIG. 9. In this latter case, the different variants disclosed with respect to the decoding method (e.g., the reordering of candidate sets in the list, as disclosed with respect to step S250 of FIG. 13A) also apply when determining the coding rate. For this purpose, the list of candidate sets that provides the best rate-distortion trade-off is selected. In a particular embodiment, the list of candidate sets includes a specific candidate set of filter parameters, referred to as the OFF candidate set. By way of example, the OFF candidate is placed in a predefined position, for example the second position, in the list of candidate sets.

[0077] An index is also determined for each block of the picture portion, and the index identifies one candidate set among multiple candidate sets to be used for filtering the reconstructed block. The index may also be determined by the RDO. In the case of a list reordering of candidate sets, the determination of the index is performed after the list reordering.

[0078] In step S140, the transmitter filters the reconstructed block using the candidate set of filter parameters identified by the index determined in step S130. If the index merge_idx identifies an OFF candidate, the block is not filtered in step S140. In a particular embodiment, the filter is an SAO filter, and the filtering steps disclosed with reference to FIG. 3 are applied. The method may loop through step S140 to filter all blocks of the picture portion before continuing to step S150.

[0079] In step S150, the transmitter encodes multiple candidate sets of filter parameters in the bitstream. Referring to FIG. 7, three candidate sets of filter parameters are encoded (c-0, c-1, and c-2). Each block in the right-hand picture portion of FIG. 7 inherits its filter parameters from one of the three candidate sets. In FIG. 7, blocks Blk_0, Blk_1, Blk_4, and Blk_5 have the same filter parameters, i.e., those of candidate set c-0; blocks Blk_2 and Blk_3 have the same filter parameters, i.e., those of candidate set c-1; and blocks Blk_6 and Blk_7 have the same filter parameters, i.e., those of candidate set c-2. If an OFF candidate is present in the list obtained in step S130, the OFF candidate is added to the list of candidate sets at the decoder side rather than being encoded in the bitstream. In Figure 7, for clarity, the candidate sets used are referenced by their original candidate set list order. In case of list reordering, the value of the coded index (merge_idx) may be different for two blocks even if they use the same candidate set for filtering. Conversely, due to list reordering before determining the index value, two blocks may have the same value of the coded index that corresponds to two different candidate sets.

[0080] Advantageously, the plurality of candidate sets of filter parameters are coded in the header of the slice. In a variant, the plurality of candidate sets of filter parameters are coded at the level of the first block of the picture portion (e.g., Blk_0 in Fig. 7) in coding order. As an example, in Fig. 8, three candidate sets of filter parameters are coded together with the syntax elements of the first block, Blk_0.

[0081] In another embodiment, a transmitter encodes in the bitstream a data representation of multiple candidate sets of filter parameters. As an example, the encoded data num_sao_cand_minus1 is the number of candidate sets of filter parameters to be encoded minus one. The value of num_sao_cand_minus1 is always less than the number of blocks in a picture portion, e.g., a slice, minus one, so the number of bits representing the syntax element num_sao_cand_minus1 is less than log2(the number of blocks in a picture portion minus one).

[0082] Examples of HEVC-type syntax for SAO filtering are shown in Tables 2 and 3. According to Table 2, after num_sao_cand_minus1 is coded, each candidate set of SAO parameters is coded. In the example of Table 2, the candidate set, here the OFF candidate, is inferred and not coded. If no candidate is inferred, the syntax is modified as shown in Table 3. Table 4 shows the coding of the candidate set of SAO parameters according to the present principles.

[0083] The SAO parameters are as follows:

[0084] slice_sao_luma_flag (encoded in the slice header) equal to 1 specifies that SAO is enabled for the luma component in the current slice and SAO parameters for the luma component are present, and slice_sao_luma_flag equal to 0 specifies that SAO is disabled for the luma component in the current slice and SAO parameters for the luma component are not present.

[0085] slice_sao_chroma_flag (encoded in the slice header) equal to 1 specifies that SAO is enabled for chroma components in the current slice and SAO parameters for the chroma components are present, and slice_sao_chroma_flag equal to 0 specifies that SAO is disabled for chroma components in the current slice and SAO parameters for the chroma components are not present.

[0086] sao_type_idx_luma specifies the offset type of the luma component.

[0087] sao_type_idx_chroma specifies the offset type of the chroma component.

[0088] SaoTypeIdx[cIdx][idxCand] specifies the offset type of the candidate set idxCand for color component cIdx (0 not applied, band offset, or edge offset). As an example, a value of 0 indicates that SAO filtering is not applied, a value of 1 indicates that SAO filtering is applied with band offset, and a value of 2 indicates that SAO filtering is applied with edge offset. SaoTypeIdx[cIdx][idxCand] is derived from the sao_type_idx_luma and sao_type_idx_chroma syntax elements. SaoTypeIdx[0][idxCand] is set equal to sao_type_idx_luma, and SaoTypeIdx[cIdx][idxCand] is set equal to sao_type_idx_chroma for cIdx=1 or 2.

[0089] sao_offset_abs[cIdx][idxCand][i] specifies the offset value of the i-th category of the candidate set idxCand of the color component cIdx.

[0090] sao_offset_sign[cIdx][idxCand][i] specifies the sign of the offset value of the i-th category of the candidate set idxCand of the color component cIdx.

[0091] sao_band_position[cIdx][idxCand] specifies the first band offset value of the sample range when SaoTypeIdx[cIdx][idxCand] is equal to the band offset.

[0092] sao_eo_class_luma specifies the edge offset class for the luma component.

[0093] sao_eo_class_chroma specifies the edge offset class for the chroma component. [Table 2] Table 2 [Table 3] Table 3 [Table 4] Table 4

[0094] In step S160, the transmitter encodes the current block and the index (merge_idx) determined in step S130 in the bitstream. Encoding here refers to entropy coding. As a result, the current block, more precisely the transform coefficients obtained in step S120 along with the coding parameters (e.g., coding mode, possible motion vectors, etc.), are entropy coded in the bitstream, for example, using Context-adaptive binary arithmetic coding (CABAC) or Context-adaptive variable-length coding (CAVLC). The encoding of the index merge_idx for the block with coordinates (rx, ry) is shown by Table 5 if the OFF candidate set is present in the list of candidate sets, and by Table 6 if the OFF candidate set is not present in the list of candidate sets. The index is encoded with cMax = idx_max, for example, using the Truncated Rice (TR) binarization specified in 9.3.3.2 of the HEVC standard. idx_max is determined in the same manner on the decoder side. idx_max may represent the maximum possible value of the index of a given block.

[0095] Referring to Figure 8, an index (merge_idx) is coded for each block. This index identifies one of the candidate sets of filter parameters. In one embodiment, all blocks are in merge mode, i.e., all blocks inherit their filter parameters from one of the candidate sets of filter parameters. This allows saving some bits because, for a given block, it is not necessary to code a flag indicating whether the block is in merge mode, i.e., whether the block inherits its filter parameters from a neighboring block. Specifically, it is not necessary to code the HEVC flags sao_merge_left_flag and sao_merge_up_flag, which specify that the SAO parameters are derived from the corresponding SAO parameters of a neighboring CTU.

[0096] If the OFF candidate set is not present in the list of candidate sets, merge_idx can be inferred for the first block Blk_0 and therefore not coded (see if (rx==0 and ry==0) {...} in Table 6). [Table 5] Table 5 [Table 6] Table 6

[0097] The method may loop through step S160 over all the blocks of the picture portion to encode all the blocks of the picture portion along with the corresponding indexes.

[0098] The method ends in step S180.

[0099] The present principles can be applied to SAO filters, but are not limited to this type of filter, but can also be applied to other filters where at least one set of filter parameters must be defined at the block level.

[0100] In the embodiment of FIG. 6A, a single index is coded that identifies the candidate sets of luma filter parameters and chroma filter parameters within a single list of candidate sets of filter parameters. In practice, as shown in Table 4, the candidate set of filter parameters includes parameters for the luma component (e.g., sao_offset_abs[0][idxCand][i]) and parameters for the chroma components (e.g., sao_offset_abs[1][idxCand][i]). A variation of the method of FIG. 6A is shown in FIG. 6B. In this variation, the luma and chroma components are processed separately. This mode of operation is referred to as dual mode. In dual mode, a first index and a second index are coded. The first index identifies a candidate set of luma filter parameters within the first list of candidate sets of filter luma parameters, and the second index identifies a candidate set of chroma filter parameters within the second list of candidate sets of filter chroma parameters. Steps in FIG. 6B that are identical to steps in FIG. 6A are identified by the same numbers.

[0101] The method begins at step S100. In step S110, a transmitter 1000, eg, encoder 100, accesses a current block of a picture portion.

[0102] In step S120, the transmitter determines the reconstructed versions of the accessed block, ie, the reconstructed luma block and the reconstructed chroma block(s).

[0103] In step S132, the transmitter obtains a first plurality of candidate sets of filter luma parameters and further determines a first index (merge_idx_luma) for each block of the picture portion, where the first index identifies a candidate set among the first plurality of candidate sets.

[0104] In step S134, the transmitter obtains a second plurality of candidate sets of filter chroma parameters and further determines a second index (merge_idx_chroma) for each block of the picture portion, the second index identifying a candidate set among the second plurality of candidate sets.

[0105] The variations disclosed with respect to S130 apply to both steps S132 and S134.

[0106] In step S142, the transmitter filters the reconstructed luma block using the candidate set of filter luma parameters identified by the first index.

[0107] In step S144, the transmitter filters the reconstructed chroma block(s) using the candidate set of filter chroma parameters identified by the second index.

[0108] The method may loop through steps S142 and S144 over all blocks of the picture portion to filter all blocks. The variations disclosed with respect to step S140 apply to steps S142 and S144.

[0109] In step S155, the transmitter encodes the first plurality of candidate sets of filter luma parameters and the second plurality of candidate sets of filter chroma parameters in a bitstream. A variation of S150 is applied to step S155.

[0110] Examples of HEVC type syntax for SAO filtering are shown in Tables 7 and 8. [Table 7] Table 7

[0111] num_sao_cand_1_minus1 is the number of luma candidates minus 1.

[0112] num_sao_cand_2_minus1 is the number of chroma candidates minus 1.

[0113] num_sao_cand_2_delta_abs and num_sao_cand_2_delta_sign allow the value of num_sao_cand_2_minus1 to be derived as follows: num_sao_cand_2_minus1=num_sao_cand_1_minus1+(1-2*num_sao_cand_2_delta_sign)*num_sao_cand_2_delta_abs [Table 8] Table 8

[0114] In step S165, the transmitter encodes in a bitstream the current block (more precisely, the luma and chroma components) and the first and second indices (merge_idx_luma and merge_idx_chroma) determined in steps S132 and S134. The reordering of the list of candidate sets may be performed separately for the luma and chroma components. In a variant, the reordering is common. For example, the reordering is first performed on the list of candidate sets for the luma component, and the list of candidate sets for the chroma component(s) is reordered in the same manner.

[0115] In a particular embodiment of step S160 shown in Figure 6C, a flag is coded indicating whether dual mode is enabled for the current sequence (e.g., coded in the SPS (Sequence Parameter Set)), for the current picture (e.g., coded in the PPS (Picture Parameter Set)), or for the current slice (e.g., coded in the slice header or coded in the first block of the slice). An example of such a flag is slice_dual_merge mentioned in Table 9.

[0116] In another variant, the flag indicating whether dual mode is enabled for the current sequence, current picture, or current slice is not coded, and dual mode is enabled for all slices by default.

[0117] In a variant, if dual mode is indicated as being enabled for the current sequence, current picture, or current slice, then in step S1600, another flag (dual_mode_block_enabled in Table 9) is coded indicating whether dual mode is enabled for the current block (i.e., the current block is coded before the index).

[0118] If dual mode is enabled for the current block (dual_mode_block_enabled is true or equal to 1), then in step S1610, two indices, merge_idx_1 and merge_idx_2 (one for luma and one for chroma), are coded for the current block. Otherwise, if dual_mode_block_enabled is false or equal to 0, then in step S1620, a single index identifying one candidate set in the first plurality of candidate sets and one candidate set in the second plurality of candidate sets is coded for the current block.

[0119] On the encoder side, if the luma and chroma indices are identical, the encoding method sets dual_mode_block_enabled to false. If the indices are different, the encoding method sets dual_mode_block_enabled to true. In this latter case, the value is never used for merge_idx_chroma, i.e., the value of merge_idx_luma. This information can be used to save one bit. In this case, we can code the same value for both indices, but this same value is interpreted on the decoder side as two different values, one for merge_idx_luma and one for merge_idx_chroma. More precisely, merge_idx_chroma is set equal to the decoded value incremented by one. As a result, if the decoded value corresponding to merge_idx_chroma is greater than or equal to merge_idx_luma, merge_idx_chroma is set equal to the decoded value incremented by one (as shown in Table 9).

[0120] An example of the syntax is shown in Table 9. [Table 9] Table 9

[0121] Note 1: If dual mode is enabled, the value of merge_idx_chroma must be different from merge_idx_luma.

[0122] slice_dual_merge indicates whether dual mode is enabled in the current slice.

[0123] merge_idx_1 corresponds to the first index position in the list of candidate sets after sorting for this block. If not present, sao_merge_idx_1 is inferred to be (-1).

[0124] dual_mode_block_enabled indicates whether dual mode is enabled for this block, i.e., whether the syntax element merge_idx_2 is present. If it is absent (indicating that dual mode is disabled for the current sequence, current picture, or current slice), dual_mode_block_enabled is inferred to be equal to 0.

[0125] merge_idx_2 corresponds to the second index position in the list of candidate sets after sorting for this block. If not present, sao_merge_idx_2 is inferred to be equal to sao_merge_idx_1.

[0126] When slice_sao_luma_flag is equal to 1, merge_idx_luma is an index that identifies the filter luma parameter candidate set used to filter the reconstructed luma block within the list of candidate sets.

[0127] When slice_sao_chroma_flag is equal to 1, merge_idx_chroma is an index within the list of candidate sets of filter chroma parameters that identifies the filter chroma parameter used to filter the reconstructed chroma block(s).

[0128] 9 illustrates a flow diagram of a method for obtaining multiple candidate sets of filter parameters and determining, for each block of a picture portion, an index that identifies one candidate set to be used to filter the block, according to a specific, non-limiting embodiment. Initially, the list of candidate sets of filter parameters is either empty or contains only OFF candidates.

[0129] In step S1300, the transmitter determines filter parameters for each block of the picture portion using the RDO. To this end, each block of the picture portion has the choice of selecting a candidate set of filter parameters already in the current list of candidate sets (merge mode, which involves coding an index merge_idx) or defining a new candidate set of filter parameters to be added to the current list of candidate sets (new mode, which involves coding a new set of filter parameters). If the new mode is selected, i.e., if a new candidate set is defined, the RD cost is based on the distortion reduction of the current block and the coding rate of the filter parameters. If the merge mode is selected, the RD cost is based on the distortion reduction of the current block and the coding rate of the index merge_idx. At the end of S1300, a list of candidate sets of filter parameters, called the best list of candidate sets, is obtained.

[0130] In an alternative embodiment, blocks of a picture portion may be scanned according to a different scan order to determine a current list of candidate sets of filter parameters. FIG. 10 is a pictorial example illustrating different scans of blocks of a picture portion. In this case, the RD cost is calculated for the picture portion with respect to the current scan order and compared to the best RD cost obtained so far in step S1302. If the RD cost of the current scan order is less than the best RD cost obtained so far, the current candidate set is stored as the best list of candidate sets in step S1304; otherwise, the best list of candidate sets is unchanged, and the method continues until all scan orders have been tested. Thus, at the end of the loop through the scan orders, a list of candidate sets of filter parameters, termed the best list of candidate sets, corresponding to the best RD cost trade-off is obtained for a given scan order. Finally, the best list of candidate sets is sorted in raster scan order if a best list of candidate sets was obtained for a scan order different from the raster scan order.

[0131] In a specific, non-limiting embodiment, all blocks of the picture portion are mode new, i.e., mode merging is disabled only during the determination of multiple candidate sets, i.e., during step S1300. In this case, a new candidate set of filter parameters is determined for each block of the picture portion.

[0132] In step S1306, for each block of the picture portion, an index is determined by using the best list of candidate sets obtained in the previous step to select the index that provides the best RD cost for this block in merge mode. This index refers to one of the candidate sets in the best list of candidate sets. During step S1306, all blocks of the picture portion are in merge mode. The obtained index is stored, and an RD cost is calculated for the picture portion using the index determined in step S1306. The value of the best RD cost is set to this calculated RD cost value. In this step, the best list of candidate sets remains unchanged.

[0133] In step S1308, the filter parameters of the candidate set are refined by RDO (e.g., SAO type and offset in case of SAO filtering). For this, the filter parameters of the candidate set are refined based on the distortion reduction calculated for all blocks of the picture portion using this candidate set for filtering. The region of the picture portion that uses this candidate set includes all samples of blocks that use this candidate set, i.e., all samples of blocks whose merge_idx references this candidate set.

[0134] In a variant, after refinement of the candidate set, new indices are determined for the blocks of the picture portion by the RDO using the refined candidate set. This step is identical to S1306.

[0135] At the end of step S1308, an RD cost may be calculated for the picture portion using the refined candidate set and possibly new indices determined in step S1308. This RD cost is compared to the best RD cost obtained so far. If the current RD cost is less than the best RD cost obtained so far, the refined candidate set and new indices are stored for use in the next step; otherwise, the best list of candidate sets remains unchanged, and the indices obtained before step S1308 are kept as input for the next step.

[0136] In optional step 1310, two candidate sets of filter parameters C1 and C2 corresponding to regions R1 and R2 may be merged into a single candidate set if the sum of the corresponding RD costs calculated for each region R1 and R2 (RDcost1 + RDcost2) is greater than the RD cost obtained when using a single candidate set determined for region R whose filter parameters consist of the union of R1 and R2. Region R1 uses C1, i.e., includes all samples of blocks in the picture portion whose merge_idx references C1, and R2 uses C2, i.e., includes all samples of blocks in the picture portion whose merge_idx references C2. The filter parameters of the single candidate set are determined based on the distortion reduction calculated for all blocks in both regions R. When two candidate sets are merged, the block indices are updated. In theory, all pairs of candidate sets can be tested for merging. In practice, the pair of candidate sets that provides the greatest RD cost reduction is merged, and the method can return to step S1308 to refine the filter parameters of the candidate sets. The RD cost is calculated for the picture portion and compared to the best RD cost obtained so far in step S1312. If the RD cost is less than the best RD cost obtained so far, the current candidate set with the merged candidate set and updated indexes are stored in step S1314; otherwise, the best list and indexes of the candidate sets remain unchanged, and the method can continue with a new pair of candidate sets or continue to step S1316.

[0137] In optional step S1316, we test the removal of one candidate set from the current list of candidate sets to evaluate whether the RD cost decreases. In the case of removal of one candidate set, the block index is updated. The method can then return to step S1308 to refine the filter parameters. The RD cost is calculated for the picture portion and compared to the best RD cost obtained so far in step S1318. If the RD cost is greater than the best RD cost obtained so far, the candidate set is not removed from the current list of candidate sets. In this case, the best list of candidate sets and their indexes remain unchanged. Otherwise, the current list of candidate sets and the updated indexes obtained after the removal of one candidate set are stored in step S1320. This can be done for all candidate sets except the OFF candidate at the time of inference.

[0138] In step S1322, it is determined whether to enable filtering for the picture portion based on the RD cost values ​​obtained for each component separately. In the previous steps S1300 to S1320, the RD cost was calculated taking into account all components, i.e., luma and chroma components. In step S1322, the RD cost is calculated for each component separately. If filtering a block of the picture portion using the previously determined filter parameters results in a decrease in the RD cost for a component compared to not filtering that block, filtering is enabled for the picture portion and this component. Otherwise, filtering is not enabled for this component. This determination is made for each component (i.e., independently for luma and chroma). In the specific case of SAO filtering, the flag slice_sao_luma_flag / slice_sao_chroma_flag is forced to true if filtering is enabled.

[0139] The list of candidates is sorted in order of use.

[0140] In certain non-limiting embodiments, steps S1306 through S1316 may be repeated iteratively until a stopping condition is satisfied. o No more merging of candidate sets, o No more candidate sets can be removed, o further refinement is not possible in step S1308, or The maximum number of loop iterations has been reached The order of the steps may be arranged differently. For example, S1316 may be performed before S1310 and / or S1308 may be performed before S1306. Some of the steps, such as S1310 and S1316, may be optional.

[0141] In steps S1300, S1308, S1310, and S1316, filter parameters are determined for a block or a region of blocks. In the specific case of SAO filtering, the filter parameters may be determined as disclosed in Fu et al., entitled "Sample Adaptive Offset for HEVC," published in MMSP in 2011.

[0142] First, for each type t (BO, EO_0, EO_90, EO_45, EO_130) and category c (band index for BO or half-peak, half-valley, full-peak, full-valley for EO) within SAO type t, we determine the number N of samples in region i within this category. i,t,c and the corresponding sum of the differences between the reconstructed signal and the original signal e i,t,c The corresponding offset is a i,t,c and can be estimated as follows:

number

[0143] The RD cost is obtained using the following equation, where λ is the Lagrange multiplier and D i,t,cis the distortion reduction and R i,t,c is the estimated rate (number of bits used for coding) of the corresponding offset. J i,t,c =D i,t,c +λ.R i,t,c

[0144] In the document Sample Adaptive Offset for HEVC, Fu is i,t,c But, a i,t,c , e i,t,c , and N i,t,c As a result, the offset a i,t,c The value of RD cost J i,t,c can be judged / refine to minimize

[0145] For the candidate set, the SAO parameters are the type t, category c, and offset a of the three components. i,t,c is the value of R i,t,c is the (estimated) number of bits used to code these data. Region i consists of the blocks that use this candidate set for filtering.

[0146] For blocks coded in mode merge, R i,t,c is the (estimated) number of bits used to code merge-idx. Region i is a block.

[0147] To derive the total RDcost, the distortion reduction is the sum of the distortion reductions of all candidates, and the rate is the sum of the candidate rate (coding of SAO parameter type and offset) and the block rate (coding of merge index).

[0148] FIG. 11 illustrates an exemplary architecture of a receiver 2000 configured to decode pictures from a bitstream to obtain decoded pictures, according to a particular, non-limiting embodiment.

[0149] The receiver 2000 includes one or more processors 2005, which may include, for example, a CPU, GPU, and / or DSP (an English acronym for digital signal processor) along with internal memory 2030 (e.g., RAM, ROM, and / or EPROM). The receiver 2000 includes one or more communication interfaces 2010 (e.g., keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data (e.g., decoded pictures), and a power supply 2020, which may be external to the receiver 2000. The receiver 2000 may also include one or more network interfaces (not shown). The decoder module 2040 represents a module that may be included within the device to perform decoding functions. Furthermore, as known to those skilled in the art, the decoder module 2040 may be implemented as a separate element of the receiver 2000 or may be incorporated within the processor(s) 2005 as a combination of hardware and software.

[0150] The bitstream may be obtained from a source, which according to different embodiments may be, but is not limited to: - Local memory, for example, video memory, RAM, flash memory, hard disk, - storage interfaces, for example, interfaces to mass storage, ROM, optical disks, or magnetic supports; a communication interface, for example a wired interface (e.g. a bus interface, a wide area network interface, a local area network interface) or a wireless interface (e.g. an IEEE 802.11 interface or a Bluetooth interface), - Image capture circuitry (for example, a sensor such as a CCD (ie, charge-coupled device) or a CMOS (ie, complementary metal-oxide semiconductor)).

[0151] According to different embodiments, the decoded pictures may be sent to a destination, for example a display device. By way of example, the decoded pictures are stored in a remote or local memory, for example a video memory or RAM, or a hard disk. In variants, the decoded pictures are sent to a storage interface, for example an interface to a mass storage, a ROM, a flash memory, an optical disk, or a magnetic support, and / or transmitted via a communications interface, for example a point-to-point link, a communications bus, a point-to-multipoint link, or an interface to a broadcast network.

[0152] According to a specific, non-limiting embodiment, the receiver 2000 further includes a computer program stored in the memory 2030. The computer program includes instructions that, when executed by the receiver 2000, specifically the processor 2005, enable the receiver to perform the decoding method described with reference to FIGS. 13A to 13C. According to a variant, the computer program is stored external to the receiver 2000 on a non-transitory digital data support, for example, on an external storage medium such as a hard disk drive, a CD-ROM, a DVD, a read-only and / or DVD drive, and / or a writable DVD drive, all known in the art. Thus, the receiver 2000 includes a mechanism for reading the computer program. Furthermore, the receiver 2000 can access one or more USB-type storage devices (e.g., "memory sticks") via a corresponding Universal Serial Bus (USB) port (not shown).

[0153] According to an exemplary, non-limiting embodiment, the receiver 2000 may be, but is not limited to: -Mobile devices, -communication devices, -gaming devices, -Set-top boxes, -TV sets, - a tablet (or tablet computer), -Laptop, -Video players, such as Blu-ray players, DVD players, -display, -Decoding chip or decoding device / apparatus.

[0154] 12 shows a block diagram of an exemplary video decoder 200, e.g., an HEVC video decoder, adapted to perform the decoding method of FIG. 13A or 13B. The video decoder 200 is an example of a receiver 2000 or a portion of such a receiver 2000. In the exemplary decoder 200, a bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs a decoding pass that is reciprocal to the encoding pass described in FIG. 2, which performs video decoding as part of encoding the video data.

[0155] Specifically, the decoder input includes a video bitstream, such as may be generated by video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coded information. The transform coefficients are inversely quantized (240) and inverse transformed (250) to decode the residual. The decoded residual is then combined (255) with a predicted sample block (also referred to as a predictor) to obtain a decoded / reconstructed picture block. The predicted sample block may be obtained (270) from intra prediction (260) or motion-compensated prediction (i.e., inter prediction) (275). As described above, AMVP and merge mode techniques may be used during motion compensation, which may use an interpolation filter to calculate interpolated values ​​of sub-integer samples of the reference block. An in-loop filter (265) is applied to the reconstructed picture. The in-loop filter may include a deblocking filter and an SAO filter. The filtered picture is stored in a reference picture buffer (280).

[0156] 13A illustrates a flow diagram of a method for decoding blocks of a picture portion from a bitstream according to a specific, non-limiting embodiment. The picture portion can be a whole picture or a portion thereof, e.g., a slice.

[0157] The method begins at step S200. In step S210, a receiver 2000, such as decoder 200, accesses a bitstream. In step S220, the receiver decodes multiple candidate sets of filter parameters from the bitstream. Thus, the multiple candidate sets are ordered according to the order in which they are decoded. With reference to FIG. 7, three candidate sets of filter parameters (c-0, c-1, and c-2) are decoded. Each block in the right-hand picture portion of FIG. 7 inherits its filter parameters from one of the three candidate sets. In FIG. 7, blocks Blk_0, Blk_1, Blk_4, and Blk_5 have the same filter parameters, i.e., the filter parameters of candidate set c-0; blocks Blk_2 and Blk_3 have the same filter parameters, i.e., the filter parameters of candidate set c-1; and blocks Blk_6 and Blk_7 have the same filter parameters, i.e., the filter parameters of candidate set c-2.

[0158] In a particular embodiment, a particular candidate set of filter parameters, referred to as the OFF candidate set, is added to the list of decoded candidate sets. As an example, the OFF candidate is inserted between the decoded candidate sets at a predefined position, e.g., the second position. The OFF candidate is not decoded from the bitstream. The OFF candidate is used to indicate that the block is not to be filtered.

[0159] Advantageously, multiple candidate sets of filter parameters are decoded from the slice header. In a variant, the multiple candidate sets of filter parameters are decoded at the level of the first block of the picture portion (e.g., Blk_0 in FIG. 7) in decoding order. As an example, in FIG. 8, three candidate sets of filter parameters are coded with the syntax elements of the first block Blk_0.

[0160] In another embodiment, the receiver decodes from the bitstream data representing multiple candidate sets of filter parameters. As an example, the decoded data num_sao_cand_minus1 is the number of candidate sets of filter parameters to be decoded minus 1. Since the value of num_sao_cand_minus1 is necessarily smaller than the number of blocks in a picture portion, e.g., in a slice, minus 1, the number of bits representing the syntax element num_sao_cand_minus1 is smaller than log2(number of blocks in a picture portion minus 1).

[0161] Examples of HEVC-type syntax for SAO filtering are shown in Tables 1 and 2. According to Table 2, after num_sao_cand_minus1 is decoded, each candidate set of SAO parameters is decoded by calling sao_cand(idxCand). If the OFF candidate set is not added to the list of decoded candidate sets, the syntax is modified as shown by Table 3. Table 4 shows the decoding of a set of SAO parameters according to the present principles.

[0162] The following SAO parameters are decoded: slice_sao_luma_flag, slice_sao_chroma_flag, sao_type_idx_luma, sao_type_idx_chroma, sao_offset_abs[cIdx][idxCand][i], sao_offset_sign[cIdx][idxCand][i], sao_band_position[cIdx][idxCand], sao_eo_class_luma, sao_eo_class_chroma.

[0163] In step S230, the receiver decodes from the bitstream an index (merge_idx) that identifies one of the decoded candidate sets of filter parameters for the current block of the picture. The decoding of the index merge_idx for the block with coordinates (rx, ry) is shown by Table 5 if the OFF candidate set is added to the list of decoded candidate sets, and by Table 6 if the OFF candidate set is not added to the list of decoded candidate sets.

[0164] Referring to Figure 8, an index (merge_idx) is decoded for each block. This index identifies one of the candidate sets of filter parameters. In one embodiment, all blocks are in merge mode, i.e., all blocks inherit their filter parameters from one of the candidate sets of filter parameters. This allows saving some bits, since it is not necessary to decode for a block a flag indicating whether the block is in merge mode or not, i.e., whether the block inherits its filter parameters from a neighboring block or not. In particular, it is no longer necessary to decode the HEVC flags sao_merge_left_flag and sao_merge_up_flag, which indicate that the SAO parameters are derived from the corresponding SAO parameters of a neighboring CTU.

[0165] In a particular embodiment, multiple candidate sets of filter parameters are decoded from the bitstream in the same order as their initial use. In this case, the maximum possible value of the index of a given block (idx_max) increases with the block number. More specifically, idx_max is incremented only if the merge index corresponds to a candidate set that has not yet been used by any previously decoded block. As an example, if the index of blk_0 is equal to 0, i.e., blk_0 uses the filter parameters defined in c_0, and the index of blk_1 is also equal to 0, idx_max is not incremented for blk_2. However, if the index of blk_1 is equal to 1, i.e., blk_1 uses the filter parameters defined in c_1, which is a candidate set that has not yet been used, idx_max is incremented for blk_2.

[0166] However, the information whether the value of merge_idx corresponds to a candidate that has not yet been used by a previously decoded block may not be available at the parsing stage.

[0167] Therefore, in a variant, the value of idx_max is incremented only if the parsed value of merge_idx is non-zero, since the first candidate in the list is always the one that has already been used (except for the first block). For Truncated Rice (TR) binarization, as specified in 9.3.3.2 of the HEV standard, the value of cMax is idx_max.

[0168] In a variant, the value idx_max is another increasing function of the number of candidate sets of filter parameters used for filtering the blocks decoded before the current block.

[0169] In step S240, the receiver decodes the current block from the bitstream. The decoded block typically includes a luma block and a chroma block.

[0170] Decoding a block typically, but not necessarily, involves entropy decoding the portion of the bitstream representing the block to obtain a block of transform coefficients, inverse quantizing and inverse transforming the block of transform coefficients to obtain a block of residuals, and adding a predictor to the block of residuals to obtain a decoded block. Optionally, the order of blocks S230 and S240 may be reversed.

[0171] In optional step S250, the candidate set of filter parameters is reordered before the index decoded in step S230 is used to retrieve a set of filter parameters from the list of candidate sets. In a particular embodiment, the candidate set of filter parameters is reordered each time a block of a picture portion is decoded. The reordering is accomplished before the block is filtered.

[0172] In a first embodiment, the candidate sets of filter parameters are sorted such that when a block located immediately to the left of the current block is available, the set of filter parameters used for such a block is placed in the first position in the list of candidate sets of filtering parameters.

[0173] In another embodiment, the candidate set of filter parameters is reordered so that the candidate set of filter parameters used to filter a block decoded before the current block, referred to as the previous block, is listed in an order that depends on the spatial distance of this previous block to the current block. In one embodiment, the candidate set of filter parameters is reordered so that the parameters already used by the spatially closest neighboring block appear at the top of the list of candidate set of filter parameters. If multiple blocks use the same candidate set, only the block spatially closest to the current block is considered. This can be done by creating a map of the candidate sets used. An example of dynamic reordering of the list of candidate sets of filtering parameters is shown in Table 10 in conjunction with Figure 14. The candidate set is reordered each time the current block is decoded. In this example, the next unused candidate is placed at the end of the list. The list reordering process is illustrated in Figure 15 for the decoding of the current block Blk_5. When decoding Blk_5, the last candidate set used is {c_0, c_1, c_2, c_3}. c_0 is used by Blk_0 and Blk_4, c_1 is used by Blk_1, c_2 is used by Blk_2, and c_3 is used by Blk_3. The smaller square Euclidean distance of Blk_5 to blocks Blk_4, Blk_1, Blk_2, and Blk_3 is {1,1,2,5}, respectively. For candidate set c_0, the spatial distance from Blk_4 to Blk_5 is taken into account, but the distance from Blk_0 to Blk_5 is not. This is because Blk_4 is spatially closer to Blk_5 than Blk_0. Therefore, when decoding Blk_5, the closest used candidate set is c_0 (left), c_1 (top), c_2 (top-right), and c_3 (top-right-right). Candidate c_4 has not yet been used and is therefore placed at the end of the list. [Table 10] Table 10

[0174] In a variant, at least one candidate set of filter parameters not used to filter a block decoded before the current block, e.g., the first candidate to be used next, is inserted at position pos_first_new, which is before the position of the last candidate set of filter parameters used to filter the block decoded before the current block. The value of pos_first_new is known a priori at the decoder. For example, pos_first_new can be set to 2 or coded in the bitstream. This variant is illustrated by Table 11. In this example, the next unused candidate to be used is placed at position 2 (highlighted in italics in Table 11). For Blk_5, candidate c_4 is placed at position 2 in the list, whereas in Table 10 it was placed at the end of the list. If the number of candidate sets used to filter a previously decoded block is strictly less than pos_first_new, the position of the first candidate set not used to filter a previously decoded block can be inserted before pos_first_new. A previously decoded block is a block decoded before the current block. [Table 11] Table 11

[0175] Tables 10 and 11 show the case where the OFF candidate set is not added to the list of decoded candidate sets. If the OFF candidate set is added to the list of decoded candidate sets, merge_idx is decoded rather than inferred for the first block. In this latter case, the value of idx_max is incremented by one in Tables 10 and 11.

[0176] In another embodiment, pos_first_new is a function of the number of remaining blocks to be decoded after the current block in the picture portion and the number of candidate sets that have not yet been used to filter previously decoded blocks. For example, the position pos_first_new is derived from the probability of occurrence of using a new candidate set. For example, the position pos_first_new can be equal to the integer part of P or P+1, where P=(the number of remaining blocks to be decoded) / (the number of candidate sets that have not yet been used).

[0177] In another embodiment, a particular candidate set of filter parameters, referred to as an OFF candidate, is added to the list of candidate sets but is not decoded. If a block index identifies this particular candidate, the corresponding block is not filtered.

[0178] In one example, the position pos_off of the OFF candidate is near the beginning of the list, for example, the first position in the list (pos_off=0) or the second / third position (pos_off=1 or pos_off=2). In a particular embodiment, the position pos_off of the OFF candidate in the list does not change when the list is sorted. In a variant, its position is not fixed, i.e., it follows the same sorting rules as the other candidate sets, with a restriction. The restriction is that the position of the OFF candidate in the list cannot exceed a fixed position, for example, position 2.

[0179] In step S260, the receiver filters the current decoded block using the candidate set of filter parameters identified by the decoded index. If the index merge_idx identifies an OFF candidate, the block is not filtered in step S260. In a particular embodiment, the filter is an SAO filter, and the filtering steps disclosed with reference to FIG. 3 are applied.

[0180] The method can loop through steps S230 to S260 to decode and filter all blocks in the picture portion. In a specific, non-limiting embodiment, all blocks of the picture portion can be decoded before starting filtering of these blocks. In a variant, filtering of some blocks of the picture portion can start before all blocks of the picture portion are decoded.

[0181] The method ends in step S280.

[0182] The encoding and decoding methods and apparatus according to the present principles are not limited to SAO filtering: the methods may be applied to any filter defined by filter parameters that may be applied locally, e.g., at the block level.

[0183] In the embodiment of Figure 13A, a single index is decoded that identifies a candidate set of luma filter parameters and a candidate set of chroma filter parameters within a single list of candidate sets of filter parameters. A variation of the method of Figure 13A is shown in Figure 13B. In this variation, the luma and chroma components are processed separately. This mode of operation is referred to as dual mode. In dual mode, a first index and a second index are decoded. The first index identifies a candidate set of luma filter parameters within the first list of candidate sets of filter luma parameters, and the second index identifies a candidate set of chroma filter parameters within the second list of candidate sets of filter chroma parameters.

[0184] Steps in FIG. 13B that are identical to steps in FIG. 13A are identified by the same numbers.

[0185] The method begins at step S200. In step S210, a receiver 2000, such as a decoder 200, accesses the bitstream.

[0186] In step S222, the receiver decodes a first plurality of candidate sets of filter luma parameters from the bitstream.

[0187] In step S224, the receiver decodes a second plurality of candidate sets of filter chroma parameters from the bitstream.

[0188] In step S232, the receiver decodes a first index (merge_luma_idx) that identifies one of the decoded candidate set of filter luma parameters from the bitstream for the current block of the picture.

[0189] In step S234, the receiver decodes a second index (merge_chroma_idx) that identifies one of the decoded candidate sets of filter chroma parameters from the bitstream for the current block.

[0190] In step S240, the receiver decodes the current block from the bitstream.

[0191] In optional step S252, the candidate sets of filter luma parameters are permuted before using the first index to identify a set of filter luma parameters from the list of candidate sets.

[0192] In optional step S254, the candidate sets of filter chroma parameters are permuted before using the second index to identify a set of filter chroma parameters from the list of candidate sets.

[0193] The reordering of the list of candidate sets may be performed separately for the luma component and the chroma component. In a variant, the reordering is common. For example, the reordering is first performed on the list of candidate sets for the luma component, and the list of candidate sets for the chroma component(s) is reordered in the same manner.

[0194] In step S265, the receiver filters the decoded current block using the candidate set of filter luma parameters and the candidate set of filter chroma parameters identified by the decoded first index and second index, respectively. More precisely, the decoded luma block is filtered using the candidate set of filter luma parameters identified by the first index, and the decoded chroma block(s) is filtered using the candidate set of filter chroma parameters identified by the second index.

[0195] In a particular embodiment of step S238 shown by Figure 13C, a flag is decoded indicating whether dual mode is enabled for the current sequence (e.g., decoded from SPS (Sequence Parameter Set)), for the current picture (e.g., decoded from PPS (Picture Parameter Set)), or for the current slice (e.g., decoded from the slice header or coded in the first block of the slice). An example of such a flag is slice_dual_merge mentioned in Table 9.

[0196] In another variation, the flag indicating whether dual mode is enabled for the current sequence, current picture, or current slice is not decoded, and dual mode is enabled for all slices by default.

[0197] In a variant, if dual mode is enabled for the current sequence, current picture, or current slice, a separate flag (dual_mode_block_enabled in Table 9) indicating whether dual mode is enabled for the current block is decoded in step S231 (e.g., decoded before the index).

[0198] If dual mode is enabled for the current block (dual_mode_block_enabled is true or equal to 1), two indices (one for luma and one for chroma) are decoded for the current block in steps S232 and S234. Otherwise, if dual_mode_block_enabled is false or equal to 0, a single index identifying one candidate set in the first plurality of candidate sets and one candidate set in the second plurality of candidate sets is decoded for the current block in step S235.

[0199] If dual_mode_block_enabled is true and the decoded value corresponding to merge_idx_chroma is greater than or equal to merge_idx_luma, then merge_idx_chroma is set equal to the decoded value incremented by one (see Note 1 in Table 9).

[0200] The method may loop through steps S232 to S265 to decode and filter all blocks of the picture portion.

[0201] The method ends in step S280.

[0202] In certain embodiments, the filter block size, e.g., the SAO block size, is different from the CTU size. In this case, the filter parameters are applied to a region of the reconstructed picture that is different from the CTU size. In the filtering stage, the picture or slice is subdivided into multiple regions, each corresponding to a filter block. The filter parameters are determined for each filter block and are constant over this filter block. The filter block size is the size of the smallest region over which the filter parameters cannot change. For example, if SAO filtering classifies samples of a region in the reconstructed picture into multiple categories and adds a specific offset to each sample depending on the category, the SAO block size is the size of this region. In H.265, the SAO block size is equal to the size of one CTB.

[0203] The filter block size may be specified in the slice header, picture parameter set, or sequence parameter set, and the index indicates the filter block size and shape to use for the current slice. An example of a square or rectangular filter block size is shown in Figure 16. In this example, the horizontal and vertical filter block sizes are derived from the CTU size using a right shift (division by a power of two) or a left shift (multiplication by a power of two). In Figure 16, the filter blocks are represented in gray.

[0204] In one embodiment, a flag is coded (and decoded, respectively), e.g., in the slice header, to indicate whether the filter block size is equal to the CTU size or smaller (e.g., reduced by 2 both horizontally and vertically).

[0205] In a variant, when the filter block size is not square, the derivation of the spatial distance can take into account different vertical and horizontal filter block sizes. In this case, the spatial distance is proportional to the distance expressed in units of samples. In another variant, the derivation of the spatial distance only considers the horizontal and vertical filter block positions, rather than the actual vertical and horizontal filter block sizes. In this case, the spatial distance is proportional to the distance represented in the filter block map, as shown in Figure 17. The filter block map is constructed using index values ​​that identify each candidate set of filter parameters for each filter region (or SAO filter region). The filter block map X (or Y axis) coordinate corresponds to the number of filter regions in the horizontal (or vertical) direction, independent of the SAO filter region size / shape.

[0206] The embodiments described herein may be embodied in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed only in the context of a single form of embodiment (e.g., discussed only as a method or device), the discussed feature implementation may be embodied in other forms (e.g., a program). An apparatus may be implemented in, for example, suitable hardware, software, and hardware. A method may be implemented in, for example, an apparatus such as a processor, which generally refers to processing devices including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include, for example, communication devices such as computers, cell phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

[0207] Implementations of the various processes and features described herein may be implemented in a variety of different devices or applications, particularly, for example, devices or applications. Examples of such devices include encoders, decoders, post-processors that process output from decoders, pre-processors that provide input to encoders, video coders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and other communication devices. As is clear, the devices may be mobile and even located in moving vehicles.

[0208] Furthermore, methods may be implemented by instructions executed by a processor, and such instructions (and / or data values ​​produced by an embodiment) may be stored on a processor-readable medium, such as, for example, an integrated circuit, a software carrier, or other storage device, such as, for example, a hard disk, a compact diskette ("CD"), an optical disk (e.g., a DVD, often referred to as a digital versatile disk or digital video disk), a random access memory ("RAM"), or a read-only memory ("ROM"). The instructions may form an application program tangibly embodied on the processor-readable medium. The instructions may be, for example, in hardware, firmware, software, or a combination thereof. The instructions may be found, for example, in an operating system, a separate application, or a combination of the two. Thus, a processor may be characterized, for example, as both a device configured to execute a process and a device that includes a processor-readable medium (e.g., a storage device) having instructions for executing a process. Furthermore, a processor-readable medium may store data values ​​produced by an embodiment in addition to or instead of instructions.

[0209] As will be apparent to those skilled in the art, embodiments can produce a variety of signals formatted to carry information that can be stored or transmitted, for example. Information can include, for example, instructions for performing a method or data produced by the described embodiments. For example, a signal can be formatted to carry rules for writing or reading syntax of the described embodiments as data, or to carry the actual syntax values ​​written by the described embodiments as data. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.

[0210] Multiple embodiments have been described. Nevertheless, it should be understood that various modifications may be made. For example, elements of different embodiments may be combined, supplemented, modified, or removed to produce other embodiments. Moreover, those skilled in the art will understand that other structures and processes may be substituted for the disclosed structures and processes, such that the resulting embodiments perform at least substantially the same function(s), in at least substantially the same way(s) as the disclosed embodiments, to achieve at least substantially the same result(s). Accordingly, the above and other embodiments are contemplated by this application.

Claims

1. - before decoding a block of a picture portion, decoding an information set storing only candidate sets of filter parameters; - obtaining, for a current block of said picture portion, at least one index value, each obtained index value identifying one of said candidate sets of filter parameters in said plurality of candidate sets of filter parameters, each candidate set of said plurality of filter parameters being identified by one index value; - decoding said current block; - permuting said candidate set of filter parameters; filtering said decoded current block with at least one candidate set of filter parameters identified by said at least one index value; A method comprising:

2. The method of claim 1 , wherein the information set relates to a block of the picture portion that is decoded first in decoding order.

3. 3. The method of claim 1, further comprising decoding data representing a number of candidate sets of filter parameters.

4. 2. The method of claim 1, wherein the candidate set of filter parameters is sorted such that the candidate set of filter parameters used to filter a block located immediately to the left of the current block is listed first.

5. 2. The method of claim 1, wherein the candidate set of filter parameters used to filter a block decoded before the current block are sorted such that the candidate set of filter parameters are listed in an order that depends on a spatial distance between the block decoded before the current block and the current block.

6. 2. The method of claim 1, wherein the candidate sets of filter parameters are reordered such that at least one candidate set of filter parameters not used to filter a block decoded before the current block is inserted before a last candidate set of filter parameters used to filter the block decoded before the current block.

7. 2. The method of claim 1, wherein the candidate sets of filter parameters are reordered such that a candidate set of filter parameters not used by a block decoded before the current block and that is the first candidate to be used next is inserted at a location that is a function of the number of blocks of the picture portion to decode after the current block and the number of candidate sets of filter parameters not yet used by a block decoded before the current block.

8. 3. The method of claim 1, further comprising inserting within said plurality of candidate sets of filter parameters a candidate set of filter parameters that specifies that a block is not to be filtered.

9. The method of claim 8 , wherein the candidate sets of filter parameters specifying blocks not to be filtered are inserted between the candidate sets of filter parameters at predefined positions.

10. The method of claim 1 , wherein the information set is decoded from a slice header of a slice to which the current block belongs.

11. - determining a reconstructed block corresponding to a reconstructed version of a current block of the picture portion before the in-loop filtering; - obtaining a plurality of candidate sets of filter parameters, each candidate set being identified by an index value; for at least one current block of said picture portion, - permuting said candidate set of said plurality of filter parameters; - determining at least one index value for said current block; - filtering the reconstructed block corresponding to the current block of the picture portion with a respective candidate set of filter parameters from the plurality of candidate sets of filter parameters identified by the at least one index value; - encoding an information set storing only the plurality of candidate sets of filter parameters in the video data before encoding first information representing the blocks of the picture portion in the video data, the first information including second information making it possible to identify, for each block of the picture portion corresponding to a filtered reconstructed block, each index value determined for the filtering of the reconstructed block; A method comprising:

12. The method of claim 11 , wherein the information set is coded in a slice header of a slice to which the current block belongs.

13. The method of claim 11 , wherein the information set relates to a block of the picture portion to be coded first in coding order.

14. 14. A method according to any one of claims 11 to 13, comprising encoding data representing the number of candidate sets of filter parameters.

15. - before decoding a block of a picture portion, decoding an information set that stores only a plurality of candidate sets of filter parameters, - obtaining at least one index value for a current block of said picture portion, each obtained index value identifying one of said candidate sets of filter parameters in said plurality of candidate sets of filter parameters, each candidate set of said plurality of filter parameters being identified by one index value; - Decrypting the current block, - permuting said candidate set of filter parameters; a processor configured to filter the current decoded block using at least one candidate set of filter parameters identified by said at least one index value; a decryption device including:

16. The decoding device of claim 15 , wherein the information set relates to a block of the picture portion that is decoded first in decoding order.

17. 17. The decoding device of claim 15, wherein the processor is further configured to decode data representing a number of candidate sets of filter parameters.

18. 16. The decoding device of claim 15, wherein the candidate sets of filter parameters are sorted such that the candidate set of filter parameters used to filter a block located immediately to the left of the current block is listed first.

19. 16. The decoding device of claim 15, wherein the candidate set of filter parameters used to filter a block decoded before the current block are sorted such that the candidate set of filter parameters are listed in an order that depends on a spatial distance between the block decoded before the current block and the current block.

20. 16. The decoding device of claim 15, wherein the candidate sets of filter parameters are reordered such that at least one candidate set of filter parameters not used to filter a block decoded before the current block is inserted before a last candidate set of filter parameters used to filter the block decoded before the current block.

21. 16. The decoding device of claim 15, wherein the candidate sets of filter parameters are reordered such that a candidate set of filter parameters not used by a block decoded before the current block and that is the first candidate to be used next is inserted at a location that is a function of the number of blocks of the picture portion to be decoded after the current block and the number of candidate sets of filter parameters not yet used by a block to be decoded before the current block.

22. 17. The decoding device of claim 15, wherein the processor is further configured to insert, within the plurality of candidate sets of filter parameters, a candidate set of filter parameters that specifies that a block is not to be filtered.

23. 23. The decoding device of claim 22, wherein the candidate sets of filter parameters specifying that a block is not to be filtered are inserted between the candidate sets of filter parameters at predefined positions.

24. The decoding device of claim 15 , wherein the processor is configured to decode the information set from a slice header of a slice to which the current block belongs.

25. - before the in-loop filtering, determining a reconstructed block corresponding to a reconstructed version of a current block of the picture portion, - obtaining a plurality of candidate sets of filter parameters, each candidate set being identified by an index value; for at least one current block of said picture portion, - permuting said candidate set of said plurality of filter parameters; - determining at least one index value for said current block; filtering the reconstructed block corresponding to the current block of the picture portion with a respective candidate set of filter parameters from the plurality of candidate sets of filter parameters identified by the at least one index value; a processor configured to encode, before encoding first information representative of the blocks of the picture portion in video data, an information set storing only the plurality of candidate sets of filter parameters in the video data, wherein the first information includes second information making it possible to identify, for each block of the picture portion corresponding to a filtered reconstructed block, each index value determined for the filtering of the reconstructed block. An encoding device including:

26. The encoding device of claim 25 , wherein the information set is encoded in a slice header of the slice to which the current block belongs.

27. 26. The encoding device of claim 25, wherein the information set relates to a block of the picture portion to be coded first in coding order.

28. 28. The encoding device of any one of claims 25 to 27, wherein the processor is configured to encode data representative of a number of candidate sets of filter parameters.

29. A non-transitory information storage medium storing program code instructions for implementing the method of claim 1.

30. A non-transitory information storage medium storing program code instructions for implementing the method of claim 11.

Citation Information

Patent Citations

  • Image processor and method

    JP2011044781A

  • Method and apparatus for improved loop-type filtering process

    JP2014506061A

  • Image decoder

    JP2015006001A

  • Coding tree unit (ctu) level adaptive loop filter (alf)

    JP2018509074A

  • Image filter device, decoding apparatus, encoding apparatus, and data structure

    WO2011158657A1