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
            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
 

--
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