Don't sample the timestamp/latency for AC-3 passthrough playback.

This commit is contained in:
Oliver Woodman 2015-05-19 14:00:49 +01:00
parent 9f53ea8116
commit 0dfc1d3bb7

View File

@ -574,6 +574,7 @@ public final class AudioTrack {
submittedBytes = 0; submittedBytes = 0;
temporaryBufferSize = 0; temporaryBufferSize = 0;
startMediaTimeUs = START_NOT_SET; startMediaTimeUs = START_NOT_SET;
latencyUs = 0;
resetSyncParams(); resetSyncParams();
int playState = audioTrack.getPlayState(); int playState = audioTrack.getPlayState();
if (playState == android.media.AudioTrack.PLAYSTATE_PLAYING) { if (playState == android.media.AudioTrack.PLAYSTATE_PLAYING) {
@ -647,9 +648,10 @@ public final class AudioTrack {
} }
} }
if (systemClockUs - lastTimestampSampleTimeUs >= MIN_TIMESTAMP_SAMPLE_INTERVAL_US) { // Don't sample the timestamp and latency if this is an AC-3 passthrough AudioTrack, as the
// Don't use AudioTrack.getTimestamp() on AC-3 tracks, as it gives an incorrect timestamp. // returned values cause audio/video synchronization to be incorrect.
audioTimestampSet = !isAc3 && audioTrackUtil.updateTimestamp(); if (!isAc3 && systemClockUs - lastTimestampSampleTimeUs >= MIN_TIMESTAMP_SAMPLE_INTERVAL_US) {
audioTimestampSet = audioTrackUtil.updateTimestamp();
if (audioTimestampSet) { if (audioTimestampSet) {
// Perform sanity checks on the timestamp. // Perform sanity checks on the timestamp.
long audioTimestampUs = audioTrackUtil.getTimestampNanoTime() / 1000; long audioTimestampUs = audioTrackUtil.getTimestampNanoTime() / 1000;