Revert "[GetStats] Expose video codec implementation in standardized metrics."

This reverts commit 2b9fa09fa3e3379fd8e76490c394f25670352ef2.

Reason for revert: speculative revert since it seems to break Chrome FYI bots. See https://ci.chromium.org/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Linux%20Tester/4206

Original change's description:
> [GetStats] Expose video codec implementation in standardized metrics.
> 
> Spec issue: https://github.com/w3c/webrtc-stats/issues/445
> Spec PR: https://github.com/w3c/webrtc-stats/pull/473
> 
> Now that the spec's RTCCodecStats.implementation has moved to
> RTCOutboundRtpStreamStats.encoderImplementation and
> RTCInboundRtpStreamStats.decoderImplementation, this CL implements them
> using the same string that the legacy getStats() API used.
> 
> Bug: webrtc:10890
> Change-Id: Ic43ce44735453626791959df3061ee253356015a
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149168
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28877}

TBR=ilnik@webrtc.org,hbos@webrtc.org

Change-Id: Ia0b7f9806564cf28881c50d6371b8141a22e3431
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10890
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149175
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28879}
This commit is contained in:
Henrik Andreassson 2019-08-16 15:29:16 +00:00 committed by Commit Bot
parent 6094953ed1
commit df625f46c0
6 changed files with 17 additions and 42 deletions

View File

@ -122,6 +122,8 @@ class RTC_EXPORT RTCCodecStats final : public RTCStats {
RTCStatsMember<uint32_t> channels;
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7061
RTCStatsMember<std::string> sdp_fmtp_line;
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7061
RTCStatsMember<std::string> implementation;
};
// https://w3c.github.io/webrtc-stats/#dcstats-dict*
@ -445,9 +447,6 @@ class RTC_EXPORT RTCInboundRTPStreamStats final : public RTCRTPStreamStats {
RTCStatsMember<double> total_decode_time;
// https://henbos.github.io/webrtc-provisional-stats/#dom-rtcinboundrtpstreamstats-contenttype
RTCStatsMember<std::string> content_type;
// TODO(hbos): This is only implemented for video; implement it for audio as
// well.
RTCStatsMember<std::string> decoder_implementation;
};
// https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*
@ -483,9 +482,6 @@ class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
RTCStatsMember<std::string> quality_limitation_reason;
// https://henbos.github.io/webrtc-provisional-stats/#dom-rtcoutboundrtpstreamstats-contenttype
RTCStatsMember<std::string> content_type;
// TODO(hbos): This is only implemented for video; implement it for audio as
// well.
RTCStatsMember<std::string> encoder_implementation;
};
// TODO(https://crbug.com/webrtc/10671): Refactor the stats dictionaries to have

View File

@ -546,6 +546,7 @@ struct VideoSenderInfo : public MediaSenderInfo {
VideoSenderInfo();
~VideoSenderInfo();
std::vector<SsrcGroup> ssrc_groups;
// TODO(hbos): Move this to |VideoMediaInfo::send_codecs|?
std::string encoder_implementation_name;
int firs_rcvd = 0;
int plis_rcvd = 0;
@ -583,6 +584,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
VideoReceiverInfo();
~VideoReceiverInfo();
std::vector<SsrcGroup> ssrc_groups;
// TODO(hbos): Move this to |VideoMediaInfo::receive_codecs|?
std::string decoder_implementation_name;
int packets_concealed = 0;
int firs_sent = 0;

View File

@ -325,10 +325,6 @@ void SetInboundRTPStreamStatsFromVideoReceiverInfo(
// optional, support the "unspecified" value.
if (video_receiver_info.content_type == VideoContentType::SCREENSHARE)
inbound_video->content_type = RTCContentType::kScreenshare;
if (!video_receiver_info.decoder_implementation_name.empty()) {
inbound_video->decoder_implementation =
video_receiver_info.decoder_implementation_name;
}
}
// Provides the media independent counters (both audio and video).
@ -402,10 +398,6 @@ void SetOutboundRTPStreamStatsFromVideoSenderInfo(
// optional, support the "unspecified" value.
if (video_sender_info.content_type == VideoContentType::SCREENSHARE)
outbound_video->content_type = RTCContentType::kScreenshare;
if (!video_sender_info.encoder_implementation_name.empty()) {
outbound_video->encoder_implementation =
video_sender_info.encoder_implementation_name;
}
}
std::unique_ptr<RTCRemoteInboundRtpStreamStats>

View File

@ -1815,7 +1815,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) {
video_media_info.receivers[0].last_packet_received_timestamp_ms =
absl::nullopt;
video_media_info.receivers[0].content_type = VideoContentType::UNSPECIFIED;
video_media_info.receivers[0].decoder_implementation_name = "";
RtpCodecParameters codec_parameters;
codec_parameters.payload_type = 42;
@ -1853,7 +1852,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) {
expected_video.total_decode_time = 9.0;
// |expected_video.last_packet_received_timestamp| should be undefined.
// |expected_video.content_type| should be undefined.
// |expected_video.decoder_implementation| should be undefined.
ASSERT_TRUE(report->Get(expected_video.id()));
EXPECT_EQ(
@ -1867,8 +1865,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) {
expected_video.last_packet_received_timestamp = 1.0;
video_media_info.receivers[0].content_type = VideoContentType::SCREENSHARE;
expected_video.content_type = "screenshare";
video_media_info.receivers[0].decoder_implementation_name = "libfoodecoder";
expected_video.decoder_implementation = "libfoodecoder";
video_media_channel->SetStats(video_media_info);
report = stats_->GetFreshStatsReport();
@ -1962,7 +1958,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
QualityLimitationReason::kBandwidth;
video_media_info.senders[0].qp_sum = absl::nullopt;
video_media_info.senders[0].content_type = VideoContentType::UNSPECIFIED;
video_media_info.senders[0].encoder_implementation_name = "";
RtpCodecParameters codec_parameters;
codec_parameters.payload_type = 42;
@ -2010,7 +2005,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
expected_video.quality_limitation_reason = "bandwidth";
// |expected_video.content_type| should be undefined.
// |expected_video.qp_sum| should be undefined.
// |expected_video.encoder_implementation| should be undefined.
ASSERT_TRUE(report->Get(expected_video.id()));
EXPECT_EQ(
@ -2022,8 +2016,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
expected_video.qp_sum = 9;
video_media_info.senders[0].content_type = VideoContentType::SCREENSHARE;
expected_video.content_type = "screenshare";
video_media_info.senders[0].encoder_implementation_name = "libfooencoder";
expected_video.encoder_implementation = "libfooencoder";
video_media_channel->SetStats(video_media_info);
report = stats_->GetFreshStatsReport();

View File

@ -446,6 +446,7 @@ class RTCStatsReportVerifier {
verifier.TestMemberIsPositive<uint32_t>(codec.clock_rate);
verifier.TestMemberIsUndefined(codec.channels);
verifier.TestMemberIsUndefined(codec.sdp_fmtp_line);
verifier.TestMemberIsUndefined(codec.implementation);
return verifier.ExpectAllMembersSuccessfullyTested();
}
@ -771,10 +772,8 @@ class RTCStatsReportVerifier {
if (inbound_stream.media_type.is_defined() &&
*inbound_stream.media_type == "video") {
verifier.TestMemberIsNonNegative<uint64_t>(inbound_stream.qp_sum);
verifier.TestMemberIsDefined(inbound_stream.decoder_implementation);
} else {
verifier.TestMemberIsUndefined(inbound_stream.qp_sum);
verifier.TestMemberIsUndefined(inbound_stream.decoder_implementation);
}
verifier.TestMemberIsNonNegative<uint32_t>(inbound_stream.packets_received);
if (inbound_stream.media_type.is_defined() &&
@ -860,7 +859,6 @@ class RTCStatsReportVerifier {
// The integration test is not set up to test screen share; don't require
// this to be present.
verifier.MarkMemberTested(outbound_stream.content_type, true);
verifier.TestMemberIsDefined(outbound_stream.encoder_implementation);
} else {
verifier.TestMemberIsUndefined(outbound_stream.frames_encoded);
verifier.TestMemberIsUndefined(outbound_stream.key_frames_encoded);
@ -871,8 +869,6 @@ class RTCStatsReportVerifier {
verifier.TestMemberIsUndefined(outbound_stream.total_packet_send_delay);
verifier.TestMemberIsUndefined(outbound_stream.quality_limitation_reason);
verifier.TestMemberIsUndefined(outbound_stream.content_type);
// TODO(hbos): Implement for audio as well.
verifier.TestMemberIsUndefined(outbound_stream.encoder_implementation);
}
return verifier.ExpectAllMembersSuccessfullyTested();
}

View File

@ -96,7 +96,8 @@ WEBRTC_RTCSTATS_IMPL(RTCCodecStats, RTCStats, "codec",
&mime_type,
&clock_rate,
&channels,
&sdp_fmtp_line)
&sdp_fmtp_line,
&implementation)
// clang-format on
RTCCodecStats::RTCCodecStats(const std::string& id, int64_t timestamp_us)
@ -108,7 +109,8 @@ RTCCodecStats::RTCCodecStats(std::string&& id, int64_t timestamp_us)
mime_type("mimeType"),
clock_rate("clockRate"),
channels("channels"),
sdp_fmtp_line("sdpFmtpLine") {}
sdp_fmtp_line("sdpFmtpLine"),
implementation("implementation") {}
RTCCodecStats::RTCCodecStats(const RTCCodecStats& other)
: RTCStats(other.id(), other.timestamp_us()),
@ -116,7 +118,8 @@ RTCCodecStats::RTCCodecStats(const RTCCodecStats& other)
mime_type(other.mime_type),
clock_rate(other.clock_rate),
channels(other.channels),
sdp_fmtp_line(other.sdp_fmtp_line) {}
sdp_fmtp_line(other.sdp_fmtp_line),
implementation(other.implementation) {}
RTCCodecStats::~RTCCodecStats() {}
@ -612,8 +615,7 @@ WEBRTC_RTCSTATS_IMPL(
&frames_decoded,
&key_frames_decoded,
&total_decode_time,
&content_type,
&decoder_implementation)
&content_type)
// clang-format on
RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(const std::string& id,
@ -644,8 +646,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id,
frames_decoded("framesDecoded"),
key_frames_decoded("keyFramesDecoded"),
total_decode_time("totalDecodeTime"),
content_type("contentType"),
decoder_implementation("decoderImplementation") {}
content_type("contentType") {}
RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
const RTCInboundRTPStreamStats& other)
@ -671,8 +672,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
frames_decoded(other.frames_decoded),
key_frames_decoded(other.key_frames_decoded),
total_decode_time(other.total_decode_time),
content_type(other.content_type),
decoder_implementation(other.decoder_implementation) {}
content_type(other.content_type) {}
RTCInboundRTPStreamStats::~RTCInboundRTPStreamStats() {}
@ -691,8 +691,7 @@ WEBRTC_RTCSTATS_IMPL(
&total_encoded_bytes_target,
&total_packet_send_delay,
&quality_limitation_reason,
&content_type,
&encoder_implementation)
&content_type)
// clang-format on
RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(const std::string& id,
@ -714,8 +713,7 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(std::string&& id,
total_encoded_bytes_target("totalEncodedBytesTarget"),
total_packet_send_delay("totalPacketSendDelay"),
quality_limitation_reason("qualityLimitationReason"),
content_type("contentType"),
encoder_implementation("encoderImplementation") {}
content_type("contentType") {}
RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
const RTCOutboundRTPStreamStats& other)
@ -732,8 +730,7 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
total_encoded_bytes_target(other.total_encoded_bytes_target),
total_packet_send_delay(other.total_packet_send_delay),
quality_limitation_reason(other.quality_limitation_reason),
content_type(other.content_type),
encoder_implementation(other.encoder_implementation) {}
content_type(other.content_type) {}
RTCOutboundRTPStreamStats::~RTCOutboundRTPStreamStats() {}