summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/test/direct_transport.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/test/direct_transport.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/test/direct_transport.h')
-rw-r--r--third_party/libwebrtc/test/direct_transport.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/third_party/libwebrtc/test/direct_transport.h b/third_party/libwebrtc/test/direct_transport.h
new file mode 100644
index 0000000000..1e14c1c1f4
--- /dev/null
+++ b/third_party/libwebrtc/test/direct_transport.h
@@ -0,0 +1,90 @@
+/*
+ * 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 TEST_DIRECT_TRANSPORT_H_
+#define TEST_DIRECT_TRANSPORT_H_
+
+#include <memory>
+
+#include "api/call/transport.h"
+#include "api/sequence_checker.h"
+#include "api/task_queue/task_queue_base.h"
+#include "api/test/simulated_network.h"
+#include "call/call.h"
+#include "call/simulated_packet_receiver.h"
+#include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/task_utils/repeating_task.h"
+#include "rtc_base/thread_annotations.h"
+
+namespace webrtc {
+
+class PacketReceiver;
+
+namespace test {
+class Demuxer {
+ public:
+ explicit Demuxer(const std::map<uint8_t, MediaType>& payload_type_map);
+ ~Demuxer() = default;
+
+ Demuxer(const Demuxer&) = delete;
+ Demuxer& operator=(const Demuxer&) = delete;
+
+ MediaType GetMediaType(const uint8_t* packet_data,
+ size_t packet_length) const;
+ const std::map<uint8_t, MediaType> payload_type_map_;
+};
+
+// Objects of this class are expected to be allocated and destroyed on the
+// same task-queue - the one that's passed in via the constructor.
+class DirectTransport : public Transport {
+ public:
+ DirectTransport(TaskQueueBase* task_queue,
+ std::unique_ptr<SimulatedPacketReceiverInterface> pipe,
+ Call* send_call,
+ const std::map<uint8_t, MediaType>& payload_type_map,
+ rtc::ArrayView<const RtpExtension> audio_extensions,
+ rtc::ArrayView<const RtpExtension> video_extensions);
+
+ ~DirectTransport() override;
+
+ // TODO(holmer): Look into moving this to the constructor.
+ virtual void SetReceiver(PacketReceiver* receiver);
+
+ // Backwards compatibility using statements.
+ // TODO(https://bugs.webrtc.org/15410): Remove when not needed.
+ using Transport::SendRtcp;
+ using Transport::SendRtp;
+
+ bool SendRtp(rtc::ArrayView<const uint8_t> data,
+ const PacketOptions& options) override;
+ bool SendRtcp(rtc::ArrayView<const uint8_t> data) override;
+
+ int GetAverageDelayMs();
+
+ private:
+ void ProcessPackets() RTC_EXCLUSIVE_LOCKS_REQUIRED(&process_lock_);
+ void LegacySendPacket(const uint8_t* data, size_t length);
+ void Start();
+
+ Call* const send_call_;
+
+ TaskQueueBase* const task_queue_;
+
+ Mutex process_lock_;
+ RepeatingTaskHandle next_process_task_ RTC_GUARDED_BY(&process_lock_);
+
+ const Demuxer demuxer_;
+ const std::unique_ptr<SimulatedPacketReceiverInterface> fake_network_;
+ const RtpHeaderExtensionMap audio_extensions_;
+ const RtpHeaderExtensionMap video_extensions_;
+};
+} // namespace test
+} // namespace webrtc
+
+#endif // TEST_DIRECT_TRANSPORT_H_