Chromium Code Reviews| 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()); |