[kepler-dev] JAI actors

Nandita Mangal nmangal at sdsc.edu
Thu May 18 10:28:30 PDT 2006


Hi Christopher,
I could run all JAI actors from Kepler but  I am unsure if i am 
following the right procedure...So  I am starting over :)
If you could tell/correct me how to integrate JAI actors with Kepler 
that would be great.
Once i have done it manually , I can add it to builds to compilie 
ptolemy's JAI classes so that they are found in kepler.

So here is what i did initially:
1)under $PTII/ptolemy/actor/lib/jai
-->make and it compiles all the java classes in the above folder.
2)I thought the above classes  would be copied to 
$PTII/build/classes/actor/lib/jai but they werent?
  Did ./configure & make fast install after the above as well but seems 
like jai folder is missed.
  (is there anything else i should do so that JAI classes are in build 
as well?)
3) I thought that if jai classes are in ptolemy's build, Kepler can 
locate them. So I manually put the all jai classes
  in build to test jai actors in kepler. After doing that i could get 
all JAI actors (except JAIImageReader) to
  run from Kepler. But this all was test, if you could tell me the 
correct way to get Kepler to locate ptolemy's jai classes.
4) I have been able to run JAI tests (stand alone) as well as my own JAI 
actors under kepler so I think its not missing any jai jars .



thanks,
nandita.



$ make
making jclass in ptolemy/actor/lib/jai/demo
make[1]: Entering directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo
'
making jclass in ptolemy/actor/lib/jai/demo/AdaptiveMedian
make[2]: Entering directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo
/AdaptiveMedian'
make[2]: Leaving directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo/
AdaptiveMedian'
making jclass in ptolemy/actor/lib/jai/demo/ImageReconstruction
make[2]: Entering directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo
/ImageReconstruction'
make[2]: Leaving directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo/
ImageReconstruction'
making jclass in ptolemy/actor/lib/jai/demo/VQSequenceDisplay
make[2]: Entering directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo
/VQSequenceDisplay'
make[2]: Leaving directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo/
VQSequenceDisplay'
make[1]: Leaving directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/demo'

making jclass in ptolemy/actor/lib/jai/test
make[1]: Entering directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/test
'
make[1]: Leaving directory 
`/cygdrive/c/Project/ptII/ptolemy/actor/lib/jai/test'

rm -f `basename ImageToJAI.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
ImageToJAI.ja
va
rm -f `basename JAIAffineTransform.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIAffineTran
sform.java
rm -f `basename JAIBandCombine.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIBandCombin
e.java
rm -f `basename JAIBandSelect.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIBandSelect
.java
rm -f `basename JAIBorder.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIBorder.jav
a
rm -f `basename JAIBoxFilter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIBoxFilter.
java
rm -f `basename JAIBMPWriter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIBMPWriter.
java
rm -f `basename JAIConstant.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIConstant.j
ava
rm -f `basename JAIConvolve.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIConvolve.j
ava
rm -f `basename JAICrop.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAICrop.java
rm -f `basename JAIDataConvert.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIDataConver
t.java
rm -f `basename JAIDCT.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIDCT.java
rm -f `basename JAIDFT.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIDFT.java
rm -f `basename JAIEdgeDetection.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIEdgeDetect
ion.java
rm -f `basename JAIIDCT.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIIDCT.java
rm -f `basename JAIIDFT.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIIDFT.java
rm -f `basename JAIImageReader.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIImageReade
r.java
rm -f `basename JAIInvert.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIInvert.jav
a
rm -f `basename JAIJPEGWriter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIJPEGWriter
.java
rm -f `basename JAILog.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAILog.java
rm -f `basename JAIMagnitude.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIMagnitude.
java
rm -f `basename JAIMedianFilter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIMedianFilt
er.java
rm -f `basename JAIPeriodicShift.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIPeriodicSh
ift.java
rm -f `basename JAIPhase.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIPhase.java

rm -f `basename JAIPolarToComplex.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIPolarToCom
plex.java
rm -f `basename JAIPNGWriter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIPNGWriter.
java
rm -f `basename JAIPNMWriter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIPNMWriter.
java
rm -f `basename JAIRotate.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIRotate.jav
a
rm -f `basename JAIScale.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIScale.java

rm -f `basename JAITIFFWriter.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAITIFFWriter
.java
rm -f `basename JAIToDoubleMatrix.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAIToDoubleMa
trix.java
rm -f `basename JAITranslate.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAITranslate.
java
rm -f `basename JAITranspose.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
JAITranspose.
java
rm -f `basename SaltAndPepper.java .java`.class
CLASSPATH="../../../..;" "/cygdrive/c/jdk1.5.0_05/bin/javac" -g -O 
SaltAndPepper
.java


I thought the above would





Christopher Brooks wrote:

>Hi Nandita,
>
>When I try to run ptolemy/actor/lib/jai/test/auto/JAIImageReader.xml
>under Kepler, I get:
>
>ptolemy.kernel.util.IllegalActionException: Cannot find class: ptolemy.actor.lib.jai.JAIImageReader
>Because:
>Could not find 'ptolemy/actor/lib/jai/JAIImageReader.xml' or 'ptolemy/actor/lib/jai/JAIImageReader.moml' using base 'file:/C:/cxh/ptII/ptolemy/actor/lib/jai/test/auto/JAIImageReader.xml':  in file:/C:/cxh/ptII/ptolemy/actor/lib/jai/test/auto/JAIImageReader.xml at line 41 and column 69
>Caused by:
> com.microstar.xml.XmlException: -- C:\cxh\ptII\ptolemy\actor\lib\jai\test\auto\ptolemy\actor\lib\jai\JAIImageReader.xml (The system cannot find the path specified)
>-- XML file not found relative to classpath.
>-- C:\cxh\src\kepler;ptolemy/actor/lib/jai/JAIImageReader.xml
>ptolemy\actor\lib\jai\JAIImageReader.xml (The system cannot find the path specified)
> in file:/C:/cxh/ptII/ptolemy/actor/lib/jai/test/auto/JAIImageReader.xml at line 41 and column 69
>
> at ptolemy.moml.MoMLParser._createEntity(MoMLParser.java:3422)
>
>
>
>So, it appears that JAIImageReader is not part of the default Kepler configuration?
>
>Are you running Kepler here or Vergil?
>
>_Christopher
>
>--------
>
>    Hi Chirstopher,
>    I am running Windows XP and jdk1.5.
>    Here are the JAI jars i have:
>    C:\jdk1.5.0_05\jre\lib\ext & C:\jre1.5.0_05\lib\ext
>    jai_codec.jar
>    jai_core.jar
>    mlib_wrapper.jar
>    
>    C:\jdk1.5.0_05\jre\bin
>    mlib_jai.dll
>    checkmmx.exe
>    mlib_jai_mmx.dll
>    
>    I have jai-1.1.2
>    
>     From our discussion last time, i suspect that since JAI actors
>    work in general and I have the above 3 jars.. could it still be a
>    native JAI library problem? Maybe i am wrong.
>
>    The JAI test cases and all other JAI actors work for me under the
>    Kepler as well as stand alone applications(w/o kepler). However
>    JAIImageReader and the SeekableStream gives the codec
>    IOexceptions.
>    
>    The test case that I run is the Ptolemy jai test workflow under 
>    ptolemy/actor/lib/jai/test/auto. I have
>    tried with PNG and JPG formats..however i get same exception.
>    
>    
>    thanks,
>    nandita.
>    
>    
>    Christopher Brooks wrote:
>    
>    >Hi Nandita,
>    >Do you have a test case for this?
>    >
>    >Also, what OS are you running?
>    >
>    >I suspect the problem is that the native JAI library is not being
>    >found?
>    >
>    >Our discussion from January can be found at
>    >http://www.mail-archive.com/ptolemy-hackers@bennett.eecs.berkeley.edu/msg0
>   0100.html
>    >
>    >_Christopher
>    >
>    >--------
>    >
>    >    hi Christopher,
>    >    Sorry i haven't visited this topic for a long time...
>    >    
>    >     I believe that the ptolemy JAIImageReader is causing some codec 
>    >    problem  in reading certain images.I have JAI actors working in Kepler
>    
>    >    otherwise.
>    >    
>    >    I wrote another way of getting the Image and then passed the image ( a
>   s 
>    >    a JAIImageToken) on to Ptolemy JAI actors and got no codec related
>    >    exceptions in reading/processing the image.
>    >    I believe using the SeekableStream in JAIImageReader might generate 
>    >    similar factory error in some cases?? We can catch such codec exceptio
>   ns
>    >    in the JAIImageReader and try a second way of reading the image?
>    >    Here is another way of reading the image (which can be used in the cas
>   e 
>    >    that the normal loading file way fails)
>    >            //_fileRoot indicates the filepath of image
>    >             ParameterBlock pb =  (new ParameterBlock()).add(_fileRoot);
>    >              RenderedOp img = new RenderedOp("fileload", pb, null);
>    >             output.broadcast(new JAIImageToken(img));
>    >    Once I add the above, we can make Ptolemy JAI classes compile also fro
>   m 
>    >    the build-ptolemy.xml buildfile in Kepler and add the actors to Kepler
>    
>    >    library.
>    >    
>    >    thanks,
>    >    nandita.
>    >    
>    >    
>    >    Here is the exception:
>    >         [java] Error: IOException occurs when search for propriate codecs
>   .
>    >         [java] Occurs in: com.sun.media.jai.codec.ImageCodec
>    >         [java] java.io.IOException: The handle is invalid
>    >         [java]     at java.io.RandomAccessFile.seek(Native Method)
>    >         [java]     at 
>    >    com.sun.media.jai.codec.FileCacheSeekableStream.readUntil(Fil
>    >    eCacheSeekableStream.java:129)
>    >         [java]     at 
>    >    com.sun.media.jai.codec.FileCacheSeekableStream.read(FileCach
>    >    eSeekableStream.java:266)
>    >         [java]     at 
>    >    com.sun.media.jai.codec.SeekableStream.readFully(SeekableStre
>    >    am.java:327)
>    >         [java]     at 
>    >    com.sun.media.jai.codec.SeekableStream.readFully(SeekableStre
>    >    am.java:306)
>    >         [java]     at 
>    >    com.sun.media.jai.codec.ImageCodec.getDecoderNames(ImageCodec
>    >    .java:274)
>    >         [java]     at 
>    >    com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:80)
>    >    
>    >         [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>    
>    >    Method)
>    >         [java]     at 
>    >    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
>    >    sorImpl.java:39)
>    >         [java]     at 
>    >    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
>    >    hodAccessorImpl.java:25)
>    >         [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>    >         [java]     at 
>    >    javax.media.jai.FactoryCache.invoke(FactoryCache.java:130)
>    >         [java]     at 
>    >    javax.media.jai.OperationRegistry.invokeFactory(OperationRegi
>    >    stry.java:1682)
>    >         [java]     at 
>    >    javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(Thr
>    >    eadSafeOperationRegistry.java:481)
>    >         [java]     at 
>    >    javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:
>    >    340)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createInstance(RenderedOp.java:830
>    >    )
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createRendering(RenderedOp.java:87
>    >    8)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createInstance(RenderedOp.java:810
>    >    )
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createRendering(RenderedOp.java:87
>    >    8)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899)
>    >         [java]     at 
>    >    ptolemy.actor.lib.jai.JAIImageToken.asAWTImage(JAIImageToken.
>    >    java:95)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageTableau.display(ImageTableau.jav
>    >    a:197)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageTableau.append(ImageTableau.java
>    >    :139)
>    >         [java]     at 
>    >    ptolemy.actor.gui.TokenEffigy.setTokens(TokenEffigy.java:226)
>    >    
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageDisplay._display(ImageDisplay.ja
>    >    va:243)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageDisplay$2.run(ImageDisplay.java:
>    >    209)
>    >         [java]     at 
>    >    java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:
>    >    209)
>    >         [java]     at java.awt.EventQueue.dispatchEvent(EventQueue.java:4
>   61)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDi
>    >    spatchThread.java:242)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDisp
>    >    atchThread.java:163)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j
>    >    ava:157)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j
>    >    ava:149)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.run(EventDispatchThread.java:110
>    >    )
>    >         [java] Exception in thread "AWT-EventQueue-0" 
>    >    java.lang.RuntimeException: -
>    >     Unable to render RenderedOp for this operation.
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createInstance(RenderedOp.java:838
>    >    )
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createRendering(RenderedOp.java:87
>    >    8)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createInstance(RenderedOp.java:810
>    >    )
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.createRendering(RenderedOp.java:87
>    >    8)
>    >         [java]     at 
>    >    javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899)
>    >         [java]     at 
>    >    ptolemy.actor.lib.jai.JAIImageToken.asAWTImage(JAIImageToken.
>    >    java:95)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageTableau.display(ImageTableau.jav
>    >    a:197)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageTableau.append(ImageTableau.java
>    >    :139)
>    >         [java]     at 
>    >    ptolemy.actor.gui.TokenEffigy.setTokens(TokenEffigy.java:226)
>    >    
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageDisplay._display(ImageDisplay.ja
>    >    va:243)
>    >         [java]     at 
>    >    ptolemy.actor.lib.image.ImageDisplay$2.run(ImageDisplay.java:
>    >    209)
>    >         [java]     at 
>    >    java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:
>    >    209)
>    >         [java]     at java.awt.EventQueue.dispatchEvent(EventQueue.java:4
>   61)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDi
>    >    spatchThread.java:242)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDisp
>    >    atchThread.java:163)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j
>    >    ava:157)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j
>    >    ava:149)
>    >         [java]     at 
>    >    java.awt.EventDispatchThread.run(EventDispatchThread.java:110
>    >    )
>    >    
>    >    
>    >    
>    >--------
>    >  
>    >
>--------
>  
>



More information about the Kepler-dev mailing list