mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 17:17:29 -05:00
P25 - work in progress to improve CQPSK LSM audio output. Audio output is still choppy but greatly improved over the previous test release.
This commit is contained in:
20
src/audio/Audio.java
Normal file
20
src/audio/Audio.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package audio;
|
||||
|
||||
import javax.sound.sampled.AudioFormat;
|
||||
|
||||
public class Audio
|
||||
{
|
||||
public static final AudioFormat MONO_48K_16_LE =
|
||||
new AudioFormat( 48000, //SampleRate
|
||||
16, //Sample Size
|
||||
1, //Channels
|
||||
true, //Signed
|
||||
false ); //Little Endian
|
||||
|
||||
public static final AudioFormat STEREO_48K_16_LE =
|
||||
new AudioFormat( 48000, //SampleRate
|
||||
16, //Sample Size
|
||||
2, //Channels
|
||||
true, //Signed
|
||||
false ); //Little Endian
|
||||
}
|
||||
@@ -1,12 +1,5 @@
|
||||
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;
|
||||
|
||||
@@ -14,51 +7,19 @@ public class AudioOutputManager
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( AudioOutputManager.class );
|
||||
|
||||
|
||||
/**
|
||||
* Handles all audio produced by the decoding channels and routes audio
|
||||
* packets to any combination of outputs based on any alias audio routing
|
||||
* options specified by the user.
|
||||
*/
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
24
src/audio/AudioPacket.java
Normal file
24
src/audio/AudioPacket.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package audio;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class AudioPacket
|
||||
{
|
||||
private ByteBuffer mAudioBuffer;
|
||||
private int mPriority;
|
||||
|
||||
public AudioPacket()
|
||||
{
|
||||
}
|
||||
|
||||
public void setAudioBuffer( ByteBuffer audioBuffer )
|
||||
{
|
||||
mAudioBuffer = audioBuffer;
|
||||
}
|
||||
|
||||
public ByteBuffer getAudioBuffer()
|
||||
{
|
||||
return mAudioBuffer;
|
||||
}
|
||||
|
||||
}
|
||||
6
src/audio/IAudioPacketReceiver.java
Normal file
6
src/audio/IAudioPacketReceiver.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package audio;
|
||||
|
||||
public interface IAudioPacketReceiver
|
||||
{
|
||||
|
||||
}
|
||||
12
src/audio/MonoAudioOutput.java
Normal file
12
src/audio/MonoAudioOutput.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package audio;
|
||||
|
||||
public class MonoAudioOutput
|
||||
{
|
||||
/**
|
||||
* Buffered
|
||||
*/
|
||||
public MonoAudioOutput()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user