svn - r33509 - in branches/2.5.x/modules/unsupported/jp2kakadu/src: main/java/org/geotools/coverageio/jp2kak test/java/org/geotools/coverageio/jp2kak

1 message Options
Embed this post
Permalink
svn_geotools

svn - r33509 - in branches/2.5.x/modules/unsupported/jp2kakadu/src: main/java/org/geotools/coverageio/jp2kak test/java/org/geotools/coverageio/jp2kak

Reply Threaded More More options
Print post
Permalink
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