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

Unified Diff: webrtc/audio/audio_send_stream.cc

Issue 2979833002: Add a histogram metric tracking for how long audio RTP packets are sent (Closed)
Patch Set: Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/audio/audio_send_stream.cc
diff --git a/webrtc/audio/audio_send_stream.cc b/webrtc/audio/audio_send_stream.cc
index 1861cc004fb1824e81416e77abc4d7a1c664e966..18036100b95f3165fe46e5216e39df88e0bbbb09 100644
--- a/webrtc/audio/audio_send_stream.cc
+++ b/webrtc/audio/audio_send_stream.cc
@@ -51,6 +51,30 @@ void CallEncoder(const std::unique_ptr<voe::ChannelProxy>& channel_proxy,
}
} // namespace
+// TODO(saza): Move this declaration further down when we can use
+// std::make_unique.
+class AudioSendStream::TimedTransport : public Transport {
+ public:
+ TimedTransport(Transport* transport, rtc::TimeInterval* time_interval)
+ : transport_(transport), lifetime_(time_interval) {}
+ bool SendRtp(const uint8_t* packet,
+ size_t length,
+ const PacketOptions& options) {
+ if (lifetime_) {
+ lifetime_->Extend();
+ }
+ return transport_->SendRtp(packet, length, options);
+ }
+ bool SendRtcp(const uint8_t* packet, size_t length) {
+ return transport_->SendRtcp(packet, length);
+ }
+ ~TimedTransport() {}
+
+ private:
+ Transport* transport_;
+ rtc::TimeInterval* lifetime_;
+};
+
AudioSendStream::AudioSendStream(
const webrtc::AudioSendStream::Config& config,
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
@@ -138,7 +162,11 @@ void AudioSendStream::ConfigureStream(
channel_proxy->DeRegisterExternalTransport();
}
- channel_proxy->RegisterExternalTransport(new_config.send_transport);
+ stream->timed_send_transport_adapter_ =
ossu 2017/07/14 11:13:15 I think you can do .reset(new TimedTransport(...))
saza WebRTC 2017/07/17 14:27:29 Done.
+ std::unique_ptr<TimedTransport>(new TimedTransport(
+ new_config.send_transport, &stream->active_lifetime_));
+ channel_proxy->RegisterExternalTransport(
+ stream->timed_send_transport_adapter_.get());
}
// RFC 5285: Each distinct extension MUST have a unique ID. The value 0 is
@@ -388,6 +416,10 @@ RtpState AudioSendStream::GetRtpState() const {
return rtp_rtcp_module_->GetRtpState();
}
+const rtc::TimeInterval* AudioSendStream::GetActiveLifetime() const {
+ return &active_lifetime_;
+}
+
VoiceEngine* AudioSendStream::voice_engine() const {
internal::AudioState* audio_state =
static_cast<internal::AudioState*>(audio_state_.get());

Powered by Google App Engine
This is Rietveld 408576698