Index: media/cast/net/rtcp/receiver_rtcp_event_subscriber.h |
diff --git a/media/cast/net/rtcp/receiver_rtcp_event_subscriber.h b/media/cast/net/rtcp/receiver_rtcp_event_subscriber.h |
index c08733ca94d2a49bc455e89b19021aca829bd33b..3cfe3cab5304ed263534c161a579d951e58382f0 100644 |
--- a/media/cast/net/rtcp/receiver_rtcp_event_subscriber.h |
+++ b/media/cast/net/rtcp/receiver_rtcp_event_subscriber.h |
@@ -5,7 +5,8 @@ |
#ifndef MEDIA_CAST_RTCP_RECEIVER_RTCP_EVENT_SUBSCRIBER_H_ |
#define MEDIA_CAST_RTCP_RECEIVER_RTCP_EVENT_SUBSCRIBER_H_ |
-#include <map> |
+#include <deque> |
+#include <vector> |
#include "base/threading/thread_checker.h" |
#include "media/cast/logging/logging_defines.h" |
@@ -15,6 +16,10 @@ |
namespace media { |
namespace cast { |
+static const size_t kNumResends = 3; |
+static const size_t kResendDelay = 10; |
+static const size_t kMaxEventsPerRTCP = 20; |
+ |
// A RawEventSubscriber implementation with the following properties: |
// - Only processes raw event types that are relevant for sending from cast |
// receiver to cast sender via RTCP. |
@@ -26,7 +31,8 @@ namespace cast { |
// timestamp) up to the size limit. |
class ReceiverRtcpEventSubscriber : public RawEventSubscriber { |
public: |
- typedef std::multimap<RtpTimestamp, RtcpEvent> RtcpEventMultiMap; |
+ typedef std::pair<RtpTimestamp, RtcpEvent> RtcpEventPair; |
+ typedef std::vector<std::pair<RtpTimestamp, RtcpEvent> > RtcpEvents; |
// |max_size_to_retain|: The object will keep up to |max_size_to_retain| |
// events |
@@ -43,9 +49,9 @@ class ReceiverRtcpEventSubscriber : public RawEventSubscriber { |
void OnReceiveFrameEvent(const FrameEvent& frame_event) override; |
void OnReceivePacketEvent(const PacketEvent& packet_event) override; |
- // Assigns events collected to |rtcp_events| and clears them from this |
- // object. |
- void GetRtcpEventsAndReset(RtcpEventMultiMap* rtcp_events); |
+ // Assigns events collected to |rtcp_events|. If there is space, some |
+ // older events will be added for redundancy as well. |
+ void GetRtcpEventsWithRedundancy(RtcpEvents* rtcp_events); |
private: |
// If |rtcp_events_.size()| exceeds |max_size_to_retain_|, remove an oldest |
@@ -65,7 +71,11 @@ class ReceiverRtcpEventSubscriber : public RawEventSubscriber { |
// to differentiate between video and audio frames, but since the |
// implementation doesn't mix audio and video frame events, RTP timestamp |
// only as key is fine. |
- RtcpEventMultiMap rtcp_events_; |
+ std::deque<RtcpEventPair> rtcp_events_; |
+ |
+ uint64 popped_events_; |
miu
2014/12/04 04:18:53
Needs a comment to describe what these three membe
hubbe
2014/12/05 23:57:20
Done.
|
+ uint64 send_ptrs_[kNumResends]; |
+ std::deque<uint64> event_levels_for_past_frames_; |
// Ensures methods are only called on the main thread. |
base::ThreadChecker thread_checker_; |