diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /third_party/libwebrtc/modules/video_coding/receiver.h | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/modules/video_coding/receiver.h')
-rw-r--r-- | third_party/libwebrtc/modules/video_coding/receiver.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/third_party/libwebrtc/modules/video_coding/receiver.h b/third_party/libwebrtc/modules/video_coding/receiver.h new file mode 100644 index 0000000000..069f8c55c7 --- /dev/null +++ b/third_party/libwebrtc/modules/video_coding/receiver.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2011 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 MODULES_VIDEO_CODING_RECEIVER_H_ +#define MODULES_VIDEO_CODING_RECEIVER_H_ + +#include <memory> +#include <vector> + +#include "api/field_trials_view.h" +#include "modules/video_coding/event_wrapper.h" +#include "modules/video_coding/include/video_coding.h" +#include "modules/video_coding/include/video_coding_defines.h" +#include "modules/video_coding/jitter_buffer.h" +#include "modules/video_coding/packet.h" +#include "modules/video_coding/timing/timing.h" + +namespace webrtc { + +class Clock; +class VCMEncodedFrame; + +class VCMReceiver { + public: + VCMReceiver(VCMTiming* timing, + Clock* clock, + const FieldTrialsView& field_trials); + + // Using this constructor, you can specify a different event implemetation for + // the jitter buffer. Useful for unit tests when you want to simulate incoming + // packets, in which case the jitter buffer's wait event is different from + // that of VCMReceiver itself. + VCMReceiver(VCMTiming* timing, + Clock* clock, + std::unique_ptr<EventWrapper> receiver_event, + std::unique_ptr<EventWrapper> jitter_buffer_event, + const FieldTrialsView& field_trials); + + ~VCMReceiver(); + + int32_t InsertPacket(const VCMPacket& packet); + VCMEncodedFrame* FrameForDecoding(uint16_t max_wait_time_ms, + bool prefer_late_decoding); + void ReleaseFrame(VCMEncodedFrame* frame); + + // NACK. + void SetNackSettings(size_t max_nack_list_size, + int max_packet_age_to_nack, + int max_incomplete_time_ms); + std::vector<uint16_t> NackList(bool* request_key_frame); + + private: + Clock* const clock_; + VCMJitterBuffer jitter_buffer_; + VCMTiming* timing_; + std::unique_ptr<EventWrapper> render_wait_event_; + int max_video_delay_ms_; +}; + +} // namespace webrtc + +#endif // MODULES_VIDEO_CODING_RECEIVER_H_ |