Rename EncoderKeyFrameCallback back to EncoderRtcpFeedback
The name EncoderRtcpFeedback is more appropriate because:
1. "Callback" implies a single function exposed, which is
not the case.
2. We intend to add OnLossNotification() to the same class.
Bug: webrtc:10501
Change-Id: I75b2e06eb070e85e872eba9fbc354aa4b68c7993
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131289
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27490}
diff --git a/video/encoder_rtcp_feedback.h b/video/encoder_rtcp_feedback.h
new file mode 100644
index 0000000..1a58a67
--- /dev/null
+++ b/video/encoder_rtcp_feedback.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2012 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_ENCODER_RTCP_FEEDBACK_H_
+#define VIDEO_ENCODER_RTCP_FEEDBACK_H_
+
+#include <vector>
+
+#include "api/media_transport_interface.h"
+#include "api/video/video_stream_encoder_interface.h"
+#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
+#include "rtc_base/critical_section.h"
+#include "system_wrappers/include/clock.h"
+
+namespace webrtc {
+
+class VideoStreamEncoderInterface;
+
+// This class passes feedback (such as key frame requests or loss notifications)
+// from either Mediatransport or the RtpRtcp module.
+// TODO(bugs.webrtc.org/9719): Should be eliminated when RtpMediaTransport is
+// implemented.
+class EncoderRtcpFeedback : public RtcpIntraFrameObserver,
+ public MediaTransportKeyFrameRequestCallback {
+ public:
+ EncoderRtcpFeedback(Clock* clock,
+ const std::vector<uint32_t>& ssrcs,
+ VideoStreamEncoderInterface* encoder);
+ void OnReceivedIntraFrameRequest(uint32_t ssrc) override;
+
+ // Implements MediaTransportKeyFrameRequestCallback
+ void OnKeyFrameRequested(uint64_t channel_id) override;
+
+ private:
+ bool HasSsrc(uint32_t ssrc);
+
+ Clock* const clock_;
+ const std::vector<uint32_t> ssrcs_;
+ VideoStreamEncoderInterface* const video_stream_encoder_;
+
+ rtc::CriticalSection crit_;
+ int64_t time_last_intra_request_ms_ RTC_GUARDED_BY(crit_);
+
+ const int min_keyframe_send_interval_ms_;
+};
+
+} // namespace webrtc
+
+#endif // VIDEO_ENCODER_RTCP_FEEDBACK_H_