Index: webrtc/call/call.h |
diff --git a/webrtc/call/call.h b/webrtc/call/call.h |
index ec73bf7714926b2a6b04210f3c66a881f9acbedf..563bd9f8d90c58a97f11fc733006110fcea2dc58 100644 |
--- a/webrtc/call/call.h |
+++ b/webrtc/call/call.h |
@@ -10,9 +10,11 @@ |
#ifndef WEBRTC_CALL_CALL_H_ |
#define WEBRTC_CALL_CALL_H_ |
+#include <memory> |
#include <string> |
#include <vector> |
+#include "webrtc/api/rtcerror.h" |
#include "webrtc/base/networkroute.h" |
#include "webrtc/base/platform_file.h" |
#include "webrtc/base/socket.h" |
@@ -20,6 +22,7 @@ |
#include "webrtc/call/audio_send_stream.h" |
#include "webrtc/call/audio_state.h" |
#include "webrtc/call/flexfec_receive_stream.h" |
+#include "webrtc/call/rtp_transport_controller_send.h" |
#include "webrtc/common_types.h" |
#include "webrtc/video_receive_stream.h" |
#include "webrtc/video_send_stream.h" |
@@ -75,6 +78,14 @@ class Call { |
int max_bitrate_bps = -1; |
} bitrate_config; |
+ // TODO(zstein): Consider using PeerConnectionInterface::BitrateParameters |
+ // instead (and move BitrateParameters to its own file in api/). |
+ struct BitrateConfigMask { |
+ rtc::Optional<int> min_bitrate_bps; |
+ rtc::Optional<int> start_bitrate_bps; |
+ rtc::Optional<int> max_bitrate_bps; |
+ }; |
+ |
// AudioState which is possibly shared between multiple calls. |
// TODO(solenberg): Change this to a shared_ptr once we can use C++11. |
rtc::scoped_refptr<AudioState> audio_state; |
@@ -100,6 +111,10 @@ class Call { |
static Call* Create(const Call::Config& config); |
+ static Call* Create( |
Taylor_Brandstetter
2017/04/26 15:46:11
Could you add a comment that this Create method is
Zach Stein
2017/05/04 22:32:43
Done.
|
+ const Call::Config& config, |
+ std::unique_ptr<RtpTransportControllerSendInterface> transport_send); |
+ |
virtual AudioSendStream* CreateAudioSendStream( |
const AudioSendStream::Config& config) = 0; |
virtual void DestroyAudioSendStream(AudioSendStream* send_stream) = 0; |
@@ -136,14 +151,20 @@ class Call { |
// pacing delay, etc. |
virtual Stats GetStats() const = 0; |
- // TODO(pbos): Like BitrateConfig above this is currently per-stream instead |
- // of maximum for entire Call. This should be fixed along with the above. |
- // Specifying a start bitrate (>0) will currently reset the current bitrate |
- // estimate. This is due to how the 'x-google-start-bitrate' flag is currently |
+ // The min and start values will only be used if they are not set by |
+ // SetBitrateConfigMask. The minimum max set by the two calls will be used. |
+ // Specifying a start bitrate (>0) will reset the current bitrate estimate. |
+ // This is due to how the 'x-google-start-bitrate' flag is currently |
// implemented. |
virtual void SetBitrateConfig( |
const Config::BitrateConfig& bitrate_config) = 0; |
+ // The min and start values set here are preferred to values set by |
+ // SetBitrateConfig. The minimum of the max set by the two calls will be used. |
+ // Assumes 0 <= min <= start <= max holds for set parameters. |
+ virtual RTCError SetBitrateConfigMask( |
+ const Config::BitrateConfigMask& bitrate_mask) = 0; |
+ |
// TODO(skvlad): When the unbundled case with multiple streams for the same |
// media type going over different networks is supported, track the state |
// for each stream separately. Right now it's global per media type. |