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

Side by Side Diff: talk/media/webrtc/webrtcvideoengine2.cc

Issue 1273363005: Add send transports to individual webrtc::Call streams. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: one more rtcp_send_transport Created 5 years, 3 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 * libjingle 2 * libjingle
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 WebRtcVideoDecoderFactory* external_decoder_factory) 775 WebRtcVideoDecoderFactory* external_decoder_factory)
776 : unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_), 776 : unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_),
777 voice_channel_(voice_channel), 777 voice_channel_(voice_channel),
778 voice_channel_id_(voice_channel ? voice_channel->voe_channel() : -1), 778 voice_channel_id_(voice_channel ? voice_channel->voe_channel() : -1),
779 external_encoder_factory_(external_encoder_factory), 779 external_encoder_factory_(external_encoder_factory),
780 external_decoder_factory_(external_decoder_factory) { 780 external_decoder_factory_(external_decoder_factory) {
781 DCHECK(thread_checker_.CalledOnValidThread()); 781 DCHECK(thread_checker_.CalledOnValidThread());
782 SetDefaultOptions(); 782 SetDefaultOptions();
783 options_.SetAll(options); 783 options_.SetAll(options);
784 options_.cpu_overuse_detection.Get(&signal_cpu_adaptation_); 784 options_.cpu_overuse_detection.Get(&signal_cpu_adaptation_);
785 webrtc::Call::Config config(this); 785 webrtc::Call::Config config;
786 config.overuse_callback = this; 786 config.overuse_callback = this;
787 if (voice_engine != NULL) { 787 if (voice_engine != NULL) {
788 config.voice_engine = voice_engine->voe()->engine(); 788 config.voice_engine = voice_engine->voe()->engine();
789 } 789 }
790 config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; 790 config.bitrate_config.min_bitrate_bps = kMinBandwidthBps;
791 config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; 791 config.bitrate_config.start_bitrate_bps = kStartBandwidthBps;
792 config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; 792 config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps;
793 call_.reset(call_factory->CreateCall(config)); 793 call_.reset(call_factory->CreateCall(config));
794 if (voice_channel_) { 794 if (voice_channel_) {
795 voice_channel_->SetCall(call_.get()); 795 voice_channel_->SetCall(call_.get());
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 rtc::CritScope stream_lock(&stream_crit_); 1106 rtc::CritScope stream_lock(&stream_crit_);
1107 1107
1108 if (!ValidateSendSsrcAvailability(sp)) 1108 if (!ValidateSendSsrcAvailability(sp))
1109 return false; 1109 return false;
1110 1110
1111 for (uint32 used_ssrc : sp.ssrcs) 1111 for (uint32 used_ssrc : sp.ssrcs)
1112 send_ssrcs_.insert(used_ssrc); 1112 send_ssrcs_.insert(used_ssrc);
1113 1113
1114 WebRtcVideoSendStream* stream = 1114 WebRtcVideoSendStream* stream =
1115 new WebRtcVideoSendStream(call_.get(), 1115 new WebRtcVideoSendStream(call_.get(),
1116 sp,
1117 webrtc::VideoSendStream::Config(this),
1116 external_encoder_factory_, 1118 external_encoder_factory_,
1117 options_, 1119 options_,
1118 bitrate_config_.max_bitrate_bps, 1120 bitrate_config_.max_bitrate_bps,
1119 send_codec_, 1121 send_codec_,
1120 sp,
1121 send_rtp_extensions_); 1122 send_rtp_extensions_);
1122 1123
1123 uint32 ssrc = sp.first_ssrc(); 1124 uint32 ssrc = sp.first_ssrc();
1124 DCHECK(ssrc != 0); 1125 DCHECK(ssrc != 0);
1125 send_streams_[ssrc] = stream; 1126 send_streams_[ssrc] = stream;
1126 1127
1127 if (rtcp_receiver_report_ssrc_ == kDefaultRtcpReceiverReportSsrc) { 1128 if (rtcp_receiver_report_ssrc_ == kDefaultRtcpReceiverReportSsrc) {
1128 rtcp_receiver_report_ssrc_ = ssrc; 1129 rtcp_receiver_report_ssrc_ = ssrc;
1129 LOG(LS_INFO) << "SetLocalSsrc on all the receive streams because we added " 1130 LOG(LS_INFO) << "SetLocalSsrc on all the receive streams because we added "
1130 "a send stream."; 1131 "a send stream.";
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 DeleteReceiveStream(prev_stream->second); 1215 DeleteReceiveStream(prev_stream->second);
1215 receive_streams_.erase(prev_stream); 1216 receive_streams_.erase(prev_stream);
1216 } 1217 }
1217 1218
1218 if (!ValidateReceiveSsrcAvailability(sp)) 1219 if (!ValidateReceiveSsrcAvailability(sp))
1219 return false; 1220 return false;
1220 1221
1221 for (uint32 used_ssrc : sp.ssrcs) 1222 for (uint32 used_ssrc : sp.ssrcs)
1222 receive_ssrcs_.insert(used_ssrc); 1223 receive_ssrcs_.insert(used_ssrc);
1223 1224
1224 webrtc::VideoReceiveStream::Config config; 1225 webrtc::VideoReceiveStream::Config config(this);
1225 ConfigureReceiverRtp(&config, sp); 1226 ConfigureReceiverRtp(&config, sp);
1226 1227
1227 // Set up A/V sync group based on sync label. 1228 // Set up A/V sync group based on sync label.
1228 config.sync_group = sp.sync_label; 1229 config.sync_group = sp.sync_label;
1229 1230
1230 config.rtp.remb = false; 1231 config.rtp.remb = false;
1231 VideoCodecSettings send_codec; 1232 VideoCodecSettings send_codec;
1232 if (send_codec_.Get(&send_codec)) { 1233 if (send_codec_.Get(&send_codec)) {
1233 config.rtp.remb = HasRemb(send_codec.codec); 1234 config.rtp.remb = HasRemb(send_codec.codec);
1234 } 1235 }
1235 1236
1236 receive_streams_[ssrc] = new WebRtcVideoReceiveStream( 1237 receive_streams_[ssrc] = new WebRtcVideoReceiveStream(
1237 call_.get(), sp, external_decoder_factory_, default_stream, config, 1238 call_.get(), sp, config, external_decoder_factory_, default_stream,
1238 recv_codecs_); 1239 recv_codecs_);
1239 1240
1240 return true; 1241 return true;
1241 } 1242 }
1242 1243
1243 void WebRtcVideoChannel2::ConfigureReceiverRtp( 1244 void WebRtcVideoChannel2::ConfigureReceiverRtp(
1244 webrtc::VideoReceiveStream::Config* config, 1245 webrtc::VideoReceiveStream::Config* config,
1245 const StreamParams& sp) const { 1246 const StreamParams& sp) const {
1246 uint32 ssrc = sp.first_ssrc(); 1247 uint32 ssrc = sp.first_ssrc();
1247 1248
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 external(external) { 1720 external(external) {
1720 if (external) { 1721 if (external) {
1721 external_encoder = encoder; 1722 external_encoder = encoder;
1722 this->encoder = 1723 this->encoder =
1723 new webrtc::VideoEncoderSoftwareFallbackWrapper(type, encoder); 1724 new webrtc::VideoEncoderSoftwareFallbackWrapper(type, encoder);
1724 } 1725 }
1725 } 1726 }
1726 1727
1727 WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( 1728 WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream(
1728 webrtc::Call* call, 1729 webrtc::Call* call,
1730 const StreamParams& sp,
1731 const webrtc::VideoSendStream::Config& config,
1729 WebRtcVideoEncoderFactory* external_encoder_factory, 1732 WebRtcVideoEncoderFactory* external_encoder_factory,
1730 const VideoOptions& options, 1733 const VideoOptions& options,
1731 int max_bitrate_bps, 1734 int max_bitrate_bps,
1732 const Settable<VideoCodecSettings>& codec_settings, 1735 const Settable<VideoCodecSettings>& codec_settings,
1733 const StreamParams& sp,
1734 const std::vector<webrtc::RtpExtension>& rtp_extensions) 1736 const std::vector<webrtc::RtpExtension>& rtp_extensions)
1735 : ssrcs_(sp.ssrcs), 1737 : ssrcs_(sp.ssrcs),
1736 ssrc_groups_(sp.ssrc_groups), 1738 ssrc_groups_(sp.ssrc_groups),
1737 call_(call), 1739 call_(call),
1738 external_encoder_factory_(external_encoder_factory), 1740 external_encoder_factory_(external_encoder_factory),
1739 stream_(NULL), 1741 stream_(NULL),
1740 parameters_(webrtc::VideoSendStream::Config(), 1742 parameters_(config, options, max_bitrate_bps, codec_settings),
1741 options,
1742 max_bitrate_bps,
1743 codec_settings),
1744 allocated_encoder_(NULL, webrtc::kVideoCodecUnknown, false), 1743 allocated_encoder_(NULL, webrtc::kVideoCodecUnknown, false),
1745 capturer_(NULL), 1744 capturer_(NULL),
1746 sending_(false), 1745 sending_(false),
1747 muted_(false), 1746 muted_(false),
1748 old_adapt_changes_(0), 1747 old_adapt_changes_(0),
1749 first_frame_timestamp_ms_(0), 1748 first_frame_timestamp_ms_(0),
1750 last_frame_timestamp_ms_(0) { 1749 last_frame_timestamp_ms_(0) {
1751 parameters_.config.rtp.max_packet_size = kVideoMtu; 1750 parameters_.config.rtp.max_packet_size = kVideoMtu;
1752 1751
1753 sp.GetPrimarySsrcs(&parameters_.config.rtp.ssrcs); 1752 sp.GetPrimarySsrcs(&parameters_.config.rtp.ssrcs);
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
2314 parameters_.encoder_config.encoder_specific_settings = NULL; 2313 parameters_.encoder_config.encoder_specific_settings = NULL;
2315 2314
2316 if (sending_) { 2315 if (sending_) {
2317 stream_->Start(); 2316 stream_->Start();
2318 } 2317 }
2319 } 2318 }
2320 2319
2321 WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream( 2320 WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
2322 webrtc::Call* call, 2321 webrtc::Call* call,
2323 const StreamParams& sp, 2322 const StreamParams& sp,
2323 const webrtc::VideoReceiveStream::Config& config,
2324 WebRtcVideoDecoderFactory* external_decoder_factory, 2324 WebRtcVideoDecoderFactory* external_decoder_factory,
2325 bool default_stream, 2325 bool default_stream,
2326 const webrtc::VideoReceiveStream::Config& config,
2327 const std::vector<VideoCodecSettings>& recv_codecs) 2326 const std::vector<VideoCodecSettings>& recv_codecs)
2328 : call_(call), 2327 : call_(call),
2329 ssrcs_(sp.ssrcs), 2328 ssrcs_(sp.ssrcs),
2330 ssrc_groups_(sp.ssrc_groups), 2329 ssrc_groups_(sp.ssrc_groups),
2331 stream_(NULL), 2330 stream_(NULL),
2332 default_stream_(default_stream), 2331 default_stream_(default_stream),
2333 config_(config), 2332 config_(config),
2334 external_decoder_factory_(external_decoder_factory), 2333 external_decoder_factory_(external_decoder_factory),
2335 renderer_(NULL), 2334 renderer_(NULL),
2336 last_width_(-1), 2335 last_width_(-1),
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
2718 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; 2717 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id];
2719 } 2718 }
2720 } 2719 }
2721 2720
2722 return video_codecs; 2721 return video_codecs;
2723 } 2722 }
2724 2723
2725 } // namespace cricket 2724 } // namespace cricket
2726 2725
2727 #endif // HAVE_WEBRTC_VIDEO 2726 #endif // HAVE_WEBRTC_VIDEO
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698