Chromium Code Reviews| 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. |