Commit graph

164 commits

Author SHA1 Message Date
Josh Holmer
7f9ad263ec Refactor code into modules 2016-07-14 11:10:10 -04:00
Josh Holmer
332c27c7d0 Significant refactoring using itertools 2016-07-14 08:10:25 -04:00
Josh Holmer
0f790a1604 Update dependencies 2016-07-13 18:59:20 -04:00
Joshua Holmer
40dff6d0cf Add cargo caching to travis 2016-06-15 13:09:01 -04:00
Joshua Holmer
d359fed17a Update dependencies 2016-06-14 11:41:48 -04:00
Joshua Holmer
2659776bd5 Fix issue for interlacing images smaller than 4px
Fixes #42
2016-05-25 23:10:44 -04:00
Joshua Holmer
aff99f2f7c Merge branch 'master' of github.com:shssoichiro/oxipng 2016-05-13 22:12:43 -04:00
Joshua Holmer
223995b551 Version 0.8.1 [ci skip] 2016-05-13 22:12:27 -04:00
Joshua Holmer
ecc19ad5cd Fix bug where interlaced images with certain widths would fail to optimize 2016-05-13 22:11:45 -04:00
Joshua Holmer
5031f236c8 Revert image crate to 0.8.0 to fix compatibility with rustc 1.6.0 2016-05-13 20:30:06 -04:00
Joshua Holmer
1d39714b0f Fix several new clippy lints 2016-05-13 10:46:16 -04:00
Joshua Holmer
0ddd875c84 Document default values for Options struct [ci skip] 2016-05-06 10:10:34 -04:00
Joshua Holmer
8358f4f72d Version 0.8.0 [ci skip] 2016-05-06 10:00:02 -04:00
Joshua Holmer
566675f0b6 Improve documentation of private API [ci skip] 2016-05-05 15:44:03 -04:00
Joshua Holmer
0fa9cefb7d Check-in the Cargo.lock file to ensure build reproducibility 2016-05-05 13:52:25 -04:00
Joshua Holmer
042e3e2563 Fix new warnings from clippy 2016-05-05 13:40:24 -04:00
Josh Holmer
283589ec8e Merge pull request #41 from tobz/documentation/optimize-in-memory
Add documentation to new public methods for optimizing in-memory.
2016-05-05 13:39:51 -04:00
Toby Lawrence
bc7de9b734 Add documentation to new public methods for optimizing in-memory. 2016-05-05 12:21:31 -04:00
Josh Holmer
def47c9c96 Update Changelog [ci skip] 2016-05-05 08:14:34 -04:00
Josh Holmer
f92986123c Merge pull request #40 from tobz/feature/support-in-memory-optimization
Add support for optimizing in-memory PNGs.
2016-05-05 08:13:12 -04:00
Toby Lawrence
2573b20966 Add support for optimizing PNGs loaded in-memory.
In keeping with being able to use oxipng as a library, this adds a way
for developers to optimize a PNG already in memory, instead of requiring
  it to exist on disk first.
2016-05-05 07:54:52 -04:00
Joshua Holmer
193e6496bd Version 0.7.0 2016-05-04 10:41:29 -04:00
Joshua Holmer
3a39b13acf Add option for changing number of threads at runtime
Closes #39
2016-05-04 10:37:45 -04:00
Joshua Holmer
e4cd9b85e7 Move default Options into impl Default in library 2016-05-04 10:09:26 -04:00
Joshua Holmer
05f0e69e98 Add information about library usage to README [ci skip] 2016-05-04 09:58:29 -04:00
Joshua Holmer
a84611c9ae Replace appropriate uses of assert! with assert_eq! in test suite 2016-05-03 08:03:25 -04:00
Joshua Holmer
aaf443fca7 Similarly optimize unfilter mode 2
Unfilter mode 1 can't benefit from this optimization
because it modifies and reads from the same line of data
2016-05-02 15:58:45 -04:00
Joshua Holmer
3652a69255 Optimize filter mode 1 2016-05-02 15:48:21 -04:00
Joshua Holmer
32c35596ea 25% speed improvement in filter mode 2 by using iter instead of for 2016-05-02 14:49:30 -04:00
Joshua Holmer
c0fddfe4e6 Minor compression improvement in interlaced images 2016-05-02 13:54:04 -04:00
Joshua Holmer
15e41c9c6d Fix benchmarks broken by adding --fix 2016-05-02 13:20:27 -04:00
Joshua Holmer
b8116dd3dd Version 0.6.0 [ci skip] 2016-05-02 09:40:37 -04:00
Joshua Holmer
a4a5953786 Implement --fix to fix CRC errors in PNG block headers
Closes #5
2016-05-02 09:25:48 -04:00
Joshua Holmer
08eb44ec1a Partially implement --preserve
Needs better implementation once stable Rust improves,
or perhaps see if there's a crate for this

Reference #4 but keep open
2016-04-29 23:37:27 -04:00
Joshua Holmer
73d477924e Merge branch 'master' of github.com:shssoichiro/oxipng 2016-04-22 13:37:41 -04:00
Joshua Holmer
2c3e35d8bb Moderately improve cyclomatic complexity 2016-04-22 13:31:59 -04:00
Joshua Holmer
fac83c023d Fix issue where output directory would not be created if it did not exist 2016-04-22 13:31:33 -04:00
Joshua Holmer
f3b8665278 Use miniz for compression strategies 0 and 1
Worst case (RGB/A images) it performs similarly to zlib
Best case (Indexed images) it performs 1-2 orders of magnitude better

Zlib is kept for strategies 2 and 3, where it performs an order of
magnitude better than miniz
2016-04-20 23:14:41 -04:00
Joshua Holmer
1089754436 Add inflate bench for testing different implementations [ci skip] 2016-04-20 22:49:47 -04:00
Joshua Holmer
f8deac1cea Update generated documentation [ci skip] 2016-04-20 15:59:23 -04:00
Joshua Holmer
11308959fa Version 0.5.0 [ci skip] 2016-04-20 15:51:14 -04:00
Joshua Holmer
b67083da0c Revise benchmarks to be more direct [ci skip]
Now actually runs through the whole suite without file locking issues.

Initial results:

     Running target/release/deflate-032c8bb6310daa8e

running 20 tests
test bench_deflate_16_bits_strategy_0 ... bench:  34,772,065 ns/iter (+/- 3,927,686)
test bench_deflate_16_bits_strategy_1 ... bench:  35,829,570 ns/iter (+/- 1,683,748)
test bench_deflate_16_bits_strategy_2 ... bench:  12,428,913 ns/iter (+/- 1,005,308)
test bench_deflate_16_bits_strategy_3 ... bench:  13,247,589 ns/iter (+/- 1,026,688)
test bench_deflate_1_bits_strategy_0  ... bench:     232,037 ns/iter (+/- 5,818)
test bench_deflate_1_bits_strategy_1  ... bench:     235,463 ns/iter (+/- 25,972)
test bench_deflate_1_bits_strategy_2  ... bench:     168,770 ns/iter (+/- 20,463)
test bench_deflate_1_bits_strategy_3  ... bench:      32,254 ns/iter (+/- 1,034)
test bench_deflate_2_bits_strategy_0  ... bench:     537,638 ns/iter (+/- 27,704)
test bench_deflate_2_bits_strategy_1  ... bench:     532,766 ns/iter (+/- 26,777)
test bench_deflate_2_bits_strategy_2  ... bench:     313,566 ns/iter (+/- 29,872)
test bench_deflate_2_bits_strategy_3  ... bench:      44,436 ns/iter (+/- 3,554)
test bench_deflate_4_bits_strategy_0  ... bench:   2,259,173 ns/iter (+/- 236,430)
test bench_deflate_4_bits_strategy_1  ... bench:   2,259,694 ns/iter (+/- 254,753)
test bench_deflate_4_bits_strategy_2  ... bench:     731,383 ns/iter (+/- 21,518)
test bench_deflate_4_bits_strategy_3  ... bench:     193,049 ns/iter (+/- 24,552)
test bench_deflate_8_bits_strategy_0  ... bench:  26,799,023 ns/iter (+/- 2,322,131)
test bench_deflate_8_bits_strategy_1  ... bench:  26,986,947 ns/iter (+/- 3,026,671)
test bench_deflate_8_bits_strategy_2  ... bench:   5,844,986 ns/iter (+/- 547,120)
test bench_deflate_8_bits_strategy_3  ... bench:   5,401,345 ns/iter (+/- 592,391)

test result: ok. 0 passed; 0 failed; 0 ignored; 20 measured

     Running target/release/filters-4cdef7ed188d5a43

running 30 tests
test bench_16_bits_filter_0 ... bench:   1,201,636 ns/iter (+/- 122,922)
test bench_16_bits_filter_1 ... bench:   2,515,136 ns/iter (+/- 351,661)
test bench_16_bits_filter_2 ... bench:   2,536,454 ns/iter (+/- 595,207)
test bench_16_bits_filter_3 ... bench:   2,555,551 ns/iter (+/- 519,059)
test bench_16_bits_filter_4 ... bench:   6,413,073 ns/iter (+/- 505,450)
test bench_16_bits_filter_5 ... bench:  27,124,584 ns/iter (+/- 3,171,162)
test bench_1_bits_filter_0  ... bench:      55,761 ns/iter (+/- 19,412)
test bench_1_bits_filter_1  ... bench:      80,915 ns/iter (+/- 13,928)
test bench_1_bits_filter_2  ... bench:      80,479 ns/iter (+/- 9,268)
test bench_1_bits_filter_3  ... bench:      86,080 ns/iter (+/- 47,504)
test bench_1_bits_filter_4  ... bench:     154,723 ns/iter (+/- 3,932)
test bench_1_bits_filter_5  ... bench:     805,938 ns/iter (+/- 118,853)
test bench_2_bits_filter_0  ... bench:      74,940 ns/iter (+/- 14,205)
test bench_2_bits_filter_1  ... bench:     126,821 ns/iter (+/- 22,497)
test bench_2_bits_filter_2  ... bench:     126,445 ns/iter (+/- 17,852)
test bench_2_bits_filter_3  ... bench:     129,264 ns/iter (+/- 52,772)
test bench_2_bits_filter_4  ... bench:     267,978 ns/iter (+/- 7,064)
test bench_2_bits_filter_5  ... bench:   1,354,604 ns/iter (+/- 206,764)
test bench_4_bits_filter_0  ... bench:     119,468 ns/iter (+/- 13,806)
test bench_4_bits_filter_1  ... bench:     219,357 ns/iter (+/- 34,642)
test bench_4_bits_filter_2  ... bench:     218,588 ns/iter (+/- 11,280)
test bench_4_bits_filter_3  ... bench:     222,955 ns/iter (+/- 60,112)
test bench_4_bits_filter_4  ... bench:     516,987 ns/iter (+/- 33,155)
test bench_4_bits_filter_5  ... bench:   2,424,414 ns/iter (+/- 244,989)
test bench_8_bits_filter_0  ... bench:     551,986 ns/iter (+/- 89,602)
test bench_8_bits_filter_1  ... bench:   1,234,364 ns/iter (+/- 307,291)
test bench_8_bits_filter_2  ... bench:   1,150,679 ns/iter (+/- 35,718)
test bench_8_bits_filter_3  ... bench:   1,161,331 ns/iter (+/- 124,379)
test bench_8_bits_filter_4  ... bench:   3,704,653 ns/iter (+/- 659,212)
test bench_8_bits_filter_5  ... bench:  13,863,376 ns/iter (+/- 2,134,142)

test result: ok. 0 passed; 0 failed; 0 ignored; 30 measured

     Running target/release/interlacing-3a5b64514b03c920

running 10 tests
test bench_deinterlace_16_bits ... bench: 144,075,159 ns/iter (+/- 3,388,596)
test bench_deinterlace_1_bits  ... bench:   2,848,418 ns/iter (+/- 480,685)
test bench_deinterlace_2_bits  ... bench:   5,608,614 ns/iter (+/- 224,235)
test bench_deinterlace_4_bits  ... bench:  11,114,761 ns/iter (+/- 943,506)
test bench_deinterlace_8_bits  ... bench:  71,918,245 ns/iter (+/- 5,374,438)
test bench_interlace_16_bits   ... bench: 186,786,301 ns/iter (+/- 108,170,992)
test bench_interlace_1_bits    ... bench:   3,298,814 ns/iter (+/- 299,550)
test bench_interlace_2_bits    ... bench:   6,615,721 ns/iter (+/- 886,353)
test bench_interlace_4_bits    ... bench:  13,148,900 ns/iter (+/- 1,015,178)
test bench_interlace_8_bits    ... bench:  86,973,845 ns/iter (+/- 2,876,862)

test result: ok. 0 passed; 0 failed; 0 ignored; 10 measured

     Running target/release/oxipng-0aa81de33b66b9ba

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured

     Running target/release/oxipng-8dc3c38a24f45aca

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured

     Running target/release/reductions-706f4e9274315f2d

running 20 tests
test bench_16_to_8_bits                ... bench:   1,462,010 ns/iter (+/- 245,041)
test bench_2_to_1_bits                 ... bench:   9,090,966 ns/iter (+/- 949,980)
test bench_4_to_1_bits                 ... bench:  17,291,283 ns/iter (+/- 2,295,195)
test bench_4_to_2_bits                 ... bench:  18,106,877 ns/iter (+/- 3,257,698)
test bench_8_to_1_bits                 ... bench:  33,967,094 ns/iter (+/- 1,963,155)
test bench_8_to_2_bits                 ... bench:  34,834,040 ns/iter (+/- 2,992,472)
test bench_8_to_4_bits                 ... bench:  36,904,665 ns/iter (+/- 2,767,626)
test bench_palette_duplicate_reduction ... bench:   5,113,086 ns/iter (+/- 449,931)
test bench_palette_full_reduction      ... bench:  14,751,743 ns/iter (+/- 1,412,029)
test bench_palette_unused_reduction    ... bench:   9,639,936 ns/iter (+/- 462,188)
test bench_rgb_to_grayscale_16         ... bench:  29,428,159 ns/iter (+/- 3,303,357)
test bench_rgb_to_grayscale_8          ... bench:   7,224,088 ns/iter (+/- 951,724)
test bench_rgb_to_palette_8            ... bench:  34,767,333 ns/iter (+/- 1,765,318)
test bench_rgba_to_grayscale_16        ... bench:  28,374,910 ns/iter (+/- 1,495,313)
test bench_rgba_to_grayscale_8         ... bench:  14,288,546 ns/iter (+/- 1,106,506)
test bench_rgba_to_grayscale_alpha_16  ... bench:  20,908,298 ns/iter (+/- 1,351,356)
test bench_rgba_to_grayscale_alpha_8   ... bench:  10,504,579 ns/iter (+/- 1,093,582)
test bench_rgba_to_palette_8           ... bench:  42,195,599 ns/iter (+/- 1,868,201)
test bench_rgba_to_rgb_16              ... bench:  15,955,026 ns/iter (+/- 2,242,433)
test bench_rgba_to_rgb_8               ... bench:   8,185,576 ns/iter (+/- 1,116,708)

test result: ok. 0 passed; 0 failed; 0 ignored; 20 measured
2016-04-20 11:30:08 -04:00
Joshua Holmer
f2c16696a5 Add benchmark suite using cargo
Closes #7
2016-04-19 23:26:05 -04:00
Joshua Holmer
3f3fbb6f60 Don't report pretend mode if verbosity is set to none 2016-04-19 22:38:34 -04:00
Josh Holmer
234ef975f3 Merge pull request #37 from shssoichiro/palette-redux
Add palette reduction
2016-04-13 23:41:26 -04:00
Joshua Holmer
2e7bfa4ebc Add palette reduction
Closes #11
2016-04-13 23:16:32 -04:00
Joshua Holmer
ea484a8978 Version 0.4.0 2016-04-08 13:52:15 -04:00
Joshua Holmer
c78e3213d6 Update crates and fix interlacing issue 2016-04-08 13:37:00 -04:00
Joshua Holmer
8439fcf21d Merge branch 'new-master' 2016-04-08 11:57:15 -04:00
Josh Holmer
e9c44cbc0b Add -s as alias for --strip safe
Fixes #31
2016-04-08 11:56:51 -04:00