Index: media/filters/audio_renderer_impl.cc |
diff --git a/media/filters/audio_renderer_impl.cc b/media/filters/audio_renderer_impl.cc |
index af376a42babf1ed0a56dfd4857cbc193692832dd..44ee10823957a7733e7ef4734535e440ee10eca3 100644 |
--- a/media/filters/audio_renderer_impl.cc |
+++ b/media/filters/audio_renderer_impl.cc |
@@ -332,13 +332,11 @@ bool AudioRendererImpl::IsBeforePrerollTime( |
(buffer->GetTimestamp() + buffer->GetDuration()) < preroll_timestamp_; |
} |
-int AudioRendererImpl::Render(const std::vector<float*>& audio_data, |
- int number_of_frames, |
+int AudioRendererImpl::Render(AudioBus* audio_bus, |
int audio_delay_milliseconds) { |
if (stopped_ || GetPlaybackRate() == 0.0f) { |
// Output silence if stopped. |
- for (size_t i = 0; i < audio_data.size(); ++i) |
- memset(audio_data[i], 0, sizeof(float) * number_of_frames); |
+ audio_bus->Zero(); |
return 0; |
} |
@@ -355,30 +353,29 @@ int AudioRendererImpl::Render(const std::vector<float*>& audio_data, |
int bytes_per_frame = audio_parameters_.GetBytesPerFrame(); |
- const int buf_size = number_of_frames * bytes_per_frame; |
+ const int buf_size = audio_bus->frames() * bytes_per_frame; |
scoped_array<uint8> buf(new uint8[buf_size]); |
- int frames_filled = FillBuffer(buf.get(), number_of_frames, request_delay); |
+ int frames_filled = FillBuffer(buf.get(), audio_bus->frames(), request_delay); |
int bytes_filled = frames_filled * bytes_per_frame; |
DCHECK_LE(bytes_filled, buf_size); |
UpdateEarliestEndTime(bytes_filled, request_delay, base::Time::Now()); |
// Deinterleave each audio channel. |
- int channels = audio_data.size(); |
+ int channels = audio_bus->channels(); |
for (int channel_index = 0; channel_index < channels; ++channel_index) { |
media::DeinterleaveAudioChannel(buf.get(), |
- audio_data[channel_index], |
+ audio_bus->channel(channel_index), |
channels, |
channel_index, |
bytes_per_frame / channels, |
frames_filled); |
// If FillBuffer() didn't give us enough data then zero out the remainder. |
- if (frames_filled < number_of_frames) { |
- int frames_to_zero = number_of_frames - frames_filled; |
- memset(audio_data[channel_index] + frames_filled, |
- 0, |
- sizeof(float) * frames_to_zero); |
+ if (frames_filled < audio_bus->frames()) { |
+ int frames_to_zero = audio_bus->frames() - frames_filled; |
+ memset(audio_bus->channel(channel_index) + frames_filled, 0, |
+ sizeof(*audio_bus->channel(channel_index)) * frames_to_zero); |
} |
} |
return frames_filled; |