[ 
https://issues.apache.org/jira/browse/ARIES-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Bosschaert resolved ARIES-780.
------------------------------------

    Resolution: Fixed

This issue is now resolved. Thanks Oliver for filing it!
                
> problem getting mp3spi working with dynamic/static weaving
> ----------------------------------------------------------
>
>                 Key: ARIES-780
>                 URL: https://issues.apache.org/jira/browse/ARIES-780
>             Project: Aries
>          Issue Type: Question
>          Components: Subsystem
>    Affects Versions: parent-0.4.0
>         Environment: win7 x64, apache felix 4.0.1 and equinox 3.7.1
>            Reporter: oliver  z
>            Assignee: David Bosschaert
>            Priority: Minor
>
> I'm trying to build a modular player for sites like jamendo. The problem is 
> that the streaming format is in mp3 (or ogg sometimes). The librarys 
> providing such support try to use the SPI mechanism of the JRE which is a 
> problem in OSGi environments.
> So i'm really happy that this is adressed with SPI Fly - but its somehow not 
> working for me.
> I tried the dynamic weaving:
> added the asm bundle and the spi fly dynamic weaving bundle in the "bundle" 
> dir of apache felix (works fine, lb shows me that both bundles are running)
>    ID|State      |Level|Name
>     0|Active     |    0|System Bundle (4.0.1)
>     1|Active     |    1|ASM all classes (3.2.0)
>     2|Active     |    1|json simple OSGi Bundle (1.0.0.SNAPSHOT)
>     3|Active     |    1|Mp3Wrapper OSGi Bundle (1.0.0.SNAPSHOT)
>     4|Active     |    1|Apache Aries SPI Fly Dynamic Weaving Bundle 
> (0.4.0.SNAPSHOT)
> the mp3wrapper contains the spi providers (mp3spi, tritounus share etc. for 
> playing mp3 files - they replace AudioInputStream and some others), so i 
> added in the MANIFEST.MF in mp3wrapper the following header:
> SPI-Provider: *
> the consumer is my playerengine bundle which contains the following line in 
> its manifest:
> SPI-Consumer: *
> when i start the OSGi container i get the following:
> [BROWSER]: Standard Gui (Browser) registered.
> @@@ 1: <init>#()V#null~null
> ### 183: java/lang/Object#<init>#()V
> @@@ 1: start#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception]
> ### 183: 
> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#<init>#(Lorg/osgi/framework/BundleContext;)V
> ### 182: 
> org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String;
> ### 182: 
> org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String;
> ### 183: java/util/Hashtable#<init>#()V
> ### 182: 
> java/util/Dictionary#put#(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
> ### 182: java/lang/Class#getName#()Ljava/lang/String;
> ### 182: java/lang/Class#getName#()Ljava/lang/String;
> ### 185: 
> org/osgi/framework/BundleContext#registerService#([Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)L
> org/osgi/framework/ServiceRegistration;
> ### 184: 
> org/dyndns/soundi/utils/Util#sendMessage#(Lorg/dyndns/soundi/utils/Util$Component;Ljava/lang/String;)V
> @@@ 1: stop#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception]
> @@@ 0: <init>#(Lorg/osgi/framework/BundleContext;)V#null~null
> ### 183: java/lang/Object#<init>#()V
> @@@ 1: 
> play#(Ljava/io/InputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V#null~null
> ### 184: 
> javax/sound/sampled/AudioSystem#getAudioFileTypes#()[Ljavax/sound/sampled/AudioFileFormat$Type;
> ### 182: 
> javax/sound/sampled/AudioFileFormat$Type#getExtension#()Ljava/lang/String;
> ### 182: java/io/PrintStream#println#(Ljava/lang/String;)V
> ### 183: java/io/BufferedInputStream#<init>#(Ljava/io/InputStream;)V
> ### 184: 
> javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljava/io/InputStream;)Ljavax/sound/sampled/AudioInputStrea
> m;
> ### 182: java/lang/Class#getName#()Ljava/lang/String;
> ### 184: 
> java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger;
> ### 182: 
> java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
> ### 182: java/lang/Class#getName#()Ljava/lang/String;
> ### 184: 
> java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger;
> ### 182: 
> java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
> ### 182: 
> javax/sound/sampled/AudioInputStream#getFormat#()Ljavax/sound/sampled/AudioFormat;
> ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F
> ### 182: javax/sound/sampled/AudioFormat#getChannels#()I
> ### 182: javax/sound/sampled/AudioFormat#getChannels#()I
> ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F
> ### 183: 
> javax/sound/sampled/AudioFormat#<init>#(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
> ### 184: 
> javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/Audi
> oInputStream;)Ljavax/sound/sampled/AudioInputStream;
> ### 183: 
> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sou
> nd/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V
> @@@ 1: pause#()V#null~null
> @@@ 1: stop#()V#null~null
> @@@ 1: handleEvent#(Lorg/osgi/service/event/Event;)V#null~null
> @@@ 2: 
> rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interf
> aces/Song;)V#null~null
> ### 183: 
> org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/so
> und/sampled/SourceDataLine;
> ### 185: javax/sound/sampled/SourceDataLine#start#()V
> ### 185: javazoom/spi/PropertiesContainer#properties#()Ljava/util/Map;
> ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object;
> ### 182: java/lang/Long#longValue#()J
> ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object;
> ### 182: java/lang/Long#longValue#()J
> ### 182: javax/sound/sampled/AudioInputStream#read#([BII)I
> ### 185: javax/sound/sampled/SourceDataLine#write#([BII)I
> ### 185: javax/sound/sampled/SourceDataLine#drain#()V
> ### 185: javax/sound/sampled/SourceDataLine#stop#()V
> ### 185: javax/sound/sampled/SourceDataLine#close#()V
> ### 182: java/lang/Exception#printStackTrace#()V
> @@@ 2: 
> getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/SourceDataLine;#null~[javax/sound/sampled/LineUna
> vailableException]
> ### 183: 
> javax/sound/sampled/DataLine$Info#<init>#(Ljava/lang/Class;Ljavax/sound/sampled/AudioFormat;)V
> ### 184: 
> javax/sound/sampled/AudioSystem#getLine#(Ljavax/sound/sampled/Line$Info;)Ljavax/sound/sampled/Line;
> ### 185: 
> javax/sound/sampled/SourceDataLine#open#(Ljavax/sound/sampled/AudioFormat;)V
> [PLAYERENGINE]: Default player engine registered!
> so it does *something*, but it looks like errors. I got a reply that this is 
> just debugging output and the functionality should work.
> But it does not. I wrote a little test in my playerengine bundle:
> Type[] audioFileTypes = AudioSystem.getAudioFileTypes();
>         for(Type a : audioFileTypes)
>         {
>             System.out.println(a.getExtension()); 
>         }
> if it would work, there should be:
> wav (provided by JRE)
> au (provided by JRE)
> aif (provided by JRE)
> mp3 (provided by mp3spi)
> but the last one is missing, i cannot play mp3s, i get an exception:
> 13.11.2011 09:23:05 
> org.dyndns.soundi.soundboxplayerengine.DefaultPlayerEngine play
> SCHWERWIEGEND: null
> javax.sound.sampled.UnsupportedAudioFileException: could not get audio input 
> stream from input stream
>         at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
>         at 
> org.dyndns.soundi.soundboxplayerengine.DefaultPlayerEngine.play(DefaultPlayerEngine.java:47)
>         at 
> org.dyndns.soundi.soundbox.core.gui.PlayerFrame.play(PlayerFrame.java:217)
>         at 
> org.dyndns.soundi.soundbox.core.gui.PlayerFrame.handleEvent(PlayerFrame.java:194)
>         at 
> org.apache.felix.eventadmin.impl.tasks.HandlerTaskImpl.execute(HandlerTaskImpl.java:88)
> maybe this is a bug? i'm not familiar with bytecode so i can't help nor go 
> deeper and check whats going on :(
> the complete framework with my bundles and asm/dynamic weaving (running 
> example) can be downloaded here (2.3mb):
> http://download.origo.ethz.ch/soundbox/3349/felix-framework-4.0.1.7z
> thanks in advance
> edit:
> to run the application:
> 1) java -jar bin\felix.jar 
>     then 2 windows should open 
>     wait a little bit until "Jamendo plugin initialized" appears
> 2) now go the textfield where "Enter a keyword..." stands 
>     enter something like "dire" and click on the "go" button
>     there should appear a list of songs in the table
> 3) click one so that it is marked and hit the button "add to player"
>     "add to player" tries to start the playback - the dynamic weaving happens 
> and the exception will be thrown
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to