summaryrefslogtreecommitdiff
path: root/video_engine/vie_channel_manager.cc
diff options
context:
space:
mode:
authormflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2012-11-26 12:40:15 +0000
committermflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2012-11-26 12:40:15 +0000
commit78696d33d7711eb8208400908237c384b235bf74 (patch)
treeb8e4ba5b1154cd187ec9a444c4b82ea6fcc77e33 /video_engine/vie_channel_manager.cc
parentd6f6ff0da2180d5964e733ba8205c1a3353872c4 (diff)
downloadwebrtc-78696d33d7711eb8208400908237c384b235bf74.tar.gz
Wire up CallStats to provide modules with correct RTT.
BUG=769 TEST=Manual test since there is no ViE APi to get RTT for receive channels. Review URL: https://webrtc-codereview.appspot.com/937027 git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3163 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'video_engine/vie_channel_manager.cc')
-rw-r--r--video_engine/vie_channel_manager.cc23
1 files changed, 20 insertions, 3 deletions
diff --git a/video_engine/vie_channel_manager.cc b/video_engine/vie_channel_manager.cc
index 03509f2c..beda55f4 100644
--- a/video_engine/vie_channel_manager.cc
+++ b/video_engine/vie_channel_manager.cc
@@ -16,6 +16,7 @@
#include "system_wrappers/interface/critical_section_wrapper.h"
#include "system_wrappers/interface/map_wrapper.h"
#include "system_wrappers/interface/trace.h"
+#include "video_engine/call_stats.h"
#include "video_engine/encoder_state_feedback.h"
#include "video_engine/vie_channel.h"
#include "video_engine/vie_defines.h"
@@ -105,10 +106,12 @@ int ViEChannelManager::CreateChannel(int* channel_id) {
group->GetRemoteBitrateEstimator();
EncoderStateFeedback* encoder_state_feedback =
group->GetEncoderStateFeedback();
+ RtcpRttObserver* rtcp_rtt_observer =
+ group->GetCallStats()->rtcp_rtt_observer();
if (!(vie_encoder->Init() &&
CreateChannelObject(new_channel_id, vie_encoder, bandwidth_observer,
- remote_bitrate_estimator,
+ remote_bitrate_estimator, rtcp_rtt_observer,
encoder_state_feedback->GetRtcpIntraFrameObserver(),
true))) {
delete vie_encoder;
@@ -126,10 +129,12 @@ int ViEChannelManager::CreateChannel(int* channel_id) {
std::list<unsigned int> ssrcs;
ssrcs.push_back(ssrc);
vie_encoder->SetSsrcs(ssrcs);
-
*channel_id = new_channel_id;
group->AddChannel(*channel_id);
channel_groups_.push_back(group);
+ // Register the channel to receive stats updates.
+ group->GetCallStats()->RegisterStatsObserver(
+ channel_map_[new_channel_id]->GetStatsObserver());
return 0;
}
@@ -153,6 +158,8 @@ int ViEChannelManager::CreateChannel(int* channel_id,
channel_group->GetRemoteBitrateEstimator();
EncoderStateFeedback* encoder_state_feedback =
channel_group->GetEncoderStateFeedback();
+ RtcpRttObserver* rtcp_rtt_observer =
+ channel_group->GetCallStats()->rtcp_rtt_observer();
ViEEncoder* vie_encoder = NULL;
if (sender) {
@@ -166,7 +173,9 @@ int ViEChannelManager::CreateChannel(int* channel_id,
vie_encoder,
bandwidth_observer,
remote_bitrate_estimator,
- encoder_state_feedback->GetRtcpIntraFrameObserver(), sender))) {
+ rtcp_rtt_observer,
+ encoder_state_feedback->GetRtcpIntraFrameObserver(),
+ sender))) {
delete vie_encoder;
vie_encoder = NULL;
}
@@ -183,6 +192,7 @@ int ViEChannelManager::CreateChannel(int* channel_id,
vie_encoder,
bandwidth_observer,
remote_bitrate_estimator,
+ rtcp_rtt_observer,
encoder_state_feedback->GetRtcpIntraFrameObserver(),
sender)) {
vie_encoder = NULL;
@@ -194,6 +204,9 @@ int ViEChannelManager::CreateChannel(int* channel_id,
}
*channel_id = new_channel_id;
channel_group->AddChannel(*channel_id);
+ // Register the channel to receive stats updates.
+ channel_group->GetCallStats()->RegisterStatsObserver(
+ channel_map_[new_channel_id]->GetStatsObserver());
return 0;
}
@@ -226,6 +239,8 @@ int ViEChannelManager::DeleteChannel(int channel_id) {
vie_encoder = e_it->second;
group = FindGroup(channel_id);
+ group->GetCallStats()->DeregisterStatsObserver(
+ vie_channel->GetStatsObserver());
group->SetChannelRembStatus(channel_id, false, false, vie_channel,
vie_encoder);
@@ -399,6 +414,7 @@ bool ViEChannelManager::CreateChannelObject(
ViEEncoder* vie_encoder,
RtcpBandwidthObserver* bandwidth_observer,
RemoteBitrateEstimator* remote_bitrate_estimator,
+ RtcpRttObserver* rtcp_rtt_observer,
RtcpIntraFrameObserver* intra_frame_observer,
bool sender) {
PacedSender* paced_sender = vie_encoder->GetPacedSender();
@@ -412,6 +428,7 @@ bool ViEChannelManager::CreateChannelObject(
intra_frame_observer,
bandwidth_observer,
remote_bitrate_estimator,
+ rtcp_rtt_observer,
paced_sender,
send_rtp_rtcp_module,
sender);