Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1536)

Unified Diff: media/audio/audio_output_mixer.cc

Issue 10466007: Fix wrong timing when audio is muted. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/audio_output_mixer.h ('k') | media/audio/audio_output_proxy_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_output_mixer.cc
===================================================================
--- media/audio/audio_output_mixer.cc (revision 140286)
+++ media/audio/audio_output_mixer.cc (working copy)
@@ -16,6 +16,9 @@
namespace media {
+// Align audio data to 64-byte boundary. That is current max AVX can use.
+const size_t kMixerDataAlignment = 64;
+
AudioOutputMixer::AudioOutputMixer(AudioManager* audio_manager,
const AudioParameters& params,
const base::TimeDelta& close_delay)
@@ -26,8 +29,11 @@
weak_this_.GetWeakPtr(),
&AudioOutputMixer::ClosePhysicalStream),
pending_bytes_(0) {
- // TODO(enal): align data.
- mixer_data_.reset(new uint8[params_.GetBytesPerBuffer()]);
+ mixer_data_.reset(
DaleCurtis 2012/06/04 20:48:12 Drive by: if you don't mind a 32 byte alignment yo
+ new uint8[params_.GetBytesPerBuffer() + kMixerDataAlignment - 1]);
+ aligned_mixer_data_ = reinterpret_cast<uint8*>(
+ (reinterpret_cast<size_t>(mixer_data_.get()) + kMixerDataAlignment - 1) &
+ ~(kMixerDataAlignment - 1));
}
AudioOutputMixer::~AudioOutputMixer() {
@@ -197,8 +203,6 @@
// No need to mix muted stream.
double volume = proxy_data->volume;
- if (volume == 0.0)
- continue;
// Different handling for first and all subsequent streams.
if (first_stream) {
@@ -212,7 +216,7 @@
if (actual_size < max_size)
memset(dest + actual_size, 0, max_size - actual_size);
first_stream = false;
- actual_dest = mixer_data_.get();
+ actual_dest = aligned_mixer_data_;
actual_total_size = actual_size;
} else {
media::MixStreams(dest,
« no previous file with comments | « media/audio/audio_output_mixer.h ('k') | media/audio/audio_output_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698