|
|
|
svn_geotools
|
Author: danieleromagnoli
Date: 2009-07-07 10:08:15 -0400 (Tue, 07 Jul 2009) New Revision: 33509 Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/JP2KFormat.java branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerRequest.java branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerResponse.java branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/ReadType.java branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/Utils.java branches/2.5.x/modules/unsupported/jp2kakadu/src/test/java/org/geotools/coverageio/jp2kak/JP2KTest.java Log: Improved multithread read Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/JP2KFormat.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/JP2KFormat.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/JP2KFormat.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -100,9 +100,9 @@ public static final ParameterDescriptor<Color> INPUT_TRANSPARENT_COLOR = new DefaultParameterDescriptor<Color>( "InputTransparentColor", Color.class, null, null); - /** Control the threading behavior for this plugin. This parameter contains the number of thread that we should use to load the granules. Default value is 0 which means not additional thread, max value is 8.*/ - public static final ParameterDescriptor<Boolean> ALLOW_MULTITHREADING = new DefaultParameterDescriptor<Boolean>( - "AllowMultithreading", Boolean.class, new Boolean[]{Boolean.TRUE,Boolean.FALSE}, Boolean.FALSE); +// /** Control the threading behavior for this plugin. This parameter contains the number of thread that we should use to load the granules. Default value is 0 which means not additional thread, max value is 8.*/ +// public static final ParameterDescriptor<Boolean> ALLOW_MULTITHREADING = new DefaultParameterDescriptor<Boolean>( +// "AllowMultithreading", Boolean.class, new Boolean[]{Boolean.TRUE,Boolean.FALSE}, Boolean.FALSE); /** Control the background values for the output coverage */ public static final ParameterDescriptor<double[]> BACKGROUND_VALUES = new DefaultParameterDescriptor<double[]>( @@ -143,7 +143,8 @@ USE_MULTITHREADING, BACKGROUND_VALUES, SUGGESTED_TILE_SIZE, - ALLOW_MULTITHREADING})); +// ALLOW_MULTITHREADING + })); } /** Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerRequest.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerRequest.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerRequest.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -91,7 +91,11 @@ /** Requesting a multithreading read */ private boolean useMultithreading; - /** + public boolean isUseMultithreading() { + return useMultithreading; + } + + /** * Set to {@code true} if this request will produce an empty result, and the * coverageResponse will produce a {@code null} coverage. */ @@ -130,11 +134,11 @@ private Dimension tileDimensions; - private boolean multithreadingAllowed; +// private boolean multithreadingAllowed; - public boolean isMultithreadingAllowed() { - return multithreadingAllowed; - } +// public boolean isMultithreadingAllowed() { +// return multithreadingAllowed; +// } /** * Build a new {@code CoverageRequest} given a set of input parameters. @@ -230,8 +234,19 @@ readType = ((Boolean)value)? ReadType.JAI_IMAGEREAD: ReadType.DIRECT_READ; continue; } + + // // + // + // Use Multithreading parameter + // + // // + if (name.equals(JP2KFormat.USE_MULTITHREADING.getName())) { + if(value==null) + continue; + useMultithreading = ((Boolean) value).booleanValue(); + continue; + } - // // // // Overview Policy parameter @@ -286,14 +301,14 @@ // maximumNumberOfGranules=(Integer)value; // continue; // } - - - if (name.equals(JP2KFormat.ALLOW_MULTITHREADING.getName())) { - if(value==null) - continue; - multithreadingAllowed = ((Boolean) value).booleanValue(); - continue; - } +// +// +// if (name.equals(JP2KFormat.ALLOW_MULTITHREADING.getName())) { +// if(value==null) +// continue; +// multithreadingAllowed = ((Boolean) value).booleanValue(); +// continue; +// } // // // @@ -454,15 +469,15 @@ // maximumNumberOfGranules=param.intValue(); // return; // } - - - if (name.equals(JP2KFormat.ALLOW_MULTITHREADING.getName())) { - final Object value = param.getValue(); - if(value==null) - return; - multithreadingAllowed = ((Boolean) param.getValue()).booleanValue(); - return; - } +// +// +// if (name.equals(JP2KFormat.ALLOW_MULTITHREADING.getName())) { +// final Object value = param.getValue(); +// if(value==null) +// return; +// multithreadingAllowed = ((Boolean) param.getValue()).booleanValue(); +// return; +// } // // // @@ -601,7 +616,7 @@ if (readType != ReadType.UNSPECIFIED){ if (readType == ReadType.JAI_IMAGEREAD && useMultithreading){ readType = ReadType.JAI_IMAGEREAD_MT; - multithreadingAllowed = false; +// multithreadingAllowed = false; } return ; } Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerResponse.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerResponse.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/RasterLayerResponse.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -16,6 +16,8 @@ */ package org.geotools.coverageio.jp2kak; +import it.geosolutions.imageio.imageioimpl.imagereadmt.CloneableImageReadParam; + import java.awt.Color; import java.awt.Dimension; import java.awt.Rectangle; @@ -100,6 +102,7 @@ final Granule granule, final Dimension tilesDimension) { super(); + this.readParameters = Utils.cloneImageReadParam(readParameters); this.imageIndex = imageIndex; this.cropBBox = cropBBox; @@ -191,10 +194,10 @@ // //create a granule loader final GranuleLoader loader = new GranuleLoader(baseReadParameters, imageChoice, bbox, finalWorldToGridCorner,granule,request.getTileDimensions()); - if(!multithreadingAllowed) +// if(!multithreadingAllowed) tasks.add(new FutureTask<RenderedImage>(loader)); - else - tasks.add(JP2KReader.multiThreadedLoader.submit(loader)); +// else +// tasks.add(JP2KReader.multiThreadedLoader.submit(loader)); granulesNumber++; } @@ -212,12 +215,12 @@ for (Future<RenderedImage> future :tasks) { final RenderedImage loadedImage; try { - if(!multithreadingAllowed) - { +// if(!multithreadingAllowed) +// { //run the loading in this thread - final FutureTask<RenderedImage> task=(FutureTask<RenderedImage>) future; - task.run(); - } + final FutureTask<RenderedImage> task=(FutureTask<RenderedImage>) future; + task.run(); +// } loadedImage=future.get(); if(loadedImage==null) { @@ -342,8 +345,10 @@ private ImageReadParam baseReadParameters= new ImageReadParam(); - private boolean multithreadingAllowed=false; + private boolean useMultithreading = false; +// private boolean multithreadingAllowed=false; + private boolean alphaIn=false; private String location; @@ -379,7 +384,8 @@ transparentColor=request.getInputTransparentColor(); // finalTransparentColor=request.getOutputTransparentColor(); // are we doing multithreading? - multithreadingAllowed= request.isMultithreadingAllowed(); +// multithreadingAllowed= request.isMultithreadingAllowed(); + useMultithreading = request.isUseMultithreading(); } Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/ReadType.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/ReadType.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/ReadType.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -3,6 +3,8 @@ */ package org.geotools.coverageio.jp2kak; +import it.geosolutions.imageio.imageioimpl.imagereadmt.CloneableImageReadParam; + import java.awt.Dimension; import java.awt.Rectangle; import java.awt.RenderingHints; Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/Utils.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/Utils.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/main/java/org/geotools/coverageio/jp2kak/Utils.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -3,6 +3,8 @@ */ package org.geotools.coverageio.jp2kak; +import it.geosolutions.imageio.imageioimpl.imagereadmt.CloneableImageReadParam; +import it.geosolutions.imageio.imageioimpl.imagereadmt.DefaultCloneableImageReadParam; import it.geosolutions.imageio.stream.input.FileImageInputStreamExt; import java.awt.Color; @@ -207,7 +209,7 @@ // in which there is not a special ImageReadparam used. // Create a new ImageReadParam instance. - ImageReadParam newParam = new ImageReadParam(); + CloneableImageReadParam newParam = new DefaultCloneableImageReadParam(); // Set all fields which need to be set. Modified: branches/2.5.x/modules/unsupported/jp2kakadu/src/test/java/org/geotools/coverageio/jp2kak/JP2KTest.java =================================================================== --- branches/2.5.x/modules/unsupported/jp2kakadu/src/test/java/org/geotools/coverageio/jp2kak/JP2KTest.java 2009-07-07 13:01:19 UTC (rev 33508) +++ branches/2.5.x/modules/unsupported/jp2kakadu/src/test/java/org/geotools/coverageio/jp2kak/JP2KTest.java 2009-07-07 14:08:15 UTC (rev 33509) @@ -83,9 +83,13 @@ final AbstractGridCoverage2DReader reader = new JP2KReader(file); final ParameterValue<GridGeometry2D> gg = JP2KFormat.READ_GRIDGEOMETRY2D.createValue(); + final ParameterValue<Boolean> useMT = JP2KFormat.USE_MULTITHREADING.createValue(); + final ParameterValue<Boolean> useJAI = JP2KFormat.USE_JAI_IMAGEREAD.createValue(); + useMT.setValue(true); + useJAI.setValue(true); final GeneralEnvelope oldEnvelope = reader.getOriginalEnvelope(); gg.setValue(new GridGeometry2D(reader.getOriginalGridRange(), oldEnvelope)); - final GridCoverage2D gc = (GridCoverage2D) reader.read(new GeneralParameterValue[] { gg }); + final GridCoverage2D gc = (GridCoverage2D) reader.read(new GeneralParameterValue[] { gg,useJAI,useMT }); assertNotNull(gc); if (TestData.isInteractiveTest()) { ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry _______________________________________________ GeoTools-commits mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/geotools-commits |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |