[FFmpeg-devel] zlib decoder

Michael Niedermayer michaelni
Wed Jul 4 02:51:25 CEST 2007


On Tue, Jul 03, 2007 at 10:40:34PM +0100, M?ns Rullg?rd wrote:
> Michael Niedermayer <michaelni at gmx.at> writes:
> > Hi
> >
> > On Mon, Jul 02, 2007 at 10:30:16PM +0100, M?ns Rullg?rd wrote:
> >> Here, at long last, is my highly anticipated zlib decoder.
> >> 
> >> It decompresses a random choice of gzip files I've tried it on
> >> correctly.  I'm sure there still are corner cases I haven't covered,
> >> though.  Any help finding, and better yet fixing, these is
> >> appreciated.
> >> 
> >> Speedwise it's on par with gunzip, with large buffer sizes even a bit
> >> faster.
> > [...]
> >> static const unsigned int len_tab[29][2] = {
> [...]
> >> static const unsigned int dist_tab[32][2] = {
> [...]
> > this fit in short
> Yes, it does.
> > are all thouse macros really needed?
> > cant this be implemented in a more readable way?
> Some could probably be made into functions.  Every place that reads
> bits needs to be reachable from the switch statement though.  I moved
> the huffman code parsing out of the main loop to make that part easier
> to read.
> Do you see any real bugs?  Optimisations?  API comments?

bugs no, optimiztaions, yes, get rid of the macros and switch :)
that is instead of 

case foobar:
ctx->state= foobar;
if(!do we have enough bits){
    "safe state" and return, we will continue from the case above

i would rather not even start decompressing if iam low on input data
but rather accumulate a minimum amount of kbytes unless its the last call
this should simplify the code alot, things like headers and huffman
tables should be guranteed to be fully available
i would just check in the 2 block loops if iam close to out of data
and if so return and then continue from there
IMHO that way there would be only 3 entry points

of course thats all just an idea and there could be issues iam missing

Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070704/54a0e25a/attachment.pgp>

More information about the ffmpeg-devel mailing list