[FFmpeg-devel] Trans.: a64multienc.c and drawutils.c optimisations

yann.lepetitcorps at free.fr yann.lepetitcorps at free.fr
Tue Dec 27 22:59:03 CET 2011


I think that needed modifications are in this attachment

How can I automaticaly replace tabs with the good group of spaces with git (or
gedit) ?

I think to make tomorrow some modifications into the libavcodec/admpc.c file at
the adpcm_ima_qt_expand_nibble() func
(the 3x diff successives test/additions can certainly to be factorised via a
multiplication of step with an entry on a table indexed by nibble)


@+
Yannoo

Selon Michael Niedermayer <michaelni at gmx.at>:

> On Tue, Dec 27, 2011 at 09:39:19PM +0100, yann.lepetitcorps at free.fr wrote:
> > The same thing but with a very little optimization that economize one
> > multiplication into the memcpy on the memset_sized() func in drawutils.C
> >
> > @+
> > Yannoo
> >
> > Selon yann.lepetitcorps at free.fr:
> >
> > > I have download the FFMPEG git into my linux box, make modifications,
> > > compiled
> > > the new version and generated the diff file in attachment.
> > >
> > >
> > >
> > > @+
> > > Yannoo
> > >
> > >
> > > Selon yann.lepetitcorps at free.fr:
> > >
> > > > No problem :)
> > > >
> > > > => I download the current git head on my linux box and work only with
> it
> > > >    (instead the 0.9 version that I have previously used on my Apple
> box)
> > > >
> > > > @+
> > > > Yannoo
> > > >
> > > > Selon Carl Eugen Hoyos <cehoyos at ag.or.at>:
> > > >
> > > > >  <yann.lepetitcorps <at> free.fr> writes:
> > > > >
> > > > > > I have begin to analyse FFMPEG 0.9 sources and think to has found
> somes
> > > > > areas
> > > > >
> > > > > Please do not work on a release, only develop with current git head!
> > > > >
> > > > > > that can to be a little optimised such as in a64multienc.c or
> > > drawutils.c
> > > > >
> > > > > If you feel unable to use git send-email (which is the preferred way
> of
> > > > > sending
> > > > > patches), please at least do "git diff >patchfile.diff" and send the
> > > result
> > > > > as
> > > > > an attachment.
> > > > >
> > > > > Carl Eugen
> > > > >
> > > > > _______________________________________________
> > > > > ffmpeg-devel mailing list
> > > > > ffmpeg-devel at ffmpeg.org
> > > > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > ffmpeg-devel mailing list
> > > > ffmpeg-devel at ffmpeg.org
> > > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > > >
> > >
> > >
> > >
> >
> >
>
> >  libavcodec/a64multienc.c |    5 ++-
> >  libavfilter/drawutils.c  |   61
> ++++++++++++++++++++++++++++++++++++++++++++++-
> >  libavfilter/drawutils.h  |    6 ++++
> >  3 files changed, 69 insertions(+), 3 deletions(-)
> > fb09107371ee746b3b3a4ae5a576ad70fc6e71ec  ylp_27dec2011_21h19.diff
> > diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c
> > index 5a665d0..b0e7b14 100644
> > --- a/libavcodec/a64multienc.c
> > +++ b/libavcodec/a64multienc.c
> > @@ -49,15 +49,16 @@ static void to_meta_with_crop(AVCodecContext *avctx,
> AVFrame *p, int *dest)
> >      int height = FFMIN(avctx->height, C64YRES);
> >      int width  = FFMIN(avctx->width , C64XRES);
> >      uint8_t *src = p->data[0];
> > +    uint8_t *src2;
> >
> >      for (blocky = 0; blocky < C64YRES; blocky += 8) {
> >          for (blockx = 0; blockx < C64XRES; blockx += 8) {
> >              for (y = blocky; y < blocky + 8 && y < C64YRES; y++) {
> > +                src2 = src + y * p->linesize[0];
> >                  for (x = blockx; x < blockx + 8 && x < C64XRES; x += 2) {
> >                      if(x < width && y < height) {
> >                          /* build average over 2 pixels */
> > -                        luma = (src[(x + 0 + y * p->linesize[0])] +
> > -                                src[(x + 1 + y * p->linesize[0])]) / 2;
> > +                        luma  = ((int)(src2[x]) + (int)(src2[x+1])) / 2;
>
> the casts are unneeded
>
>
>
> >                          /* write blocks as linear data now so they are
> suitable for elbg */
> >                          dest[0] = luma;
> >                      }
> > diff --git a/libavfilter/drawutils.c b/libavfilter/drawutils.c
> > index bf308a1..055cfd0 100644
> > --- a/libavfilter/drawutils.c
> > +++ b/libavfilter/drawutils.c
> > @@ -38,6 +38,46 @@ int ff_fill_rgba_map(uint8_t *rgba_map, enum PixelFormat
> pix_fmt)
> >      return 0;
> >  }
> >
> > +void memset8(char *dst, char *val, int num)
> > +{
> > +        memset(dst, *val, num);
> > +}
>
> should be static or needs a ff_ prefix to avoid namespace conflicts
> with other libs
> also if it has a ff_ prefix / is intended to be used from outside
> char val seems easier to use than char *val
>
>
> > +
> > +void memset16(short int *dst, short int *val, int num)
> > +{
> > +        int i;
> > +        short int  set16 = *val;
>
> should be int16_t, as short is not guranteed to be 16bit
>
>
> > +
> > +        for(i=0;i<num;i++)
> > +                *dst++ = set16;
> > +}
> > +
> > +void memset32(int *dst, int *val, int num)
> > +{
> > +        int i;
> > +        int set32 = *val;
>
> int32_t
>
>
> > +
> > +        for(i=0;i<num;i++)
> > +                *dst++ = set32;
> > +}
> > +
> > +
> > +void memset24(char *dst, char *src, int num)
> > +{
> > +        int i;
> > +
> > +        for (i = 0; i < num; i++)
> > +            memcpy(dst + i * 3, src, 3);
> > +}
> > +
> > +void memset_sized(char *dst, char *src, int num, int stepsize)
> > +{
> > +        int i;
> > +
> > +        for (i = 0; i < num; i++, dst += stepsize)
> > +            memcpy(dst, src, stepsize);
> > +}
> > +
> >  int ff_fill_line_with_color(uint8_t *line[4], int pixel_step[4], int w,
> uint8_t dst_color[4],
> >                              enum PixelFormat pix_fmt, uint8_t
> rgba_color[4],
> >                              int *is_packed_rgba, uint8_t rgba_map_ptr[4])
>
> > @@ -55,8 +95,27 @@ int ff_fill_line_with_color(uint8_t *line[4], int
> pixel_step[4], int w, uint8_t
> >              dst_color[rgba_map[i]] = rgba_color[i];
> >
> >          line[0] = av_malloc(w * pixel_step[0]);
> > -        for (i = 0; i < w; i++)
> > +        /* for (i = 0; i < w; i++)
> >              memcpy(line[0] + i * pixel_step[0], dst_color, pixel_step[0]);
> > +	*/
>
> that can be removed entirely
>
>
> > +	switch(av_get_bits_per_pixel(pix_desc))
>
> tabs are forbidden in git
>
>
>
> thanks
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> If you think the mosad wants you dead since a long time then you are either
> wrong or dead since a long time.
>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: ylp_27dec2011_22h22.diff
Type: text/x-patch
Size: 4155 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20111227/74755788/attachment.bin>


More information about the ffmpeg-devel mailing list