[FFmpeg-devel] [PATCH] Replace CLAMP_TO_SHORT with av_clip in adpcm.c
Aurelien Jacobs
aurel
Sun Aug 12 01:40:10 CEST 2007
On Sat, 11 Aug 2007 16:16:37 +0200
Aurelien Jacobs <aurel at gnuage.org> wrote:
> On Sat, 11 Aug 2007 12:02:38 +0200
> Michael Niedermayer <michaelni at gmx.at> wrote:
>
> > Hi
> >
> > On Sat, Aug 11, 2007 at 02:13:51AM -0300, Ramiro Ribeiro Polla wrote:
> > > Aurelien Jacobs wrote:
> > > > Hi,
> > > >
> > > > $subj
> > > > This fixes issue84.
> > > >
> > > >
> > >
> > > What about making av_clip_int16 in libavutil/common.h?
> > > There are many more places throughout FFmpeg where this is used.
>
> Attached is an implementation of av_clip_int16().
>
> > what is the speed/filesize effect of such a change?
>
> I benchmarked the 3 versions (original CLAMP_TO_SHORT, initial patch
> using av_clip, new patch using av_clip_int16).
>
> > speed being:
> > volatile int v=0;
> > START_TIMER
> > for(i=-40000; i<40000; i++)
> > v+= av_clip_int16(i)
> > STOP_TIMER("foober")
> > printf("%d", v);
>
> Here are the result of this speed benchmark:
>
> 6184290 dezicycles in CLAMP_TO_SHORT, 1 runs, 0 skips
> 6184370 dezicycles in av_clip, 1 runs, 0 skips
> 5235530 dezicycles in av_clip_int16, 1 runs, 0 skips
>
> av_clip_int16 is a clear winner here.
>
> > filesize being object size with --enable-small
>
> Object size of adpcm.o and ffmpeg with --enable-small:
> text data bss dec hex filename
> 14382 2164 0 16546 40a2 libavcodec/adpcm.o.orig
> 2493191 45804 1017840 3556835 3645e3 ffmpeg.orig
> 14377 2164 0 16541 409d libavcodec/adpcm.o.av_clip
> 2493175 45804 1017840 3556819 3645d3 ffmpeg.av_clip
> 14209 2164 0 16373 3ff5 libavcodec/adpcm.o.av_clip_int16
> 2492967 45804 1017840 3556611 364503 ffmpeg.av_clip_int16
>
> Once again, av_clip_int16 is a clear winner.
>
> So I will commit soon this av_clip_int16 implementation.
Applied.
Aurel
More information about the ffmpeg-devel
mailing list