Commit Graph

12 Commits

Author SHA1 Message Date
Jean-Philippe Andre 565a4da138 ETC1/2: Fix clang warnings
Unused functions.
I keep them around for reference, for whoever wants to work on
improving the encoder.

There are still some warnings. Clang is just crazy.
2015-04-21 20:11:02 +09:00
Mike Blumenkrantz 5375e154fe fix config.h inclusion across the tree 2014-09-23 15:56:46 -04:00
Jean-Philippe Andre 37431fb1a1 Evas ETC2: Remove some useless operations
No need to write out alpha in a RGBA color when only
the RGB values are used by the distance op.

Also, add a comment on the byte order. Maybe I'm wrong
but I believe the operations are fine wrt. byte order :)
2014-06-23 11:20:13 +09:00
Jean-Philippe ANDRE 60895e1a14 Evas ETC2: Remove some C99/GCC extensions code
There is still some C99 code in the file in the form of
  for (int k = 0; ...)

If there's a strong requirement not to use this form, I'll
change it, otherwise I find this specific code style more
readable (k is local to this iteration).

This patch and the previous one even give a ~10% speedup
on the encoding time. Sweet :)
2014-06-22 18:59:52 +09:00
Jean-Philippe ANDRE 4d35471e8e Evas ETC2: Fix horrible warnings in etc2_encoder
So I guess always compiling with debug flags and no
optimizations isn't the best idea as some really bad warnings
can be hidden. Thanks raster for the notice.
2014-06-22 18:57:41 +09:00
Jean-Philippe Andre c79a8b43b6 Evas: Fix ETC2 encoding with RGB images (no alpha) 2014-06-13 15:59:23 +09:00
Jean-Philippe Andre d6e6d001a3 Evas ETC2: Clean up debug code
Disable flag and disable unused function if DEBUG is not set.
2014-06-10 14:58:28 +09:00
Jean-Philippe Andre 878641f6dc Evas ETC2: Fix alpha encoding with high quality
Use an exhaustive search when encoding alpha at high quality.
This can be very slow if we don't have a perfect solution.
2014-06-10 14:58:28 +09:00
Jean-Philippe Andre 90f58b2a57 Evas ETC2: Implement Planar mode
And this completes the first version of this ETC2 encoder.
It's pretty slow and not exhaustive.

Color selection for T and H modes could probably be optimized
for both performance and quality. As for the planar mode, there
is no selection to speak of, as we just take the values of the
pixels directly (no scan, very fast)

On a sample image with lots of blue, white and noisy gradients,
T+H+Planar mode boost the PNSR from 41.22dB to 42.01dB.
Without planar mode, the PSNR was 41.94dB.

@feature
2014-06-10 14:58:28 +09:00
Jean-Philippe Andre 173b6bebf9 Evas ETC2: Implement H mode encoding
And we gain some more decibels of PSNR :)

@feature
2014-06-10 14:58:28 +09:00
Jean-Philippe Andre 22c5632256 Evas ETC2: Implement T mode encoding
In this mode, two colors are encoded in RGB444, a multiplier and
distance (index) are selected. Two extra colors are extrapolated
from the main base color. As in ETC1 we have 4 base colors to paint
our block.

@feature
2014-06-10 14:58:27 +09:00
Jean-Philippe Andre 6fc4c1da74 Evas ETC2: Add ETC2 encoder skeletton
Implement Alpha encoding, brute force way, but doesn't scan
all possibilities either (only based on average alpha).

RGB encoding is still entirely left to the rg-etc1 encoder.
T, H and Planar mode will come in the next commits.

@feature: Implement an ETC2 encoder from scratch for RGB8 and RGBA8
2014-06-10 14:58:27 +09:00