aboutsummaryrefslogtreecommitdiff
path: root/video/encoder_rtcp_feedback.h
diff options
context:
space:
mode:
Diffstat (limited to 'video/encoder_rtcp_feedback.h')
-rw-r--r--video/encoder_rtcp_feedback.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/video/encoder_rtcp_feedback.h b/video/encoder_rtcp_feedback.h
index 3bd1cb91f0..2aadcc34e7 100644
--- a/video/encoder_rtcp_feedback.h
+++ b/video/encoder_rtcp_feedback.h
@@ -10,12 +10,16 @@
#ifndef VIDEO_ENCODER_RTCP_FEEDBACK_H_
#define VIDEO_ENCODER_RTCP_FEEDBACK_H_
+#include <functional>
#include <vector>
+#include "api/sequence_checker.h"
+#include "api/units/time_delta.h"
+#include "api/units/timestamp.h"
#include "api/video/video_stream_encoder_interface.h"
#include "call/rtp_video_sender_interface.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
-#include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/system/no_unique_address.h"
#include "system_wrappers/include/clock.h"
namespace webrtc {
@@ -27,13 +31,15 @@ class VideoStreamEncoderInterface;
class EncoderRtcpFeedback : public RtcpIntraFrameObserver,
public RtcpLossNotificationObserver {
public:
- EncoderRtcpFeedback(Clock* clock,
- const std::vector<uint32_t>& ssrcs,
- VideoStreamEncoderInterface* encoder);
+ EncoderRtcpFeedback(
+ Clock* clock,
+ const std::vector<uint32_t>& ssrcs,
+ VideoStreamEncoderInterface* encoder,
+ std::function<std::vector<RtpSequenceNumberMap::Info>(
+ uint32_t ssrc,
+ const std::vector<uint16_t>& seq_nums)> get_packet_infos);
~EncoderRtcpFeedback() override = default;
- void SetRtpVideoSender(const RtpVideoSenderInterface* rtp_video_sender);
-
void OnReceivedIntraFrameRequest(uint32_t ssrc) override;
// Implements RtcpLossNotificationObserver.
@@ -43,17 +49,19 @@ class EncoderRtcpFeedback : public RtcpIntraFrameObserver,
bool decodability_flag) override;
private:
- bool HasSsrc(uint32_t ssrc);
-
Clock* const clock_;
const std::vector<uint32_t> ssrcs_;
- const RtpVideoSenderInterface* rtp_video_sender_;
+ const std::function<std::vector<RtpSequenceNumberMap::Info>(
+ uint32_t ssrc,
+ const std::vector<uint16_t>& seq_nums)>
+ get_packet_infos_;
VideoStreamEncoderInterface* const video_stream_encoder_;
- Mutex mutex_;
- int64_t time_last_intra_request_ms_ RTC_GUARDED_BY(mutex_);
+ RTC_NO_UNIQUE_ADDRESS SequenceChecker packet_delivery_queue_;
+ Timestamp time_last_packet_delivery_queue_
+ RTC_GUARDED_BY(packet_delivery_queue_);
- const int min_keyframe_send_interval_ms_;
+ const TimeDelta min_keyframe_send_interval_;
};
} // namespace webrtc