From 6b9d823f9b3d68c138215b72ad263b8fa647a588 Mon Sep 17 00:00:00 2001 From: "Piotr (Peter) Slatala" Date: Fri, 26 Oct 2018 07:59:46 -0700 Subject: [PATCH] Add TargetBitrate callback to MediaTransportInterface. Clients of media_transport_interface need the ability to monitor BWE estimates, and this change adds a TargetBitrate observer to the media transport interface. Bug: webrtc:9719 Change-Id: I90ebbf684c6f269e0c3cd58428010cfa511cc970 Reviewed-on: https://webrtc-review.googlesource.com/c/108106 Reviewed-by: Bjorn Mellem Reviewed-by: Seth Hampson Commit-Queue: Peter Slatala Cr-Commit-Position: refs/heads/master@{#25415} --- api/media_transport_interface.h | 9 ++++++++- api/test/fake_media_transport.h | 3 +++ api/test/loopback_media_transport.h | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/api/media_transport_interface.h b/api/media_transport_interface.h index b388ac9218..0e6a3fc270 100644 --- a/api/media_transport_interface.h +++ b/api/media_transport_interface.h @@ -17,6 +17,7 @@ #ifndef API_MEDIA_TRANSPORT_INTERFACE_H_ #define API_MEDIA_TRANSPORT_INTERFACE_H_ +#include #include #include #include @@ -240,8 +241,14 @@ class MediaTransportInterface { // pass a nullptr. virtual void SetReceiveVideoSink(MediaTransportVideoSinkInterface* sink) = 0; + // Sets a target bitrate observer. Before media transport is destructed + // the observer must be unregistered (set to nullptr). + // A newly registered observer will be called back with the latest recorded + // target rate, if available. + virtual void SetTargetTransferRateObserver( + webrtc::TargetTransferRateObserver* observer) = 0; + // TODO(sukhanov): RtcEventLogs. - // TODO(sukhanov): Bandwidth updates. }; // If media transport factory is set in peer connection factory, it will be diff --git a/api/test/fake_media_transport.h b/api/test/fake_media_transport.h index 4930a3072a..956316deb5 100644 --- a/api/test/fake_media_transport.h +++ b/api/test/fake_media_transport.h @@ -49,6 +49,9 @@ class FakeMediaTransport : public MediaTransportInterface { // Returns true if fake media trasport was created as a caller. bool is_caller() const { return is_caller_; } + void SetTargetTransferRateObserver( + webrtc::TargetTransferRateObserver* observer) override {} + private: const bool is_caller_; }; diff --git a/api/test/loopback_media_transport.h b/api/test/loopback_media_transport.h index 04e14b287c..3195f979ba 100644 --- a/api/test/loopback_media_transport.h +++ b/api/test/loopback_media_transport.h @@ -61,6 +61,9 @@ class MediaTransportPair { void SetReceiveVideoSink(MediaTransportVideoSinkInterface* sink) override {} + void SetTargetTransferRateObserver( + webrtc::TargetTransferRateObserver* observer) override {} + private: void OnData(uint64_t channel_id, MediaTransportEncodedAudioFrame frame) { if (sink_) {