[FFmpeg-devel] [PATCH] lavfi: port boxblur filter from libmpcodecs

Michael Niedermayer michaelni at gmx.at
Sat Jul 9 23:33:22 CEST 2011


On Sat, Jul 09, 2011 at 06:41:44PM +0200, Stefano Sabatini wrote:
[...]
> +static inline void blur(uint8_t *dst, int dst_linesize, uint8_t *src, int src_linesize,
> +                        int w, int radius)
> +{

linesizes represent the size in bytes of a horizintal line everywhere
in ffmpeg.
here they dont, thus IMHO the original that used step is less confusing.


    
> +    int x, sum = 0;
> +    const int length = radius*2 + 1;
> +    const int inv = ((1<<16) + length/2)/length;
> +
> +    for (x = 0; x < radius; x++)
> +        sum += src[x*src_linesize]<<1;
> +    sum += src[radius*src_linesize];
> +
> +    for (x = 0; x <= radius; x++) {
> +        sum += src[(radius+x)*src_linesize] - src[(radius-x)*src_linesize];
> +        dst[x*dst_linesize] = (sum*inv + (1<<15))>>16;
> +    }
> +
> +    for (; x < w-radius; x++) {
> +        sum += src[(radius+x)*src_linesize] - src[(x-radius-1)*src_linesize];
> +        dst[x*dst_linesize] = (sum*inv + (1<<15))>>16;
> +    }
> +
> +    for (; x < w; x++) {
> +        sum += src[(2*w-radius-x-1)*src_linesize] - src[(x-radius-1)*src_linesize];
> +        dst[x*dst_linesize] = (sum*inv + (1<<15))>>16;
> +    }
> +}
> +
> +static inline void blur2(uint8_t *dst, int dst_linesize, uint8_t *src, int src_linesize,
> +                         int w, int radius, int power)
> +{
> +    uint8_t temp[2][4096];
> +    uint8_t *a = temp[0], *b = temp[1];

A Fixed 4096 looks like a stack overflow exploit here
but even if not, it may become an annoying limit

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Why not whip the teacher when the pupil misbehaves? -- Diogenes of Sinope
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110709/e7efd505/attachment.asc>


More information about the ffmpeg-devel mailing list