Chromium Code Reviews| 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_; |