RTCMediaStreamTrackStats.framesReceived collected by RTCStatsCollector.
VideoReceiverInfo::frames_received added based on VideoReceiveStream::Stats::frame_counts (.key_frames + .delta_frames). BUG=webrtc:6757, chromium:659137, chromium:627816 Review-Url: https://codereview.webrtc.org/2607913002 Cr-Commit-Position: refs/heads/master@{#16185}
This commit is contained in:
parent
7319f26632
commit
42f6d2fb6c
@ -439,7 +439,12 @@ class RTCStatsReportVerifier {
|
||||
media_stream_track.frame_height);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_per_second);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_sent);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_received);
|
||||
if (*media_stream_track.remote_source) {
|
||||
verifier.TestMemberIsNonNegative<uint32_t>(
|
||||
media_stream_track.frames_received);
|
||||
} else {
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_received);
|
||||
}
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_decoded);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_dropped);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted);
|
||||
@ -451,6 +456,8 @@ class RTCStatsReportVerifier {
|
||||
verifier.TestMemberIsUndefined(
|
||||
media_stream_track.echo_return_loss_enhancement);
|
||||
} else {
|
||||
RTC_DCHECK_EQ(*media_stream_track.kind,
|
||||
RTCMediaStreamTrackKind::kAudio);
|
||||
// Video-only members should be undefined
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frame_width);
|
||||
verifier.TestMemberIsUndefined(media_stream_track.frame_height);
|
||||
|
||||
@ -436,6 +436,7 @@ ProduceMediaStreamTrackStatsFromVideoReceiverInfo(
|
||||
video_track_stats->frame_height = static_cast<uint32_t>(
|
||||
video_receiver_info.frame_height);
|
||||
}
|
||||
video_track_stats->frames_received = video_receiver_info.frames_received;
|
||||
return video_track_stats;
|
||||
}
|
||||
|
||||
|
||||
@ -1540,6 +1540,7 @@ TEST_F(RTCStatsCollectorTest,
|
||||
video_receiver_info_ssrc3.local_stats[0].ssrc = 3;
|
||||
video_receiver_info_ssrc3.frame_width = 6789;
|
||||
video_receiver_info_ssrc3.frame_height = 9876;
|
||||
video_receiver_info_ssrc3.frames_received = 2468;
|
||||
|
||||
// Remote video track with undefined (default) values
|
||||
rtc::scoped_refptr<MediaStreamTrackInterface> remote_video_track_ssrc4 =
|
||||
@ -1553,6 +1554,7 @@ TEST_F(RTCStatsCollectorTest,
|
||||
video_receiver_info_ssrc4.local_stats[0].ssrc = 4;
|
||||
video_receiver_info_ssrc4.frame_width = 0;
|
||||
video_receiver_info_ssrc4.frame_height = 0;
|
||||
video_receiver_info_ssrc4.frames_received = 0;
|
||||
|
||||
test_->CreateMockRtpSendersReceiversAndChannels(
|
||||
{}, {},
|
||||
@ -1625,6 +1627,7 @@ TEST_F(RTCStatsCollectorTest,
|
||||
expected_remote_video_track_ssrc3.detached = false;
|
||||
expected_remote_video_track_ssrc3.frame_width = 6789;
|
||||
expected_remote_video_track_ssrc3.frame_height = 9876;
|
||||
expected_remote_video_track_ssrc3.frames_received = 2468;
|
||||
ASSERT_TRUE(report->Get(expected_remote_video_track_ssrc3.id()));
|
||||
EXPECT_EQ(expected_remote_video_track_ssrc3,
|
||||
report->Get(expected_remote_video_track_ssrc3.id())->cast_to<
|
||||
@ -1638,6 +1641,7 @@ TEST_F(RTCStatsCollectorTest,
|
||||
expected_remote_video_track_ssrc4.remote_source = true;
|
||||
expected_remote_video_track_ssrc4.ended = false;
|
||||
expected_remote_video_track_ssrc4.detached = false;
|
||||
expected_remote_video_track_ssrc4.frames_received = 0;
|
||||
// Should be undefined: |expected_remote_video_track_ssrc4.frame_width| and
|
||||
// |expected_remote_video_track_ssrc4.frame_height|.
|
||||
ASSERT_TRUE(report->Get(expected_remote_video_track_ssrc4.id()));
|
||||
|
||||
@ -267,7 +267,6 @@ class RTCMediaStreamTrackStats final : public RTCStats {
|
||||
RTCStatsMember<double> frames_per_second;
|
||||
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
||||
RTCStatsMember<uint32_t> frames_sent;
|
||||
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
||||
RTCStatsMember<uint32_t> frames_received;
|
||||
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
||||
RTCStatsMember<uint32_t> frames_decoded;
|
||||
|
||||
@ -749,6 +749,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
|
||||
framerate_output(0),
|
||||
framerate_render_input(0),
|
||||
framerate_render_output(0),
|
||||
frames_received(0),
|
||||
frames_decoded(0),
|
||||
decode_ms(0),
|
||||
max_decode_ms(0),
|
||||
@ -776,6 +777,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
|
||||
int framerate_render_input;
|
||||
// Framerate that the renderer reports.
|
||||
int framerate_render_output;
|
||||
uint32_t frames_received;
|
||||
uint32_t frames_decoded;
|
||||
|
||||
// All stats below are gathered per-VideoReceiver, but some will be correlated
|
||||
|
||||
@ -2383,6 +2383,8 @@ WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetVideoReceiverInfo(
|
||||
info.jitter_buffer_ms = stats.jitter_buffer_ms;
|
||||
info.min_playout_delay_ms = stats.min_playout_delay_ms;
|
||||
info.render_delay_ms = stats.render_delay_ms;
|
||||
info.frames_received = stats.frame_counts.key_frames +
|
||||
stats.frame_counts.delta_frames;
|
||||
info.frames_decoded = stats.frames_decoded;
|
||||
|
||||
info.codec_name = GetCodecNameFromPayloadType(stats.current_payload_type);
|
||||
|
||||
@ -3301,7 +3301,9 @@ TEST_F(WebRtcVideoChannel2Test, GetStatsTranslatesDecodeStatsCorrectly) {
|
||||
stats.render_delay_ms = 8;
|
||||
stats.width = 9;
|
||||
stats.height = 10;
|
||||
stats.frames_decoded = 11;
|
||||
stats.frame_counts.key_frames = 11;
|
||||
stats.frame_counts.delta_frames = 12;
|
||||
stats.frames_decoded = 13;
|
||||
stream->SetStats(stats);
|
||||
|
||||
cricket::VideoMediaInfo info;
|
||||
@ -3317,6 +3319,8 @@ TEST_F(WebRtcVideoChannel2Test, GetStatsTranslatesDecodeStatsCorrectly) {
|
||||
EXPECT_EQ(stats.render_delay_ms, info.receivers[0].render_delay_ms);
|
||||
EXPECT_EQ(stats.width, info.receivers[0].frame_width);
|
||||
EXPECT_EQ(stats.height, info.receivers[0].frame_height);
|
||||
EXPECT_EQ(stats.frame_counts.key_frames + stats.frame_counts.delta_frames,
|
||||
info.receivers[0].frames_received);
|
||||
EXPECT_EQ(stats.frames_decoded, info.receivers[0].frames_decoded);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user