Re: Why is it that png files are not dependable over the long haul
J Decker <[email protected]> Wed, 1 Aug 2018 22:55:08 -0700
| Newsgroups | gmane.comp.graphics.png.devel |
|---|---|
| Message-ID | <CAA2GJqWbcbyao-3Nx2PzXUse+U7+1iPUEPVpu84QTY1o=_OALw@mail.gmail.com> |
So there is a compile option for zlib to allow small frames? That's why
firefox and chrome WORK?
chromium is #define ZLIB_VERSION "1.2.11"
but... there are changes.
#elif defined(Z_CR_PREFIX_SET)
# undef gzgetc
# define gzgetc(g) \
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \
: (Cr_z_gzgetc)(g))
state->check = 1L; /* 1L is the result of adler32() zero length
data */
several misc changes in deflate.c and crc32.c (which actually is expected
to hook into like Cr_z_crc_* )
----
Firefox has no modifications to zlib (names and type compatibility)
/* This header does prefixing as below, but with an updated set of names. */
#include "mozzconf.h"
but has mods to 1.6.34 for at least APNG and seems all the changes are in
#ifdef blocks; no existing code seems to be modified...
which is just some additional block types(?)
#ifdef PNG_READ_APNG_SUPPORTED
else if (chunk_name == png_acTL)
png_handle_acTL(png_ptr, info_ptr, length);
else if (chunk_name == png_fcTL)
png_handle_fcTL(png_ptr, info_ptr, length);
else if (chunk_name == png_fdAT)
png_handle_fdAT(png_ptr, info_ptr, length);
#endif
---------------
So firefox is really vanilla (again unless there's some compile flag/option
that is getting set) Zlib build is pretty simple.
mozilla build does enable optimzations for platforms with intrinsics (neon,
SSE...) when building PNG...
On Wed, Aug 1, 2018 at 9:25 PM Cosmin Truta <[email protected]> wrote:
> Cosmin Truta wrote:
>
> > The PNG specification (and zlib, and deflate, etc.) have strict rules
> > for error detection, but no rules for error recovery.
>
> Correction: the PNG spec does have rules for error recovery, for
> ancillary chunks (e.g. signal, and then drop the bad ancillary chunks,
> and then continue) but not for critical chunks. The error that we're
> dealing with here is inside IDAT, which is a critical chunk containing
> a critically-important, unfortunately broken zlib datastream.
>
> Also: general rules for error recovery do not specifically include
> rules for data recovery. For example: if you have a chunk with
> spurious data, it's intuitive to simply discard the spurious data. But
> other than that, where nothing is spurious, and nothing is redundant
> (as it is in our case), it is necessary to guess (because it is not
> possible to absolutely know) how to recover the data. And guessing is
> what we're doing here to solve this problem.
>
> Sincerely,
> Cosmin
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> png-mng-implement mailing list
> png-mng-implement-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/png-mng-implement
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
png-mng-implement mailing list
png-mng-implement-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/png-mng-implement