| Index: webrtc/modules/rtp_rtcp/source/rtp_sender.h
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.h b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
|
| index a672a06398a5772b9ef64914914a5946e8410536..49d98729ee27b356c3c644e4bc1d6f6a3ef813a5 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.h
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
|
| @@ -16,6 +16,7 @@
|
| #include <utility>
|
| #include <vector>
|
|
|
| +#include "webrtc/base/criticalsection.h"
|
| #include "webrtc/base/random.h"
|
| #include "webrtc/base/thread_annotations.h"
|
| #include "webrtc/common_types.h"
|
| @@ -30,8 +31,6 @@
|
|
|
| namespace webrtc {
|
|
|
| -class BitrateAggregator;
|
| -class CriticalSectionWrapper;
|
| class RTPSenderAudio;
|
| class RTPSenderVideo;
|
| class RtcEventLog;
|
| @@ -196,7 +195,7 @@ class RTPSender : public RTPSenderInterface {
|
| const RTPHeader& rtp_header,
|
| size_t extension_length_bytes,
|
| size_t* extension_offset) const
|
| - EXCLUSIVE_LOCKS_REQUIRED(send_critsect_.get());
|
| + EXCLUSIVE_LOCKS_REQUIRED(send_critsect_);
|
|
|
| bool UpdateAudioLevel(uint8_t* rtp_packet,
|
| size_t rtp_packet_length,
|
| @@ -386,22 +385,54 @@ class RTPSender : public RTPSenderInterface {
|
| bool is_retransmit);
|
| bool IsFecPacket(const uint8_t* buffer, const RTPHeader& header) const;
|
|
|
| - Clock* clock_;
|
| - int64_t clock_delta_ms_;
|
| + class BitrateAggregator {
|
| + public:
|
| + explicit BitrateAggregator(BitrateStatisticsObserver* bitrate_callback);
|
| +
|
| + void OnStatsUpdated() const;
|
| +
|
| + Bitrate::Observer* total_bitrate_observer();
|
| + Bitrate::Observer* retransmit_bitrate_observer();
|
| + void set_ssrc(uint32_t ssrc);
|
| +
|
| + private:
|
| + // We assume that these observers are called on the same thread, which is
|
| + // true for RtpSender as they are called on the Process thread.
|
| + class BitrateObserver : public Bitrate::Observer {
|
| + public:
|
| + explicit BitrateObserver(const BitrateAggregator& aggregator);
|
| +
|
| + // Implements Bitrate::Observer.
|
| + void BitrateUpdated(const BitrateStatistics& stats) override;
|
| + const BitrateStatistics& statistics() const;
|
| +
|
| + private:
|
| + BitrateStatistics statistics_;
|
| + const BitrateAggregator& aggregator_;
|
| + };
|
| +
|
| + BitrateStatisticsObserver* const callback_;
|
| + BitrateObserver total_bitrate_observer_;
|
| + BitrateObserver retransmit_bitrate_observer_;
|
| + uint32_t ssrc_;
|
| + };
|
| +
|
| + Clock* const clock_;
|
| + const int64_t clock_delta_ms_;
|
| Random random_ GUARDED_BY(send_critsect_);
|
|
|
| - rtc::scoped_ptr<BitrateAggregator> bitrates_;
|
| + BitrateAggregator bitrates_;
|
| Bitrate total_bitrate_sent_;
|
|
|
| const bool audio_configured_;
|
| - rtc::scoped_ptr<RTPSenderAudio> audio_;
|
| - rtc::scoped_ptr<RTPSenderVideo> video_;
|
| + const rtc::scoped_ptr<RTPSenderAudio> audio_;
|
| + const rtc::scoped_ptr<RTPSenderVideo> video_;
|
|
|
| RtpPacketSender* const paced_sender_;
|
| TransportSequenceNumberAllocator* const transport_sequence_number_allocator_;
|
| TransportFeedbackObserver* const transport_feedback_observer_;
|
| int64_t last_capture_time_ms_sent_;
|
| - rtc::scoped_ptr<CriticalSectionWrapper> send_critsect_;
|
| + rtc::CriticalSection send_critsect_;
|
|
|
| Transport *transport_;
|
| bool sending_media_ GUARDED_BY(send_critsect_);
|
| @@ -440,7 +471,7 @@ class RTPSender : public RTPSenderInterface {
|
| // RTP variables
|
| bool start_timestamp_forced_ GUARDED_BY(send_critsect_);
|
| uint32_t start_timestamp_ GUARDED_BY(send_critsect_);
|
| - SSRCDatabase& ssrc_db_ GUARDED_BY(send_critsect_);
|
| + SSRCDatabase* const ssrc_db_;
|
| uint32_t remote_ssrc_ GUARDED_BY(send_critsect_);
|
| bool sequence_number_forced_ GUARDED_BY(send_critsect_);
|
| uint16_t sequence_number_ GUARDED_BY(send_critsect_);
|
|
|