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

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: Adjust for comments. 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 0659cbfd2d9e9423b2db8b3f2d50028e7ed8ccbd..103d6306fd857ee4d076bbf471c1bd41a8c69db5 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, 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_;
+ TimeInterval* lifetime_;
+};
+
AudioSendStream::AudioSendStream(
const webrtc::AudioSendStream::Config& config,
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
@@ -137,8 +161,14 @@ void AudioSendStream::ConfigureStream(
if (old_config.send_transport) {
channel_proxy->DeRegisterExternalTransport();
}
-
- channel_proxy->RegisterExternalTransport(new_config.send_transport);
+ if (new_config.send_transport) {
+ stream->timed_send_transport_adapter_.reset(new TimedTransport(
+ new_config.send_transport, &stream->active_lifetime_));
+ } else {
+ stream->timed_send_transport_adapter_.reset(nullptr);
+ }
+ channel_proxy->RegisterExternalTransport(
+ stream->timed_send_transport_adapter_.get());
}
// RFC 5285: Each distinct extension MUST have a unique ID. The value 0 is
@@ -391,6 +421,10 @@ RtpState AudioSendStream::GetRtpState() const {
return rtp_rtcp_module_->GetRtpState();
}
+const 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