Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: media/cast/net/rtcp/rtcp_builder.h

Issue 765643006: Cast: Make receiver use cast_transport (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_CAST_NET_RTCP_RTCP_BUILDER_H_ 5 #ifndef MEDIA_CAST_NET_RTCP_RTCP_BUILDER_H_
6 #define MEDIA_CAST_NET_RTCP_RTCP_BUILDER_H_ 6 #define MEDIA_CAST_NET_RTCP_RTCP_BUILDER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <list> 9 #include <list>
10 #include <string> 10 #include <string>
11 11
12 #include "base/big_endian.h" 12 #include "base/big_endian.h"
13 #include "media/cast/cast_config.h" 13 #include "media/cast/cast_config.h"
14 #include "media/cast/cast_defines.h" 14 #include "media/cast/cast_defines.h"
15 #include "media/cast/net/cast_transport_defines.h" 15 #include "media/cast/net/cast_transport_defines.h"
16 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h" 16 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h"
17 #include "media/cast/net/rtcp/rtcp_defines.h" 17 #include "media/cast/net/rtcp/rtcp_defines.h"
18 18
19 namespace media { 19 namespace media {
20 namespace cast { 20 namespace cast {
21 21
22 // We limit the size of receiver logs to avoid queuing up packets.
23 const size_t kMaxReceiverLogBytes = 200;
24
25 // The determines how long to hold receiver log events, based on how
26 // many "receiver log message reports" ago the events were sent.
27 const size_t kReceiveLogMessageHistorySize = 20;
28
29 // This determines when to send events the second time.
30 const size_t kFirstRedundancyOffset = 10;
31 COMPILE_ASSERT(kFirstRedundancyOffset > 0 &&
32 kFirstRedundancyOffset <= kReceiveLogMessageHistorySize,
33 redundancy_offset_out_of_range);
34
35 // When to send events the third time.
36 const size_t kSecondRedundancyOffset = 20;
37 COMPILE_ASSERT(kSecondRedundancyOffset >
38 kFirstRedundancyOffset && kSecondRedundancyOffset <=
39 kReceiveLogMessageHistorySize,
40 redundancy_offset_out_of_range);
41
42
43 class RtcpBuilder { 22 class RtcpBuilder {
44 public: 23 public:
45 explicit RtcpBuilder(uint32 sending_ssrc); 24 explicit RtcpBuilder(uint32 sending_ssrc);
46 ~RtcpBuilder(); 25 ~RtcpBuilder();
47 26
48 PacketRef BuildRtcpFromReceiver( 27 PacketRef BuildRtcpFromReceiver(
49 const RtcpReportBlock* report_block, 28 const RtcpReportBlock* report_block,
50 const RtcpReceiverReferenceTimeReport* rrtr, 29 const RtcpReceiverReferenceTimeReport* rrtr,
51 const RtcpCastMessage* cast_message, 30 const RtcpCastMessage* cast_message,
52 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap* rtcp_events, 31 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events,
53 base::TimeDelta target_delay); 32 base::TimeDelta target_delay);
54 33
55 PacketRef BuildRtcpFromSender(const RtcpSenderInfo& sender_info); 34 PacketRef BuildRtcpFromSender(const RtcpSenderInfo& sender_info);
56 35
57 private: 36 private:
58 void AddRtcpHeader(RtcpPacketFields payload, int format_or_count); 37 void AddRtcpHeader(RtcpPacketFields payload, int format_or_count);
59 void PatchLengthField(); 38 void PatchLengthField();
60 void AddRR(const RtcpReportBlock* report_block); 39 void AddRR(const RtcpReportBlock* report_block);
61 void AddReportBlocks(const RtcpReportBlock& report_block); 40 void AddReportBlocks(const RtcpReportBlock& report_block);
62 void AddRrtr(const RtcpReceiverReferenceTimeReport* rrtr); 41 void AddRrtr(const RtcpReceiverReferenceTimeReport* rrtr);
63 void AddCast(const RtcpCastMessage* cast_message, 42 void AddCast(const RtcpCastMessage* cast_message,
64 base::TimeDelta target_delay); 43 base::TimeDelta target_delay);
65 void AddSR(const RtcpSenderInfo& sender_info); 44 void AddSR(const RtcpSenderInfo& sender_info);
66 void AddDlrrRb(const RtcpDlrrReportBlock& dlrr); 45 void AddDlrrRb(const RtcpDlrrReportBlock& dlrr);
67 void AddReceiverLog( 46 void AddReceiverLog(
68 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events); 47 const ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events);
69 48
70 bool GetRtcpReceiverLogMessage( 49 bool GetRtcpReceiverLogMessage(
71 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events, 50 const ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events,
72 RtcpReceiverLogMessage* receiver_log_message, 51 RtcpReceiverLogMessage* receiver_log_message,
73 size_t* total_number_of_messages_to_send); 52 size_t* total_number_of_messages_to_send);
74 53
75 void Start(); 54 void Start();
76 PacketRef Finish(); 55 PacketRef Finish();
77 56
78 base::BigEndianWriter writer_; 57 base::BigEndianWriter writer_;
79 const uint32 ssrc_; 58 const uint32 ssrc_;
80 char* ptr_of_length_; 59 char* ptr_of_length_;
81 PacketRef packet_; 60 PacketRef packet_;
82 std::deque<RtcpReceiverLogMessage> rtcp_events_history_;
miu 2014/12/04 04:18:54 Nice clean-up of the RtcpEventsMultiMap foo, BTW!
hubbe 2014/12/05 23:57:20 Acknowledged.
83 61
84 DISALLOW_COPY_AND_ASSIGN(RtcpBuilder); 62 DISALLOW_COPY_AND_ASSIGN(RtcpBuilder);
85 }; 63 };
86 64
87 } // namespace cast 65 } // namespace cast
88 } // namespace media 66 } // namespace media
89 67
90 #endif // MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_ 68 #endif // MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698