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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_sender.h

Issue 2218153002: Remove RTPSenderInterface (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 4 months 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
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtp_sender_video.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 22 matching lines...) Expand all
33 #include "webrtc/transport.h" 33 #include "webrtc/transport.h"
34 34
35 namespace webrtc { 35 namespace webrtc {
36 36
37 class RateLimiter; 37 class RateLimiter;
38 class RtcEventLog; 38 class RtcEventLog;
39 class RtpPacketToSend; 39 class RtpPacketToSend;
40 class RTPSenderAudio; 40 class RTPSenderAudio;
41 class RTPSenderVideo; 41 class RTPSenderVideo;
42 42
43 class RTPSenderInterface { 43 class RTPSender {
44 public:
45 RTPSenderInterface() {}
46 virtual ~RTPSenderInterface() {}
47
48 virtual uint32_t SSRC() const = 0;
49 virtual uint32_t Timestamp() const = 0;
50
51 // Deprecated version of BuildRtpHeader(). |timestamp_provided| and
52 // |inc_sequence_number| are ignored.
53 // TODO(sergeyu): Remove this method.
54 virtual int32_t BuildRTPheader(uint8_t* data_buffer,
55 int8_t payload_type,
56 bool marker_bit,
57 uint32_t capture_timestamp,
58 int64_t capture_time_ms,
59 bool timestamp_provided = true,
60 bool inc_sequence_number = true) = 0;
61
62 virtual int32_t BuildRtpHeader(uint8_t* data_buffer,
63 int8_t payload_type,
64 bool marker_bit,
65 uint32_t capture_timestamp,
66 int64_t capture_time_ms) = 0;
67
68 // This returns the expected header length taking into consideration
69 // the optional RTP header extensions that may not be currently active.
70 virtual size_t RtpHeaderLength() const = 0;
71 // Returns the next sequence number to use for a packet and allocates
72 // 'packets_to_send' number of sequence numbers. It's important all allocated
73 // sequence numbers are used in sequence to avoid perceived packet loss.
74 virtual uint16_t AllocateSequenceNumber(uint16_t packets_to_send) = 0;
75 virtual uint16_t SequenceNumber() const = 0;
76 virtual size_t MaxPayloadLength() const = 0;
77 virtual size_t MaxDataPayloadLength() const = 0;
78 virtual uint16_t ActualSendBitrateKbit() const = 0;
79
80 virtual bool SendToNetwork(uint8_t* data_buffer,
81 size_t payload_length,
82 size_t rtp_header_length,
83 int64_t capture_time_ms,
84 StorageType storage,
85 RtpPacketSender::Priority priority) = 0;
86
87 virtual bool UpdateVideoRotation(uint8_t* rtp_packet,
88 size_t rtp_packet_length,
89 const RTPHeader& rtp_header,
90 VideoRotation rotation) const = 0;
91 virtual bool IsRtpHeaderExtensionRegistered(RTPExtensionType type) = 0;
92 virtual bool ActivateCVORtpHeaderExtension() = 0;
93 };
94
95 class RTPSender : public RTPSenderInterface {
96 public: 44 public:
97 RTPSender(bool audio, 45 RTPSender(bool audio,
98 Clock* clock, 46 Clock* clock,
99 Transport* transport, 47 Transport* transport,
100 RtpPacketSender* paced_sender, 48 RtpPacketSender* paced_sender,
101 TransportSequenceNumberAllocator* sequence_number_allocator, 49 TransportSequenceNumberAllocator* sequence_number_allocator,
102 TransportFeedbackObserver* transport_feedback_callback, 50 TransportFeedbackObserver* transport_feedback_callback,
103 BitrateStatisticsObserver* bitrate_callback, 51 BitrateStatisticsObserver* bitrate_callback,
104 FrameCountObserver* frame_count_observer, 52 FrameCountObserver* frame_count_observer,
105 SendSideDelayObserver* send_side_delay_observer, 53 SendSideDelayObserver* send_side_delay_observer,
106 RtcEventLog* event_log, 54 RtcEventLog* event_log,
107 SendPacketObserver* send_packet_observer, 55 SendPacketObserver* send_packet_observer,
108 RateLimiter* nack_rate_limiter); 56 RateLimiter* nack_rate_limiter);
109 57
110 virtual ~RTPSender(); 58 ~RTPSender();
111 59
112 void ProcessBitrate(); 60 void ProcessBitrate();
113 61
114 uint16_t ActualSendBitrateKbit() const override; 62 uint16_t ActualSendBitrateKbit() const;
115 63
116 uint32_t VideoBitrateSent() const; 64 uint32_t VideoBitrateSent() const;
117 uint32_t FecOverheadRate() const; 65 uint32_t FecOverheadRate() const;
118 uint32_t NackOverheadRate() const; 66 uint32_t NackOverheadRate() const;
119 67
120 // Includes size of RTP and FEC headers. 68 // Includes size of RTP and FEC headers.
121 size_t MaxDataPayloadLength() const override; 69 size_t MaxDataPayloadLength() const;
122 70
123 int32_t RegisterPayload(const char* payload_name, 71 int32_t RegisterPayload(const char* payload_name,
124 const int8_t payload_type, 72 const int8_t payload_type,
125 const uint32_t frequency, 73 const uint32_t frequency,
126 const size_t channels, 74 const size_t channels,
127 const uint32_t rate); 75 const uint32_t rate);
128 76
129 int32_t DeRegisterSendPayload(const int8_t payload_type); 77 int32_t DeRegisterSendPayload(const int8_t payload_type);
130 78
131 void SetSendPayloadType(int8_t payload_type); 79 void SetSendPayloadType(int8_t payload_type);
132 80
133 int8_t SendPayloadType() const; 81 int8_t SendPayloadType() const;
134 82
135 int SendPayloadFrequency() const; 83 int SendPayloadFrequency() const;
136 84
137 void SetSendingStatus(bool enabled); 85 void SetSendingStatus(bool enabled);
138 86
139 void SetSendingMediaStatus(bool enabled); 87 void SetSendingMediaStatus(bool enabled);
140 bool SendingMedia() const; 88 bool SendingMedia() const;
141 89
142 void GetDataCounters(StreamDataCounters* rtp_stats, 90 void GetDataCounters(StreamDataCounters* rtp_stats,
143 StreamDataCounters* rtx_stats) const; 91 StreamDataCounters* rtx_stats) const;
144 92
145 uint32_t StartTimestamp() const; 93 uint32_t StartTimestamp() const;
146 void SetStartTimestamp(uint32_t timestamp, bool force); 94 void SetStartTimestamp(uint32_t timestamp, bool force);
147 95
148 uint32_t GenerateNewSSRC(); 96 uint32_t GenerateNewSSRC();
149 void SetSSRC(uint32_t ssrc); 97 void SetSSRC(uint32_t ssrc);
150 98
151 uint16_t SequenceNumber() const override; 99 uint16_t SequenceNumber() const;
152 void SetSequenceNumber(uint16_t seq); 100 void SetSequenceNumber(uint16_t seq);
153 101
154 void SetCsrcs(const std::vector<uint32_t>& csrcs); 102 void SetCsrcs(const std::vector<uint32_t>& csrcs);
155 103
156 void SetMaxPayloadLength(size_t max_payload_length); 104 void SetMaxPayloadLength(size_t max_payload_length);
157 105
158 bool SendOutgoingData(FrameType frame_type, 106 bool SendOutgoingData(FrameType frame_type,
159 int8_t payload_type, 107 int8_t payload_type,
160 uint32_t timestamp, 108 uint32_t timestamp,
161 int64_t capture_time_ms, 109 int64_t capture_time_ms,
162 const uint8_t* payload_data, 110 const uint8_t* payload_data,
163 size_t payload_size, 111 size_t payload_size,
164 const RTPFragmentationHeader* fragmentation, 112 const RTPFragmentationHeader* fragmentation,
165 const RTPVideoHeader* rtp_header, 113 const RTPVideoHeader* rtp_header,
166 uint32_t* transport_frame_id_out); 114 uint32_t* transport_frame_id_out);
167 115
168 // RTP header extension 116 // RTP header extension
169 int32_t SetTransmissionTimeOffset(int32_t transmission_time_offset); 117 int32_t SetTransmissionTimeOffset(int32_t transmission_time_offset);
170 int32_t SetAbsoluteSendTime(uint32_t absolute_send_time); 118 int32_t SetAbsoluteSendTime(uint32_t absolute_send_time);
171 void SetVideoRotation(VideoRotation rotation); 119 void SetVideoRotation(VideoRotation rotation);
172 int32_t SetTransportSequenceNumber(uint16_t sequence_number); 120 int32_t SetTransportSequenceNumber(uint16_t sequence_number);
173 121
174 int32_t RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id); 122 int32_t RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id);
175 bool IsRtpHeaderExtensionRegistered(RTPExtensionType type) override; 123 bool IsRtpHeaderExtensionRegistered(RTPExtensionType type);
176 int32_t DeregisterRtpHeaderExtension(RTPExtensionType type); 124 int32_t DeregisterRtpHeaderExtension(RTPExtensionType type);
177 125
178 size_t RtpHeaderExtensionLength() const; 126 size_t RtpHeaderExtensionLength() const;
179 127
180 uint16_t BuildRtpHeaderExtension(uint8_t* data_buffer, bool marker_bit) const 128 uint16_t BuildRtpHeaderExtension(uint8_t* data_buffer, bool marker_bit) const
181 EXCLUSIVE_LOCKS_REQUIRED(send_critsect_); 129 EXCLUSIVE_LOCKS_REQUIRED(send_critsect_);
182 130
183 uint8_t BuildTransmissionTimeOffsetExtension(uint8_t* data_buffer) const 131 uint8_t BuildTransmissionTimeOffsetExtension(uint8_t* data_buffer) const
184 EXCLUSIVE_LOCKS_REQUIRED(send_critsect_); 132 EXCLUSIVE_LOCKS_REQUIRED(send_critsect_);
185 uint8_t BuildAudioLevelExtension(uint8_t* data_buffer) const 133 uint8_t BuildAudioLevelExtension(uint8_t* data_buffer) const
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 165
218 bool UpdateAudioLevel(uint8_t* rtp_packet, 166 bool UpdateAudioLevel(uint8_t* rtp_packet,
219 size_t rtp_packet_length, 167 size_t rtp_packet_length,
220 const RTPHeader& rtp_header, 168 const RTPHeader& rtp_header,
221 bool is_voiced, 169 bool is_voiced,
222 uint8_t dBov) const; 170 uint8_t dBov) const;
223 171
224 bool UpdateVideoRotation(uint8_t* rtp_packet, 172 bool UpdateVideoRotation(uint8_t* rtp_packet,
225 size_t rtp_packet_length, 173 size_t rtp_packet_length,
226 const RTPHeader& rtp_header, 174 const RTPHeader& rtp_header,
227 VideoRotation rotation) const override; 175 VideoRotation rotation) const;
228 176
229 bool TimeToSendPacket(uint16_t sequence_number, 177 bool TimeToSendPacket(uint16_t sequence_number,
230 int64_t capture_time_ms, 178 int64_t capture_time_ms,
231 bool retransmission, 179 bool retransmission,
232 int probe_cluster_id); 180 int probe_cluster_id);
233 size_t TimeToSendPadding(size_t bytes, int probe_cluster_id); 181 size_t TimeToSendPadding(size_t bytes, int probe_cluster_id);
234 182
235 // NACK. 183 // NACK.
236 int SelectiveRetransmissions() const; 184 int SelectiveRetransmissions() const;
237 int SetSelectiveRetransmissions(uint8_t settings); 185 int SetSelectiveRetransmissions(uint8_t settings);
(...skipping 18 matching lines...) Expand all
256 204
257 void SetRtxPayloadType(int payload_type, int associated_payload_type); 205 void SetRtxPayloadType(int payload_type, int associated_payload_type);
258 206
259 // Functions wrapping RTPSenderInterface. 207 // Functions wrapping RTPSenderInterface.
260 int32_t BuildRTPheader(uint8_t* data_buffer, 208 int32_t BuildRTPheader(uint8_t* data_buffer,
261 int8_t payload_type, 209 int8_t payload_type,
262 bool marker_bit, 210 bool marker_bit,
263 uint32_t capture_timestamp, 211 uint32_t capture_timestamp,
264 int64_t capture_time_ms, 212 int64_t capture_time_ms,
265 bool timestamp_provided = true, 213 bool timestamp_provided = true,
266 bool inc_sequence_number = true) override; 214 bool inc_sequence_number = true);
267 int32_t BuildRtpHeader(uint8_t* data_buffer, 215 int32_t BuildRtpHeader(uint8_t* data_buffer,
268 int8_t payload_type, 216 int8_t payload_type,
269 bool marker_bit, 217 bool marker_bit,
270 uint32_t capture_timestamp, 218 uint32_t capture_timestamp,
271 int64_t capture_time_ms) override; 219 int64_t capture_time_ms);
272 220
273 size_t RtpHeaderLength() const override; 221 size_t RtpHeaderLength() const;
274 uint16_t AllocateSequenceNumber(uint16_t packets_to_send) override; 222 uint16_t AllocateSequenceNumber(uint16_t packets_to_send);
275 size_t MaxPayloadLength() const override; 223 size_t MaxPayloadLength() const;
276 224
277 // Current timestamp. 225 // Current timestamp.
278 uint32_t Timestamp() const override; 226 uint32_t Timestamp() const;
279 uint32_t SSRC() const override; 227 uint32_t SSRC() const;
280 228
281 // Deprecated. Create RtpPacketToSend instead and use next function. 229 // Deprecated. Create RtpPacketToSend instead and use next function.
282 bool SendToNetwork(uint8_t* data_buffer, 230 bool SendToNetwork(uint8_t* data_buffer,
283 size_t payload_length, 231 size_t payload_length,
284 size_t rtp_header_length, 232 size_t rtp_header_length,
285 int64_t capture_time_ms, 233 int64_t capture_time_ms,
286 StorageType storage, 234 StorageType storage,
287 RtpPacketSender::Priority priority) override; 235 RtpPacketSender::Priority priority);
288 bool SendToNetwork(std::unique_ptr<RtpPacketToSend> packet, 236 bool SendToNetwork(std::unique_ptr<RtpPacketToSend> packet,
289 StorageType storage, 237 StorageType storage,
290 RtpPacketSender::Priority priority); 238 RtpPacketSender::Priority priority);
291 239
292 // Audio. 240 // Audio.
293 241
294 // Send a DTMF tone using RFC 2833 (4733). 242 // Send a DTMF tone using RFC 2833 (4733).
295 int32_t SendTelephoneEvent(uint8_t key, uint16_t time_ms, uint8_t level); 243 int32_t SendTelephoneEvent(uint8_t key, uint16_t time_ms, uint8_t level);
296 244
297 // Set audio packet size, used to determine when it's time to send a DTMF 245 // Set audio packet size, used to determine when it's time to send a DTMF
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // Called on update of RTP statistics. 285 // Called on update of RTP statistics.
338 void RegisterRtpStatisticsCallback(StreamDataCountersCallback* callback); 286 void RegisterRtpStatisticsCallback(StreamDataCountersCallback* callback);
339 StreamDataCountersCallback* GetRtpStatisticsCallback() const; 287 StreamDataCountersCallback* GetRtpStatisticsCallback() const;
340 288
341 uint32_t BitrateSent() const; 289 uint32_t BitrateSent() const;
342 290
343 void SetRtpState(const RtpState& rtp_state); 291 void SetRtpState(const RtpState& rtp_state);
344 RtpState GetRtpState() const; 292 RtpState GetRtpState() const;
345 void SetRtxRtpState(const RtpState& rtp_state); 293 void SetRtxRtpState(const RtpState& rtp_state);
346 RtpState GetRtxRtpState() const; 294 RtpState GetRtxRtpState() const;
347 bool ActivateCVORtpHeaderExtension() override; 295 bool ActivateCVORtpHeaderExtension();
348 296
349 protected: 297 protected:
350 int32_t CheckPayloadType(int8_t payload_type, RtpVideoCodecTypes* video_type); 298 int32_t CheckPayloadType(int8_t payload_type, RtpVideoCodecTypes* video_type);
351 299
352 private: 300 private:
353 // Maps capture time in milliseconds to send-side delay in milliseconds. 301 // Maps capture time in milliseconds to send-side delay in milliseconds.
354 // Send-side delay is the difference between transmission time and capture 302 // Send-side delay is the difference between transmission time and capture
355 // time. 303 // time.
356 typedef std::map<int64_t, int> SendDelayMap; 304 typedef std::map<int64_t, int> SendDelayMap;
357 305
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 std::map<int8_t, int8_t> rtx_payload_type_map_ GUARDED_BY(send_critsect_); 429 std::map<int8_t, int8_t> rtx_payload_type_map_ GUARDED_BY(send_critsect_);
482 430
483 RateLimiter* const retransmission_rate_limiter_; 431 RateLimiter* const retransmission_rate_limiter_;
484 432
485 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTPSender); 433 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTPSender);
486 }; 434 };
487 435
488 } // namespace webrtc 436 } // namespace webrtc
489 437
490 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_SENDER_H_ 438 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_SENDER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtp_sender_video.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698