Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(9)

Issue 2322042: Adding Huffmann Size Optimization to Jpeg Compression Params. (gives +(5-7)% of compression) (Closed)

Can't Edit
Can't Publish+Mail
Start Review
Created:
15 years, 3 months ago by satya3656
Modified:
15 years, 2 months ago
Reviewers:
Paul Lindner, johnfargo, dev, dev-remailer, anupama.dutta, gagan.goku
Base URL:
http://svn.apache.org/repos/asf/shindig/trunk/
Visibility:
Public.

Description

This change adds setOptimizeHuffmanTables(true) to the Jpeg params. (gives additional 6% of compression without any addition loss in the image quality) Since the generalized call for ImageIOOutputter.write(new IIOImage()) has a bug, that ignores this parameter while enocding, we are using more specific call for writing for jpeg images that respects this new parameter. Refer: com.sun.imageio.plugins.jpeg.JPEGImageWriter.java:352 write(...) function. Refactored PNGOptimizer.java to remove some redundant code. Note: The old flow also has a hidden bug that sets wrong 'Default Quantization Tables' while doing jpeg compression with 'ImageWriteParam.MODE_EXPLICIT' that results in encode phase of jpeg effectively use different compression quality (> than config.getJpegCompression()). This bug fix effectively gives +4% more compression in bytes. Refer: (http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-com.sun/imageio/com.sun.imageio.plugins.jpeg.htm) BaseOptimizer.java:172 in writer.getDefaultImageMetadata(...) ---> com.sun.imageio.plugins.jpeg.JPEGImageWriter.java:609 ---> com.sun.imageio.plugins.jpeg.DQTMarkerSegment.java:215 in Qtable(boolean wantLuma, float quality) function, K2Div2Chrominance is used instead of K2Chrominance.

Patch Set 1 #

Total comments: 6

Patch Set 2 : Addressing the comments. #

Patch Set 3 : Upadated a small condition #

Total comments: 4

Patch Set 4 : Added huffman optimization as a configurable through shindig properties #

Patch Set 5 : sync to head(r1006167) #

Total comments: 8

Patch Set 6 : Addressing the comments. #

Total comments: 2

Patch Set 7 : Addressing the comments. #

Patch Set 8 : sync to head(r1024129) #

Messages

Total messages: 19
satya3656
15 years, 3 months ago (2010-10-04 13:14:00 UTC) #1
gagan.goku
Looks good. Small nitpicks to fix: http://codereview.appspot.com/2322042/diff/1/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/1/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode78 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:78: JPEGImageWriteParam jpegParam = ...
15 years, 3 months ago (2010-10-08 07:50:22 UTC) #2
satya3656
http://codereview.appspot.com/2322042/diff/1/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/1/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode78 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:78: JPEGImageWriteParam jpegParam = new JPEGImageWriteParam(param.getLocale()); On 2010/10/08 07:50:22, gagan.goku ...
15 years, 3 months ago (2010-10-08 12:46:39 UTC) #3
satya3656
Addressing the comments.
15 years, 3 months ago (2010-10-08 12:47:02 UTC) #4
satya3656
Upadated a small condition
15 years, 3 months ago (2010-10-08 15:06:56 UTC) #5
gagan.goku
Change looks good. Please send out to dev@ after making these small changes and ask ...
15 years, 3 months ago (2010-10-08 15:53:01 UTC) #6
satya3656
http://codereview.appspot.com/2322042/diff/11001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/11001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode84 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:84: ((JPEGImageWriteParam) param).setOptimizeHuffmanTables(true); On 2010/10/08 15:53:01, gagan.goku wrote: > make ...
15 years, 3 months ago (2010-10-09 07:20:14 UTC) #7
satya3656
Added huffman optimization as a configurable through shindig properties
15 years, 3 months ago (2010-10-09 07:20:32 UTC) #8
satya3656
sync to head(r1006167)
15 years, 3 months ago (2010-10-09 14:31:52 UTC) #9
gagan.goku
LGTM. Also, please ask on the dev community / add TODO's in the right places ...
15 years, 3 months ago (2010-10-10 04:33:23 UTC) #10
anupama.dutta
Some minor comments below. LGTM overall. http://codereview.appspot.com/2322042/diff/30001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/30001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode29 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:29: import com.sun.imageio.plugins.jpeg.JPEGImageWriter; Order ...
15 years, 3 months ago (2010-10-11 06:09:48 UTC) #11
satya3656
http://codereview.appspot.com/2322042/diff/30001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/30001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode29 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:29: import com.sun.imageio.plugins.jpeg.JPEGImageWriter; On 2010/10/11 06:09:49, anupama.dutta wrote: > Order ...
15 years, 3 months ago (2010-10-11 07:52:12 UTC) #12
satya3656
Addressing the comments.
15 years, 3 months ago (2010-10-11 07:55:32 UTC) #13
johnfargo
great work; just one structuring comment. http://codereview.appspot.com/2322042/diff/41001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/41001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode185 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:185: writeParam); Could you ...
15 years, 3 months ago (2010-10-14 23:20:36 UTC) #14
satya3656
Addressing the comments.
15 years, 3 months ago (2010-10-18 07:49:39 UTC) #15
satya3656
http://codereview.appspot.com/2322042/diff/41001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java (right): http://codereview.appspot.com/2322042/diff/41001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java#newcode185 java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java:185: writeParam); On 2010/10/14 23:20:37, johnfargo wrote: > Could you ...
15 years, 3 months ago (2010-10-18 07:51:04 UTC) #16
johnfargo
LGTM Thanks Satya! On 2010/10/18 07:51:04, satya3656 wrote: > http://codereview.appspot.com/2322042/diff/41001/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java > File > java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java > ...
15 years, 2 months ago (2010-10-19 04:27:18 UTC) #17
satya3656
sync to head(r1024129)
15 years, 2 months ago (2010-10-19 06:45:44 UTC) #18
gagan.goku
15 years, 2 months ago (2010-10-21 04:12:10 UTC) #19
Build looks good.
Committed as r1025817.
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b