Index: webrtc/video/rtp_stream_receiver.h |
diff --git a/webrtc/video/rtp_stream_receiver.h b/webrtc/video/rtp_stream_receiver.h |
index d5513fb5182335cb66c29318779cd3dd3dee0b56..bedf40b4fbe57497ddb405e0bde42f8cf0fabe79 100644 |
--- a/webrtc/video/rtp_stream_receiver.h |
+++ b/webrtc/video/rtp_stream_receiver.h |
@@ -24,7 +24,9 @@ |
#include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
+#include "webrtc/modules/video_coding/include/video_coding_defines.h" |
#include "webrtc/typedefs.h" |
+#include "webrtc/video_receive_stream.h" |
namespace webrtc { |
@@ -33,6 +35,7 @@ class PacedSender; |
class PacketRouter; |
class RemoteNtpTimeEstimator; |
class ReceiveStatistics; |
+class ReceiveStatisticsProxy; |
class RemoteBitrateEstimator; |
class RtcpRttStats; |
class RtpHeaderParser; |
@@ -44,19 +47,22 @@ namespace vcm { |
class VideoReceiver; |
} // namespace vcm |
-class RtpStreamReceiver : public RtpData, public RtpFeedback { |
+class RtpStreamReceiver : public RtpData, public RtpFeedback, |
+ public VCMFrameTypeCallback, |
+ public VCMPacketRequestCallback { |
public: |
RtpStreamReceiver(vcm::VideoReceiver* video_receiver, |
RemoteBitrateEstimator* remote_bitrate_estimator, |
Transport* transport, |
RtcpRttStats* rtt_stats, |
PacedSender* paced_sender, |
- PacketRouter* packet_router); |
+ PacketRouter* packet_router, |
+ const VideoReceiveStream::Config& config, |
+ ReceiveStatisticsProxy* receive_stats_proxy); |
~RtpStreamReceiver(); |
bool SetReceiveCodec(const VideoCodec& video_codec); |
- void SetNackStatus(bool enable, int max_nack_reordering_threshold); |
void SetRtxPayloadType(int payload_type, int associated_payload_type); |
// If set to true, the RTX payload type mapping supplied in |
// |SetRtxPayloadType| will be used when restoring RTX packets. Without it, |
@@ -75,8 +81,6 @@ class RtpStreamReceiver : public RtpData, public RtpFeedback { |
RtpRtcp* rtp_rtcp() const { return rtp_rtcp_.get(); } |
void EnableReceiveRtpHeaderExtension(const std::string& extension, int id); |
- void RegisterRtcpPacketTypeCounterObserver( |
- RtcpPacketTypeCounterObserver* observer); |
void StartReceive(); |
void StopReceive(); |
@@ -101,42 +105,15 @@ class RtpStreamReceiver : public RtpData, public RtpFeedback { |
void OnIncomingSSRCChanged(const uint32_t ssrc) override; |
void OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) override {} |
- ReceiveStatistics* GetReceiveStatistics() const; |
+ // Implements VCMFrameTypeCallback. |
+ int32_t RequestKeyFrame() override; |
+ int32_t SliceLossIndicationRequest(const uint64_t picture_id) override; |
+ |
+ // Implements VCMPacketRequestCallback. |
+ int32_t ResendPackets(const uint16_t* sequenceNumbers, |
+ uint16_t length) override; |
- template <class T> |
- class RegisterableCallback : public T { |
- public: |
- RegisterableCallback() : callback_(nullptr) {} |
- |
- void Set(T* callback) { |
- rtc::CritScope lock(&critsect_); |
- callback_ = callback; |
- } |
- |
- protected: |
- // Note: this should be implemented with a RW-lock to allow simultaneous |
- // calls into the callback. However that doesn't seem to be needed for the |
- // current type of callbacks covered by this class. |
- rtc::CriticalSection critsect_; |
- T* callback_ GUARDED_BY(critsect_); |
- |
- private: |
- RTC_DISALLOW_COPY_AND_ASSIGN(RegisterableCallback); |
- }; |
- |
- class RegisterableRtcpPacketTypeCounterObserver |
- : public RegisterableCallback<RtcpPacketTypeCounterObserver> { |
- public: |
- void RtcpPacketTypesCounterUpdated( |
- uint32_t ssrc, |
- const RtcpPacketTypeCounter& packet_counter) override { |
- rtc::CritScope lock(&critsect_); |
- if (callback_) |
- callback_->RtcpPacketTypesCounterUpdated(ssrc, packet_counter); |
- } |
- |
- private: |
- } rtcp_packet_type_counter_observer_; |
+ ReceiveStatistics* GetReceiveStatistics() const; |
private: |
bool ReceivePacket(const uint8_t* packet, |