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

Side by Side Diff: content/renderer/media/audio_renderer_mixer_manager.cc

Issue 10636036: Enable renderer side mixing behind a flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Renderer Side Mixing! Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/renderer/media/audio_renderer_mixer_manager.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "content/renderer/media/audio_device_factory.h"
10 #include "media/audio/audio_util.h"
11 #include "media/base/audio_renderer_mixer.h"
12 #include "media/base/audio_renderer_mixer_input.h"
13
14 using content::AudioDeviceFactory;
jochen (gone - plz use gerrit) 2012/07/13 08:51:03 after you've moved the class into namespace conten
DaleCurtis 2012/07/13 21:28:33 Done.
15
16 AudioRendererMixerManager::AudioRendererMixerManager() {
17 // DCHECK something static?
scherkus (not reviewing) 2012/07/13 18:40:16 wha?
DaleCurtis 2012/07/13 21:28:33 Leftover from an earlier thought process about ens
18 }
19
20 AudioRendererMixerManager::~AudioRendererMixerManager() {}
jochen (gone - plz use gerrit) 2012/07/13 08:51:03 maybe DCHECK that all mixers have been removed?
scherkus (not reviewing) 2012/07/13 18:40:16 yeah DCHECK(mixer_map_.empty()) wouldn't hurt
DaleCurtis 2012/07/13 21:28:33 Done.
21
22 scoped_refptr<media::AudioRendererMixerInput>
23 AudioRendererMixerManager::CreateInput() {
24 return new media::AudioRendererMixerInput(
jochen (gone - plz use gerrit) 2012/07/13 08:51:03 please add a comment in the header that the caller
DaleCurtis 2012/07/13 21:28:33 Done.
25 base::Bind(
26 &AudioRendererMixerManager::GetMixer, base::Unretained(this)),
27 base::Bind(
28 &AudioRendererMixerManager::RemoveMixer, base::Unretained(this)));
29 }
30
31 media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(
32 const media::AudioParameters& params) {
33 base::AutoLock auto_lock(mixer_map_lock_);
34
35 AudioRendererMixerMap::iterator it = mixer_map_.find(params);
36 if (it != mixer_map_.end()) {
37 // Increment the reference count.
scherkus (not reviewing) 2012/07/13 18:40:16 comment ain't useful
DaleCurtis 2012/07/13 21:28:33 Done.
38 it->second.second++;
39 return it->second.first;
40 }
41
42 // Create output parameters for passing on to the output sink.
43 // TODO(dalecurtis): Set format and buffer size in AudioRendererImpl.
44 // TODO(dalecurtis): We don't care about the hardware in the ARMM tests, but
45 // is it okay for unit tests to call these methods?
46 media::AudioRendererMixer* mixer = new media::AudioRendererMixer(
47 params, media::AudioParameters(
48 media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
49 params.channel_layout(), media::GetAudioHardwareSampleRate(), 16,
50 media::GetAudioHardwareBufferSize()),
51 AudioDeviceFactory::Create());
52 mixer_map_[params] = std::make_pair(mixer, 1);
53 return mixer;
54 }
55
56 void AudioRendererMixerManager::RemoveMixer(
57 const media::AudioParameters& params) {
58 base::AutoLock auto_lock(mixer_map_lock_);
59
60 AudioRendererMixerMap::iterator it = mixer_map_.find(params);
61 DCHECK(it != mixer_map_.end());
62
63 // Remove the reference.
jochen (gone - plz use gerrit) 2012/07/13 08:51:03 that comment doesn't add any value
DaleCurtis 2012/07/13 21:28:33 Done.
64 it->second.second--;
65
66 // Only remove the mixer if AudioRendererMixerManager is the last owner.
67 if (it->second.second == 0) {
68 delete it->second.first;
69 mixer_map_.erase(it);
70 }
71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698