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

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

Issue 2495553002: Add overhead per packet observer to the rtp_sender. (Closed)
Patch Set: Rebased. Created 4 years, 1 month 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 /* 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 18 matching lines...) Expand all
29 #include "webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h" 29 #include "webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h"
30 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" 30 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
31 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_history.h" 31 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_history.h"
32 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_config.h" 32 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_config.h"
33 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" 33 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
34 #include "webrtc/modules/rtp_rtcp/source/ssrc_database.h" 34 #include "webrtc/modules/rtp_rtcp/source/ssrc_database.h"
35 #include "webrtc/transport.h" 35 #include "webrtc/transport.h"
36 36
37 namespace webrtc { 37 namespace webrtc {
38 38
39 class OverheadObserver;
39 class RateLimiter; 40 class RateLimiter;
40 class RtcEventLog; 41 class RtcEventLog;
41 class RtpPacketToSend; 42 class RtpPacketToSend;
42 class RTPSenderAudio; 43 class RTPSenderAudio;
43 class RTPSenderVideo; 44 class RTPSenderVideo;
44 45
45 class RTPSender { 46 class RTPSender {
46 public: 47 public:
47 RTPSender(bool audio, 48 RTPSender(bool audio,
48 Clock* clock, 49 Clock* clock,
49 Transport* transport, 50 Transport* transport,
50 RtpPacketSender* paced_sender, 51 RtpPacketSender* paced_sender,
51 // TODO(brandtr): Remove |flexfec_sender| when that is hooked up 52 // TODO(brandtr): Remove |flexfec_sender| when that is hooked up
52 // to PacedSender instead. 53 // to PacedSender instead.
53 FlexfecSender* flexfec_sender, 54 FlexfecSender* flexfec_sender,
54 TransportSequenceNumberAllocator* sequence_number_allocator, 55 TransportSequenceNumberAllocator* sequence_number_allocator,
55 TransportFeedbackObserver* transport_feedback_callback, 56 TransportFeedbackObserver* transport_feedback_callback,
56 BitrateStatisticsObserver* bitrate_callback, 57 BitrateStatisticsObserver* bitrate_callback,
57 FrameCountObserver* frame_count_observer, 58 FrameCountObserver* frame_count_observer,
58 SendSideDelayObserver* send_side_delay_observer, 59 SendSideDelayObserver* send_side_delay_observer,
59 RtcEventLog* event_log, 60 RtcEventLog* event_log,
60 SendPacketObserver* send_packet_observer, 61 SendPacketObserver* send_packet_observer,
61 RateLimiter* nack_rate_limiter); 62 RateLimiter* nack_rate_limiter,
63 OverheadObserver* overhead_observer);
62 64
63 ~RTPSender(); 65 ~RTPSender();
64 66
65 void ProcessBitrate(); 67 void ProcessBitrate();
66 68
67 uint16_t ActualSendBitrateKbit() const; 69 uint16_t ActualSendBitrateKbit() const;
68 70
69 uint32_t VideoBitrateSent() const; 71 uint32_t VideoBitrateSent() const;
70 uint32_t FecOverheadRate() const; 72 uint32_t FecOverheadRate() const;
71 uint32_t NackOverheadRate() const; 73 uint32_t NackOverheadRate() const;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 void RegisterRtpStatisticsCallback(StreamDataCountersCallback* callback); 209 void RegisterRtpStatisticsCallback(StreamDataCountersCallback* callback);
208 StreamDataCountersCallback* GetRtpStatisticsCallback() const; 210 StreamDataCountersCallback* GetRtpStatisticsCallback() const;
209 211
210 uint32_t BitrateSent() const; 212 uint32_t BitrateSent() const;
211 213
212 void SetRtpState(const RtpState& rtp_state); 214 void SetRtpState(const RtpState& rtp_state);
213 RtpState GetRtpState() const; 215 RtpState GetRtpState() const;
214 void SetRtxRtpState(const RtpState& rtp_state); 216 void SetRtxRtpState(const RtpState& rtp_state);
215 RtpState GetRtxRtpState() const; 217 RtpState GetRtxRtpState() const;
216 218
219 void SetTransportOverhead(int transport_overhead);
220
217 protected: 221 protected:
218 int32_t CheckPayloadType(int8_t payload_type, RtpVideoCodecTypes* video_type); 222 int32_t CheckPayloadType(int8_t payload_type, RtpVideoCodecTypes* video_type);
219 223
220 private: 224 private:
221 // Maps capture time in milliseconds to send-side delay in milliseconds. 225 // Maps capture time in milliseconds to send-side delay in milliseconds.
222 // Send-side delay is the difference between transmission time and capture 226 // Send-side delay is the difference between transmission time and capture
223 // time. 227 // time.
224 typedef std::map<int64_t, int> SendDelayMap; 228 typedef std::map<int64_t, int> SendDelayMap;
225 229
226 size_t SendPadData(size_t bytes, int probe_cluster_id); 230 size_t SendPadData(size_t bytes, int probe_cluster_id);
(...skipping 25 matching lines...) Expand all
252 uint32_t ssrc); 256 uint32_t ssrc);
253 257
254 bool UpdateTransportSequenceNumber(RtpPacketToSend* packet, 258 bool UpdateTransportSequenceNumber(RtpPacketToSend* packet,
255 int* packet_id) const; 259 int* packet_id) const;
256 260
257 void UpdateRtpStats(const RtpPacketToSend& packet, 261 void UpdateRtpStats(const RtpPacketToSend& packet,
258 bool is_rtx, 262 bool is_rtx,
259 bool is_retransmit); 263 bool is_retransmit);
260 bool IsFecPacket(const RtpPacketToSend& packet) const; 264 bool IsFecPacket(const RtpPacketToSend& packet) const;
261 265
266 void AddPacketToTransportFeedback(uint16_t packet_id,
267 const RtpPacketToSend& packet,
268 int probe_cluster_id);
269
270 void UpdateRtpOverhead(const RtpPacketToSend& packet);
271
262 Clock* const clock_; 272 Clock* const clock_;
263 const int64_t clock_delta_ms_; 273 const int64_t clock_delta_ms_;
264 Random random_ GUARDED_BY(send_critsect_); 274 Random random_ GUARDED_BY(send_critsect_);
265 275
266 const bool audio_configured_; 276 const bool audio_configured_;
267 const std::unique_ptr<RTPSenderAudio> audio_; 277 const std::unique_ptr<RTPSenderAudio> audio_;
268 const std::unique_ptr<RTPSenderVideo> video_; 278 const std::unique_ptr<RTPSenderVideo> video_;
269 279
270 RtpPacketSender* const paced_sender_; 280 RtpPacketSender* const paced_sender_;
271 TransportSequenceNumberAllocator* const transport_sequence_number_allocator_; 281 TransportSequenceNumberAllocator* const transport_sequence_number_allocator_;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 uint32_t last_rtp_timestamp_ GUARDED_BY(send_critsect_); 330 uint32_t last_rtp_timestamp_ GUARDED_BY(send_critsect_);
321 int64_t capture_time_ms_ GUARDED_BY(send_critsect_); 331 int64_t capture_time_ms_ GUARDED_BY(send_critsect_);
322 int64_t last_timestamp_time_ms_ GUARDED_BY(send_critsect_); 332 int64_t last_timestamp_time_ms_ GUARDED_BY(send_critsect_);
323 bool media_has_been_sent_ GUARDED_BY(send_critsect_); 333 bool media_has_been_sent_ GUARDED_BY(send_critsect_);
324 bool last_packet_marker_bit_ GUARDED_BY(send_critsect_); 334 bool last_packet_marker_bit_ GUARDED_BY(send_critsect_);
325 std::vector<uint32_t> csrcs_ GUARDED_BY(send_critsect_); 335 std::vector<uint32_t> csrcs_ GUARDED_BY(send_critsect_);
326 int rtx_ GUARDED_BY(send_critsect_); 336 int rtx_ GUARDED_BY(send_critsect_);
327 uint32_t ssrc_rtx_ GUARDED_BY(send_critsect_); 337 uint32_t ssrc_rtx_ GUARDED_BY(send_critsect_);
328 // Mapping rtx_payload_type_map_[associated] = rtx. 338 // Mapping rtx_payload_type_map_[associated] = rtx.
329 std::map<int8_t, int8_t> rtx_payload_type_map_ GUARDED_BY(send_critsect_); 339 std::map<int8_t, int8_t> rtx_payload_type_map_ GUARDED_BY(send_critsect_);
340 size_t transport_overhead_bytes_per_packet_ GUARDED_BY(send_critsect_);
341 size_t rtp_overhead_bytes_per_packet_ GUARDED_BY(send_critsect_);
330 342
331 RateLimiter* const retransmission_rate_limiter_; 343 RateLimiter* const retransmission_rate_limiter_;
344 OverheadObserver* overhead_observer_;
332 345
333 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTPSender); 346 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTPSender);
334 }; 347 };
335 348
336 } // namespace webrtc 349 } // namespace webrtc
337 350
338 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_SENDER_H_ 351 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_SENDER_H_
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698