From 90149fe600726b6571ddd3c27ba4037841b1f314 Mon Sep 17 00:00:00 2001 From: "dennis.sheirer" Date: Sat, 4 Apr 2015 18:31:41 +0000 Subject: [PATCH] Resolves issues with classpath on Windows and null pointer exception with the AM decoder. --- .classpath | 1 - scripts/run_sdrtrunk_windows.bat | 2 +- src/audio/AudioOutputManager.java | 64 ++++++++++++++++++++ src/decode/am/AMDecoder.java | 3 +- src/decode/p25/audio/IMBETargetDataLine.java | 10 +-- src/decode/p25/audio/P25AudioOutput.java | 6 +- 6 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 src/audio/AudioOutputManager.java diff --git a/.classpath b/.classpath index 5ac3191b..abba7323 100644 --- a/.classpath +++ b/.classpath @@ -24,6 +24,5 @@ - diff --git a/scripts/run_sdrtrunk_windows.bat b/scripts/run_sdrtrunk_windows.bat index 04553f75..e911942d 100644 --- a/scripts/run_sdrtrunk_windows.bat +++ b/scripts/run_sdrtrunk_windows.bat @@ -1 +1 @@ -java -cp "SDRTrunk.jar;libs/*;config/*;images/*" gui.SDRTrunk \ No newline at end of file +java -cp "SDRTrunk.jar;*;libs/*;config/*;images/*" gui.SDRTrunk \ No newline at end of file diff --git a/src/audio/AudioOutputManager.java b/src/audio/AudioOutputManager.java new file mode 100644 index 00000000..8777fef6 --- /dev/null +++ b/src/audio/AudioOutputManager.java @@ -0,0 +1,64 @@ +package audio; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.Line; +import javax.sound.sampled.Mixer; +import javax.sound.sampled.SourceDataLine; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AudioOutputManager +{ + private final static Logger mLog = + LoggerFactory.getLogger( AudioOutputManager.class ); + + public AudioOutputManager() + { + + } + + public static void main( String[] args ) + { + Mixer.Info[] mi = AudioSystem.getMixerInfo(); + + for (Mixer.Info info : mi) + { + mLog.debug( "info: " + info ); + + Mixer m = AudioSystem.getMixer(info); + + mLog.debug( "mixer " + m ); + + Line.Info[] sl = m.getSourceLineInfo(); + + for (Line.Info info2 : sl) + { + mLog.debug( " info: " + info2 ); + + try + { + Line line = AudioSystem.getLine( info2 ); + + if (line instanceof SourceDataLine) + { + SourceDataLine source = (SourceDataLine) line; + + DataLine.Info i = (DataLine.Info) source.getLineInfo(); + + for (AudioFormat format : i.getFormats()) + { + mLog.debug( " format: " + format ); + } + } + } + catch( Exception e ) + { + mLog.error( "errors", e ); + } + } + } + } +} diff --git a/src/decode/am/AMDecoder.java b/src/decode/am/AMDecoder.java index 1ac93f89..12acac7d 100644 --- a/src/decode/am/AMDecoder.java +++ b/src/decode/am/AMDecoder.java @@ -86,8 +86,7 @@ public class AMDecoder extends Decoder @Override public IAudioOutput getAudioOutput() { - // TODO Auto-generated method stub - return null; + return mAudioOutput; } @Override diff --git a/src/decode/p25/audio/IMBETargetDataLine.java b/src/decode/p25/audio/IMBETargetDataLine.java index 5a695010..a402400f 100644 --- a/src/decode/p25/audio/IMBETargetDataLine.java +++ b/src/decode/p25/audio/IMBETargetDataLine.java @@ -29,18 +29,13 @@ public class IMBETargetDataLine implements TargetDataLine */ public IMBETargetDataLine() { - mLog.debug( "Constructing instance of TDL" ); } @Override public void open( AudioFormat format, int bufferSize ) throws LineUnavailableException { - if( format == IMBEAudioFormat.IMBE_AUDIO_FORMAT ) - { - mLog.debug( "We have now set the state - open:" ); - } - else + if( format != IMBEAudioFormat.IMBE_AUDIO_FORMAT ) { throw new LineUnavailableException( "Unsupported format" ); } @@ -49,15 +44,12 @@ public class IMBETargetDataLine implements TargetDataLine @Override public void open() throws LineUnavailableException { - mLog.debug( "open() invoked" ); - open( IMBEAudioFormat.IMBE_AUDIO_FORMAT, BUFFER_SIZE ); } @Override public void close() { - mLog.debug( "Closing the IMBE target data line" ); } @Override diff --git a/src/decode/p25/audio/P25AudioOutput.java b/src/decode/p25/audio/P25AudioOutput.java index 7489a83f..874c138a 100644 --- a/src/decode/p25/audio/P25AudioOutput.java +++ b/src/decode/p25/audio/P25AudioOutput.java @@ -140,7 +140,7 @@ public class P25AudioOutput implements IAudioOutput, IAudioTypeListener, if( mIMBEToPCMConverter != null ) { - mLog.debug( "IMBE audio converter library loaded successfully" ); + mLog.info( "IMBE audio converter library loaded successfully" ); try { @@ -148,8 +148,6 @@ public class P25AudioOutput implements IAudioOutput, IAudioTypeListener, if( mOutput != null ) { - mLog.debug( "Audio output line loaded successfully" ); - /* Open the audio line with room for two buffers */ mOutput.open( IMBEAudioFormat.PCM_SIGNED_8KHZ_16BITS, PROCESSED_AUDIO_FRAME_SIZE * 2 ); @@ -184,7 +182,7 @@ public class P25AudioOutput implements IAudioOutput, IAudioTypeListener, } catch( IllegalArgumentException iae ) { - mLog.equals( "couldn't find/load IMBE to PCM audio converter" ); + mLog.info( "could NOT find/load IMBE audio converter library" ); } }