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

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

Issue 1695663003: Drop VideoOptions from VideoSendParameters. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rename send_default_options_ --> default_send_options_. Created 4 years, 9 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) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 595 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 const MediaConfig& config, 606 const MediaConfig& config,
607 const VideoOptions& options, 607 const VideoOptions& options,
608 const std::vector<VideoCodec>& recv_codecs, 608 const std::vector<VideoCodec>& recv_codecs,
609 WebRtcVideoEncoderFactory* external_encoder_factory, 609 WebRtcVideoEncoderFactory* external_encoder_factory,
610 WebRtcVideoDecoderFactory* external_decoder_factory) 610 WebRtcVideoDecoderFactory* external_decoder_factory)
611 : VideoMediaChannel(config), 611 : VideoMediaChannel(config),
612 call_(call), 612 call_(call),
613 unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_), 613 unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_),
614 video_config_(config.video), 614 video_config_(config.video),
615 external_encoder_factory_(external_encoder_factory), 615 external_encoder_factory_(external_encoder_factory),
616 external_decoder_factory_(external_decoder_factory) { 616 external_decoder_factory_(external_decoder_factory),
617 default_send_options_(options) {
617 RTC_DCHECK(thread_checker_.CalledOnValidThread()); 618 RTC_DCHECK(thread_checker_.CalledOnValidThread());
618 619
619 send_params_.options = options;
620
621 rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; 620 rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc;
622 sending_ = false; 621 sending_ = false;
623 default_send_ssrc_ = 0; 622 default_send_ssrc_ = 0;
624 RTC_DCHECK(ValidateCodecFormats(recv_codecs)); 623 RTC_DCHECK(ValidateCodecFormats(recv_codecs));
625 recv_codecs_ = FilterSupportedCodecs(MapCodecs(recv_codecs)); 624 recv_codecs_ = FilterSupportedCodecs(MapCodecs(recv_codecs));
626 } 625 }
627 626
628 WebRtcVideoChannel2::~WebRtcVideoChannel2() { 627 WebRtcVideoChannel2::~WebRtcVideoChannel2() {
629 for (auto& kv : send_streams_) 628 for (auto& kv : send_streams_)
630 delete kv.second; 629 delete kv.second;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 changed_params->max_bandwidth_bps = rtc::Optional<int>( 732 changed_params->max_bandwidth_bps = rtc::Optional<int>(
734 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps); 733 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps);
735 } 734 }
736 735
737 // Handle conference mode. 736 // Handle conference mode.
738 if (params.conference_mode != send_params_.conference_mode) { 737 if (params.conference_mode != send_params_.conference_mode) {
739 changed_params->conference_mode = 738 changed_params->conference_mode =
740 rtc::Optional<bool>(params.conference_mode); 739 rtc::Optional<bool>(params.conference_mode);
741 } 740 }
742 741
743 // Handle options.
744 // TODO(pbos): Require VideoSendParameters to contain a full set of options
745 // and check if params.options != options_ instead of applying a delta.
746 VideoOptions new_options = send_params_.options;
747 new_options.SetAll(params.options);
748 if (!(new_options == send_params_.options)) {
749 changed_params->options = rtc::Optional<VideoOptions>(new_options);
750 }
751
752 // Handle RTCP mode. 742 // Handle RTCP mode.
753 if (params.rtcp.reduced_size != send_params_.rtcp.reduced_size) { 743 if (params.rtcp.reduced_size != send_params_.rtcp.reduced_size) {
754 changed_params->rtcp_mode = rtc::Optional<webrtc::RtcpMode>( 744 changed_params->rtcp_mode = rtc::Optional<webrtc::RtcpMode>(
755 params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize 745 params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize
756 : webrtc::RtcpMode::kCompound); 746 : webrtc::RtcpMode::kCompound);
757 } 747 }
758 748
759 return true; 749 return true;
760 } 750 }
761 751
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 bitrate_config_.min_bitrate_bps > max_bitrate_bps) { 790 bitrate_config_.min_bitrate_bps > max_bitrate_bps) {
801 bitrate_config_.min_bitrate_bps = max_bitrate_bps; 791 bitrate_config_.min_bitrate_bps = max_bitrate_bps;
802 } 792 }
803 bitrate_config_changed = true; 793 bitrate_config_changed = true;
804 } 794 }
805 795
806 if (bitrate_config_changed) { 796 if (bitrate_config_changed) {
807 call_->SetBitrateConfig(bitrate_config_); 797 call_->SetBitrateConfig(bitrate_config_);
808 } 798 }
809 799
810 if (changed_params.options)
811 send_params_.options.SetAll(*changed_params.options);
812
813 { 800 {
814 rtc::CritScope stream_lock(&stream_crit_); 801 rtc::CritScope stream_lock(&stream_crit_);
815 for (auto& kv : send_streams_) { 802 for (auto& kv : send_streams_) {
816 kv.second->SetSendParameters(changed_params); 803 kv.second->SetSendParameters(changed_params);
817 } 804 }
818 if (changed_params.codec) { 805 if (changed_params.codec) {
819 // Update receive feedback parameters from new codec. 806 // Update receive feedback parameters from new codec.
820 LOG(LS_INFO) 807 LOG(LS_INFO)
821 << "SetFeedbackOptions on all the receive streams because the send " 808 << "SetFeedbackOptions on all the receive streams because the send "
822 "codec has changed."; 809 "codec has changed.";
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 rtc::CritScope stream_lock(&stream_crit_); 980 rtc::CritScope stream_lock(&stream_crit_);
994 981
995 if (!ValidateSendSsrcAvailability(sp)) 982 if (!ValidateSendSsrcAvailability(sp))
996 return false; 983 return false;
997 984
998 for (uint32_t used_ssrc : sp.ssrcs) 985 for (uint32_t used_ssrc : sp.ssrcs)
999 send_ssrcs_.insert(used_ssrc); 986 send_ssrcs_.insert(used_ssrc);
1000 987
1001 webrtc::VideoSendStream::Config config(this); 988 webrtc::VideoSendStream::Config config(this);
1002 config.suspend_below_min_bitrate = video_config_.suspend_below_min_bitrate; 989 config.suspend_below_min_bitrate = video_config_.suspend_below_min_bitrate;
1003 WebRtcVideoSendStream* stream = 990 WebRtcVideoSendStream* stream = new WebRtcVideoSendStream(
1004 new WebRtcVideoSendStream(call_, sp, config, external_encoder_factory_, 991 call_, sp, config, default_send_options_, external_encoder_factory_,
1005 video_config_.enable_cpu_overuse_detection, 992 video_config_.enable_cpu_overuse_detection,
1006 bitrate_config_.max_bitrate_bps, send_codec_, 993 bitrate_config_.max_bitrate_bps, send_codec_, send_rtp_extensions_,
1007 send_rtp_extensions_, send_params_); 994 send_params_);
1008 995
1009 uint32_t ssrc = sp.first_ssrc(); 996 uint32_t ssrc = sp.first_ssrc();
1010 RTC_DCHECK(ssrc != 0); 997 RTC_DCHECK(ssrc != 0);
1011 send_streams_[ssrc] = stream; 998 send_streams_[ssrc] = stream;
1012 999
1013 if (rtcp_receiver_report_ssrc_ == kDefaultRtcpReceiverReportSsrc) { 1000 if (rtcp_receiver_report_ssrc_ == kDefaultRtcpReceiverReportSsrc) {
1014 rtcp_receiver_report_ssrc_ = ssrc; 1001 rtcp_receiver_report_ssrc_ = ssrc;
1015 LOG(LS_INFO) << "SetLocalSsrc on all the receive streams because we added " 1002 LOG(LS_INFO) << "SetLocalSsrc on all the receive streams because we added "
1016 "a send stream."; 1003 "a send stream.";
1017 for (auto& kv : receive_streams_) 1004 for (auto& kv : receive_streams_)
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 external_encoder = encoder; 1450 external_encoder = encoder;
1464 this->encoder = 1451 this->encoder =
1465 new webrtc::VideoEncoderSoftwareFallbackWrapper(type, encoder); 1452 new webrtc::VideoEncoderSoftwareFallbackWrapper(type, encoder);
1466 } 1453 }
1467 } 1454 }
1468 1455
1469 WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( 1456 WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream(
1470 webrtc::Call* call, 1457 webrtc::Call* call,
1471 const StreamParams& sp, 1458 const StreamParams& sp,
1472 const webrtc::VideoSendStream::Config& config, 1459 const webrtc::VideoSendStream::Config& config,
1460 const VideoOptions& options,
1473 WebRtcVideoEncoderFactory* external_encoder_factory, 1461 WebRtcVideoEncoderFactory* external_encoder_factory,
1474 bool enable_cpu_overuse_detection, 1462 bool enable_cpu_overuse_detection,
1475 int max_bitrate_bps, 1463 int max_bitrate_bps,
1476 const rtc::Optional<VideoCodecSettings>& codec_settings, 1464 const rtc::Optional<VideoCodecSettings>& codec_settings,
1477 const std::vector<webrtc::RtpExtension>& rtp_extensions, 1465 const std::vector<webrtc::RtpExtension>& rtp_extensions,
1478 // TODO(deadbeef): Don't duplicate information between send_params, 1466 // TODO(deadbeef): Don't duplicate information between send_params,
1479 // rtp_extensions, options, etc. 1467 // rtp_extensions, options, etc.
1480 const VideoSendParameters& send_params) 1468 const VideoSendParameters& send_params)
1481 : worker_thread_(rtc::Thread::Current()), 1469 : worker_thread_(rtc::Thread::Current()),
1482 ssrcs_(sp.ssrcs), 1470 ssrcs_(sp.ssrcs),
1483 ssrc_groups_(sp.ssrc_groups), 1471 ssrc_groups_(sp.ssrc_groups),
1484 call_(call), 1472 call_(call),
1485 cpu_restricted_counter_(0), 1473 cpu_restricted_counter_(0),
1486 number_of_cpu_adapt_changes_(0), 1474 number_of_cpu_adapt_changes_(0),
1487 capturer_(nullptr), 1475 capturer_(nullptr),
1488 external_encoder_factory_(external_encoder_factory), 1476 external_encoder_factory_(external_encoder_factory),
1489 stream_(nullptr), 1477 stream_(nullptr),
1490 parameters_(config, send_params.options, max_bitrate_bps, codec_settings), 1478 parameters_(config, options, max_bitrate_bps, codec_settings),
1491 pending_encoder_reconfiguration_(false), 1479 pending_encoder_reconfiguration_(false),
1492 allocated_encoder_(nullptr, webrtc::kVideoCodecUnknown, false), 1480 allocated_encoder_(nullptr, webrtc::kVideoCodecUnknown, false),
1493 sending_(false), 1481 sending_(false),
1494 muted_(false), 1482 muted_(false),
1495 first_frame_timestamp_ms_(0), 1483 first_frame_timestamp_ms_(0),
1496 last_frame_timestamp_ms_(0) { 1484 last_frame_timestamp_ms_(0) {
1497 parameters_.config.rtp.max_packet_size = kVideoMtu; 1485 parameters_.config.rtp.max_packet_size = kVideoMtu;
1498 parameters_.conference_mode = send_params.conference_mode; 1486 parameters_.conference_mode = send_params.conference_mode;
1499 1487
1500 sp.GetPrimarySsrcs(&parameters_.config.rtp.ssrcs); 1488 sp.GetPrimarySsrcs(&parameters_.config.rtp.ssrcs);
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
1776 } 1764 }
1777 if (params.max_bandwidth_bps) { 1765 if (params.max_bandwidth_bps) {
1778 // Max bitrate has changed, reconfigure encoder settings on the next frame 1766 // Max bitrate has changed, reconfigure encoder settings on the next frame
1779 // or stream recreation. 1767 // or stream recreation.
1780 parameters_.max_bitrate_bps = *params.max_bandwidth_bps; 1768 parameters_.max_bitrate_bps = *params.max_bandwidth_bps;
1781 pending_encoder_reconfiguration_ = true; 1769 pending_encoder_reconfiguration_ = true;
1782 } 1770 }
1783 if (params.conference_mode) { 1771 if (params.conference_mode) {
1784 parameters_.conference_mode = *params.conference_mode; 1772 parameters_.conference_mode = *params.conference_mode;
1785 } 1773 }
1786 if (params.options)
1787 SetOptions(*params.options);
1788 1774
1789 // Set codecs and options. 1775 // Set codecs and options.
1790 if (params.codec) { 1776 if (params.codec) {
1791 SetCodec(*params.codec); 1777 SetCodec(*params.codec);
1792 return; 1778 return;
1793 } else if (params.conference_mode && parameters_.codec_settings) { 1779 } else if (params.conference_mode && parameters_.codec_settings) {
1794 SetCodec(*parameters_.codec_settings); 1780 SetCodec(*parameters_.codec_settings);
1795 return; 1781 return;
1796 } 1782 }
1797 if (recreate_stream) { 1783 if (recreate_stream) {
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
2531 rtx_mapping[video_codecs[i].codec.id] != 2517 rtx_mapping[video_codecs[i].codec.id] !=
2532 fec_settings.red_payload_type) { 2518 fec_settings.red_payload_type) {
2533 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; 2519 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id];
2534 } 2520 }
2535 } 2521 }
2536 2522
2537 return video_codecs; 2523 return video_codecs;
2538 } 2524 }
2539 2525
2540 } // namespace cricket 2526 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698