| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 return rtc::Optional<int>(std::min(bps, spec.info.max_bitrate_bps)); | 206 return rtc::Optional<int>(std::min(bps, spec.info.max_bitrate_bps)); |
| 207 } | 207 } |
| 208 } | 208 } |
| 209 | 209 |
| 210 } // namespace | 210 } // namespace |
| 211 | 211 |
| 212 WebRtcVoiceEngine::WebRtcVoiceEngine( | 212 WebRtcVoiceEngine::WebRtcVoiceEngine( |
| 213 webrtc::AudioDeviceModule* adm, | 213 webrtc::AudioDeviceModule* adm, |
| 214 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, | 214 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, |
| 215 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, | 215 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, |
| 216 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) | 216 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
| 217 rtc::TaskQueue* low_priority_worker_queue) |
| 217 : WebRtcVoiceEngine(adm, | 218 : WebRtcVoiceEngine(adm, |
| 218 encoder_factory, | 219 encoder_factory, |
| 219 decoder_factory, | 220 decoder_factory, |
| 220 audio_mixer, | 221 audio_mixer, |
| 222 low_priority_worker_queue, |
| 221 new VoEWrapper()) { | 223 new VoEWrapper()) { |
| 222 audio_state_ = | 224 audio_state_ = |
| 223 webrtc::AudioState::Create(MakeAudioStateConfig(voe(), audio_mixer)); | 225 webrtc::AudioState::Create(MakeAudioStateConfig(voe(), audio_mixer)); |
| 224 } | 226 } |
| 225 | 227 |
| 226 WebRtcVoiceEngine::WebRtcVoiceEngine( | 228 WebRtcVoiceEngine::WebRtcVoiceEngine( |
| 227 webrtc::AudioDeviceModule* adm, | 229 webrtc::AudioDeviceModule* adm, |
| 228 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, | 230 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, |
| 229 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, | 231 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, |
| 230 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, | 232 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
| 233 rtc::TaskQueue* low_priority_worker_queue, |
| 231 VoEWrapper* voe_wrapper) | 234 VoEWrapper* voe_wrapper) |
| 232 : low_priority_worker_queue_("low-prio-worker-queue", | 235 : adm_(adm), |
| 233 rtc::TaskQueue::Priority::LOW), | |
| 234 adm_(adm), | |
| 235 encoder_factory_(encoder_factory), | 236 encoder_factory_(encoder_factory), |
| 236 decoder_factory_(decoder_factory), | 237 decoder_factory_(decoder_factory), |
| 237 voe_wrapper_(voe_wrapper) { | 238 voe_wrapper_(voe_wrapper), |
| 239 low_priority_worker_queue_(low_priority_worker_queue) { |
| 238 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 240 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| 239 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; | 241 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
| 240 RTC_DCHECK(voe_wrapper); | 242 RTC_DCHECK(voe_wrapper); |
| 241 RTC_DCHECK(decoder_factory); | 243 RTC_DCHECK(decoder_factory); |
| 244 RTC_DCHECK(low_priority_worker_queue); |
| 242 | 245 |
| 243 signal_thread_checker_.DetachFromThread(); | 246 signal_thread_checker_.DetachFromThread(); |
| 244 | 247 |
| 245 // Load our audio codec lists. | 248 // Load our audio codec lists. |
| 246 LOG(LS_INFO) << "Supported send codecs in order of preference:"; | 249 LOG(LS_INFO) << "Supported send codecs in order of preference:"; |
| 247 send_codecs_ = CollectCodecs(encoder_factory_->GetSupportedEncoders()); | 250 send_codecs_ = CollectCodecs(encoder_factory_->GetSupportedEncoders()); |
| 248 for (const AudioCodec& codec : send_codecs_) { | 251 for (const AudioCodec& codec : send_codecs_) { |
| 249 LOG(LS_INFO) << ToString(codec); | 252 LOG(LS_INFO) << ToString(codec); |
| 250 } | 253 } |
| 251 | 254 |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 void WebRtcVoiceEngine::UnregisterChannel(WebRtcVoiceMediaChannel* channel) { | 656 void WebRtcVoiceEngine::UnregisterChannel(WebRtcVoiceMediaChannel* channel) { |
| 654 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 657 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| 655 auto it = std::find(channels_.begin(), channels_.end(), channel); | 658 auto it = std::find(channels_.begin(), channels_.end(), channel); |
| 656 RTC_DCHECK(it != channels_.end()); | 659 RTC_DCHECK(it != channels_.end()); |
| 657 channels_.erase(it); | 660 channels_.erase(it); |
| 658 } | 661 } |
| 659 | 662 |
| 660 bool WebRtcVoiceEngine::StartAecDump(rtc::PlatformFile file, | 663 bool WebRtcVoiceEngine::StartAecDump(rtc::PlatformFile file, |
| 661 int64_t max_size_bytes) { | 664 int64_t max_size_bytes) { |
| 662 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 665 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| 666 RTC_DCHECK(low_priority_worker_queue_); |
| 663 auto aec_dump = webrtc::AecDumpFactory::Create(file, max_size_bytes, | 667 auto aec_dump = webrtc::AecDumpFactory::Create(file, max_size_bytes, |
| 664 &low_priority_worker_queue_); | 668 low_priority_worker_queue_); |
| 665 if (aec_dump) { | 669 if (aec_dump) { |
| 666 apm()->AttachAecDump(std::move(aec_dump)); | 670 apm()->AttachAecDump(std::move(aec_dump)); |
| 667 } | 671 } |
| 668 return !!aec_dump; | 672 return !!aec_dump; |
| 669 } | 673 } |
| 670 | 674 |
| 671 void WebRtcVoiceEngine::StartAecDump(const std::string& filename) { | 675 void WebRtcVoiceEngine::StartAecDump(const std::string& filename) { |
| 672 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 676 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| 677 RTC_DCHECK(low_priority_worker_queue_); |
| 673 | 678 |
| 674 auto aec_dump = | 679 auto aec_dump = |
| 675 webrtc::AecDumpFactory::Create(filename, -1, &low_priority_worker_queue_); | 680 webrtc::AecDumpFactory::Create(filename, -1, low_priority_worker_queue_); |
| 676 if (aec_dump) { | 681 if (aec_dump) { |
| 677 apm()->AttachAecDump(std::move(aec_dump)); | 682 apm()->AttachAecDump(std::move(aec_dump)); |
| 678 } | 683 } |
| 679 } | 684 } |
| 680 | 685 |
| 681 void WebRtcVoiceEngine::StopAecDump() { | 686 void WebRtcVoiceEngine::StopAecDump() { |
| 682 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 687 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| 683 apm()->DetachAecDump(); | 688 apm()->DetachAecDump(); |
| 684 } | 689 } |
| 685 | 690 |
| (...skipping 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2311 ssrc); | 2316 ssrc); |
| 2312 if (it != unsignaled_recv_ssrcs_.end()) { | 2317 if (it != unsignaled_recv_ssrcs_.end()) { |
| 2313 unsignaled_recv_ssrcs_.erase(it); | 2318 unsignaled_recv_ssrcs_.erase(it); |
| 2314 return true; | 2319 return true; |
| 2315 } | 2320 } |
| 2316 return false; | 2321 return false; |
| 2317 } | 2322 } |
| 2318 } // namespace cricket | 2323 } // namespace cricket |
| 2319 | 2324 |
| 2320 #endif // HAVE_WEBRTC_VOICE | 2325 #endif // HAVE_WEBRTC_VOICE |
| OLD | NEW |