Report ssrc_groups in GetStats().
This was already available in the stats struct, just not filled in.
BUG=4720
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/47329004
Cr-Commit-Position: refs/heads/master@{#9308}
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
index a29ce77..d68f9fb 100644
--- a/talk/media/webrtc/webrtcvideoengine2.cc
+++ b/talk/media/webrtc/webrtcvideoengine2.cc
@@ -1165,7 +1165,7 @@
}
receive_streams_[ssrc] = new WebRtcVideoReceiveStream(
- call_.get(), sp.ssrcs, external_decoder_factory_, default_stream, config,
+ call_.get(), sp, external_decoder_factory_, default_stream, config,
recv_codecs_);
return true;
@@ -1644,6 +1644,7 @@
const StreamParams& sp,
const std::vector<webrtc::RtpExtension>& rtp_extensions)
: ssrcs_(sp.ssrcs),
+ ssrc_groups_(sp.ssrc_groups),
call_(call),
external_encoder_factory_(external_encoder_factory),
stream_(NULL),
@@ -2100,6 +2101,7 @@
}
}
}
+ info.ssrc_groups = ssrc_groups_;
info.framerate_input = stats.input_frame_rate;
info.framerate_sent = stats.encode_frame_rate;
info.avg_encode_ms = stats.avg_encode_time_ms;
@@ -2202,13 +2204,14 @@
WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
webrtc::Call* call,
- const std::vector<uint32>& ssrcs,
+ const StreamParams& sp,
WebRtcVideoDecoderFactory* external_decoder_factory,
bool default_stream,
const webrtc::VideoReceiveStream::Config& config,
const std::vector<VideoCodecSettings>& recv_codecs)
: call_(call),
- ssrcs_(ssrcs),
+ ssrcs_(sp.ssrcs),
+ ssrc_groups_(sp.ssrc_groups),
stream_(NULL),
default_stream_(default_stream),
config_(config),
@@ -2432,6 +2435,7 @@
VideoReceiverInfo
WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetVideoReceiverInfo() {
VideoReceiverInfo info;
+ info.ssrc_groups = ssrc_groups_;
info.add_ssrc(config_.rtp.remote_ssrc);
webrtc::VideoReceiveStream::Stats stats = stream_->GetStats();
info.bytes_rcvd = stats.rtp_stats.transmitted.payload_bytes +
diff --git a/talk/media/webrtc/webrtcvideoengine2.h b/talk/media/webrtc/webrtcvideoengine2.h
index 89d8f7f..27f4b09 100644
--- a/talk/media/webrtc/webrtcvideoengine2.h
+++ b/talk/media/webrtc/webrtcvideoengine2.h
@@ -376,6 +376,7 @@
EXCLUSIVE_LOCKS_REQUIRED(lock_);
const std::vector<uint32> ssrcs_;
+ const std::vector<SsrcGroup> ssrc_groups_;
webrtc::Call* const call_;
WebRtcVideoEncoderFactory* const external_encoder_factory_
GUARDED_BY(lock_);
@@ -400,8 +401,8 @@
class WebRtcVideoReceiveStream : public webrtc::VideoRenderer {
public:
WebRtcVideoReceiveStream(
- webrtc::Call*,
- const std::vector<uint32>& ssrcs,
+ webrtc::Call* call,
+ const StreamParams& sp,
WebRtcVideoDecoderFactory* external_decoder_factory,
bool default_stream,
const webrtc::VideoReceiveStream::Config& config,
@@ -447,6 +448,7 @@
webrtc::Call* const call_;
const std::vector<uint32> ssrcs_;
+ const std::vector<SsrcGroup> ssrc_groups_;
webrtc::VideoReceiveStream* stream_;
const bool default_stream_;
diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
index 458e9d5..f7269b1 100644
--- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
@@ -2547,6 +2547,35 @@
EXPECT_TRUE(channel_->AddRecvStream(sp));
}
+TEST_F(WebRtcVideoChannel2Test, ReportsSsrcGroupsInStats) {
+ EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
+
+ static const uint32_t kSenderSsrcs[] = {4, 7, 10};
+ static const uint32_t kSenderRtxSsrcs[] = {5, 8, 11};
+
+ StreamParams sender_sp = cricket::CreateSimWithRtxStreamParams(
+ "cname", MAKE_VECTOR(kSenderSsrcs), MAKE_VECTOR(kSenderRtxSsrcs));
+
+ EXPECT_TRUE(channel_->AddSendStream(sender_sp));
+
+ static const uint32_t kReceiverSsrcs[] = {3};
+ static const uint32_t kReceiverRtxSsrcs[] = {2};
+
+ StreamParams receiver_sp = cricket::CreateSimWithRtxStreamParams(
+ "cname", MAKE_VECTOR(kReceiverSsrcs), MAKE_VECTOR(kReceiverRtxSsrcs));
+ EXPECT_TRUE(channel_->AddRecvStream(receiver_sp));
+
+ cricket::VideoMediaInfo info;
+ ASSERT_TRUE(channel_->GetStats(&info));
+
+ ASSERT_EQ(1u, info.senders.size());
+ ASSERT_EQ(1u, info.receivers.size());
+
+ EXPECT_NE(sender_sp.ssrc_groups, receiver_sp.ssrc_groups);
+ EXPECT_EQ(sender_sp.ssrc_groups, info.senders[0].ssrc_groups);
+ EXPECT_EQ(receiver_sp.ssrc_groups, info.receivers[0].ssrc_groups);
+}
+
void WebRtcVideoChannel2Test::TestReceiverLocalSsrcConfiguration(
bool receiver_first) {
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));