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

Side by Side Diff: content/renderer/pepper/pepper_platform_audio_input.cc

Issue 225903006: PPAPI: Run clang_format.py on content/renderer/pepper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 6 years, 8 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 "content/renderer/pepper/pepper_platform_audio_input.h" 5 #include "content/renderer/pepper/pepper_platform_audio_input.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop_proxy.h" 9 #include "base/message_loop/message_loop_proxy.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 12 matching lines...) Expand all
23 // static 23 // static
24 PepperPlatformAudioInput* PepperPlatformAudioInput::Create( 24 PepperPlatformAudioInput* PepperPlatformAudioInput::Create(
25 const base::WeakPtr<RenderViewImpl>& render_view, 25 const base::WeakPtr<RenderViewImpl>& render_view,
26 const std::string& device_id, 26 const std::string& device_id,
27 const GURL& document_url, 27 const GURL& document_url,
28 int sample_rate, 28 int sample_rate,
29 int frames_per_buffer, 29 int frames_per_buffer,
30 PepperAudioInputHost* client) { 30 PepperAudioInputHost* client) {
31 scoped_refptr<PepperPlatformAudioInput> audio_input( 31 scoped_refptr<PepperPlatformAudioInput> audio_input(
32 new PepperPlatformAudioInput()); 32 new PepperPlatformAudioInput());
33 if (audio_input->Initialize(render_view, device_id, document_url, 33 if (audio_input->Initialize(render_view,
34 sample_rate, frames_per_buffer, client)) { 34 device_id,
35 document_url,
36 sample_rate,
37 frames_per_buffer,
38 client)) {
35 // Balanced by Release invoked in 39 // Balanced by Release invoked in
36 // PepperPlatformAudioInput::ShutDownOnIOThread(). 40 // PepperPlatformAudioInput::ShutDownOnIOThread().
37 audio_input->AddRef(); 41 audio_input->AddRef();
38 return audio_input.get(); 42 return audio_input.get();
39 } 43 }
40 return NULL; 44 return NULL;
41 } 45 }
42 46
43 void PepperPlatformAudioInput::StartCapture() { 47 void PepperPlatformAudioInput::StartCapture() {
44 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread()); 48 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 DCHECK(length); 90 DCHECK(length);
87 // TODO(yzshen): Make use of circular buffer scheme. crbug.com/181449. 91 // TODO(yzshen): Make use of circular buffer scheme. crbug.com/181449.
88 DCHECK_EQ(1, total_segments); 92 DCHECK_EQ(1, total_segments);
89 93
90 if (base::MessageLoopProxy::current().get() != 94 if (base::MessageLoopProxy::current().get() !=
91 main_message_loop_proxy_.get()) { 95 main_message_loop_proxy_.get()) {
92 // If shutdown has occurred, |client_| will be NULL and the handles will be 96 // If shutdown has occurred, |client_| will be NULL and the handles will be
93 // cleaned up on the main thread. 97 // cleaned up on the main thread.
94 main_message_loop_proxy_->PostTask( 98 main_message_loop_proxy_->PostTask(
95 FROM_HERE, 99 FROM_HERE,
96 base::Bind(&PepperPlatformAudioInput::OnStreamCreated, this, 100 base::Bind(&PepperPlatformAudioInput::OnStreamCreated,
97 handle, socket_handle, length, total_segments)); 101 this,
102 handle,
103 socket_handle,
104 length,
105 total_segments));
98 } else { 106 } else {
99 // Must dereference the client only on the main thread. Shutdown may have 107 // Must dereference the client only on the main thread. Shutdown may have
100 // occurred while the request was in-flight, so we need to NULL check. 108 // occurred while the request was in-flight, so we need to NULL check.
101 if (client_) { 109 if (client_) {
102 client_->StreamCreated(handle, length, socket_handle); 110 client_->StreamCreated(handle, length, socket_handle);
103 } else { 111 } else {
104 // Clean up the handles. 112 // Clean up the handles.
105 base::SyncSocket temp_socket(socket_handle); 113 base::SyncSocket temp_socket(socket_handle);
106 base::SharedMemory temp_shared_memory(handle, false); 114 base::SharedMemory temp_shared_memory(handle, false);
107 } 115 }
108 } 116 }
109 } 117 }
110 118
111 void PepperPlatformAudioInput::OnVolume(double volume) {} 119 void PepperPlatformAudioInput::OnVolume(double volume) {}
112 120
113 void PepperPlatformAudioInput::OnStateChanged( 121 void PepperPlatformAudioInput::OnStateChanged(
114 media::AudioInputIPCDelegate::State state) { 122 media::AudioInputIPCDelegate::State state) {}
115 }
116 123
117 void PepperPlatformAudioInput::OnIPCClosed() { 124 void PepperPlatformAudioInput::OnIPCClosed() { ipc_.reset(); }
118 ipc_.reset();
119 }
120 125
121 PepperPlatformAudioInput::~PepperPlatformAudioInput() { 126 PepperPlatformAudioInput::~PepperPlatformAudioInput() {
122 // Make sure we have been shut down. Warning: this may happen on the I/O 127 // Make sure we have been shut down. Warning: this may happen on the I/O
123 // thread! 128 // thread!
124 // Although these members should be accessed on a specific thread (either the 129 // Although these members should be accessed on a specific thread (either the
125 // main thread or the I/O thread), it should be fine to examine their value 130 // main thread or the I/O thread), it should be fine to examine their value
126 // here. 131 // here.
127 DCHECK(!ipc_); 132 DCHECK(!ipc_);
128 DCHECK(!client_); 133 DCHECK(!client_);
129 DCHECK(label_.empty()); 134 DCHECK(label_.empty());
130 DCHECK(!pending_open_device_); 135 DCHECK(!pending_open_device_);
131 } 136 }
132 137
133 PepperPlatformAudioInput::PepperPlatformAudioInput() 138 PepperPlatformAudioInput::PepperPlatformAudioInput()
134 : client_(NULL), 139 : client_(NULL),
135 main_message_loop_proxy_(base::MessageLoopProxy::current()), 140 main_message_loop_proxy_(base::MessageLoopProxy::current()),
136 io_message_loop_proxy_(ChildProcess::current()->io_message_loop_proxy()), 141 io_message_loop_proxy_(ChildProcess::current()->io_message_loop_proxy()),
137 create_stream_sent_(false), 142 create_stream_sent_(false),
138 pending_open_device_(false), 143 pending_open_device_(false),
139 pending_open_device_id_(-1) { 144 pending_open_device_id_(-1) {}
140 }
141 145
142 bool PepperPlatformAudioInput::Initialize( 146 bool PepperPlatformAudioInput::Initialize(
143 const base::WeakPtr<RenderViewImpl>& render_view, 147 const base::WeakPtr<RenderViewImpl>& render_view,
144 const std::string& device_id, 148 const std::string& device_id,
145 const GURL& document_url, 149 const GURL& document_url,
146 int sample_rate, 150 int sample_rate,
147 int frames_per_buffer, 151 int frames_per_buffer,
148 PepperAudioInputHost* client) { 152 PepperAudioInputHost* client) {
149 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread()); 153 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread());
150 154
151 if (!render_view.get() || !client) 155 if (!render_view.get() || !client)
152 return false; 156 return false;
153 157
154 ipc_ = RenderThreadImpl::current()->audio_input_message_filter()-> 158 ipc_ = RenderThreadImpl::current()
155 CreateAudioInputIPC(render_view->GetRoutingID()); 159 ->audio_input_message_filter()
160 ->CreateAudioInputIPC(render_view->GetRoutingID());
156 161
157 render_view_ = render_view; 162 render_view_ = render_view;
158 client_ = client; 163 client_ = client;
159 164
160 params_.Reset(media::AudioParameters::AUDIO_PCM_LINEAR, 165 params_.Reset(media::AudioParameters::AUDIO_PCM_LINEAR,
161 media::CHANNEL_LAYOUT_MONO, ppapi::kAudioInputChannels, 0, 166 media::CHANNEL_LAYOUT_MONO,
162 sample_rate, ppapi::kBitsPerAudioInputSample, 167 ppapi::kAudioInputChannels,
168 0,
169 sample_rate,
170 ppapi::kBitsPerAudioInputSample,
163 frames_per_buffer); 171 frames_per_buffer);
164 172
165 // We need to open the device and obtain the label and session ID before 173 // We need to open the device and obtain the label and session ID before
166 // initializing. 174 // initializing.
167 pending_open_device_id_ = GetMediaDeviceManager()->OpenDevice( 175 pending_open_device_id_ = GetMediaDeviceManager()->OpenDevice(
168 PP_DEVICETYPE_DEV_AUDIOCAPTURE, 176 PP_DEVICETYPE_DEV_AUDIOCAPTURE,
169 device_id.empty() ? media::AudioManagerBase::kDefaultDeviceId : device_id, 177 device_id.empty() ? media::AudioManagerBase::kDefaultDeviceId : device_id,
170 document_url, 178 document_url,
171 base::Bind(&PepperPlatformAudioInput::OnDeviceOpened, this)); 179 base::Bind(&PepperPlatformAudioInput::OnDeviceOpened, this));
172 pending_open_device_ = true; 180 pending_open_device_ = true;
(...skipping 28 matching lines...) Expand all
201 } 209 }
202 ipc_.reset(); 210 ipc_.reset();
203 } 211 }
204 212
205 void PepperPlatformAudioInput::ShutDownOnIOThread() { 213 void PepperPlatformAudioInput::ShutDownOnIOThread() {
206 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); 214 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
207 215
208 StopCaptureOnIOThread(); 216 StopCaptureOnIOThread();
209 217
210 main_message_loop_proxy_->PostTask( 218 main_message_loop_proxy_->PostTask(
211 FROM_HERE, 219 FROM_HERE, base::Bind(&PepperPlatformAudioInput::CloseDevice, this));
212 base::Bind(&PepperPlatformAudioInput::CloseDevice, this));
213 220
214 Release(); // Release for the delegate, balances out the reference taken in 221 Release(); // Release for the delegate, balances out the reference taken in
215 // PepperPlatformAudioInput::Create. 222 // PepperPlatformAudioInput::Create.
216 } 223 }
217 224
218 void PepperPlatformAudioInput::OnDeviceOpened(int request_id, 225 void PepperPlatformAudioInput::OnDeviceOpened(int request_id,
219 bool succeeded, 226 bool succeeded,
220 const std::string& label) { 227 const std::string& label) {
221 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread()); 228 DCHECK(main_message_loop_proxy_->BelongsToCurrentThread());
222 229
223 pending_open_device_ = false; 230 pending_open_device_ = false;
224 pending_open_device_id_ = -1; 231 pending_open_device_id_ = -1;
225 232
226 if (succeeded && render_view_.get()) { 233 if (succeeded && render_view_.get()) {
227 DCHECK(!label.empty()); 234 DCHECK(!label.empty());
228 label_ = label; 235 label_ = label;
229 236
230 if (client_) { 237 if (client_) {
231 int session_id = GetMediaDeviceManager()->GetSessionID( 238 int session_id = GetMediaDeviceManager()->GetSessionID(
232 PP_DEVICETYPE_DEV_AUDIOCAPTURE, label); 239 PP_DEVICETYPE_DEV_AUDIOCAPTURE, label);
233 io_message_loop_proxy_->PostTask( 240 io_message_loop_proxy_->PostTask(
234 FROM_HERE, 241 FROM_HERE,
235 base::Bind(&PepperPlatformAudioInput::InitializeOnIOThread, 242 base::Bind(&PepperPlatformAudioInput::InitializeOnIOThread,
236 this, session_id)); 243 this,
244 session_id));
237 } else { 245 } else {
238 // Shutdown has occurred. 246 // Shutdown has occurred.
239 CloseDevice(); 247 CloseDevice();
240 } 248 }
241 } else { 249 } else {
242 NotifyStreamCreationFailed(); 250 NotifyStreamCreationFailed();
243 } 251 }
244 } 252 }
245 253
246 void PepperPlatformAudioInput::CloseDevice() { 254 void PepperPlatformAudioInput::CloseDevice() {
(...skipping 17 matching lines...) Expand all
264 272
265 if (client_) 273 if (client_)
266 client_->StreamCreationFailed(); 274 client_->StreamCreationFailed();
267 } 275 }
268 276
269 PepperMediaDeviceManager* PepperPlatformAudioInput::GetMediaDeviceManager() { 277 PepperMediaDeviceManager* PepperPlatformAudioInput::GetMediaDeviceManager() {
270 return PepperMediaDeviceManager::GetForRenderView(render_view_.get()); 278 return PepperMediaDeviceManager::GetForRenderView(render_view_.get());
271 } 279 }
272 280
273 } // namespace content 281 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_platform_audio_input.h ('k') | content/renderer/pepper/pepper_platform_audio_output.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698