<Sound Dev> sound on Linux

cyberGn0m cy6ergn0m at gmail.com
Tue Oct 13 22:22:12 PDT 2009


I already wrote the same code but it still does not work. It conflicts with
flash player and with mplayer (in any mode).

2009/10/14 Paulo Levi <i30817 at gmail.com>

> I was just looking at this problem a while ago... opening the java
> sound audio engine instead of the default one might be a solution.
> Actually right now i'm using the method bellow, however, there are
> still some errors on a test machine that exhibited errors before (but
> no exception anymore) - the errors come in a Fedora (Pulse-Audio)
> linux. Obviously if it can't open the mixer it will try to open the
> java sound audio engine one - that should take take of one of the
> errors java not playing, but still might cause the second - native
> applications not playing.
> Actually the guy that is running the tests for me in that machine
> reports that audio is inaudible still, but no exception is raised if i
> use this.
>
>    /**
>     * Lines can fail to open because they are already in use.
>     * Java sound uses OSS and some linuxes are using pulseaudio.
>     * OSS needs exclusive access to the line, and pulse audio
>     * highjacks it. Try to open another line.
>     * @param format
>     * @return a open line
>     * @throws IllegalStateException if it can't open a dataline for the
>     * audioformat.
>     */
>    private SourceDataLine getSourceDataLine(AudioFormat format) {
>        Exception audioException = null;
>        try {
>            DataLine.Info info = new
> DataLine.Info(SourceDataLine.class, format);
>
>            for (Mixer.Info mi : AudioSystem.getMixerInfo()) {
>                SourceDataLine dataline = null;
>                try {
>                    Mixer mixer = AudioSystem.getMixer(mi);
>                    dataline = (SourceDataLine) mixer.getLine(info);
>                    dataline.open(format);
>                    dataline.start();
>                    return dataline;
>                } catch (Exception e) {
>                    audioException = e;
>                }
>                if (dataline != null) {
>                    try {
>                        dataline.close();
>                    } catch (Exception e) {
>                    }
>                }
>            }
>        } catch (Exception e) {
>            throw new IllegalStateException("Error trying to aquire
> dataline.", e);
>        }
>        if (audioException == null) {
>            throw new IllegalStateException("Couldn't aquire a
> dataline, this computer doesn't seem to have audio output?");
>        } else {
>            throw new IllegalStateException("Couldn't aquire a
> dataline, probably because all are in use. Last exception:",
> audioException);
>        }
>    }
>



-- 
-----------------------------------------------------------------
Всего наилучшего

                         <y6erGn0m.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/sound-dev/attachments/20091014/62b09197/attachment.html 


More information about the sound-dev mailing list