[Tracker] PATCH: Faster PNG extractor



Hi list,

I am interested in contributing some patches for Tracker, making it more suitable for In-Vehicle Infotainment-use. I am working for Pelagicore (pelagicore.com) to develop these patches. The patches will mainly concern speed and size issues, one patch is currently being developed and the rest are in a planning stage. To easily contribute these patches, while still being able to publicize purely automotive specific modifications (such as scripts containing pre-defined autogen parameters for specific environments), I have opened a GitHub repository, which is called tracker-ivi. The aim here is to keep the GitHub repository very up-to-date with the git.gnome.org repository, diverge as little as possible, and to submit all applicable patches from tracker-ivi to the Tracker mainline.

To start with, I would like to submit a patch containing a new extractor for PNG files, which is faster than the original.

The reason behind the speed increase with this extractor compared to the old extractor is that the new extractor seek()s out the metadata fields in the PNG, rather than traverse the entire file to find them, as the old extractor did (using libpng). The length of the seek() to find the metadata fields is calculated based on the length of the first IDAT field, which means it is important that the IDAT fields are uniform in length. In theory it is possible to have variable length IDAT fields, but I have never seen this in practice.

My idea is to insert this new extractor with a slightly higher priority than the PNG extractor (the PNG extractor currently has prio 10 due to the .rules-file numbering, "PNG-faster" has 09). If PNG-faster fails to read the PNG file (which should happen if, for instance the IDAT chunks are variable sized), the extractor will fail and the regular PNG extractor can re-try the extraction.

The PNG-faster extractor supports iTXt (UTF-8 chunks) and tEXt (Latin-1) chunks. It does not support zTXt (zlib compressed Latin-1), as I have never seen this used. Adding zTXt support would be trivial however.

The commit containing the patch is available here: https://github.com/Pelagicore/tracker-ivi/commit/a3fee45609a6aebdf268b459914bc55d26616b6a

The URL for the GitHub repository is: https://github.com/Pelagicore/tracker-ivi

Please let me know if this extractor is interesting & fit for inclusion into Tracker, or what needs to be fixed for it to be included.

Regards,

Jonatan Pålsson


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]