diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/libwebrtc/modules/video_coding/video_receiver2.h | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/modules/video_coding/video_receiver2.h')
-rw-r--r-- | third_party/libwebrtc/modules/video_coding/video_receiver2.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/third_party/libwebrtc/modules/video_coding/video_receiver2.h b/third_party/libwebrtc/modules/video_coding/video_receiver2.h new file mode 100644 index 0000000000..4457a5b5b3 --- /dev/null +++ b/third_party/libwebrtc/modules/video_coding/video_receiver2.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019 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_VIDEO_RECEIVER2_H_ +#define MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_ + +#include <memory> +#include <vector> + +#include "api/field_trials_view.h" +#include "api/sequence_checker.h" +#include "api/video_codecs/video_decoder.h" +#include "modules/video_coding/decoder_database.h" +#include "modules/video_coding/encoded_frame.h" +#include "modules/video_coding/generic_decoder.h" +#include "modules/video_coding/timing/timing.h" +#include "rtc_base/system/no_unique_address.h" +#include "system_wrappers/include/clock.h" + +namespace webrtc { + +// This class is a copy of vcm::VideoReceiver, trimmed down to what's used by +// VideoReceive stream, with the aim to incrementally trim it down further and +// ultimately delete it. It's difficult to do this incrementally with the +// original VideoReceiver class, since it is used by the legacy +// VideoCodingModule api. +class VideoReceiver2 { + public: + VideoReceiver2(Clock* clock, + VCMTiming* timing, + const FieldTrialsView& field_trials); + ~VideoReceiver2(); + + void RegisterReceiveCodec(uint8_t payload_type, + const VideoDecoder::Settings& decoder_settings); + void DeregisterReceiveCodec(uint8_t payload_type); + void DeregisterReceiveCodecs(); + + void RegisterExternalDecoder(std::unique_ptr<VideoDecoder> decoder, + uint8_t payload_type); + + bool IsExternalDecoderRegistered(uint8_t payload_type) const; + int32_t RegisterReceiveCallback(VCMReceiveCallback* receive_callback); + + int32_t Decode(const VCMEncodedFrame* frame); + + private: + RTC_NO_UNIQUE_ADDRESS SequenceChecker construction_sequence_checker_; + RTC_NO_UNIQUE_ADDRESS SequenceChecker decoder_sequence_checker_; + Clock* const clock_; + VCMDecodedFrameCallback decoded_frame_callback_; + // Callbacks are set before the decoder thread starts. + // Once the decoder thread has been started, usage of `_codecDataBase` moves + // over to the decoder thread. + VCMDecoderDatabase codec_database_; +}; + +} // namespace webrtc + +#endif // MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_ |