Index: chromecast/media/audio/cast_audio_mixer.cc |
diff --git a/chromecast/media/audio/cast_audio_mixer.cc b/chromecast/media/audio/cast_audio_mixer.cc |
index fc73fbbf4d8013581545959bac4df8248c6db9e9..2eb5097c424991969663072b6d84cf142828b240 100644 |
--- a/chromecast/media/audio/cast_audio_mixer.cc |
+++ b/chromecast/media/audio/cast_audio_mixer.cc |
@@ -4,6 +4,7 @@ |
#include "chromecast/media/audio/cast_audio_mixer.h" |
+#include "base/logging.h" |
#include "chromecast/media/audio/cast_audio_manager.h" |
#include "chromecast/media/audio/cast_audio_output_stream.h" |
#include "media/base/channel_layout.h" |
@@ -140,8 +141,10 @@ class CastAudioMixer::MixerProxyStream |
uint32_t frames_delayed) override { |
DCHECK(source_callback_); |
- uint32_t bytes_delay = frames_delayed * input_params_.GetBytesPerFrame(); |
- source_callback_->OnMoreData(audio_bus, bytes_delay, 0); |
+ const base::TimeDelta delay = base::TimeDelta::FromMicroseconds( |
+ frames_delayed * base::Time::kMicrosecondsPerSecond / |
+ input_params_.sample_rate()); |
chcunningham
2016/09/23 20:53:29
int division
jameswest
2016/09/29 00:52:24
Moved to utility function.
|
+ source_callback_->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus); |
return volume_; |
} |
@@ -245,13 +248,13 @@ void CastAudioMixer::RemoveInput( |
output_stream_->Stop(); |
} |
-int CastAudioMixer::OnMoreData(::media::AudioBus* dest, |
- uint32_t total_bytes_delay, |
- uint32_t frames_skipped) { |
+int CastAudioMixer::OnMoreData(base::TimeDelta delay, |
+ base::TimeTicks /* delay_timestamp */, |
+ int /* prior_frames_skipped */, |
+ ::media::AudioBus* dest) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- uint32_t frames_delayed = |
- total_bytes_delay / output_params_.GetBytesPerFrame(); |
+ uint32_t frames_delayed = delay.InSecondsF() * output_params_.sample_rate(); |
chcunningham
2016/09/23 20:53:29
What do you think about delay in frames instead of
miu
2016/09/28 23:04:41
I'm torn between both, myself. But, overall, I sup
jameswest
2016/09/29 00:52:24
I'm personally ambivalent. One thing I'll add is t
|
mixer_->ConvertWithDelay(frames_delayed, dest); |
return dest->frames(); |
} |
@@ -282,4 +285,4 @@ void CastAudioMixer::OnError(::media::AudioOutputStream* stream) { |
} |
} // namespace media |
-} // namespace chromecast |
+} // namespace chromecast |