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

Side by Side Diff: media/audio/virtual_audio_input_stream.cc

Issue 66183002: Replace MessageLoopProxy with SingleThreadTaskRunner for the rest of media/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix win and audio tests Created 6 years, 11 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
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 #include "media/audio/virtual_audio_input_stream.h" 5 #include "media/audio/virtual_audio_input_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/message_loop/message_loop_proxy.h"
13 #include "media/audio/virtual_audio_output_stream.h" 12 #include "media/audio/virtual_audio_output_stream.h"
14 13
15 namespace media { 14 namespace media {
16 15
17 // LoopbackAudioConverter works similar to AudioConverter and converts input 16 // LoopbackAudioConverter works similar to AudioConverter and converts input
18 // streams to different audio parameters. Then, the LoopbackAudioConverter can 17 // streams to different audio parameters. Then, the LoopbackAudioConverter can
19 // be used as an input to another AudioConverter. This allows us to 18 // be used as an input to another AudioConverter. This allows us to
20 // use converted audio from AudioOutputStreams as input to an AudioConverter. 19 // use converted audio from AudioOutputStreams as input to an AudioConverter.
21 // For example, this allows converting multiple streams into a common format and 20 // For example, this allows converting multiple streams into a common format and
22 // using the converted audio as input to another AudioConverter (i.e. a mixer). 21 // using the converted audio as input to another AudioConverter (i.e. a mixer).
(...skipping 20 matching lines...) Expand all
43 return 1.0; 42 return 1.0;
44 } 43 }
45 44
46 AudioConverter audio_converter_; 45 AudioConverter audio_converter_;
47 46
48 DISALLOW_COPY_AND_ASSIGN(LoopbackAudioConverter); 47 DISALLOW_COPY_AND_ASSIGN(LoopbackAudioConverter);
49 }; 48 };
50 49
51 VirtualAudioInputStream::VirtualAudioInputStream( 50 VirtualAudioInputStream::VirtualAudioInputStream(
52 const AudioParameters& params, 51 const AudioParameters& params,
53 const scoped_refptr<base::MessageLoopProxy>& worker_loop, 52 const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
54 const AfterCloseCallback& after_close_cb) 53 const AfterCloseCallback& after_close_cb)
55 : worker_loop_(worker_loop), 54 : worker_task_runner_(worker_task_runner),
56 after_close_cb_(after_close_cb), 55 after_close_cb_(after_close_cb),
57 callback_(NULL), 56 callback_(NULL),
58 buffer_(new uint8[params.GetBytesPerBuffer()]), 57 buffer_(new uint8[params.GetBytesPerBuffer()]),
59 params_(params), 58 params_(params),
60 mixer_(params_, params_, false), 59 mixer_(params_, params_, false),
61 num_attached_output_streams_(0), 60 num_attached_output_streams_(0),
62 fake_consumer_(worker_loop_, params_) { 61 fake_consumer_(worker_task_runner_, params_) {
63 DCHECK(params_.IsValid()); 62 DCHECK(params_.IsValid());
64 DCHECK(worker_loop_.get()); 63 DCHECK(worker_task_runner_.get());
65 64
66 // VAIS can be constructed on any thread, but will DCHECK that all 65 // VAIS can be constructed on any thread, but will DCHECK that all
67 // AudioInputStream methods are called from the same thread. 66 // AudioInputStream methods are called from the same thread.
68 thread_checker_.DetachFromThread(); 67 thread_checker_.DetachFromThread();
69 } 68 }
70 69
71 VirtualAudioInputStream::~VirtualAudioInputStream() { 70 VirtualAudioInputStream::~VirtualAudioInputStream() {
72 DCHECK(!callback_); 71 DCHECK(!callback_);
73 72
74 // Sanity-check: Contract for Add/RemoveOutputStream() requires that all 73 // Sanity-check: Contract for Add/RemoveOutputStream() requires that all
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 base::AutoLock scoped_lock(converter_network_lock_); 126 base::AutoLock scoped_lock(converter_network_lock_);
128 127
129 DCHECK(converters_.find(output_params) != converters_.end()); 128 DCHECK(converters_.find(output_params) != converters_.end());
130 converters_[output_params]->RemoveInput(stream); 129 converters_[output_params]->RemoveInput(stream);
131 130
132 --num_attached_output_streams_; 131 --num_attached_output_streams_;
133 DCHECK_LE(0, num_attached_output_streams_); 132 DCHECK_LE(0, num_attached_output_streams_);
134 } 133 }
135 134
136 void VirtualAudioInputStream::PumpAudio(AudioBus* audio_bus) { 135 void VirtualAudioInputStream::PumpAudio(AudioBus* audio_bus) {
137 DCHECK(worker_loop_->BelongsToCurrentThread()); 136 DCHECK(worker_task_runner_->BelongsToCurrentThread());
138 137
139 { 138 {
140 base::AutoLock scoped_lock(converter_network_lock_); 139 base::AutoLock scoped_lock(converter_network_lock_);
141 mixer_.Convert(audio_bus); 140 mixer_.Convert(audio_bus);
142 } 141 }
143 audio_bus->ToInterleaved(params_.frames_per_buffer(), 142 audio_bus->ToInterleaved(params_.frames_per_buffer(),
144 params_.bits_per_sample() / 8, 143 params_.bits_per_sample() / 8,
145 buffer_.get()); 144 buffer_.get());
146 callback_->OnData(this, 145 callback_->OnData(this,
147 buffer_.get(), 146 buffer_.get(),
(...skipping 27 matching lines...) Expand all
175 return 1.0; 174 return 1.0;
176 } 175 }
177 176
178 void VirtualAudioInputStream::SetAutomaticGainControl(bool enabled) {} 177 void VirtualAudioInputStream::SetAutomaticGainControl(bool enabled) {}
179 178
180 bool VirtualAudioInputStream::GetAutomaticGainControl() { 179 bool VirtualAudioInputStream::GetAutomaticGainControl() {
181 return false; 180 return false;
182 } 181 }
183 182
184 } // namespace media 183 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/virtual_audio_input_stream.h ('k') | media/audio/virtual_audio_input_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698