Chromium Code Reviews| 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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 147 int audio_delay_milliseconds, | 147 int audio_delay_milliseconds, |
| 148 int volume, | 148 int volume, |
| 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 bool disabled = false; | |
| 157 { | 158 { |
| 158 base::AutoLock auto_lock(lock_); | 159 base::AutoLock auto_lock(lock_); |
| 159 // When the track is disabled, we simply return here. | 160 disabled = !enabled(); |
| 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_; | 161 capturer = capturer_; |
| 166 voe_channels = voe_channels_; | 162 voe_channels = voe_channels_; |
| 167 current_buffer = buffer_; | 163 current_buffer = buffer_; |
| 168 sample_rate = current_buffer->params().sample_rate(); | 164 sample_rate = current_buffer->params().sample_rate(); |
| 169 number_of_channels = current_buffer->params().channels(); | 165 number_of_channels = current_buffer->params().channels(); |
| 170 number_of_frames = current_buffer->sink_buffer_size(); | 166 number_of_frames = current_buffer->sink_buffer_size(); |
| 171 sinks = sinks_; | 167 sinks = sinks_; |
| 172 } | 168 } |
| 173 | 169 |
| 174 // Push the data to the fifo. | 170 // Push the data to the fifo. |
| 175 current_buffer->Push(audio_source); | 171 current_buffer->Push(audio_source); |
| 176 // Only turn off the audio processing when the constrain is set to false as | 172 // Only turn off the audio processing when the constrain is set to false as |
| 177 // well as there is no correct delay value. | 173 // well as there is no correct delay value. |
| 178 bool need_audio_processing = need_audio_processing_ ? | 174 bool need_audio_processing = need_audio_processing_ ? |
| 179 need_audio_processing_ : (audio_delay_milliseconds != 0); | 175 need_audio_processing_ : (audio_delay_milliseconds != 0); |
| 180 int current_volume = volume; | 176 int current_volume = disabled ? 0 : volume; |
|
no longer working on chromium
2013/09/27 20:22:52
Note that you are fooling the AGC, please test thi
ajm
2013/09/27 22:54:40
This doesn't look good. You shouldn't be messing a
| |
| 181 while (current_buffer->Consume()) { | 177 while (current_buffer->Consume()) { |
| 182 // Feed the data to the sinks. | 178 // Feed the data to the sinks. |
| 183 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) { | 179 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) { |
| 184 int new_volume = (*it)->CaptureData(voe_channels, | 180 int new_volume = (*it)->CaptureData(voe_channels, |
| 185 current_buffer->buffer(), | 181 current_buffer->buffer(), |
| 186 sample_rate, | 182 sample_rate, |
| 187 number_of_channels, | 183 number_of_channels, |
| 188 number_of_frames, | 184 number_of_frames, |
| 189 audio_delay_milliseconds, | 185 audio_delay_milliseconds, |
| 190 current_volume, | 186 current_volume, |
| 191 need_audio_processing, | 187 need_audio_processing, |
| 192 key_pressed); | 188 key_pressed); |
| 193 if (new_volume != 0 && capturer.get()) { | 189 if (!disabled && new_volume != 0 && capturer.get()) { |
| 194 // Feed the new volume to WebRtc while changing the volume on the | 190 // Feed the new volume to WebRtc while changing the volume on the |
| 195 // browser. | 191 // browser. |
| 196 capturer->SetVolume(new_volume); | 192 capturer->SetVolume(new_volume); |
| 197 current_volume = new_volume; | 193 current_volume = new_volume; |
| 198 } | 194 } |
| 199 } | 195 } |
| 200 } | 196 } |
| 201 } | 197 } |
| 202 | 198 |
| 203 void WebRtcLocalAudioTrack::SetCaptureFormat( | 199 void WebRtcLocalAudioTrack::SetCaptureFormat( |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 sinks = sinks_; | 336 sinks = sinks_; |
| 341 webaudio_source_ = NULL; | 337 webaudio_source_ = NULL; |
| 342 capturer_ = NULL; | 338 capturer_ = NULL; |
| 343 } | 339 } |
| 344 | 340 |
| 345 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) | 341 for (SinkList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) |
| 346 (*it)->Reset(); | 342 (*it)->Reset(); |
| 347 } | 343 } |
| 348 | 344 |
| 349 } // namespace content | 345 } // namespace content |
| OLD | NEW |