diff options
author | Xerxes Rånby <[email protected]> | 2013-05-10 12:42:09 +0200 |
---|---|---|
committer | Xerxes Rånby <[email protected]> | 2013-05-10 12:42:09 +0200 |
commit | cc30fa7de95cffa961e9fd3aead2dd8f3bb55aeb (patch) | |
tree | f227ee582c659835f3760c970f04903b46dfa0ac /src/jogl/classes/jogamp/opengl | |
parent | c6081b03d1f47219aa789debf25aee55993e6dcb (diff) |
FFMPEGMediaPlayer: blocking Java Sound output
Diffstat (limited to 'src/jogl/classes/jogamp/opengl')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java | 33 |
1 files changed, 17 insertions, 16 deletions
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 55bb4799b..cf26bbd81 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java @@ -124,16 +124,16 @@ public class FFMPEGMediaPlayer extends EGLMediaPlayerImpl { public static final double BUFFER_TIME_IN_SECS = SAMPLE_TIME_IN_SECS * SAMPLES_PER_BUFFER; // Instance data - private AudioFormat format; - private DataLine.Info info; - private SourceDataLine auline; - private int bufferCount; - private byte [] sampleData = new byte[BUFFER_SIZE]; + private static AudioFormat format; + private static DataLine.Info info; + private static SourceDataLine auline; + private static int bufferCount; + private static byte [] sampleData = new byte[BUFFER_SIZE]; public static final VersionNumber avUtilVersion; public static final VersionNumber avFormatVersion; public static final VersionNumber avCodecVersion; - static final boolean available; + static boolean available; static { if(FFMPEGDynamicLibraryBundleInfo.initSingleton()) { @@ -143,9 +143,7 @@ public class FFMPEGMediaPlayer extends EGLMediaPlayerImpl { System.err.println("LIB_AV Util : "+avUtilVersion); System.err.println("LIB_AV Format: "+avFormatVersion); System.err.println("LIB_AV Codec : "+avCodecVersion); - available = initIDs0(); - - if(available) { + if(initIDs0()) { // init audio // Create the audio format we wish to use format = new AudioFormat(SAMPLE_RATE, SAMPLE_SIZE, CHANNELS, SIGNED, BIG_ENDIAN); @@ -155,12 +153,15 @@ public class FFMPEGMediaPlayer extends EGLMediaPlayerImpl { // Clear buffer initially Arrays.fill(sampleData, (byte) 0); - - // Get line to write data to - auline = (SourceDataLine) AudioSystem.getLine(info); - auline.open(format); - auline.start(); - + try{ + // Get line to write data to + auline = (SourceDataLine) AudioSystem.getLine(info); + auline.open(format); + auline.start(); + available = true; + } catch (LineUnavailableException e){ + available = false; + } } } else { @@ -261,7 +262,7 @@ public class FFMPEGMediaPlayer extends EGLMediaPlayerImpl { throw new InternalError("Unknown ProcAddressTable: "+pt.getClass().getName()+" of "+ctx.getClass().getName()); } } - private void updateSound() { + private void updateSound(byte[] sampleData, int data_size) { System.out.println("jA"); if (data_size > 0) { auline.write(sampleData, 0, data_size); |