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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 | 270 |
271 // If OPUS, change what we send according to the "stereo" codec | 271 // If OPUS, change what we send according to the "stereo" codec |
272 // parameter, and not the "channels" parameter. We set | 272 // parameter, and not the "channels" parameter. We set |
273 // voe_codec.channels to 2 if "stereo=1" and 1 otherwise. If | 273 // voe_codec.channels to 2 if "stereo=1" and 1 otherwise. If |
274 // the bitrate is not specified, i.e. is <= zero, we set it to the | 274 // the bitrate is not specified, i.e. is <= zero, we set it to the |
275 // appropriate default value for mono or stereo Opus. | 275 // appropriate default value for mono or stereo Opus. |
276 voe_codec->channels = IsCodecFeatureEnabled(codec, kCodecParamStereo) ? 2 : 1; | 276 voe_codec->channels = IsCodecFeatureEnabled(codec, kCodecParamStereo) ? 2 : 1; |
277 voe_codec->rate = GetOpusBitrate(codec, *max_playback_rate); | 277 voe_codec->rate = GetOpusBitrate(codec, *max_playback_rate); |
278 } | 278 } |
279 | 279 |
280 webrtc::AudioState::Config MakeAudioStateConfig( | 280 webrtc::AudioState::Config MakeAudioStateConfig(VoEWrapper* voe_wrapper) { |
281 VoEWrapper* voe_wrapper, | |
282 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { | |
283 webrtc::AudioState::Config config; | 281 webrtc::AudioState::Config config; |
284 config.voice_engine = voe_wrapper->engine(); | 282 config.voice_engine = voe_wrapper->engine(); |
285 if (audio_mixer) { | 283 config.audio_mixer = webrtc::AudioMixerImpl::Create(); |
286 config.audio_mixer = audio_mixer; | |
287 } else { | |
288 config.audio_mixer = webrtc::AudioMixerImpl::Create(); | |
289 } | |
290 return config; | 284 return config; |
291 } | 285 } |
292 | 286 |
293 class WebRtcVoiceCodecs final { | 287 class WebRtcVoiceCodecs final { |
294 public: | 288 public: |
295 // TODO(solenberg): Do this filtering once off-line, add a simple AudioCodec | 289 // TODO(solenberg): Do this filtering once off-line, add a simple AudioCodec |
296 // list and add a test which verifies VoE supports the listed codecs. | 290 // list and add a test which verifies VoE supports the listed codecs. |
297 static std::vector<AudioCodec> SupportedSendCodecs() { | 291 static std::vector<AudioCodec> SupportedSendCodecs() { |
298 std::vector<AudioCodec> result; | 292 std::vector<AudioCodec> result; |
299 // Iterate first over our preferred codecs list, so that the results are | 293 // Iterate first over our preferred codecs list, so that the results are |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 | 533 |
540 } // namespace { | 534 } // namespace { |
541 | 535 |
542 bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in, | 536 bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in, |
543 webrtc::CodecInst* out) { | 537 webrtc::CodecInst* out) { |
544 return WebRtcVoiceCodecs::ToCodecInst(in, out); | 538 return WebRtcVoiceCodecs::ToCodecInst(in, out); |
545 } | 539 } |
546 | 540 |
547 WebRtcVoiceEngine::WebRtcVoiceEngine( | 541 WebRtcVoiceEngine::WebRtcVoiceEngine( |
548 webrtc::AudioDeviceModule* adm, | 542 webrtc::AudioDeviceModule* adm, |
549 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, | 543 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory) |
550 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) | 544 : WebRtcVoiceEngine(adm, decoder_factory, new VoEWrapper()) { |
551 : WebRtcVoiceEngine(adm, decoder_factory, audio_mixer, new VoEWrapper()) { | 545 audio_state_ = webrtc::AudioState::Create(MakeAudioStateConfig(voe())); |
552 audio_state_ = | |
553 webrtc::AudioState::Create(MakeAudioStateConfig(voe(), audio_mixer)); | |
554 } | 546 } |
555 | 547 |
556 WebRtcVoiceEngine::WebRtcVoiceEngine( | 548 WebRtcVoiceEngine::WebRtcVoiceEngine( |
557 webrtc::AudioDeviceModule* adm, | 549 webrtc::AudioDeviceModule* adm, |
558 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, | 550 const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, |
559 rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, | |
560 VoEWrapper* voe_wrapper) | 551 VoEWrapper* voe_wrapper) |
561 : adm_(adm), decoder_factory_(decoder_factory), voe_wrapper_(voe_wrapper) { | 552 : adm_(adm), decoder_factory_(decoder_factory), voe_wrapper_(voe_wrapper) { |
562 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 553 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
563 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; | 554 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
564 RTC_DCHECK(voe_wrapper); | 555 RTC_DCHECK(voe_wrapper); |
565 RTC_DCHECK(decoder_factory); | 556 RTC_DCHECK(decoder_factory); |
566 | 557 |
567 signal_thread_checker_.DetachFromThread(); | 558 signal_thread_checker_.DetachFromThread(); |
568 | 559 |
569 // Load our audio codec list. | 560 // Load our audio codec list. |
(...skipping 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2647 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 2638 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
2648 const auto it = send_streams_.find(ssrc); | 2639 const auto it = send_streams_.find(ssrc); |
2649 if (it != send_streams_.end()) { | 2640 if (it != send_streams_.end()) { |
2650 return it->second->channel(); | 2641 return it->second->channel(); |
2651 } | 2642 } |
2652 return -1; | 2643 return -1; |
2653 } | 2644 } |
2654 } // namespace cricket | 2645 } // namespace cricket |
2655 | 2646 |
2656 #endif // HAVE_WEBRTC_VOICE | 2647 #endif // HAVE_WEBRTC_VOICE |
OLD | NEW |