| 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());
|
|
|