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:
committed by
Commit Bot
parent
87e1619fb9
commit
ada077f447
1
api/DEPS
1
api/DEPS
@ -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": [
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user