Removing interface to access pacer via SSCC.
SSCC was accessing the pacer just to report values back to RtpTransportControllerSend which already owns the pacer. This CL moves those access methods. To make RtpTransportControllerSend simpler, Call is made responsible to keep track of network status used only as a condition for report the pacer queuing delay. Bug: webrtc:8415 Change-Id: I306bc9fcd3d8dcc7a637d51f2629ececebd48cad Reviewed-on: https://webrtc-review.googlesource.com/60483 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Commit-Queue: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22331}
This commit is contained in:
committed by
Commit Bot
parent
d90a7e8424
commit
a06e919b9f
29
call/call.cc
29
call/call.cc
@ -268,6 +268,8 @@ class Call : public webrtc::Call,
|
||||
|
||||
NetworkState audio_network_state_;
|
||||
NetworkState video_network_state_;
|
||||
rtc::CriticalSection aggregate_network_up_crit_;
|
||||
bool aggregate_network_up_ RTC_GUARDED_BY(aggregate_network_up_crit_);
|
||||
|
||||
std::unique_ptr<RWLockWrapper> receive_crit_;
|
||||
// Audio, Video, and FlexFEC receive streams are owned by the client that
|
||||
@ -413,6 +415,7 @@ Call::Call(const Call::Config& config,
|
||||
config_(config),
|
||||
audio_network_state_(kNetworkDown),
|
||||
video_network_state_(kNetworkDown),
|
||||
aggregate_network_up_(false),
|
||||
receive_crit_(RWLockWrapper::CreateRWLock()),
|
||||
send_crit_(RWLockWrapper::CreateRWLock()),
|
||||
event_log_(config.event_log),
|
||||
@ -909,7 +912,14 @@ Call::Stats Call::GetStats() const {
|
||||
&ssrcs, &recv_bandwidth);
|
||||
stats.send_bandwidth_bps = send_bandwidth;
|
||||
stats.recv_bandwidth_bps = recv_bandwidth;
|
||||
stats.pacer_delay_ms = transport_send_->GetPacerQueuingDelayMs();
|
||||
// TODO(srte): It is unclear if we only want to report queues if network is
|
||||
// available.
|
||||
{
|
||||
rtc::CritScope cs(&aggregate_network_up_crit_);
|
||||
stats.pacer_delay_ms =
|
||||
aggregate_network_up_ ? transport_send_->GetPacerQueuingDelayMs() : 0;
|
||||
}
|
||||
|
||||
stats.rtt_ms = call_stats_->rtcp_rtt_stats()->LastProcessedRtt();
|
||||
{
|
||||
rtc::CritScope cs(&bitrate_crit_);
|
||||
@ -1016,16 +1026,17 @@ void Call::UpdateAggregateNetworkState() {
|
||||
have_video = true;
|
||||
}
|
||||
|
||||
NetworkState aggregate_state = kNetworkDown;
|
||||
if ((have_video && video_network_state_ == kNetworkUp) ||
|
||||
(have_audio && audio_network_state_ == kNetworkUp)) {
|
||||
aggregate_state = kNetworkUp;
|
||||
}
|
||||
bool aggregate_network_up =
|
||||
((have_video && video_network_state_ == kNetworkUp) ||
|
||||
(have_audio && audio_network_state_ == kNetworkUp));
|
||||
|
||||
RTC_LOG(LS_INFO) << "UpdateAggregateNetworkState: aggregate_state="
|
||||
<< (aggregate_state == kNetworkUp ? "up" : "down");
|
||||
|
||||
transport_send_->OnNetworkAvailability(aggregate_state == kNetworkUp);
|
||||
<< (aggregate_network_up ? "up" : "down");
|
||||
{
|
||||
rtc::CritScope cs(&aggregate_network_up_crit_);
|
||||
aggregate_network_up_ = aggregate_network_up;
|
||||
}
|
||||
transport_send_->OnNetworkAvailability(aggregate_network_up);
|
||||
}
|
||||
|
||||
void Call::OnSentPacket(const rtc::SentPacket& sent_packet) {
|
||||
|
||||
@ -145,10 +145,10 @@ bool RtpTransportControllerSend::AvailableBandwidth(uint32_t* bandwidth) const {
|
||||
return send_side_cc_->AvailableBandwidth(bandwidth);
|
||||
}
|
||||
int64_t RtpTransportControllerSend::GetPacerQueuingDelayMs() const {
|
||||
return send_side_cc_->GetPacerQueuingDelayMs();
|
||||
return pacer_.QueueInMs();
|
||||
}
|
||||
int64_t RtpTransportControllerSend::GetFirstPacketTimeMs() const {
|
||||
return send_side_cc_->GetFirstPacketTimeMs();
|
||||
return pacer_.FirstSentPacketTimeMs();
|
||||
}
|
||||
void RtpTransportControllerSend::EnablePeriodicAlrProbing(bool enable) {
|
||||
send_side_cc_->EnablePeriodicAlrProbing(enable);
|
||||
|
||||
Reference in New Issue
Block a user