You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "David Bosschaert (Assigned) (JIRA)" <ji...@apache.org> on 2011/11/14 16:47:51 UTC

[jira] [Assigned] (ARIES-780) problem getting mp3spi working with dynamic/static weaving

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

David Bosschaert reassigned ARIES-780:
--------------------------------------

    Assignee: David Bosschaert
    
> 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