Commit c5501e8e authored by Mina Almasry's avatar Mina Almasry Committed by Commit Bot

Don't delay audio playback in non-kModeSyncPts

Bug: b/74612005
Test: On device unittests
Change-Id: I628a3ad8563fb1fb35ea783f73f24a62e497091a
Reviewed-on: https://chromium-review.googlesource.com/1028560Reviewed-by: default avatarKenneth MacKay <kmackay@chromium.org>
Commit-Queue: Mina Almasry <almasrymina@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553677}
parent 828a2eee
......@@ -289,8 +289,7 @@ int BufferingMixerSource::FillAudioPlaybackFrames(
// playback_start_timestamp_ accurate to +10ms. Improve this to be sample
// accurate by writing a partial silence buffer when it's time to start
// playback.
if (playback_absolute_timestamp != INT64_MIN &&
playback_absolute_timestamp < playback_start_timestamp_) {
if (playback_absolute_timestamp < playback_start_timestamp_) {
return 0;
}
......
......@@ -206,6 +206,8 @@ class BufferingMixerSource : public MixerInput::Source,
const int max_queued_frames_;
// Minimum number of frames buffered before starting to fill data.
const int start_threshold_frames_;
// The absolute timestamp relative to clock monotonic (raw) at which the
// playback should start. INT64_MIN indicates playback should start ASAP.
const int64_t playback_start_timestamp_;
LockedMembers locked_members_;
......
......@@ -70,13 +70,18 @@ bool MediaPipelineBackendForMixer::Initialize() {
bool MediaPipelineBackendForMixer::Start(int64_t start_pts) {
DCHECK_EQ(kStateInitialized, state_);
int64_t start_playback_timestamp_us =
MonotonicClockNow() + kSyncedPlaybackStartDelayUs;
int64_t start_playback_timestamp_us = INT64_MIN;
if (params_.sync_type == MediaPipelineDeviceParams::kModeSyncPts) {
start_playback_timestamp_us =
MonotonicClockNow() + kSyncedPlaybackStartDelayUs;
}
if (audio_decoder_ && !audio_decoder_->Start(start_playback_timestamp_us))
return false;
if (video_decoder_ && !video_decoder_->Start(start_pts, true))
return false;
// TODO(almasrymina): need to also start video playback at the proper time in
// non-kModeSyncPts.
if (video_decoder_ &&
!video_decoder_->SetPts(start_playback_timestamp_us, start_pts))
return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment