| Index: media/blink/webaudiosourceprovider_impl.cc
|
| diff --git a/media/blink/webaudiosourceprovider_impl.cc b/media/blink/webaudiosourceprovider_impl.cc
|
| index e54dbc81aa1f4e9d37989d16385b47f8707dae10..f892ba63d5fa3ae7cb319635c58bc5222f8695c4 100644
|
| --- a/media/blink/webaudiosourceprovider_impl.cc
|
| +++ b/media/blink/webaudiosourceprovider_impl.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "media/base/audio_timestamp_helper.h"
|
| #include "media/base/bind_to_current_loop.h"
|
| #include "third_party/WebKit/public/platform/WebAudioSourceProviderClient.h"
|
|
|
| @@ -69,9 +70,10 @@ class WebAudioSourceProviderImpl::TeeFilter
|
| // AudioRendererSink::RenderCallback implementation.
|
| // These are forwarders to |renderer_| and are here to allow for a client to
|
| // get a copy of the rendered audio by SetCopyAudioCallback().
|
| - int Render(AudioBus* audio_bus,
|
| - uint32_t frames_delayed,
|
| - uint32_t frames_skipped) override;
|
| + int Render(base::TimeDelta delay,
|
| + base::TimeTicks delay_timestamp,
|
| + int prior_frames_skipped,
|
| + AudioBus* dest) override;
|
| void OnRenderError() override;
|
|
|
| bool IsInitialized() const { return !!renderer_; }
|
| @@ -156,7 +158,8 @@ void WebAudioSourceProviderImpl::provideInput(
|
|
|
| DCHECK(client_);
|
| DCHECK_EQ(tee_filter_->channels(), bus_wrapper_->channels());
|
| - const int frames = tee_filter_->Render(bus_wrapper_.get(), 0, 0);
|
| + const int frames = tee_filter_->Render(
|
| + base::TimeDelta(), base::TimeTicks::Now(), 0, bus_wrapper_.get());
|
| if (frames < incoming_number_of_frames)
|
| bus_wrapper_->ZeroFramesPartial(frames, incoming_number_of_frames - frames);
|
|
|
| @@ -254,7 +257,8 @@ void WebAudioSourceProviderImpl::ClearCopyAudioCallback() {
|
| }
|
|
|
| int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) {
|
| - return tee_filter_->Render(audio_bus, 0, 0);
|
| + return tee_filter_->Render(base::TimeDelta(), base::TimeTicks::Now(), 0,
|
| + audio_bus);
|
| }
|
|
|
| void WebAudioSourceProviderImpl::OnSetFormat() {
|
| @@ -266,15 +270,19 @@ void WebAudioSourceProviderImpl::OnSetFormat() {
|
| client_->setFormat(tee_filter_->channels(), tee_filter_->sample_rate());
|
| }
|
|
|
| -int WebAudioSourceProviderImpl::TeeFilter::Render(AudioBus* audio_bus,
|
| - uint32_t frames_delayed,
|
| - uint32_t frames_skipped) {
|
| +int WebAudioSourceProviderImpl::TeeFilter::Render(
|
| + base::TimeDelta delay,
|
| + base::TimeTicks delay_timestamp,
|
| + int prior_frames_skipped,
|
| + AudioBus* audio_bus) {
|
| DCHECK(IsInitialized());
|
|
|
| - const int num_rendered_frames =
|
| - renderer_->Render(audio_bus, frames_delayed, frames_skipped);
|
| + const int num_rendered_frames = renderer_->Render(
|
| + delay, delay_timestamp, prior_frames_skipped, audio_bus);
|
|
|
| if (!copy_audio_bus_callback_.is_null()) {
|
| + const int64_t frames_delayed =
|
| + AudioTimestampHelper::TimeToFrames(delay, sample_rate_);
|
| std::unique_ptr<AudioBus> bus_copy =
|
| AudioBus::Create(audio_bus->channels(), audio_bus->frames());
|
| audio_bus->CopyTo(bus_copy.get());
|
|
|