[Ffmpeg-devel] [PATCH] simple internal lzo decoder

Reimar Döffinger Reimar.Doeffinger
Sat Jan 14 21:18:06 CET 2006


Hi,
On Sat, Jan 14, 2006 at 06:07:04PM +0100, Michael Niedermayer wrote:
> On Sat, Jan 14, 2006 at 04:21:44PM +0100, Reimar D?ffinger wrote:
> [...]
> > -    do {
> > -        *c->out++ = c->out[-back];
> > -    } while (--cnt);
> > +    if (back == 1)
> > +        memset(c->out, c->out[-1], cnt);
> > +    else {
> > +        int blocklen = (cnt > back) ? back : cnt;
> > +        uint8_t *start = &c->out[-back];
> > +        while (cnt > blocklen) {
> > +           memcpy(c->out, start, blocklen);
> > +           c->out += blocklen;
> > +           cnt -= blocklen;
> > +           blocklen <<= 1;
> > +        }
> > +        memcpy(c->out, start, cnt);
> > +    }
> > +    c->out += cnt;
> 
> is that faster then memmove()?

This is not what memmove does, memmove will actually do "the opposite"
by specifically starting to write at the end (as to not overwrite the to
be copied part).

Greetings,
Reimar D?ffinger





More information about the ffmpeg-devel mailing list