OLD | NEW |
---|---|
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 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
708 // Handle RTP header extensions. | 708 // Handle RTP header extensions. |
709 std::vector<webrtc::RtpExtension> filtered_extensions = FilterRtpExtensions( | 709 std::vector<webrtc::RtpExtension> filtered_extensions = FilterRtpExtensions( |
710 params.extensions, webrtc::RtpExtension::IsSupportedForVideo, true); | 710 params.extensions, webrtc::RtpExtension::IsSupportedForVideo, true); |
711 if (!send_rtp_extensions_ || (*send_rtp_extensions_ != filtered_extensions)) { | 711 if (!send_rtp_extensions_ || (*send_rtp_extensions_ != filtered_extensions)) { |
712 changed_params->rtp_header_extensions = | 712 changed_params->rtp_header_extensions = |
713 rtc::Optional<std::vector<webrtc::RtpExtension>>(filtered_extensions); | 713 rtc::Optional<std::vector<webrtc::RtpExtension>>(filtered_extensions); |
714 } | 714 } |
715 | 715 |
716 // Handle max bitrate. | 716 // Handle max bitrate. |
717 if (params.max_bandwidth_bps != send_params_.max_bandwidth_bps && | 717 if (params.max_bandwidth_bps != send_params_.max_bandwidth_bps && |
718 params.max_bandwidth_bps >= 0) { | 718 params.max_bandwidth_bps >= -1) { |
719 // 0 uncaps max bitrate (-1). | 719 // 0 or -1 uncaps max bitrate. |
720 // TODO(pbos): Reconsider whether 0 should be invalid or not. -1 is the | |
721 // auto-bitrate value. | |
Taylor Brandstetter
2017/03/09 23:48:38
The "correct" behavior for b=AS:0 may be "set bitr
pbos-webrtc
2017/03/10 18:52:09
TODO text updated.
| |
720 changed_params->max_bandwidth_bps = rtc::Optional<int>( | 722 changed_params->max_bandwidth_bps = rtc::Optional<int>( |
721 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps); | 723 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps); |
722 } | 724 } |
723 | 725 |
724 // Handle conference mode. | 726 // Handle conference mode. |
725 if (params.conference_mode != send_params_.conference_mode) { | 727 if (params.conference_mode != send_params_.conference_mode) { |
726 changed_params->conference_mode = | 728 changed_params->conference_mode = |
727 rtc::Optional<bool>(params.conference_mode); | 729 rtc::Optional<bool>(params.conference_mode); |
728 } | 730 } |
729 | 731 |
(...skipping 25 matching lines...) Expand all Loading... | |
755 LOG(LS_INFO) << "Using codec: " << codec_settings.codec.ToString(); | 757 LOG(LS_INFO) << "Using codec: " << codec_settings.codec.ToString(); |
756 } | 758 } |
757 | 759 |
758 if (changed_params.rtp_header_extensions) { | 760 if (changed_params.rtp_header_extensions) { |
759 send_rtp_extensions_ = changed_params.rtp_header_extensions; | 761 send_rtp_extensions_ = changed_params.rtp_header_extensions; |
760 } | 762 } |
761 | 763 |
762 if (changed_params.codec || changed_params.max_bandwidth_bps) { | 764 if (changed_params.codec || changed_params.max_bandwidth_bps) { |
763 if (send_codec_) { | 765 if (send_codec_) { |
764 // TODO(holmer): Changing the codec parameters shouldn't necessarily mean | 766 // TODO(holmer): Changing the codec parameters shouldn't necessarily mean |
765 // that we change the min/max of bandwidth estimation. Reevaluate this. | 767 // that we change the min of bandwidth estimation. Reevaluate this. |
766 bitrate_config_ = GetBitrateConfigForCodec(send_codec_->codec); | 768 bitrate_config_ = GetBitrateConfigForCodec(send_codec_->codec); |
767 if (!changed_params.codec) { | 769 if (!changed_params.codec) { |
768 // If the codec isn't changing, set the start bitrate to -1 which means | 770 // If the codec isn't changing, set the start bitrate to -1 which means |
769 // "unchanged" so that BWE isn't affected. | 771 // "unchanged" so that BWE isn't affected. |
770 bitrate_config_.start_bitrate_bps = -1; | 772 bitrate_config_.start_bitrate_bps = -1; |
771 } | 773 } |
772 } | 774 } |
773 if (params.max_bandwidth_bps >= 0) { | 775 if (params.max_bandwidth_bps >= -1) { |
774 // Note that max_bandwidth_bps intentionally takes priority over the | 776 // Note that max_bandwidth_bps intentionally takes priority over the |
775 // bitrate config for the codec. This allows FEC to be applied above the | 777 // bitrate config for the codec. This allows FEC to be applied above the |
776 // codec target bitrate. | 778 // codec target bitrate. |
777 // TODO(pbos): Figure out whether b=AS means max bitrate for this | 779 // TODO(pbos): Figure out whether b=AS means max bitrate for this |
778 // WebRtcVideoChannel2 (in which case we're good), or per sender (SSRC), | 780 // WebRtcVideoChannel2 (in which case we're good), or per sender (SSRC), |
779 // in which case this should not set a Call::BitrateConfig but rather | 781 // in which case this should not set a Call::BitrateConfig but rather |
780 // reconfigure all senders. | 782 // reconfigure all senders. |
783 | |
784 // TODO(pbos): Consider whether 0 should be invalid or not. | |
785 // 0 or -1 uncaps max bitrate. | |
781 bitrate_config_.max_bitrate_bps = | 786 bitrate_config_.max_bitrate_bps = |
782 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps; | 787 params.max_bandwidth_bps == 0 ? -1 : params.max_bandwidth_bps; |
783 } | 788 } |
784 call_->SetBitrateConfig(bitrate_config_); | 789 call_->SetBitrateConfig(bitrate_config_); |
785 } | 790 } |
786 | 791 |
787 { | 792 { |
788 rtc::CritScope stream_lock(&stream_crit_); | 793 rtc::CritScope stream_lock(&stream_crit_); |
789 for (auto& kv : send_streams_) { | 794 for (auto& kv : send_streams_) { |
790 kv.second->SetSendParameters(changed_params); | 795 kv.second->SetSendParameters(changed_params); |
(...skipping 1757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2548 rtx_mapping[video_codecs[i].codec.id] != | 2553 rtx_mapping[video_codecs[i].codec.id] != |
2549 ulpfec_config.red_payload_type) { | 2554 ulpfec_config.red_payload_type) { |
2550 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; | 2555 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; |
2551 } | 2556 } |
2552 } | 2557 } |
2553 | 2558 |
2554 return video_codecs; | 2559 return video_codecs; |
2555 } | 2560 } |
2556 | 2561 |
2557 } // namespace cricket | 2562 } // namespace cricket |
OLD | NEW |