summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/call/call.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/libwebrtc/call/call.h
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/call/call.h')
-rw-r--r--third_party/libwebrtc/call/call.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/third_party/libwebrtc/call/call.h b/third_party/libwebrtc/call/call.h
new file mode 100644
index 0000000000..b36872f5b5
--- /dev/null
+++ b/third_party/libwebrtc/call/call.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+#ifndef CALL_CALL_H_
+#define CALL_CALL_H_
+
+#include <algorithm>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "absl/strings/string_view.h"
+#include "api/adaptation/resource.h"
+#include "api/media_types.h"
+#include "api/task_queue/task_queue_base.h"
+#include "call/audio_receive_stream.h"
+#include "call/audio_send_stream.h"
+#include "call/call_basic_stats.h"
+#include "call/call_config.h"
+#include "call/flexfec_receive_stream.h"
+#include "call/packet_receiver.h"
+#include "call/rtp_transport_controller_send_interface.h"
+#include "call/video_receive_stream.h"
+#include "call/video_send_stream.h"
+#include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/network/sent_packet.h"
+#include "rtc_base/network_route.h"
+
+namespace webrtc {
+
+// A Call represents a two-way connection carrying zero or more outgoing
+// and incoming media streams, transported over one or more RTP transports.
+
+// A Call instance can contain several send and/or receive streams. All streams
+// are assumed to have the same remote endpoint and will share bitrate estimates
+// etc.
+
+// When using the PeerConnection API, there is an one to one relationship
+// between the PeerConnection and the Call.
+
+class Call {
+ public:
+ using Stats = CallBasicStats;
+
+ static std::unique_ptr<Call> Create(const CallConfig& config);
+ static std::unique_ptr<Call> Create(
+ const CallConfig& config,
+ Clock* clock,
+ std::unique_ptr<RtpTransportControllerSendInterface>
+ transportControllerSend);
+
+ virtual AudioSendStream* CreateAudioSendStream(
+ const AudioSendStream::Config& config) = 0;
+
+ virtual void DestroyAudioSendStream(AudioSendStream* send_stream) = 0;
+
+ virtual AudioReceiveStreamInterface* CreateAudioReceiveStream(
+ const AudioReceiveStreamInterface::Config& config) = 0;
+ virtual void DestroyAudioReceiveStream(
+ AudioReceiveStreamInterface* receive_stream) = 0;
+
+ virtual VideoSendStream* CreateVideoSendStream(
+ VideoSendStream::Config config,
+ VideoEncoderConfig encoder_config) = 0;
+ virtual VideoSendStream* CreateVideoSendStream(
+ VideoSendStream::Config config,
+ VideoEncoderConfig encoder_config,
+ std::unique_ptr<FecController> fec_controller);
+ virtual void DestroyVideoSendStream(VideoSendStream* send_stream) = 0;
+
+ virtual VideoReceiveStreamInterface* CreateVideoReceiveStream(
+ VideoReceiveStreamInterface::Config configuration) = 0;
+ virtual void DestroyVideoReceiveStream(
+ VideoReceiveStreamInterface* receive_stream) = 0;
+
+ // In order for a created VideoReceiveStreamInterface to be aware that it is
+ // protected by a FlexfecReceiveStream, the latter should be created before
+ // the former.
+ virtual FlexfecReceiveStream* CreateFlexfecReceiveStream(
+ const FlexfecReceiveStream::Config config) = 0;
+ virtual void DestroyFlexfecReceiveStream(
+ FlexfecReceiveStream* receive_stream) = 0;
+
+ // When a resource is overused, the Call will try to reduce the load on the
+ // sysem, for example by reducing the resolution or frame rate of encoded
+ // streams.
+ virtual void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) = 0;
+
+ // All received RTP and RTCP packets for the call should be inserted to this
+ // PacketReceiver. The PacketReceiver pointer is valid as long as the
+ // Call instance exists.
+ virtual PacketReceiver* Receiver() = 0;
+
+ // This is used to access the transport controller send instance owned by
+ // Call. The send transport controller is currently owned by Call for legacy
+ // reasons. (for instance variants of call tests are built on this assumtion)
+ // TODO(srte): Move ownership of transport controller send out of Call and
+ // remove this method interface.
+ virtual RtpTransportControllerSendInterface* GetTransportControllerSend() = 0;
+
+ // Returns the call statistics, such as estimated send and receive bandwidth,
+ // pacing delay, etc.
+ virtual Stats GetStats() const = 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.
+ virtual void SignalChannelNetworkState(MediaType media,
+ NetworkState state) = 0;
+
+ virtual void OnAudioTransportOverheadChanged(
+ int transport_overhead_per_packet) = 0;
+
+ // Called when a receive stream's local ssrc has changed and association with
+ // send streams needs to be updated.
+ virtual void OnLocalSsrcUpdated(AudioReceiveStreamInterface& stream,
+ uint32_t local_ssrc) = 0;
+ virtual void OnLocalSsrcUpdated(VideoReceiveStreamInterface& stream,
+ uint32_t local_ssrc) = 0;
+ virtual void OnLocalSsrcUpdated(FlexfecReceiveStream& stream,
+ uint32_t local_ssrc) = 0;
+
+ virtual void OnUpdateSyncGroup(AudioReceiveStreamInterface& stream,
+ absl::string_view sync_group) = 0;
+
+ virtual void OnSentPacket(const rtc::SentPacket& sent_packet) = 0;
+
+ virtual void SetClientBitratePreferences(
+ const BitrateSettings& preferences) = 0;
+
+ virtual const FieldTrialsView& trials() const = 0;
+
+ virtual TaskQueueBase* network_thread() const = 0;
+ virtual TaskQueueBase* worker_thread() const = 0;
+
+ virtual ~Call() {}
+};
+
+} // namespace webrtc
+
+#endif // CALL_CALL_H_