diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
commit | 9e3c08db40b8916968b9f30096c7be3f00ce9647 (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /third_party/libwebrtc/test/scenario/audio_stream.h | |
parent | Initial commit. (diff) | |
download | thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.tar.xz thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/test/scenario/audio_stream.h')
-rw-r--r-- | third_party/libwebrtc/test/scenario/audio_stream.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/third_party/libwebrtc/test/scenario/audio_stream.h b/third_party/libwebrtc/test/scenario/audio_stream.h new file mode 100644 index 0000000000..cbaf9d29eb --- /dev/null +++ b/third_party/libwebrtc/test/scenario/audio_stream.h @@ -0,0 +1,110 @@ +/* + * Copyright 2018 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_SCENARIO_AUDIO_STREAM_H_ +#define TEST_SCENARIO_AUDIO_STREAM_H_ +#include <memory> +#include <string> +#include <vector> + +#include "test/scenario/call_client.h" +#include "test/scenario/column_printer.h" +#include "test/scenario/network_node.h" +#include "test/scenario/scenario_config.h" + +namespace webrtc { +namespace test { + +// SendAudioStream represents sending of audio. It can be used for starting the +// stream if neccessary. +class SendAudioStream { + public: + ~SendAudioStream(); + + SendAudioStream(const SendAudioStream&) = delete; + SendAudioStream& operator=(const SendAudioStream&) = delete; + + void Start(); + void Stop(); + void SetMuted(bool mute); + ColumnPrinter StatsPrinter(); + + private: + friend class Scenario; + friend class AudioStreamPair; + friend class ReceiveAudioStream; + SendAudioStream(CallClient* sender, + AudioStreamConfig config, + rtc::scoped_refptr<AudioEncoderFactory> encoder_factory, + Transport* send_transport); + AudioSendStream* send_stream_ = nullptr; + CallClient* const sender_; + const AudioStreamConfig config_; + uint32_t ssrc_; +}; + +// ReceiveAudioStream represents an audio receiver. It can't be used directly. +class ReceiveAudioStream { + public: + ~ReceiveAudioStream(); + + ReceiveAudioStream(const ReceiveAudioStream&) = delete; + ReceiveAudioStream& operator=(const ReceiveAudioStream&) = delete; + + void Start(); + void Stop(); + AudioReceiveStreamInterface::Stats GetStats() const; + + private: + friend class Scenario; + friend class AudioStreamPair; + ReceiveAudioStream(CallClient* receiver, + AudioStreamConfig config, + SendAudioStream* send_stream, + rtc::scoped_refptr<AudioDecoderFactory> decoder_factory, + Transport* feedback_transport); + AudioReceiveStreamInterface* receive_stream_ = nullptr; + CallClient* const receiver_; + const AudioStreamConfig config_; +}; + +// AudioStreamPair represents an audio streaming session. It can be used to +// access underlying send and receive classes. It can also be used in calls to +// the Scenario class. +class AudioStreamPair { + public: + ~AudioStreamPair(); + + AudioStreamPair(const AudioStreamPair&) = delete; + AudioStreamPair& operator=(const AudioStreamPair&) = delete; + + SendAudioStream* send() { return &send_stream_; } + ReceiveAudioStream* receive() { return &receive_stream_; } + + private: + friend class Scenario; + AudioStreamPair(CallClient* sender, + rtc::scoped_refptr<AudioEncoderFactory> encoder_factory, + CallClient* receiver, + rtc::scoped_refptr<AudioDecoderFactory> decoder_factory, + AudioStreamConfig config); + + private: + const AudioStreamConfig config_; + SendAudioStream send_stream_; + ReceiveAudioStream receive_stream_; +}; + +std::vector<RtpExtension> GetAudioRtpExtensions( + const AudioStreamConfig& config); + +} // namespace test +} // namespace webrtc + +#endif // TEST_SCENARIO_AUDIO_STREAM_H_ |