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

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

Issue 14358049: Refactor AudioRendererMixer to be more generic. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments. Created 7 years, 7 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
« no previous file with comments | « no previous file | media/base/audio_converter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_ 5 #ifndef CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_
6 #define CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_ 6 #define CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 media::AudioHardwareConfig* hardware_config); 43 media::AudioHardwareConfig* hardware_config);
44 ~AudioRendererMixerManager(); 44 ~AudioRendererMixerManager();
45 45
46 // Creates an AudioRendererMixerInput with the proper callbacks necessary to 46 // Creates an AudioRendererMixerInput with the proper callbacks necessary to
47 // retrieve an AudioRendererMixer instance from AudioRendererMixerManager. 47 // retrieve an AudioRendererMixer instance from AudioRendererMixerManager.
48 // |source_render_view_id| refers to the RenderView containing the entity 48 // |source_render_view_id| refers to the RenderView containing the entity
49 // rendering the audio. Caller must ensure AudioRendererMixerManager outlives 49 // rendering the audio. Caller must ensure AudioRendererMixerManager outlives
50 // the returned input. 50 // the returned input.
51 media::AudioRendererMixerInput* CreateInput(int source_render_view_id); 51 media::AudioRendererMixerInput* CreateInput(int source_render_view_id);
52 52
53 // Returns a mixer instance based on AudioParameters; an existing one if one
54 // with the provided AudioParameters exists or a new one if not.
55 media::AudioRendererMixer* GetMixer(int source_render_view_id,
56 const media::AudioParameters& params);
57
58 // Remove a mixer instance given a mixer if the only other reference is held
59 // by AudioRendererMixerManager. Every AudioRendererMixer owner must call
60 // this method when it's done with a mixer.
61 void RemoveMixer(int source_render_view_id,
62 const media::AudioParameters& params);
63
53 private: 64 private:
54 friend class AudioRendererMixerManagerTest; 65 friend class AudioRendererMixerManagerTest;
55 66
56 // Define a key so that only those AudioRendererMixerInputs from the same 67 // Define a key so that only those AudioRendererMixerInputs from the same
57 // RenderView and with the same AudioParameters can be mixed together. 68 // RenderView and with the same AudioParameters can be mixed together.
58 typedef std::pair<int, media::AudioParameters> MixerKey; 69 typedef std::pair<int, media::AudioParameters> MixerKey;
59 70
60 // Map of MixerKey to <AudioRendererMixer, Count>. Count allows 71 // Map of MixerKey to <AudioRendererMixer, Count>. Count allows
61 // AudioRendererMixerManager to keep track explicitly (v.s. RefCounted which 72 // AudioRendererMixerManager to keep track explicitly (v.s. RefCounted which
62 // is implicit) of the number of outstanding AudioRendererMixers. 73 // is implicit) of the number of outstanding AudioRendererMixers.
63 struct AudioRendererMixerReference { 74 struct AudioRendererMixerReference {
64 media::AudioRendererMixer* mixer; 75 media::AudioRendererMixer* mixer;
65 int ref_count; 76 int ref_count;
66 }; 77 };
67 typedef std::map<MixerKey, AudioRendererMixerReference> AudioRendererMixerMap; 78 typedef std::map<MixerKey, AudioRendererMixerReference> AudioRendererMixerMap;
68 79
69 // Overrides the AudioRendererSink implementation for unit testing. 80 // Overrides the AudioRendererSink implementation for unit testing.
70 void SetAudioRendererSinkForTesting(media::AudioRendererSink* sink); 81 void SetAudioRendererSinkForTesting(media::AudioRendererSink* sink);
71 82
72 // Returns a mixer instance based on AudioParameters; an existing one if one
73 // with the provided AudioParameters exists or a new one if not.
74 media::AudioRendererMixer* GetMixer(int source_render_view_id,
75 const media::AudioParameters& params);
76
77 // Remove a mixer instance given a mixer if the only other reference is held
78 // by AudioRendererMixerManager. Every AudioRendererMixer owner must call
79 // this method when it's done with a mixer.
80 void RemoveMixer(int source_render_view_id,
81 const media::AudioParameters& params);
82
83 // Active mixers. 83 // Active mixers.
84 AudioRendererMixerMap mixers_; 84 AudioRendererMixerMap mixers_;
85 base::Lock mixers_lock_; 85 base::Lock mixers_lock_;
86 86
87 // Audio hardware configuration. Used to construct output AudioParameters for 87 // Audio hardware configuration. Used to construct output AudioParameters for
88 // each AudioRendererMixer instance. 88 // each AudioRendererMixer instance.
89 media::AudioHardwareConfig* const hardware_config_; 89 media::AudioHardwareConfig* const hardware_config_;
90 90
91 media::AudioRendererSink* sink_for_testing_; 91 media::AudioRendererSink* sink_for_testing_;
92 92
93 DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerManager); 93 DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerManager);
94 }; 94 };
95 95
96 } // namespace content 96 } // namespace content
97 97
98 #endif // CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_ 98 #endif // CONTENT_RENDERER_MEDIA_AUDIO_RENDERER_MIXER_MANAGER_H_
OLDNEW
« no previous file with comments | « no previous file | media/base/audio_converter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698