From 6509c313dec8947723a932e7d1646a78dd6ac49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xerxes=20R=C3=A5nby?= Date: Mon, 24 Jun 2013 19:39:56 +0200 Subject: [PATCH] AudioSink: interface add isAudioSinkAvailable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Xerxes RĂ„nby --- .../classes/jogamp/opengl/openal/av/ALAudioSink.java | 3 ++- src/jogl/classes/jogamp/opengl/util/av/AudioSink.java | 2 ++ .../jogamp/opengl/util/av/JavaSoundAudioSink.java | 3 ++- .../classes/jogamp/opengl/util/av/NullAudioSink.java | 5 +++++ .../jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java | 9 +++++---- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java b/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java index db01d3a387..c8004d6b3a 100644 --- a/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java +++ b/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java @@ -161,7 +161,8 @@ public int getDataAvailable() { return (NUM_BUFFERS-val[0])*4096; } - public static boolean isAvailable() { + @Override + public boolean isAudioSinkAvailable() { return available; } } diff --git a/src/jogl/classes/jogamp/opengl/util/av/AudioSink.java b/src/jogl/classes/jogamp/opengl/util/av/AudioSink.java index fedead7138..504e4b2db3 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/AudioSink.java +++ b/src/jogl/classes/jogamp/opengl/util/av/AudioSink.java @@ -2,6 +2,8 @@ public interface AudioSink { + boolean isAudioSinkAvailable(); + int getDataAvailable(); boolean isDataAvailable(int data_size); diff --git a/src/jogl/classes/jogamp/opengl/util/av/JavaSoundAudioSink.java b/src/jogl/classes/jogamp/opengl/util/av/JavaSoundAudioSink.java index 0e28063223..653a021117 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/JavaSoundAudioSink.java +++ b/src/jogl/classes/jogamp/opengl/util/av/JavaSoundAudioSink.java @@ -71,7 +71,8 @@ public boolean isDataAvailable(int data_size) { return auline.available()>=data_size; } - public static boolean isAvailable() { + @Override + public boolean isAudioSinkAvailable() { return available; } diff --git a/src/jogl/classes/jogamp/opengl/util/av/NullAudioSink.java b/src/jogl/classes/jogamp/opengl/util/av/NullAudioSink.java index 81259f4c57..d929678492 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/NullAudioSink.java +++ b/src/jogl/classes/jogamp/opengl/util/av/NullAudioSink.java @@ -15,4 +15,9 @@ public boolean isDataAvailable(int data_size) { @Override public void writeData(byte[] sampleData, int data_size) { } + + @Override + public boolean isAudioSinkAvailable() { + return true; + } } diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java index 9ae1541f9e..9c0c9bd945 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java @@ -130,11 +130,12 @@ public class FFMPEGMediaPlayer extends EGLMediaPlayerImpl { System.err.println("LIB_AV Codec : "+avCodecVersion); initIDs0(); available = true; - audioSink = new NullAudioSink(); - if(ALAudioSink.isAvailable()) { - audioSink = new ALAudioSink(); - } else if(JavaSoundAudioSink.isAvailable()) { + audioSink = new ALAudioSink(); + if(!audioSink.isAudioSinkAvailable()) { audioSink = new JavaSoundAudioSink(); + if(!audioSink.isAudioSinkAvailable()) { + audioSink = new NullAudioSink(); + } } maxAvailableAudio = audioSink.getDataAvailable();