| OLD | NEW |
| 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/media/webrtc_local_audio_track.h" | 5 #include "content/renderer/media/webrtc_local_audio_track.h" |
| 6 | 6 |
| 7 #include "content/renderer/media/webaudio_capturer_source.h" | 7 #include "content/renderer/media/webaudio_capturer_source.h" |
| 8 #include "content/renderer/media/webrtc_audio_capturer.h" | 8 #include "content/renderer/media/webrtc_audio_capturer.h" |
| 9 #include "content/renderer/media/webrtc_audio_capturer_sink_owner.h" | 9 #include "content/renderer/media/webrtc_audio_capturer_sink_owner.h" |
| 10 #include "content/renderer/media/webrtc_local_audio_source_provider.h" | 10 #include "content/renderer/media/webrtc_local_audio_source_provider.h" |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 bool key_pressed) { | 149 bool key_pressed) { |
| 150 scoped_refptr<WebRtcAudioCapturer> capturer; | 150 scoped_refptr<WebRtcAudioCapturer> capturer; |
| 151 std::vector<int> voe_channels; | 151 std::vector<int> voe_channels; |
| 152 int sample_rate = 0; | 152 int sample_rate = 0; |
| 153 int number_of_channels = 0; | 153 int number_of_channels = 0; |
| 154 int number_of_frames = 0; | 154 int number_of_frames = 0; |
| 155 SinkList sinks; | 155 SinkList sinks; |
| 156 scoped_refptr<ConfiguredBuffer> current_buffer; | 156 scoped_refptr<ConfiguredBuffer> current_buffer; |
| 157 { | 157 { |
| 158 base::AutoLock auto_lock(lock_); | 158 base::AutoLock auto_lock(lock_); |
| 159 // When the track is disabled, we simply return here. | |
| 160 // TODO(xians): Figure out if we should feed zero to sinks instead, in | |
| 161 // order to inject VAD data in such case. | |
| 162 if (!enabled()) | |
| 163 return; | |
| 164 | |
| 165 capturer = capturer_; | 159 capturer = capturer_; |
| 166 voe_channels = voe_channels_; | 160 voe_channels = voe_channels_; |
| 167 current_buffer = buffer_; | 161 current_buffer = buffer_; |
| 168 sample_rate = current_buffer->params().sample_rate(); | 162 sample_rate = current_buffer->params().sample_rate(); |
| 169 number_of_channels = current_buffer->params().channels(); | 163 number_of_channels = current_buffer->params().channels(); |
| 170 number_of_frames = current_buffer->sink_buffer_size(); | 164 number_of_frames = current_buffer->sink_buffer_size(); |
| 171 sinks = sinks_; | 165 sinks = sinks_; |
| 172 } | 166 } |
| 173 | 167 |
| 174 // Push the data to the fifo. | 168 // Push the data to the fifo. |
| 175 current_buffer->Push(audio_source); | 169 current_buffer->Push(audio_source); |
| 176 // Only turn off the audio processing when the constrain is set to false as | 170 // Only turn off the audio processing when the constraint is set to false as |
| 177 // well as there is no correct delay value. | 171 // well as there is no correct delay value. |
| 178 bool need_audio_processing = need_audio_processing_ ? | 172 bool need_audio_processing = need_audio_processing_ ? |
| 179 need_audio_processing_ : (audio_delay_milliseconds != 0); | 173 need_audio_processing_ : (audio_delay_milliseconds != 0); |
| 180 int current_volume = volume; | 174 int current_volume = volume; |
| 181 while (current_buffer->Consume()) { | 175 while (current_buffer->Consume()) { |
| 182 // Feed the data to the sinks. | 176 // Feed the data to the sinks. |
| 177 // TODO (jiayl): we should not pass the real audio data down if the track is |
| 178 // disabled. This is currently done so to feed input to WebRTC typing |
| 179 // detection and should be changed when audio processing is moved from |
| 180 // WebRTC to the track. |
| 183 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) { | 181 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) { |
| 184 int new_volume = (*it)->CaptureData(voe_channels, | 182 int new_volume = (*it)->CaptureData(voe_channels, |
| 185 current_buffer->buffer(), | 183 current_buffer->buffer(), |
| 186 sample_rate, | 184 sample_rate, |
| 187 number_of_channels, | 185 number_of_channels, |
| 188 number_of_frames, | 186 number_of_frames, |
| 189 audio_delay_milliseconds, | 187 audio_delay_milliseconds, |
| 190 current_volume, | 188 current_volume, |
| 191 need_audio_processing, | 189 need_audio_processing, |
| 192 key_pressed); | 190 key_pressed); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 sinks = sinks_; | 338 sinks = sinks_; |
| 341 webaudio_source_ = NULL; | 339 webaudio_source_ = NULL; |
| 342 capturer_ = NULL; | 340 capturer_ = NULL; |
| 343 } | 341 } |
| 344 | 342 |
| 345 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) | 343 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) |
| 346 (*it)->Reset(); | 344 (*it)->Reset(); |
| 347 } | 345 } |
| 348 | 346 |
| 349 } // namespace content | 347 } // namespace content |
| OLD | NEW |