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

Unified Diff: webrtc/video_engine/vie_channel.cc

Issue 1247293002: Add support for transport wide sequence numbers (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 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/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;

Powered by Google App Engine
This is Rietveld 408576698