| Index: webrtc/video/encoder_state_feedback.h
|
| diff --git a/webrtc/video/encoder_state_feedback.h b/webrtc/video/encoder_state_feedback.h
|
| index d0161daf7b0c1337ea50539e65e082dd61415347..6326bed9c13cdb7d966619b3634039768f54af8e 100644
|
| --- a/webrtc/video/encoder_state_feedback.h
|
| +++ b/webrtc/video/encoder_state_feedback.h
|
| @@ -14,56 +14,40 @@
|
| #ifndef WEBRTC_VIDEO_ENCODER_STATE_FEEDBACK_H_
|
| #define WEBRTC_VIDEO_ENCODER_STATE_FEEDBACK_H_
|
|
|
| -#include <map>
|
| #include <vector>
|
|
|
| -#include "webrtc/base/constructormagic.h"
|
| #include "webrtc/base/criticalsection.h"
|
| -#include "webrtc/base/scoped_ptr.h"
|
| +#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
| #include "webrtc/typedefs.h"
|
|
|
| namespace webrtc {
|
|
|
| -class EncoderStateFeedbackObserver;
|
| -class RtcpIntraFrameObserver;
|
| class ViEEncoder;
|
|
|
| -class EncoderStateFeedback {
|
| +class EncoderStateFeedback : public RtcpIntraFrameObserver {
|
| public:
|
| - friend class EncoderStateFeedbackObserver;
|
| -
|
| EncoderStateFeedback();
|
| - ~EncoderStateFeedback();
|
|
|
| // Adds an encoder to receive feedback for a set of SSRCs.
|
| - void AddEncoder(const std::vector<uint32_t>& ssrc, ViEEncoder* encoder);
|
| -
|
| - // Removes a registered ViEEncoder.
|
| - void RemoveEncoder(const ViEEncoder* encoder);
|
| + void Init(const std::vector<uint32_t>& ssrc, ViEEncoder* encoder);
|
|
|
| - // Returns an observer to register at the requesting class. The observer has
|
| - // the same lifetime as the EncoderStateFeedback instance.
|
| - RtcpIntraFrameObserver* GetRtcpIntraFrameObserver();
|
| + // Removes the registered encoder. Necessary since RTP modules outlive
|
| + // ViEEncoder.
|
| + // TODO(pbos): Make sure RTP modules are not running when tearing down
|
| + // ViEEncoder, then remove this function.
|
| + void TearDown();
|
|
|
| - protected:
|
| - // Called by EncoderStateFeedbackObserver when a new key frame is requested.
|
| - void OnReceivedIntraFrameRequest(uint32_t ssrc);
|
| - void OnReceivedSLI(uint32_t ssrc, uint8_t picture_id);
|
| - void OnReceivedRPSI(uint32_t ssrc, uint64_t picture_id);
|
| - void OnLocalSsrcChanged(uint32_t old_ssrc, uint32_t new_ssrc);
|
| + void OnReceivedIntraFrameRequest(uint32_t ssrc) override;
|
| + void OnReceivedSLI(uint32_t ssrc, uint8_t picture_id) override;
|
| + void OnReceivedRPSI(uint32_t ssrc, uint64_t picture_id) override;
|
| + void OnLocalSsrcChanged(uint32_t old_ssrc, uint32_t new_ssrc) override;
|
|
|
| private:
|
| - typedef std::map<uint32_t, ViEEncoder*> SsrcEncoderMap;
|
| -
|
| + bool HasSsrc(uint32_t ssrc) EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
| rtc::CriticalSection crit_;
|
|
|
| - // Instance registered at the class requesting new key frames.
|
| - rtc::scoped_ptr<EncoderStateFeedbackObserver> observer_;
|
| -
|
| - // Maps a unique ssrc to the given encoder.
|
| - SsrcEncoderMap encoders_;
|
| -
|
| - RTC_DISALLOW_COPY_AND_ASSIGN(EncoderStateFeedback);
|
| + std::vector<uint32_t> ssrcs_ GUARDED_BY(crit_);
|
| + ViEEncoder* vie_encoder_ GUARDED_BY(crit_);
|
| };
|
|
|
| } // namespace webrtc
|
|
|