| Index: media/audio/audio_output_device.cc
|
| diff --git a/media/audio/audio_output_device.cc b/media/audio/audio_output_device.cc
|
| index 1607e473c1db75f35272057d56e6ad1eca0dfc40..0dcc76aca062b19bbdfb941088d053c1d1970ad3 100644
|
| --- a/media/audio/audio_output_device.cc
|
| +++ b/media/audio/audio_output_device.cc
|
| @@ -39,14 +39,14 @@
|
| void MapSharedMemory() override;
|
|
|
| // Called whenever we receive notifications about pending data.
|
| - void Process(int64_t pending_data, base::TimeTicks delay_timestamp) override;
|
| + void Process(uint32_t pending_data) override;
|
|
|
| // Returns whether the current thread is the audio device thread or not.
|
| // Will always return true if DCHECKs are not enabled.
|
| bool CurrentThreadIsAudioDeviceThread();
|
|
|
| private:
|
| - const int frame_rate_;
|
| + const int bytes_per_frame_;
|
| AudioRendererSink::RenderCallback* render_callback_;
|
| std::unique_ptr<AudioBus> output_bus_;
|
| uint64_t callback_num_;
|
| @@ -431,7 +431,7 @@
|
| int memory_length,
|
| AudioRendererSink::RenderCallback* render_callback)
|
| : AudioDeviceThread::Callback(audio_parameters, memory, memory_length, 1),
|
| - frame_rate_(audio_parameters.sample_rate()),
|
| + bytes_per_frame_(audio_parameters.GetBytesPerFrame()),
|
| render_callback_(render_callback),
|
| callback_num_(0) {}
|
|
|
| @@ -451,10 +451,9 @@
|
| }
|
|
|
| // Called whenever we receive notifications about pending data.
|
| -void AudioOutputDevice::AudioThreadCallback::Process(
|
| - int64_t pending_data,
|
| - base::TimeTicks delay_timestamp) {
|
| - base::TimeDelta delay = base::TimeDelta::FromInternalValue(pending_data);
|
| +void AudioOutputDevice::AudioThreadCallback::Process(uint32_t pending_data) {
|
| + // Convert the number of pending bytes in the render buffer into frames.
|
| + double frames_delayed = static_cast<double>(pending_data) / bytes_per_frame_;
|
|
|
| callback_num_++;
|
| TRACE_EVENT1("audio", "AudioOutputDevice::FireRenderCallback",
|
| @@ -473,15 +472,16 @@
|
| uint32_t frames_skipped = buffer->params.frames_skipped;
|
| buffer->params.frames_skipped = 0;
|
|
|
| - DVLOG(4) << __func__ << " delay:" << delay
|
| + DVLOG(4) << __func__ << " pending_data:" << pending_data
|
| + << " frames_delayed(pre-round):" << frames_delayed
|
| << " frames_skipped:" << frames_skipped;
|
|
|
| // Update the audio-delay measurement, inform about the number of skipped
|
| // frames, and ask client to render audio. Since |output_bus_| is wrapping
|
| // the shared memory the Render() call is writing directly into the shared
|
| // memory.
|
| - render_callback_->Render(delay, delay_timestamp, frames_skipped,
|
| - output_bus_.get());
|
| + render_callback_->Render(output_bus_.get(), std::round(frames_delayed),
|
| + frames_skipped);
|
| }
|
|
|
| bool AudioOutputDevice::AudioThreadCallback::
|
|
|