| Index: webrtc/pc/peerconnection.cc
|
| diff --git a/webrtc/pc/peerconnection.cc b/webrtc/pc/peerconnection.cc
|
| index a3981039e6cfe89554092b4c14d7f2f7b0f175e4..910983f4b50118814fa33407577e90a0d6fb88d0 100644
|
| --- a/webrtc/pc/peerconnection.cc
|
| +++ b/webrtc/pc/peerconnection.cc
|
| @@ -1235,6 +1235,53 @@ void PeerConnection::RegisterUMAObserver(UMAObserver* observer) {
|
| }
|
| }
|
|
|
| +RTCError PeerConnection::SetBitrate(const BitrateParameters& bitrate) {
|
| + rtc::Thread* worker_thread = factory_->worker_thread();
|
| + if (!worker_thread->IsCurrent()) {
|
| + return worker_thread->Invoke<RTCError>(
|
| + RTC_FROM_HERE, rtc::Bind(&PeerConnection::SetBitrate, this, bitrate));
|
| + }
|
| +
|
| + const bool has_min = static_cast<bool>(bitrate.min_bitrate_bps);
|
| + const bool has_current = static_cast<bool>(bitrate.current_bitrate_bps);
|
| + const bool has_max = static_cast<bool>(bitrate.max_bitrate_bps);
|
| + if (has_min && *bitrate.min_bitrate_bps < 0) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "min_bitrate_bps <= 0");
|
| + }
|
| + if (has_current) {
|
| + if (has_min && *bitrate.current_bitrate_bps < *bitrate.min_bitrate_bps) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "current_bitrate_bps < min_bitrate_bps");
|
| + } else if (*bitrate.current_bitrate_bps < 0) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "curent_bitrate_bps < 0");
|
| + }
|
| + }
|
| + if (has_max) {
|
| + if (has_current &&
|
| + *bitrate.max_bitrate_bps < *bitrate.current_bitrate_bps) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "max_bitrate_bps < current_bitrate_bps");
|
| + } else if (has_min && *bitrate.max_bitrate_bps < *bitrate.min_bitrate_bps) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "max_bitrate_bps < min_bitrate_bps");
|
| + } else if (*bitrate.max_bitrate_bps < 0) {
|
| + LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| + "max_bitrate_bps < 0");
|
| + }
|
| + }
|
| +
|
| + Call::Config::BitrateConfigMask mask;
|
| + mask.min_bitrate_bps = bitrate.min_bitrate_bps;
|
| + mask.start_bitrate_bps = bitrate.current_bitrate_bps;
|
| + mask.max_bitrate_bps = bitrate.max_bitrate_bps;
|
| +
|
| + RTC_DCHECK(media_controller_);
|
| + Call* call = media_controller_->call_w();
|
| + return call->SetBitrateConfigMask(mask);
|
| +}
|
| +
|
| bool PeerConnection::StartRtcEventLog(rtc::PlatformFile file,
|
| int64_t max_size_bytes) {
|
| return factory_->worker_thread()->Invoke<bool>(
|
|
|