Chromium Code Reviews| Index: webrtc/video_engine/vie_channel.cc |
| diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc |
| index d0465b209de0b0d23151a02629dbe68c4e6e9cb7..c7f8d61658a7a99f2f6b4523d0f759658ec66188 100644 |
| --- a/webrtc/video_engine/vie_channel.cc |
| +++ b/webrtc/video_engine/vie_channel.cc |
| @@ -132,6 +132,7 @@ ViEChannel::ViEChannel(int32_t channel_id, |
| &rtcp_packet_type_counter_observer_, |
| remote_bitrate_estimator, |
| paced_sender_, |
| + sender_ ? packet_router_ : nullptr, |
| &send_bitrate_observer_, |
| &send_frame_count_observer_, |
| &send_side_delay_observer_, |
| @@ -201,8 +202,11 @@ ViEChannel::~ViEChannel() { |
| module_process_thread_->DeRegisterModule(vcm_); |
| module_process_thread_->DeRegisterModule(&vie_sync_); |
| send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); |
| + if (sender_ && packet_router_) { |
| + for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) |
| + packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); |
| + } |
| for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { |
| - packet_router_->RemoveRtpModule(rtp_rtcp); |
| module_process_thread_->DeRegisterModule(rtp_rtcp); |
| delete rtp_rtcp; |
| } |
| @@ -359,8 +363,6 @@ int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec, |
| bool router_was_active = send_payload_router_->active(); |
| send_payload_router_->set_active(false); |
| send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); |
| - for (RtpRtcp* module : rtp_rtcp_modules_) |
| - packet_router_->RemoveRtpModule(module); |
| std::vector<RtpRtcp*> registered_modules; |
| std::vector<RtpRtcp*> deregistered_modules; |
| @@ -402,21 +404,25 @@ int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec, |
| // Update the packet and payload routers with the sending RtpRtcp modules. |
| std::list<RtpRtcp*> active_send_modules; |
| - for (RtpRtcp* rtp_rtcp : registered_modules) { |
| - packet_router_->AddRtpModule(rtp_rtcp); |
| + for (RtpRtcp* rtp_rtcp : registered_modules) |
| active_send_modules.push_back(rtp_rtcp); |
| - } |
| send_payload_router_->SetSendingRtpModules(active_send_modules); |
|
stefan-webrtc
2015/07/22 10:49:01
Seems like send_payload_router_ and active_send_mo
sprang_webrtc
2015/07/22 15:11:32
Done.
|
| if (router_was_active) |
| send_payload_router_->set_active(true); |
| // Deregister previously registered modules. |
| - for (size_t i = num_active_modules; i < num_prev_active_modules; ++i) |
| + for (size_t i = num_active_modules; i < num_prev_active_modules; ++i) { |
| module_process_thread_->DeRegisterModule(rtp_rtcp_modules_[i]); |
| + if (sender_ && packet_router_) |
| + packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); |
| + } |
| // Register new active modules. |
| - for (size_t i = num_prev_active_modules; i < num_active_modules; ++i) |
| + for (size_t i = num_prev_active_modules; i < num_active_modules; ++i) { |
| module_process_thread_->RegisterModule(rtp_rtcp_modules_[i]); |
| + if (sender_ && packet_router_) |
| + packet_router_->AddRtpModule(rtp_rtcp_modules_[i]); |
| + } |
| return 0; |
| } |
| @@ -700,6 +706,26 @@ int ViEChannel::SetReceiveVideoRotationStatus(bool enable, int id) { |
| return vie_receiver_.SetReceiveVideoRotationStatus(enable, id) ? 0 : -1; |
| } |
| +int ViEChannel::SetSendTransportSequenceNumber(bool enable, int id) { |
| + // Disable any previous registrations of this extension to avoid errors. |
| + for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) |
|
stefan-webrtc
2015/07/22 10:49:01
{}
sprang_webrtc
2015/07/22 15:11:33
Done.
|
| + rtp_rtcp->DeregisterSendRtpHeaderExtension( |
| + kRtpExtensionTransportSequenceNumber); |
| + if (!enable) |
| + return 0; |
| + // Enable the extension. |
| + int error = 0; |
| + for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { |
| + error |= rtp_rtcp->RegisterSendRtpHeaderExtension( |
| + kRtpExtensionTransportSequenceNumber, id); |
| + } |
| + return error; |
| +} |
| + |
| +int ViEChannel::SetReceiveTransportSequenceNumber(bool enable, int id) { |
| + return vie_receiver_.SetReceiveTransportSequenceNumber(enable, id) ? 0 : -1; |
| +} |
| + |
| void ViEChannel::SetRtcpXrRrtrStatus(bool enable) { |
| rtp_rtcp_modules_[0]->SetRtcpXrRrtrStatus(enable); |
| } |
| @@ -1150,6 +1176,7 @@ std::vector<RtpRtcp*> ViEChannel::CreateRtpRtcpModules( |
| RtcpPacketTypeCounterObserver* rtcp_packet_type_counter_observer, |
| RemoteBitrateEstimator* remote_bitrate_estimator, |
| PacedSender* paced_sender, |
| + PacketRouter* packet_router, |
| BitrateStatisticsObserver* send_bitrate_observer, |
| FrameCountObserver* send_frame_count_observer, |
| SendSideDelayObserver* send_side_delay_observer, |
| @@ -1167,6 +1194,7 @@ std::vector<RtpRtcp*> ViEChannel::CreateRtpRtcpModules( |
| configuration.rtcp_packet_type_counter_observer = |
| rtcp_packet_type_counter_observer; |
| configuration.paced_sender = paced_sender; |
| + configuration.packet_router = packet_router; |
| configuration.send_bitrate_observer = send_bitrate_observer; |
| configuration.send_frame_count_observer = send_frame_count_observer; |
| configuration.send_side_delay_observer = send_side_delay_observer; |