Callback changes to media transport interface:

1) allow multiple target rate observers
2) add getter for overhead
3) add getter for target rate
4) add callback for network route changed.


Bug: webrtc:9719
Change-Id: I06518cd9aed0ebabd204a7f6af3b86f51fd694e0
Reviewed-on: https://webrtc-review.googlesource.com/c/109940
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25572}
This commit is contained in:
Piotr (Peter) Slatala
2018-11-08 07:43:31 -08:00
committed by Commit Bot
parent 87e1619fb9
commit ada077f447
3 changed files with 67 additions and 1 deletions

View File

@ -98,6 +98,7 @@ specific_include_rules = {
"media_transport_interface\.h": [
"+rtc_base/copyonwritebuffer.h", # As used by datachannelinterface.h
"+rtc_base/networkroute.h"
],
"peerconnectionfactoryproxy\.h": [

View File

@ -103,4 +103,25 @@ MediaTransportFactory::CreateMediaTransport(
return std::unique_ptr<MediaTransportInterface>(nullptr);
}
absl::optional<TargetTransferRate>
MediaTransportInterface::GetLatestTargetTransferRate() {
return absl::nullopt;
}
void MediaTransportInterface::SetNetworkChangeCallback(
MediaTransportNetworkChangeCallback* callback) {}
void MediaTransportInterface::RemoveTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer) {}
void MediaTransportInterface::SetTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer) {}
void MediaTransportInterface::AddTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer) {}
size_t MediaTransportInterface::GetAudioPacketOverhead() const {
return 0;
}
} // namespace webrtc

View File

@ -29,6 +29,7 @@
#include "api/video/encoded_image.h"
#include "common_types.h" // NOLINT(build/include)
#include "rtc_base/copyonwritebuffer.h"
#include "rtc_base/networkroute.h"
namespace rtc {
class PacketTransportInternal;
@ -139,6 +140,16 @@ class MediaTransportEncodedAudioFrame final {
std::vector<uint8_t> encoded_data_;
};
// Callback to notify about network route changes.
class MediaTransportNetworkChangeCallback {
public:
virtual ~MediaTransportNetworkChangeCallback() = default;
// Called when the network route is changed, with the new network route.
virtual void OnNetworkRouteChanged(
const rtc::NetworkRoute& new_network_route) = 0;
};
// Interface for receiving encoded audio frames from MediaTransportInterface
// implementations.
class MediaTransportAudioSinkInterface {
@ -329,8 +340,41 @@ class MediaTransportInterface {
// the observer must be unregistered (set to nullptr).
// A newly registered observer will be called back with the latest recorded
// target rate, if available.
// TODO(psla): This method will be removed, in favor of
// AddTargetTransferRateObserver.
virtual void SetTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer) = 0;
TargetTransferRateObserver* observer);
// Adds a target bitrate observer. Before media transport is destructed
// the observer must be unregistered (by calling
// RemoveTargetTransferRateObserver).
// A newly registered observer will be called back with the latest recorded
// target rate, if available.
virtual void AddTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer);
// Removes an existing |observer| from observers. If observer was never
// registered, an error is logged and method does nothing.
virtual void RemoveTargetTransferRateObserver(
webrtc::TargetTransferRateObserver* observer);
// Returns the last known target transfer rate as reported to the above
// observers.
virtual absl::optional<TargetTransferRate> GetLatestTargetTransferRate();
// Gets the audio packet overhead in bytes. Returned overhead does not include
// transport overhead (ipv4/6, turn channeldata, tcp/udp, etc.).
// If the transport is capable of fusing packets together, this overhead
// might not be a very accurate number.
virtual size_t GetAudioPacketOverhead() const;
// Sets an observer for network change events. If the network route is already
// established when the callback is set, |callback| will be called immediately
// with the current network route.
// Before media transport is destroyed, the callback must be unregistered by
// setting it to nullptr.
virtual void SetNetworkChangeCallback(
MediaTransportNetworkChangeCallback* callback);
// Sets a state observer callback. Before media transport is destroyed, the
// callback must be unregistered by setting it to nullptr.