From 2aa4a82499d4becd2284cdb482213d541b8804dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 16:29:10 +0200 Subject: Adding upstream version 86.0.1. Signed-off-by: Daniel Baumann --- .../libwebrtc/webrtc/video/video_send_stream.h | 115 +++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 third_party/libwebrtc/webrtc/video/video_send_stream.h (limited to 'third_party/libwebrtc/webrtc/video/video_send_stream.h') diff --git a/third_party/libwebrtc/webrtc/video/video_send_stream.h b/third_party/libwebrtc/webrtc/video/video_send_stream.h new file mode 100644 index 0000000000..998250cd6e --- /dev/null +++ b/third_party/libwebrtc/webrtc/video/video_send_stream.h @@ -0,0 +1,115 @@ +/* + * 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 VIDEO_VIDEO_SEND_STREAM_H_ +#define VIDEO_VIDEO_SEND_STREAM_H_ + +#include +#include +#include + +#include "call/bitrate_allocator.h" +#include "call/video_receive_stream.h" +#include "call/video_send_stream.h" +#include "common_video/libyuv/include/webrtc_libyuv.h" +#include "modules/video_coding/protection_bitrate_calculator.h" +#include "rtc_base/criticalsection.h" +#include "rtc_base/event.h" +#include "rtc_base/task_queue.h" +#include "video/encoder_rtcp_feedback.h" +#include "video/send_delay_stats.h" +#include "video/send_statistics_proxy.h" +#include "video/video_stream_encoder.h" + +namespace webrtc { + +class CallStats; +class SendSideCongestionController; +class IvfFileWriter; +class ProcessThread; +class RtpRtcp; +class RtpTransportControllerSendInterface; +class RtcEventLog; + +namespace internal { + +class VideoSendStreamImpl; + +// VideoSendStream implements webrtc::VideoSendStream. +// Internally, it delegates all public methods to VideoSendStreamImpl and / or +// VideoStreamEncoder. VideoSendStreamInternal is created and deleted on +// |worker_queue|. +class VideoSendStream : public webrtc::VideoSendStream { + public: + VideoSendStream( + int num_cpu_cores, + ProcessThread* module_process_thread, + rtc::TaskQueue* worker_queue, + CallStats* call_stats, + RtpTransportControllerSendInterface* transport, + BitrateAllocator* bitrate_allocator, + SendDelayStats* send_delay_stats, + RtcEventLog* event_log, + VideoSendStream::Config config, + VideoEncoderConfig encoder_config, + const std::map& suspended_ssrcs, + const std::map& suspended_payload_states); + + ~VideoSendStream() override; + + void SignalNetworkState(NetworkState state); + bool DeliverRtcp(const uint8_t* packet, size_t length); + + // webrtc::VideoSendStream implementation. + void Start() override; + void Stop() override; + + void SetSource(rtc::VideoSourceInterface* source, + const DegradationPreference& degradation_preference) override; + + void ReconfigureVideoEncoder(VideoEncoderConfig) override; + Stats GetStats() override; + + typedef std::map RtpStateMap; + typedef std::map RtpPayloadStateMap; + + // Takes ownership of each file, is responsible for closing them later. + // Calling this method will close and finalize any current logs. + // Giving rtc::kInvalidPlatformFileValue in any position disables logging + // for the corresponding stream. + // If a frame to be written would make the log too large the write fails and + // the log is closed and finalized. A |byte_limit| of 0 means no limit. + void EnableEncodedFrameRecording(const std::vector& files, + size_t byte_limit) override; + + void StopPermanentlyAndGetRtpStates(RtpStateMap* rtp_state_map, + RtpPayloadStateMap* payload_state_map); + + void SetTransportOverhead(size_t transport_overhead_per_packet); + + private: + class ConstructionTask; + class DestructAndGetRtpStateTask; + + rtc::ThreadChecker thread_checker_; + rtc::TaskQueue* const worker_queue_; + rtc::Event thread_sync_event_; + + SendStatisticsProxy stats_proxy_; + const VideoSendStream::Config config_; + const VideoEncoderConfig::ContentType content_type_; + std::unique_ptr send_stream_; + std::unique_ptr video_stream_encoder_; +}; + +} // namespace internal +} // namespace webrtc + +#endif // VIDEO_VIDEO_SEND_STREAM_H_ -- cgit v1.2.3