diff options
author | June McEnroe <programble@gmail.com> | 2018-02-20 11:34:02 -0500 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2018-02-20 11:34:02 -0500 |
commit | 8035bd2f3809ddae0876e7927f50e0e0af51c7d8 (patch) | |
tree | fbe54f9a5e66d72c94253e5b6425634df9e554cd | |
parent | Add pngo command line options (diff) | |
download | src-8035bd2f3809ddae0876e7927f50e0e0af51c7d8.tar.gz src-8035bd2f3809ddae0876e7927f50e0e0af51c7d8.zip |
Always use None filter for indexed or bit depth < 8
Diffstat (limited to '')
-rw-r--r-- | bin/pngo.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/bin/pngo.c b/bin/pngo.c index 47ca4d9b..88a49365 100644 --- a/bin/pngo.c +++ b/bin/pngo.c @@ -402,11 +402,19 @@ static void reconData(void) { static void filterData(void) { for (uint32_t y = header.height - 1; y < header.height; --y) { + if (header.color == INDEXED || header.depth < 8) { + *lines[y].type = NONE; + for (size_t i = lineSize() - 1; i < lineSize(); --i) { + lines[y].data[i] = filt(NONE, origBytes(y, i)); + } + continue; + } + uint8_t filter[FILTER_COUNT][lineSize()]; uint32_t heuristic[FILTER_COUNT] = { 0 }; enum Filter minType = NONE; for (enum Filter type = NONE; type < FILTER_COUNT; ++type) { - for (uint32_t i = 0; i < lineSize(); ++i) { + for (size_t i = 0; i < lineSize(); ++i) { filter[type][i] = filt(type, origBytes(y, i)); heuristic[type] += abs((int8_t)filter[type][i]); } |