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}
This commit is contained in:
@ -1165,7 +1165,7 @@ bool WebRtcVideoChannel2::AddRecvStream(const StreamParams& sp,
|
||||
}
|
||||
|
||||
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 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream(
|
||||
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 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::GetVideoSenderInfo() {
|
||||
}
|
||||
}
|
||||
}
|
||||
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 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() {
|
||||
|
||||
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 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetSize(int width,
|
||||
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 +
|
||||
|
||||
@ -376,6 +376,7 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
|
||||
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 WebRtcVideoChannel2 : public rtc::MessageHandler,
|
||||
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 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
|
||||
|
||||
webrtc::Call* const call_;
|
||||
const std::vector<uint32> ssrcs_;
|
||||
const std::vector<SsrcGroup> ssrc_groups_;
|
||||
|
||||
webrtc::VideoReceiveStream* stream_;
|
||||
const bool default_stream_;
|
||||
|
||||
@ -2547,6 +2547,35 @@ TEST_F(WebRtcVideoChannel2Test,
|
||||
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()));
|
||||
|
||||
Reference in New Issue
Block a user