OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 AudioUtilities::kRenderQuantumFrames, | 73 AudioUtilities::kRenderQuantumFrames, |
74 false)), | 74 false)), |
75 render_bus_(AudioBus::Create(number_of_output_channels, | 75 render_bus_(AudioBus::Create(number_of_output_channels, |
76 AudioUtilities::kRenderQuantumFrames)), | 76 AudioUtilities::kRenderQuantumFrames)), |
77 callback_(callback), | 77 callback_(callback), |
78 frames_elapsed_(0) { | 78 frames_elapsed_(0) { |
79 // Create WebAudioDevice. blink::WebAudioDevice is designed to support the | 79 // Create WebAudioDevice. blink::WebAudioDevice is designed to support the |
80 // local input (e.g. loopback from OS audio system), but Chromium's media | 80 // local input (e.g. loopback from OS audio system), but Chromium's media |
81 // renderer does not support it currently. Thus, we use zero for the number | 81 // renderer does not support it currently. Thus, we use zero for the number |
82 // of input channels. | 82 // of input channels. |
83 web_audio_device_ = WTF::WrapUnique(Platform::Current()->CreateAudioDevice( | 83 web_audio_device_ = Platform::Current()->CreateAudioDevice( |
84 0, number_of_output_channels, latency_hint, this, String(), | 84 0, number_of_output_channels, latency_hint, this, String(), |
85 std::move(security_origin))); | 85 std::move(security_origin)); |
86 DCHECK(web_audio_device_); | 86 DCHECK(web_audio_device_); |
87 | 87 |
88 callback_buffer_size_ = web_audio_device_->FramesPerBuffer(); | 88 callback_buffer_size_ = web_audio_device_->FramesPerBuffer(); |
89 if (!CheckBufferSize()) { | 89 if (!CheckBufferSize()) { |
90 NOTREACHED(); | 90 NOTREACHED(); |
91 } | 91 } |
92 } | 92 } |
93 | 93 |
94 AudioDestination::~AudioDestination() { | 94 AudioDestination::~AudioDestination() { |
95 Stop(); | 95 Stop(); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 } | 169 } |
170 | 170 |
171 frames_elapsed_ += frames_requested; | 171 frames_elapsed_ += frames_requested; |
172 } | 172 } |
173 | 173 |
174 void AudioDestination::Start() { | 174 void AudioDestination::Start() { |
175 DCHECK(IsMainThread()); | 175 DCHECK(IsMainThread()); |
176 | 176 |
177 // Start the "audio device" after the rendering thread is ready. | 177 // Start the "audio device" after the rendering thread is ready. |
178 if (web_audio_device_ && !is_playing_) { | 178 if (web_audio_device_ && !is_playing_) { |
179 rendering_thread_ = WTF::WrapUnique( | 179 rendering_thread_ = |
180 Platform::Current()->CreateThread("WebAudio Rendering Thread")); | 180 Platform::Current()->CreateThread("WebAudio Rendering Thread"); |
181 web_audio_device_->Start(); | 181 web_audio_device_->Start(); |
182 is_playing_ = true; | 182 is_playing_ = true; |
183 } | 183 } |
184 } | 184 } |
185 | 185 |
186 void AudioDestination::Stop() { | 186 void AudioDestination::Stop() { |
187 DCHECK(IsMainThread()); | 187 DCHECK(IsMainThread()); |
188 | 188 |
189 // This assumes stopping the "audio device" is synchronous and dumping the | 189 // This assumes stopping the "audio device" is synchronous and dumping the |
190 // rendering thread is safe after that. | 190 // rendering thread is safe after that. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 DCHECK(is_buffer_size_valid); | 244 DCHECK(is_buffer_size_valid); |
245 return is_buffer_size_valid; | 245 return is_buffer_size_valid; |
246 } | 246 } |
247 | 247 |
248 bool AudioDestination::IsRenderingThread() { | 248 bool AudioDestination::IsRenderingThread() { |
249 return static_cast<ThreadIdentifier>(rendering_thread_->ThreadId()) == | 249 return static_cast<ThreadIdentifier>(rendering_thread_->ThreadId()) == |
250 CurrentThread(); | 250 CurrentThread(); |
251 } | 251 } |
252 | 252 |
253 } // namespace blink | 253 } // namespace blink |
OLD | NEW |