Efficient loop filter for video codec
AssigneeCisco Technology, Inc.
InventorSteinar Midtskogen
Life of this patent
Estimating the term…
Abstract
Presented herein are techniques for filtering pixels during video coding and decoding operations. Similar operations are performed at a video encoder and a video decoder. For a target pixel in a block of a video frame represented by the encoded bit-stream, a value of the target pixel is compared with neighboring pixels to produce a plurality of comparison results. A particular offset value for the target pixel is derived based on the plurality of comparison results. The target pixel is filtered using the particular offset value. This process is performed for some or all of the pixels of blocks of a video frame.
Claims20
An apparatus comprising:
- a network interface unit configured to enable network communications;
- and
- a processor configured to:
- receive an encoded bit-stream representing video frames from an encoder;
- for a target pixel in a block of a video frame represented by the encoded bit-stream, compare a value of the target pixel with a plurality of neighboring pixels to produce a plurality of comparison results;
- determine a sum of comparison results between the value of the target pixel with a value of at least four neighboring pixels of the plurality of neighboring pixels;
- derive a particular offset value for the target pixel based on the sum of comparison results between the value of the target pixel with the values of the at least four neighboring pixels, wherein the comparison results are based on any one of:
- greater than, less than, equal to, greater than or equal to, less than or equal to, wherein each comparison result is assigned a “1” or a “0” for purposes of computing the sum;
- wherein the particular offset value is derived by performing a computation according to the equation:
- ((B>X)+(D>X)+(E>X)+(G>X)>2)−((B<X)+(D<X)+(E<X)+(G<X)>2), wherein X is the value of the target pixel and B, D, E and G are values for the at least four neighboring pixels above, to the left, to the right and below, respectively, the target pixel, wherein (Y>X) equals “1” if the value of pixel Y is greater than X and “0” otherwise, and (Y<X) equals “1” if the value of pixel Y is less than X and “0” otherwise, where Y is the value of pixels B, D, E and G, and ((B>X)+(D>X)+(E>X)+(G>X)>2) equals “1” if ((B>X)+(D>X)+(E>X)+(G>X)) is greater than 2 “0” otherwise, and ((B<X)+(D<X)+(E<X)+(G<X)>2) equals “1” if ((B<X)+(D<X)+(E<X)+(G<X)) is less than 2 and “0” otherwise;
- and
- filter the target pixel using the particular offset value.
The apparatus of claim l, wherein the processor is further configured to:
- receive a signal from the encoder that indicates whether to filter at a frame level or at a block level or at both the frame level and the block level.
An apparatus comprising:
- a network interface unit configured to enable network communications;
- and
- a processor configured to:
- for a target pixel in a block of a video frame of a plurality of video frames, compare a value of the target pixel with a plurality of neighboring pixels to produce a plurality of comparison results;
- determine a sum of comparison results between the value of the target pixel with a value of at least four neighboring pixels of the plurality of neighboring pixels;
- derive a particular offset value for the target pixel based on the sum of comparison results between the value of the target pixel with the values of the at least four neighboring pixels, wherein the comparison results are based on any one of:
- greater than, less than, equal to, greater than or equal to, less than or equal to, wherein each comparison result is assigned a “1” or a “0” for purposes of computing the sum;
- wherein the particular offset value is derived by performing a computation according to the equation:
- ((B>X)+(D>X)+(E>X)+(G>X)>2)−((B<X)+(D<X)+(E<X)+(G<X)>2), wherein X is the value of the target pixel and B, D, E and G are values for the at least four neighboring pixels above, to the left, to the right and below, respectively, the target pixel, wherein (Y>X) equals “1” if the value of pixel Y is greater than X and “0” otherwise, and (Y<X) equals “1” if the value of pixel Y is less than X and “0” otherwise, where Y is the value of pixels B, D, E and G, and ((B>X)+(D>X)+(E>X)+(G>X)>2) equals “1” if ((B>X)+(D>X)+(E>X)+(G>X)) is greater than 2“0” otherwise, and ((B<X)+(D<X)+(E<X)+(G<X)>2) equals “1” if ((B<X)+(D<X)+(E<X)+(G<X)) is less than 2 and “0” otherwise;
- filter the target pixel using the particular offset value;
- and
- generate an encoded bit-stream based on the filtering.
One or more non-transitory computer readable storage media encoded with software comprising computer executable instructions and when the software is executed operable to perform operations comprising:
- for a target pixel in a block of a video frame of a plurality of video frames, comparing a value of the target pixel with a plurality of neighboring pixels to produce a plurality of comparison results;
- determining a sum of comparison results between the value of the target pixel with a value of at least four neighboring pixels of the plurality of neighboring pixels;
- deriving a particular offset value for the target pixel based on the sum of comparison results between the value of the target pixel with the values of the at least four neighboring pixels, wherein the comparison results are based on any one of:
- greater than, less than, equal to, greater than or equal to, less than or equal to, wherein each comparison result is assigned a “1” or a “0” for purposes of computing the sum;
- wherein the particular offset value is derived by performing a computation according to the equation:
- ((B>X)+(D>X)+(E>X)+(G>X)>2)−((B<X)+(D<X)+(E<X)+(G<X)>2), wherein X is the value of the target pixel and B, D, E and G are values for the at least four neighboring pixels above, to the left, to the right and below, respectively, the target pixel, wherein (Y>X) equals “1” if the value of pixel Y is greater than X and “0” otherwise, and (Y<X) equals “1” if the value of pixel Y is less than X and “0” otherwise, where Y is the value of pixels B, D, E and G, and ((B>X)+(D>X)+(E>X)+(G>X)>2) equals “1” if ((B>X)+(D>X)+(E>X)+(G>X)) is greater than 2“0” otherwise, and ((B<X)+(D<X)+(E<X)+(G<X)>2) equals “1” if ((B<X)+(D<X)+(E<X)+(G<X)) is less than 2 and “0” otherwise;
- filtering the target pixel using the particular offset value;
- and
- generating an encoded bit-stream based on the filtering.
Dependencies are inferred from the claim text.