Revert "Delete PeerConnectionInterface::BitrateParameters"

This reverts commit e2dfe74b0e29558ddea6473d0272bc38c838370c.

Reason for revert: Breaks downstream project

Original change's description:
> Delete PeerConnectionInterface::BitrateParameters
> 
> Replaced by the api struct BitrateSettings, added in
> https://webrtc-review.googlesource.com/74020
> 
> Bug: None
> Change-Id: I8b50b32f5c7a8918fad675904d913a21fd905274
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177665
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Taylor <deadbeef@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31714}

TBR=deadbeef@webrtc.org,ilnik@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org

Change-Id: Ia62b3c43996e95668d7972882baf06a186a539d3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179221
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31719}
This commit is contained in:
Artem Titov 2020-07-13 15:41:11 +00:00 committed by Commit Bot
parent 6e4416cd89
commit f60d4c2dfe
11 changed files with 72 additions and 19 deletions

View File

@ -381,6 +381,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") {
":track_id_stream_info_map",
":video_quality_analyzer_api",
"../media:rtc_media_base",
"../rtc_base:deprecation",
"../rtc_base:rtc_base",
"rtc_event_log",
"task_queue",

View File

@ -53,6 +53,27 @@ RTCError PeerConnectionInterface::SetConfiguration(
return RTCError();
}
RTCError PeerConnectionInterface::SetBitrate(const BitrateSettings& bitrate) {
BitrateParameters bitrate_parameters;
bitrate_parameters.min_bitrate_bps = bitrate.min_bitrate_bps;
bitrate_parameters.current_bitrate_bps = bitrate.start_bitrate_bps;
bitrate_parameters.max_bitrate_bps = bitrate.max_bitrate_bps;
return SetBitrate(bitrate_parameters);
}
RTCError PeerConnectionInterface::SetBitrate(
const BitrateParameters& bitrate_parameters) {
BitrateSettings bitrate;
bitrate.min_bitrate_bps = bitrate_parameters.min_bitrate_bps;
bitrate.start_bitrate_bps = bitrate_parameters.current_bitrate_bps;
bitrate.max_bitrate_bps = bitrate_parameters.max_bitrate_bps;
return SetBitrate(bitrate);
}
PeerConnectionInterface::BitrateParameters::BitrateParameters() = default;
PeerConnectionInterface::BitrateParameters::~BitrateParameters() = default;
PeerConnectionDependencies::PeerConnectionDependencies(
PeerConnectionObserver* observer_in)
: observer(observer_in) {}

View File

@ -1015,13 +1015,28 @@ class RTC_EXPORT PeerConnectionInterface : public rtc::RefCountInterface {
virtual bool RemoveIceCandidates(
const std::vector<cricket::Candidate>& candidates) = 0;
// 0 <= min <= current <= max should hold for set parameters.
struct BitrateParameters {
BitrateParameters();
~BitrateParameters();
absl::optional<int> min_bitrate_bps;
absl::optional<int> current_bitrate_bps;
absl::optional<int> max_bitrate_bps;
};
// SetBitrate limits the bandwidth allocated for all RTP streams sent by
// this PeerConnection. Other limitations might affect these limits and
// are respected (for example "b=AS" in SDP).
//
// Setting |current_bitrate_bps| will reset the current bitrate estimate
// to the provided value.
virtual RTCError SetBitrate(const BitrateSettings& bitrate) = 0;
virtual RTCError SetBitrate(const BitrateSettings& bitrate);
// TODO(nisse): Deprecated - use version above. These two default
// implementations require subclasses to implement one or the other
// of the methods.
virtual RTCError SetBitrate(const BitrateParameters& bitrate_parameters);
// Enable/disable playout of received audio streams. Enabled by default. Note
// that even if playout is enabled, streams will only be played out if the

View File

@ -27,7 +27,6 @@
// "api/test/videocodec_test_fixture.h"
// "api/test/videocodec_test_stats.h"
#include "api/test/dummy_peer_connection.h"
#include "api/test/fake_frame_decryptor.h"
#include "api/test/fake_frame_encryptor.h"
#include "api/test/mock_audio_mixer.h"

View File

@ -194,6 +194,10 @@ class DummyPeerConnection : public PeerConnectionInterface {
return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
}
RTCError SetBitrate(const BitrateParameters& bitrate_parameters) override {
return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
}
void SetAudioPlayout(bool playout) override { FATAL() << "Not implemented"; }
void SetAudioRecording(bool recording) override {
FATAL() << "Not implemented";

View File

@ -167,6 +167,7 @@ class MockPeerConnectionInterface
(const std::vector<cricket::Candidate>&),
(override));
MOCK_METHOD(RTCError, SetBitrate, (const BitrateSettings&), (override));
MOCK_METHOD(RTCError, SetBitrate, (const BitrateParameters&), (override));
MOCK_METHOD(void, SetAudioPlayout, (bool), (override));
MOCK_METHOD(void, SetAudioRecording, (bool), (override));
MOCK_METHOD(rtc::scoped_refptr<DtlsTransportInterface>,

View File

@ -40,6 +40,7 @@
#include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "media/base/media_constants.h"
#include "rtc_base/deprecation.h"
#include "rtc_base/network.h"
#include "rtc_base/rtc_certificate_generator.h"
#include "rtc_base/ssl_certificate.h"
@ -335,6 +336,9 @@ class PeerConnectionE2EQualityTestFixture {
// applied to all summed RTP streams for this peer.
virtual PeerConfigurer* SetBitrateSettings(
BitrateSettings bitrate_settings) = 0;
RTC_DEPRECATED
virtual PeerConfigurer* SetBitrateParameters(
PeerConnectionInterface::BitrateParameters bitrate_params) = 0;
};
// Contains configuration for echo emulator.

View File

@ -3615,44 +3615,44 @@ TEST_P(PeerConnectionInterfaceTest,
TEST_P(PeerConnectionInterfaceTest, SetBitrateWithoutMinSucceeds) {
CreatePeerConnection();
BitrateSettings bitrate;
bitrate.start_bitrate_bps = 100000;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.current_bitrate_bps = 100000;
EXPECT_TRUE(pc_->SetBitrate(bitrate).ok());
}
TEST_P(PeerConnectionInterfaceTest, SetBitrateNegativeMinFails) {
CreatePeerConnection();
BitrateSettings bitrate;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.min_bitrate_bps = -1;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
}
TEST_P(PeerConnectionInterfaceTest, SetBitrateCurrentLessThanMinFails) {
CreatePeerConnection();
BitrateSettings bitrate;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.min_bitrate_bps = 5;
bitrate.start_bitrate_bps = 3;
bitrate.current_bitrate_bps = 3;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
}
TEST_P(PeerConnectionInterfaceTest, SetBitrateCurrentNegativeFails) {
CreatePeerConnection();
BitrateSettings bitrate;
bitrate.start_bitrate_bps = -1;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.current_bitrate_bps = -1;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
}
TEST_P(PeerConnectionInterfaceTest, SetBitrateMaxLessThanCurrentFails) {
CreatePeerConnection();
BitrateSettings bitrate;
bitrate.start_bitrate_bps = 10;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.current_bitrate_bps = 10;
bitrate.max_bitrate_bps = 8;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
}
TEST_P(PeerConnectionInterfaceTest, SetBitrateMaxLessThanMinFails) {
CreatePeerConnection();
BitrateSettings bitrate;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.min_bitrate_bps = 10;
bitrate.max_bitrate_bps = 8;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
@ -3660,7 +3660,7 @@ TEST_P(PeerConnectionInterfaceTest, SetBitrateMaxLessThanMinFails) {
TEST_P(PeerConnectionInterfaceTest, SetBitrateMaxNegativeFails) {
CreatePeerConnection();
BitrateSettings bitrate;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.max_bitrate_bps = -1;
EXPECT_FALSE(pc_->SetBitrate(bitrate).ok());
}
@ -3671,8 +3671,8 @@ TEST_P(PeerConnectionInterfaceTest, SetBitrateMaxNegativeFails) {
// be clamped succeeds.
TEST_P(PeerConnectionInterfaceTest, SetBitrateCurrentLessThanImplicitMin) {
CreatePeerConnection();
BitrateSettings bitrate;
bitrate.start_bitrate_bps = 1;
PeerConnectionInterface::BitrateParameters bitrate;
bitrate.current_bitrate_bps = 1;
EXPECT_TRUE(pc_->SetBitrate(bitrate).ok());
}

View File

@ -758,9 +758,9 @@ static jboolean JNI_PeerConnection_SetBitrate(
const JavaParamRef<jobject>& j_min,
const JavaParamRef<jobject>& j_current,
const JavaParamRef<jobject>& j_max) {
BitrateSettings params;
PeerConnectionInterface::BitrateParameters params;
params.min_bitrate_bps = JavaToNativeOptionalInt(jni, j_min);
params.start_bitrate_bps = JavaToNativeOptionalInt(jni, j_current);
params.current_bitrate_bps = JavaToNativeOptionalInt(jni, j_current);
params.max_bitrate_bps = JavaToNativeOptionalInt(jni, j_max);
return ExtractNativePC(jni, j_pc)->SetBitrate(params).ok();
}

View File

@ -558,12 +558,12 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
- (BOOL)setBweMinBitrateBps:(nullable NSNumber *)minBitrateBps
currentBitrateBps:(nullable NSNumber *)currentBitrateBps
maxBitrateBps:(nullable NSNumber *)maxBitrateBps {
webrtc::BitrateSettings params;
webrtc::PeerConnectionInterface::BitrateParameters params;
if (minBitrateBps != nil) {
params.min_bitrate_bps = absl::optional<int>(minBitrateBps.intValue);
}
if (currentBitrateBps != nil) {
params.start_bitrate_bps = absl::optional<int>(currentBitrateBps.intValue);
params.current_bitrate_bps = absl::optional<int>(currentBitrateBps.intValue);
}
if (maxBitrateBps != nil) {
params.max_bitrate_bps = absl::optional<int>(maxBitrateBps.intValue);

View File

@ -163,6 +163,14 @@ class PeerConfigurerImpl final
params_->rtc_configuration = std::move(configuration);
return this;
}
PeerConfigurer* SetBitrateParameters(
PeerConnectionInterface::BitrateParameters bitrate_params) override {
BitrateSettings bitrate_settings;
bitrate_settings.min_bitrate_bps = bitrate_params.min_bitrate_bps;
bitrate_settings.start_bitrate_bps = bitrate_params.current_bitrate_bps;
bitrate_settings.max_bitrate_bps = bitrate_params.max_bitrate_bps;
return SetBitrateSettings(bitrate_settings);
}
PeerConfigurer* SetBitrateSettings(
BitrateSettings bitrate_settings) override {
params_->bitrate_settings = bitrate_settings;