GNOME Bugzilla – Bug 726161
png plugin handles interlaced png files incorrectly
Last modified: 2014-04-12 11:50:50 UTC
Created attachment 271582 [details] [review]
load interlaced png correctly
1. gst-launch-1.0 filesrc location=<a png file> ! decodebin ! imagefreze !videoconvert ! autovideosink
2. convert that file to interlaced
3. gst-launch-1.0 filesrc location=<the converted file> ! decodebin ! imagefreze !videoconvert ! autovideosink
4. note the difference
I did some digging around and eventually came up with a fix...
The speed is nearly unacceptable, but that likely the price for progressive load.
On a funny note: as for the FIXME about interlaced images, it was already in 0.10, but the images worked correctly there (likely due to png_read_image autocorrecting stuff).
Created attachment 271600 [details] [review]
a slightly improved patch
Improved previous patch a little bit - if the returned row == NULL (which happens a lot if interlaced), skip even mapping the buffer.
Created attachment 271602 [details] [review]
fixed a "typo" in the previous version
Created attachment 271603 [details] [review]
fixed another "typo"...:sigh:
Thanks for your patch. For future reference, if possible, submit the patch using git format-patch for easier merging by maintainers.
Author: Rafał Mużyło <firstname.lastname@example.org>
Date: Thu Apr 10 10:38:19 2014 -0300
pngdec: enable libpng interlaced picture handling
Makes libpng deinterlace Adam7 interlaced pictures
by default. It is the only interlaced format available
and if the picture isn't interlaced the code should behave
(In reply to comment #4)
> Thanks for your patch. For future reference, if possible, submit the patch
> using git format-patch for easier merging by maintainers.
I'm quite aware of git - especially the disk space a clone can take.
> I'm quite aware of git - especially the disk space a clone can take.
For what it's worth: if that is really a concern (the git tree is not too difficult to remove again after making the patch, after all), you can simply import a release tarball into an empty inited git directory and then make patches on top of that.