public class AudioStreamPump extends Object
This class maintains an internal thread to copy audio data from an input stream to an output stream. It is used for real-time audio i/o.
Constructor and Description |
---|
AudioStreamPump(AudioInputStream inputStream,
SourceDataLine outputLine)
Creates a pump for non-real-time input.
|
AudioStreamPump(TargetDataLine inputLine,
AudioInputStream inputStream,
SourceDataLine outputLine,
int pumpBufferTimeMs)
Creates a pump for real-time input with filters.
|
AudioStreamPump(TargetDataLine inputLine,
SourceDataLine outputLine,
int pumpBufferTimeMs)
Creates a pump for real-time input without filters.
|
Modifier and Type | Method and Description |
---|---|
void |
start()
Starts the pump.
|
void |
stop()
Stops the pump immediatelly.
|
void |
waitForCompletion(long millis)
Waits until the pump completes, e.g.
|
public AudioStreamPump(TargetDataLine inputLine, AudioInputStream inputStream, SourceDataLine outputLine, int pumpBufferTimeMs)
This constructor is used when a real-time data stream from an input line is piped through filters that provide an AudioInputStream
.
The data is read from the inputStream
, but the inputLine
is used to start and stop the input stream flow.
inputLine
- A TargetDataLine
that will be used to start/stop the input audio stream.inputStream
- A AudioInputStream
that will be used to read the audio data.outputLine
- The output line.pumpBufferTimeMs
- Time in milliseconds, used to determine the size of the internal buffer.
For a minimal real-time delay, the buffer should be as small as possible, but if the buffer is too small, performance will degrade.public AudioStreamPump(TargetDataLine inputLine, SourceDataLine outputLine, int pumpBufferTimeMs)
This constructor is used when a real-time input data stream comes directly from the input line.
inputLine
- The input line.outputLine
- The output line.pumpBufferTimeMs
- Time in milliseconds, used to determine the size of the internal buffer.
For a minimal real-time delay, the buffer should be as small as possible, but if the buffer is too small, performance will degrade.public AudioStreamPump(AudioInputStream inputStream, SourceDataLine outputLine)
This constructor is used with non-real-time input, e.g. input from a sound file.
inputStream
- The input stream.outputLine
- The output line.public void start()
public void waitForCompletion(long millis) throws InterruptedException
millis
- The maximum number of milliseconds to wait.InterruptedException