diff options
Diffstat (limited to 'src/java/jogamp/common/av/JavaSoundAudioSink.java')
-rw-r--r-- | src/java/jogamp/common/av/JavaSoundAudioSink.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/java/jogamp/common/av/JavaSoundAudioSink.java b/src/java/jogamp/common/av/JavaSoundAudioSink.java index 556ada4..c556e92 100644 --- a/src/java/jogamp/common/av/JavaSoundAudioSink.java +++ b/src/java/jogamp/common/av/JavaSoundAudioSink.java @@ -36,6 +36,9 @@ import javax.sound.sampled.SourceDataLine; import com.jogamp.common.av.AudioFormat; import com.jogamp.common.av.AudioSink; +import com.jogamp.common.av.PTS; +import com.jogamp.common.av.TimeFrameI; +import com.jogamp.common.os.Clock; /*** * JavaSound Audio Sink @@ -65,8 +68,8 @@ public final class JavaSoundAudioSink implements AudioSink { private int userMaxChannels = 8; private AudioFormat preferredFormat = null; private AudioFormat chosenFormat = null; - private volatile boolean playRequested = false; + private final PTS pts = new PTS( () -> { return playRequested ? 1f : 0f; } ); private float volume = 1.0f; static { @@ -243,6 +246,7 @@ public final class JavaSoundAudioSink implements AudioSink { public void flush() { if( null != auline ) { playRequested = false; + pts.set(0, TimeFrameI.INVALID_PTS); auline.stop(); auline.flush(); } @@ -290,6 +294,7 @@ public final class JavaSoundAudioSink implements AudioSink { bytesLeft -= len; written += len; } + this.pts.set(Clock.currentMillis(), pts); playImpl(); return new AudioDataFrame(pts, Math.round(1000f*chosenFormat.getBytesDuration(byteCount)), byteBuffer, byteCount); } @@ -315,10 +320,10 @@ public final class JavaSoundAudioSink implements AudioSink { } @Override - public final int getPTS() { return 0; } // FIXME + public final PTS getPTS() { return pts; } @Override - public final int updateQueue() { return 0; } // FIXME + public final PTS updateQueue() { return pts; } // FIXME @Override public int getLastBufferedPTS() { return 0; } // FIXME |