mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00
Implement RTCOutboundRtpStreamStats.targetBitrate for video
Spec: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-targetbitrate Bug: webrtc:13394 Change-Id: I4749b38088a24d1a775137d5fe2c65f96effd185 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276380 Auto-Submit: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38170}
This commit is contained in:
parent
6a49fb2d5f
commit
636dc3d208
5 changed files with 10 additions and 6 deletions
|
@ -516,7 +516,6 @@ class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
|
|||
RTCStatsMember<uint64_t> bytes_sent;
|
||||
RTCStatsMember<uint64_t> header_bytes_sent;
|
||||
RTCStatsMember<uint64_t> retransmitted_bytes_sent;
|
||||
// TODO(https://crbug.com/webrtc/13394): Also collect this metric for video.
|
||||
RTCStatsMember<double> target_bitrate;
|
||||
RTCStatsMember<uint32_t> frames_encoded;
|
||||
RTCStatsMember<uint32_t> key_frames_encoded;
|
||||
|
|
|
@ -391,7 +391,7 @@ struct MediaSenderInfo {
|
|||
// https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-nackcount
|
||||
uint32_t nacks_rcvd = 0;
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-targetbitrate
|
||||
double target_bitrate = 0.0;
|
||||
absl::optional<double> target_bitrate;
|
||||
int packets_lost = 0;
|
||||
float fraction_lost = 0.0f;
|
||||
int64_t rtt_ms = 0;
|
||||
|
|
|
@ -2656,6 +2656,7 @@ WebRtcVideoChannel::WebRtcVideoSendStream::GetPerLayerVideoSenderInfos(
|
|||
common_info.quality_limitation_resolution_changes =
|
||||
stats.quality_limitation_resolution_changes;
|
||||
common_info.encoder_implementation_name = stats.encoder_implementation_name;
|
||||
common_info.target_bitrate = stats.target_media_bitrate_bps;
|
||||
common_info.ssrc_groups = ssrc_groups_;
|
||||
common_info.frames = stats.frames;
|
||||
common_info.framerate_input = stats.input_frame_rate;
|
||||
|
|
|
@ -646,8 +646,9 @@ void SetOutboundRTPStreamStatsFromVoiceSenderInfo(
|
|||
outbound_audio->mid = mid;
|
||||
outbound_audio->media_type = "audio";
|
||||
outbound_audio->kind = "audio";
|
||||
if (voice_sender_info.target_bitrate > 0) {
|
||||
outbound_audio->target_bitrate = voice_sender_info.target_bitrate;
|
||||
if (voice_sender_info.target_bitrate &&
|
||||
*voice_sender_info.target_bitrate > 0) {
|
||||
outbound_audio->target_bitrate = *voice_sender_info.target_bitrate;
|
||||
}
|
||||
if (voice_sender_info.codec_payload_type.has_value()) {
|
||||
auto codec_param_it = voice_media_info.send_codecs.find(
|
||||
|
@ -689,6 +690,10 @@ void SetOutboundRTPStreamStatsFromVideoSenderInfo(
|
|||
static_cast<uint32_t>(video_sender_info.plis_rcvd);
|
||||
if (video_sender_info.qp_sum)
|
||||
outbound_video->qp_sum = *video_sender_info.qp_sum;
|
||||
if (video_sender_info.target_bitrate &&
|
||||
video_sender_info.target_bitrate > 0) {
|
||||
outbound_video->target_bitrate = *video_sender_info.target_bitrate;
|
||||
}
|
||||
outbound_video->frames_encoded = video_sender_info.frames_encoded;
|
||||
outbound_video->key_frames_encoded = video_sender_info.key_frames_encoded;
|
||||
outbound_video->total_encode_time =
|
||||
|
|
|
@ -956,6 +956,7 @@ class RTCStatsReportVerifier {
|
|||
outbound_stream.header_bytes_sent);
|
||||
verifier.TestMemberIsNonNegative<uint64_t>(
|
||||
outbound_stream.retransmitted_bytes_sent);
|
||||
verifier.TestMemberIsNonNegative<double>(outbound_stream.target_bitrate);
|
||||
if (outbound_stream.kind.is_defined() && *outbound_stream.kind == "video") {
|
||||
verifier.TestMemberIsDefined(outbound_stream.frames_encoded);
|
||||
verifier.TestMemberIsDefined(outbound_stream.key_frames_encoded);
|
||||
|
@ -990,7 +991,6 @@ class RTCStatsReportVerifier {
|
|||
verifier.TestMemberIsNonNegative<uint32_t>(outbound_stream.frames_sent);
|
||||
verifier.TestMemberIsNonNegative<uint32_t>(
|
||||
outbound_stream.huge_frames_sent);
|
||||
verifier.TestMemberIsUndefined(outbound_stream.target_bitrate);
|
||||
verifier.MarkMemberTested(outbound_stream.rid, true);
|
||||
} else {
|
||||
verifier.TestMemberIsUndefined(outbound_stream.frames_encoded);
|
||||
|
@ -1014,7 +1014,6 @@ class RTCStatsReportVerifier {
|
|||
verifier.TestMemberIsUndefined(outbound_stream.frame_width);
|
||||
verifier.TestMemberIsUndefined(outbound_stream.frames_sent);
|
||||
verifier.TestMemberIsUndefined(outbound_stream.huge_frames_sent);
|
||||
verifier.TestMemberIsNonNegative<double>(outbound_stream.target_bitrate);
|
||||
}
|
||||
return verifier.ExpectAllMembersSuccessfullyTested();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue