Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Side by Side Diff: webrtc/media/engine/webrtcvoiceengine.cc

Issue 1949533002: WIP: Move the creation of AudioCodecFactory into PeerConnectionFactory. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Retained Channel API by adding overloads; also add intended AudioReceiveStream API Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 {kRedCodecName, 8000, 1, 127, false, {}}, 513 {kRedCodecName, 8000, 1, 127, false, {}},
514 {kDtmfCodecName, 8000, 1, 126, false, {}}, 514 {kDtmfCodecName, 8000, 1, 126, false, {}},
515 }; 515 };
516 } // namespace { 516 } // namespace {
517 517
518 bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in, 518 bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in,
519 webrtc::CodecInst* out) { 519 webrtc::CodecInst* out) {
520 return WebRtcVoiceCodecs::ToCodecInst(in, out); 520 return WebRtcVoiceCodecs::ToCodecInst(in, out);
521 } 521 }
522 522
523 WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm) 523 WebRtcVoiceEngine::WebRtcVoiceEngine(
524 : WebRtcVoiceEngine(adm, new VoEWrapper()) { 524 webrtc::AudioDeviceModule* adm,
525 std::shared_ptr<webrtc::AudioDecoderFactory> decoder_factory)
526 : WebRtcVoiceEngine(adm, decoder_factory, new VoEWrapper()) {
525 audio_state_ = webrtc::AudioState::Create(MakeAudioStateConfig(voe())); 527 audio_state_ = webrtc::AudioState::Create(MakeAudioStateConfig(voe()));
526 } 528 }
527 529
528 WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm, 530 WebRtcVoiceEngine::WebRtcVoiceEngine(
529 VoEWrapper* voe_wrapper) 531 webrtc::AudioDeviceModule* adm,
530 : adm_(adm), voe_wrapper_(voe_wrapper) { 532 std::shared_ptr<webrtc::AudioDecoderFactory> decoder_factory,
533 VoEWrapper* voe_wrapper)
534 : adm_(adm),
535 decoder_factory_(std::move(decoder_factory)),
536 voe_wrapper_(voe_wrapper) {
531 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 537 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
532 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; 538 LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine";
533 RTC_DCHECK(voe_wrapper); 539 RTC_DCHECK(voe_wrapper);
534 540
535 signal_thread_checker_.DetachFromThread(); 541 signal_thread_checker_.DetachFromThread();
536 542
537 // Load our audio codec list. 543 // Load our audio codec list.
538 LOG(LS_INFO) << "Supported codecs in order of preference:"; 544 LOG(LS_INFO) << "Supported codecs in order of preference:";
539 codecs_ = WebRtcVoiceCodecs::SupportedCodecs(); 545 codecs_ = WebRtcVoiceCodecs::SupportedCodecs();
540 for (const AudioCodec& codec : codecs_) { 546 for (const AudioCodec& codec : codecs_) {
541 LOG(LS_INFO) << ToString(codec); 547 LOG(LS_INFO) << ToString(codec);
542 } 548 }
543 549
544 voe_config_.Set<webrtc::VoicePacing>(new webrtc::VoicePacing(true)); 550 voe_config_.Set<webrtc::VoicePacing>(new webrtc::VoicePacing(true));
545 551
546 // Temporarily turn logging level up for the Init() call. 552 // Temporarily turn logging level up for the Init() call.
547 webrtc::Trace::SetTraceCallback(this); 553 webrtc::Trace::SetTraceCallback(this);
548 webrtc::Trace::set_level_filter(kElevatedTraceFilter); 554 webrtc::Trace::set_level_filter(kElevatedTraceFilter);
549 LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString(); 555 LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString();
550 RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm_.get())); 556 RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm_.get(), nullptr,
557 decoder_factory_));
551 webrtc::Trace::set_level_filter(kDefaultTraceFilter); 558 webrtc::Trace::set_level_filter(kDefaultTraceFilter);
552 559
553 // No ADM supplied? Get the default one from VoE. 560 // No ADM supplied? Get the default one from VoE.
554 if (!adm_) { 561 if (!adm_) {
555 adm_ = voe_wrapper_->base()->audio_device_module(); 562 adm_ = voe_wrapper_->base()->audio_device_module();
556 } 563 }
557 RTC_DCHECK(adm_); 564 RTC_DCHECK(adm_);
558 565
559 // Save the default AGC configuration settings. This must happen before 566 // Save the default AGC configuration settings. This must happen before
560 // calling ApplyOptions or the default will be overwritten. 567 // calling ApplyOptions or the default will be overwritten.
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 // goes away. 1253 // goes away.
1247 AudioSource* source_ = nullptr; 1254 AudioSource* source_ = nullptr;
1248 bool send_ = false; 1255 bool send_ = false;
1249 webrtc::RtpParameters rtp_parameters_; 1256 webrtc::RtpParameters rtp_parameters_;
1250 1257
1251 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WebRtcAudioSendStream); 1258 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WebRtcAudioSendStream);
1252 }; 1259 };
1253 1260
1254 class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { 1261 class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
1255 public: 1262 public:
1256 WebRtcAudioReceiveStream(int ch, 1263 WebRtcAudioReceiveStream(
1257 uint32_t remote_ssrc, 1264 int ch,
1258 uint32_t local_ssrc, 1265 uint32_t remote_ssrc,
1259 bool use_transport_cc, 1266 uint32_t local_ssrc,
1260 const std::string& sync_group, 1267 bool use_transport_cc,
1261 const std::vector<webrtc::RtpExtension>& extensions, 1268 const std::string& sync_group,
1262 webrtc::Call* call) 1269 const std::vector<webrtc::RtpExtension>& extensions,
1270 webrtc::Call* call,
1271 std::shared_ptr<webrtc::AudioDecoderFactory> decoder_factory)
1263 : call_(call), config_() { 1272 : call_(call), config_() {
1264 RTC_DCHECK_GE(ch, 0); 1273 RTC_DCHECK_GE(ch, 0);
1265 RTC_DCHECK(call); 1274 RTC_DCHECK(call);
1266 config_.rtp.remote_ssrc = remote_ssrc; 1275 config_.rtp.remote_ssrc = remote_ssrc;
1267 config_.rtp.local_ssrc = local_ssrc; 1276 config_.rtp.local_ssrc = local_ssrc;
1268 config_.voe_channel_id = ch; 1277 config_.voe_channel_id = ch;
1269 config_.sync_group = sync_group; 1278 config_.sync_group = sync_group;
1279 config_.decoder_factory = std::move(decoder_factory);
1270 RecreateAudioReceiveStream(use_transport_cc, extensions); 1280 RecreateAudioReceiveStream(use_transport_cc, extensions);
1271 } 1281 }
1272 1282
1273 ~WebRtcAudioReceiveStream() { 1283 ~WebRtcAudioReceiveStream() {
1274 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 1284 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
1275 call_->DestroyAudioReceiveStream(stream_); 1285 call_->DestroyAudioReceiveStream(stream_);
1276 } 1286 }
1277 1287
1278 void RecreateAudioReceiveStream( 1288 void RecreateAudioReceiveStream(
1279 const std::vector<webrtc::RtpExtension>& extensions) { 1289 const std::vector<webrtc::RtpExtension>& extensions) {
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after
2089 // can obtain RTT from the send channel) 2099 // can obtain RTT from the send channel)
2090 engine()->voe()->base()->AssociateSendChannel(channel, send_channel); 2100 engine()->voe()->base()->AssociateSendChannel(channel, send_channel);
2091 LOG(LS_INFO) << "VoiceEngine channel #" << channel 2101 LOG(LS_INFO) << "VoiceEngine channel #" << channel
2092 << " is associated with channel #" << send_channel << "."; 2102 << " is associated with channel #" << send_channel << ".";
2093 } 2103 }
2094 2104
2095 recv_streams_.insert(std::make_pair( 2105 recv_streams_.insert(std::make_pair(
2096 ssrc, new WebRtcAudioReceiveStream(channel, ssrc, receiver_reports_ssrc_, 2106 ssrc, new WebRtcAudioReceiveStream(channel, ssrc, receiver_reports_ssrc_,
2097 recv_transport_cc_enabled_, 2107 recv_transport_cc_enabled_,
2098 sp.sync_label, recv_rtp_extensions_, 2108 sp.sync_label, recv_rtp_extensions_,
2099 call_))); 2109 call_, engine_->decoder_factory_)));
2100 2110
2101 SetNack(channel, send_codec_spec_.nack_enabled); 2111 SetNack(channel, send_codec_spec_.nack_enabled);
2102 SetPlayout(channel, playout_); 2112 SetPlayout(channel, playout_);
2103 2113
2104 return true; 2114 return true;
2105 } 2115 }
2106 2116
2107 bool WebRtcVoiceMediaChannel::RemoveRecvStream(uint32_t ssrc) { 2117 bool WebRtcVoiceMediaChannel::RemoveRecvStream(uint32_t ssrc) {
2108 TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::RemoveRecvStream"); 2118 TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::RemoveRecvStream");
2109 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 2119 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
2556 } 2566 }
2557 } else { 2567 } else {
2558 LOG(LS_INFO) << "Stopping playout for channel #" << channel; 2568 LOG(LS_INFO) << "Stopping playout for channel #" << channel;
2559 engine()->voe()->base()->StopPlayout(channel); 2569 engine()->voe()->base()->StopPlayout(channel);
2560 } 2570 }
2561 return true; 2571 return true;
2562 } 2572 }
2563 } // namespace cricket 2573 } // namespace cricket
2564 2574
2565 #endif // HAVE_WEBRTC_VOICE 2575 #endif // HAVE_WEBRTC_VOICE
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698