mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00

This is a reland of commit 84c48ae751
Original change's description:
> [Stats] Move metric names to Attribute, constructed via AttributeInit.
>
> As of this CL, Attribute no longer implements RTCStatsMemberInterface
> and a member no longer owns knowing its own name. The attribute knows
> the name because we pass it down at construction time.
>
> To achieve this, the WEBRTC_RTCSTATS_IMPL() macro is updated to take
> AttributeInits instead of raw member pointers, i.e. (name, ptr) pairs.
>
> By constructing RTCStatsMember<T> without a name parameter, it does the
> same thing as the absl::optional<T> constructor. So RTCStatsMember<T>'s
> days are numbered!
>
> Bug: webrtc:15164
> Change-Id: I560c0134bae1c2d7218426a1576425ecc1b677a7
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/334203
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Reviewed-by: Evan Shrubsole <eshr@google.com>
> Cr-Commit-Position: refs/heads/main@{#41540}
Bug: webrtc:15164
Change-Id: I28f3d588004ff185e5820347ad9513f2f7a6cc66
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/335020
Auto-Submit: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41556}
447 lines
19 KiB
C++
447 lines
19 KiB
C++
/*
|
|
* Copyright 2016 The WebRTC Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "api/stats/rtcstats_objects.h"
|
|
|
|
#include <utility>
|
|
|
|
#include "api/stats/attribute.h"
|
|
#include "api/stats/rtc_stats.h"
|
|
#include "rtc_base/checks.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCCertificateStats, RTCStats, "certificate",
|
|
AttributeInit("fingerprint", &fingerprint),
|
|
AttributeInit("fingerprintAlgorithm", &fingerprint_algorithm),
|
|
AttributeInit("base64Certificate", &base64_certificate),
|
|
AttributeInit("issuerCertificateId", &issuer_certificate_id))
|
|
// clang-format on
|
|
|
|
RTCCertificateStats::RTCCertificateStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCCertificateStats::~RTCCertificateStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCCodecStats, RTCStats, "codec",
|
|
AttributeInit("transportId", &transport_id),
|
|
AttributeInit("payloadType", &payload_type),
|
|
AttributeInit("mimeType", &mime_type),
|
|
AttributeInit("clockRate", &clock_rate),
|
|
AttributeInit("channels", &channels),
|
|
AttributeInit("sdpFmtpLine", &sdp_fmtp_line))
|
|
// clang-format on
|
|
|
|
RTCCodecStats::RTCCodecStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCCodecStats::~RTCCodecStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCDataChannelStats, RTCStats, "data-channel",
|
|
AttributeInit("label", &label),
|
|
AttributeInit("protocol", &protocol),
|
|
AttributeInit("dataChannelIdentifier", &data_channel_identifier),
|
|
AttributeInit("state", &state),
|
|
AttributeInit("messagesSent", &messages_sent),
|
|
AttributeInit("bytesSent", &bytes_sent),
|
|
AttributeInit("messagesReceived", &messages_received),
|
|
AttributeInit("bytesReceived", &bytes_received))
|
|
// clang-format on
|
|
|
|
RTCDataChannelStats::RTCDataChannelStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCDataChannelStats::~RTCDataChannelStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair",
|
|
AttributeInit("transportId", &transport_id),
|
|
AttributeInit("localCandidateId", &local_candidate_id),
|
|
AttributeInit("remoteCandidateId", &remote_candidate_id),
|
|
AttributeInit("state", &state),
|
|
AttributeInit("priority", &priority),
|
|
AttributeInit("nominated", &nominated),
|
|
AttributeInit("writable", &writable),
|
|
AttributeInit("packetsSent", &packets_sent),
|
|
AttributeInit("packetsReceived", &packets_received),
|
|
AttributeInit("bytesSent", &bytes_sent),
|
|
AttributeInit("bytesReceived", &bytes_received),
|
|
AttributeInit("totalRoundTripTime", &total_round_trip_time),
|
|
AttributeInit("currentRoundTripTime", ¤t_round_trip_time),
|
|
AttributeInit("availableOutgoingBitrate", &available_outgoing_bitrate),
|
|
AttributeInit("availableIncomingBitrate", &available_incoming_bitrate),
|
|
AttributeInit("requestsReceived", &requests_received),
|
|
AttributeInit("requestsSent", &requests_sent),
|
|
AttributeInit("responsesReceived", &responses_received),
|
|
AttributeInit("responsesSent", &responses_sent),
|
|
AttributeInit("consentRequestsSent", &consent_requests_sent),
|
|
AttributeInit("packetsDiscardedOnSend", &packets_discarded_on_send),
|
|
AttributeInit("bytesDiscardedOnSend", &bytes_discarded_on_send),
|
|
AttributeInit("lastPacketReceivedTimestamp",
|
|
&last_packet_received_timestamp),
|
|
AttributeInit("lastPacketSentTimestamp", &last_packet_sent_timestamp))
|
|
// clang-format on
|
|
|
|
RTCIceCandidatePairStats::RTCIceCandidatePairStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCIceCandidatePairStats::~RTCIceCandidatePairStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCIceCandidateStats, RTCStats, "abstract-ice-candidate",
|
|
AttributeInit("transportId", &transport_id),
|
|
AttributeInit("isRemote", &is_remote),
|
|
AttributeInit("networkType", &network_type),
|
|
AttributeInit("ip", &ip),
|
|
AttributeInit("address", &address),
|
|
AttributeInit("port", &port),
|
|
AttributeInit("protocol", &protocol),
|
|
AttributeInit("relayProtocol", &relay_protocol),
|
|
AttributeInit("candidateType", &candidate_type),
|
|
AttributeInit("priority", &priority),
|
|
AttributeInit("url", &url),
|
|
AttributeInit("foundation", &foundation),
|
|
AttributeInit("relatedAddress", &related_address),
|
|
AttributeInit("relatedPort", &related_port),
|
|
AttributeInit("usernameFragment", &username_fragment),
|
|
AttributeInit("tcpType", &tcp_type),
|
|
AttributeInit("vpn", &vpn),
|
|
AttributeInit("networkAdapterType", &network_adapter_type))
|
|
// clang-format on
|
|
|
|
RTCIceCandidateStats::RTCIceCandidateStats(std::string id,
|
|
Timestamp timestamp,
|
|
bool is_remote)
|
|
: RTCStats(std::move(id), timestamp), is_remote(is_remote) {}
|
|
|
|
RTCIceCandidateStats::~RTCIceCandidateStats() {}
|
|
|
|
const char RTCLocalIceCandidateStats::kType[] = "local-candidate";
|
|
|
|
RTCLocalIceCandidateStats::RTCLocalIceCandidateStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCIceCandidateStats(std::move(id), timestamp, false) {}
|
|
|
|
std::unique_ptr<RTCStats> RTCLocalIceCandidateStats::copy() const {
|
|
return std::make_unique<RTCLocalIceCandidateStats>(*this);
|
|
}
|
|
|
|
const char* RTCLocalIceCandidateStats::type() const {
|
|
return kType;
|
|
}
|
|
|
|
const char RTCRemoteIceCandidateStats::kType[] = "remote-candidate";
|
|
|
|
RTCRemoteIceCandidateStats::RTCRemoteIceCandidateStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCIceCandidateStats(std::move(id), timestamp, true) {}
|
|
|
|
std::unique_ptr<RTCStats> RTCRemoteIceCandidateStats::copy() const {
|
|
return std::make_unique<RTCRemoteIceCandidateStats>(*this);
|
|
}
|
|
|
|
const char* RTCRemoteIceCandidateStats::type() const {
|
|
return kType;
|
|
}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCPeerConnectionStats, RTCStats, "peer-connection",
|
|
AttributeInit("dataChannelsOpened", &data_channels_opened),
|
|
AttributeInit("dataChannelsClosed", &data_channels_closed))
|
|
// clang-format on
|
|
|
|
RTCPeerConnectionStats::RTCPeerConnectionStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCPeerConnectionStats::~RTCPeerConnectionStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCRtpStreamStats, RTCStats, "rtp",
|
|
AttributeInit("ssrc", &ssrc),
|
|
AttributeInit("kind", &kind),
|
|
AttributeInit("transportId", &transport_id),
|
|
AttributeInit("codecId", &codec_id))
|
|
// clang-format on
|
|
|
|
RTCRtpStreamStats::RTCRtpStreamStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCRtpStreamStats::~RTCRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(
|
|
RTCReceivedRtpStreamStats, RTCRtpStreamStats, "received-rtp",
|
|
AttributeInit("jitter", &jitter),
|
|
AttributeInit("packetsLost", &packets_lost))
|
|
// clang-format on
|
|
|
|
RTCReceivedRtpStreamStats::RTCReceivedRtpStreamStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCReceivedRtpStreamStats::~RTCReceivedRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCSentRtpStreamStats, RTCRtpStreamStats, "sent-rtp",
|
|
AttributeInit("packetsSent", &packets_sent),
|
|
AttributeInit("bytesSent", &bytes_sent))
|
|
// clang-format on
|
|
|
|
RTCSentRtpStreamStats::RTCSentRtpStreamStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCSentRtpStreamStats::~RTCSentRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(
|
|
RTCInboundRtpStreamStats, RTCReceivedRtpStreamStats, "inbound-rtp",
|
|
AttributeInit("playoutId", &playout_id),
|
|
AttributeInit("trackIdentifier", &track_identifier),
|
|
AttributeInit("mid", &mid),
|
|
AttributeInit("remoteId", &remote_id),
|
|
AttributeInit("packetsReceived", &packets_received),
|
|
AttributeInit("packetsDiscarded", &packets_discarded),
|
|
AttributeInit("fecPacketsReceived", &fec_packets_received),
|
|
AttributeInit("fecBytesReceived", &fec_bytes_received),
|
|
AttributeInit("fecPacketsDiscarded", &fec_packets_discarded),
|
|
AttributeInit("fecSsrc", &fec_ssrc),
|
|
AttributeInit("bytesReceived", &bytes_received),
|
|
AttributeInit("headerBytesReceived", &header_bytes_received),
|
|
AttributeInit("retransmittedPacketsReceived",
|
|
&retransmitted_packets_received),
|
|
AttributeInit("retransmittedBytesReceived", &retransmitted_bytes_received),
|
|
AttributeInit("rtxSsrc", &rtx_ssrc),
|
|
AttributeInit("lastPacketReceivedTimestamp",
|
|
&last_packet_received_timestamp),
|
|
AttributeInit("jitterBufferDelay", &jitter_buffer_delay),
|
|
AttributeInit("jitterBufferTargetDelay", &jitter_buffer_target_delay),
|
|
AttributeInit("jitterBufferMinimumDelay", &jitter_buffer_minimum_delay),
|
|
AttributeInit("jitterBufferEmittedCount", &jitter_buffer_emitted_count),
|
|
AttributeInit("totalSamplesReceived", &total_samples_received),
|
|
AttributeInit("concealedSamples", &concealed_samples),
|
|
AttributeInit("silentConcealedSamples", &silent_concealed_samples),
|
|
AttributeInit("concealmentEvents", &concealment_events),
|
|
AttributeInit("insertedSamplesForDeceleration",
|
|
&inserted_samples_for_deceleration),
|
|
AttributeInit("removedSamplesForAcceleration",
|
|
&removed_samples_for_acceleration),
|
|
AttributeInit("audioLevel", &audio_level),
|
|
AttributeInit("totalAudioEnergy", &total_audio_energy),
|
|
AttributeInit("totalSamplesDuration", &total_samples_duration),
|
|
AttributeInit("framesReceived", &frames_received),
|
|
AttributeInit("frameWidth", &frame_width),
|
|
AttributeInit("frameHeight", &frame_height),
|
|
AttributeInit("framesPerSecond", &frames_per_second),
|
|
AttributeInit("framesDecoded", &frames_decoded),
|
|
AttributeInit("keyFramesDecoded", &key_frames_decoded),
|
|
AttributeInit("framesDropped", &frames_dropped),
|
|
AttributeInit("totalDecodeTime", &total_decode_time),
|
|
AttributeInit("totalProcessingDelay", &total_processing_delay),
|
|
AttributeInit("totalAssemblyTime", &total_assembly_time),
|
|
AttributeInit("framesAssembledFromMultiplePackets",
|
|
&frames_assembled_from_multiple_packets),
|
|
AttributeInit("totalInterFrameDelay", &total_inter_frame_delay),
|
|
AttributeInit("totalSquaredInterFrameDelay",
|
|
&total_squared_inter_frame_delay),
|
|
AttributeInit("pauseCount", &pause_count),
|
|
AttributeInit("totalPausesDuration", &total_pauses_duration),
|
|
AttributeInit("freezeCount", &freeze_count),
|
|
AttributeInit("totalFreezesDuration", &total_freezes_duration),
|
|
AttributeInit("contentType", &content_type),
|
|
AttributeInit("estimatedPlayoutTimestamp", &estimated_playout_timestamp),
|
|
AttributeInit("decoderImplementation", &decoder_implementation),
|
|
AttributeInit("firCount", &fir_count),
|
|
AttributeInit("pliCount", &pli_count),
|
|
AttributeInit("nackCount", &nack_count),
|
|
AttributeInit("qpSum", &qp_sum),
|
|
AttributeInit("googTimingFrameInfo", &goog_timing_frame_info),
|
|
AttributeInit("powerEfficientDecoder", &power_efficient_decoder),
|
|
AttributeInit("jitterBufferFlushes", &jitter_buffer_flushes),
|
|
AttributeInit("delayedPacketOutageSamples", &delayed_packet_outage_samples),
|
|
AttributeInit("relativePacketArrivalDelay", &relative_packet_arrival_delay),
|
|
AttributeInit("interruptionCount", &interruption_count),
|
|
AttributeInit("totalInterruptionDuration", &total_interruption_duration),
|
|
AttributeInit("minPlayoutDelay", &min_playout_delay))
|
|
// clang-format on
|
|
|
|
RTCInboundRtpStreamStats::RTCInboundRtpStreamStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCReceivedRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCInboundRtpStreamStats::~RTCInboundRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(
|
|
RTCOutboundRtpStreamStats, RTCSentRtpStreamStats, "outbound-rtp",
|
|
AttributeInit("mediaSourceId", &media_source_id),
|
|
AttributeInit("remoteId", &remote_id),
|
|
AttributeInit("mid", &mid),
|
|
AttributeInit("rid", &rid),
|
|
AttributeInit("retransmittedPacketsSent", &retransmitted_packets_sent),
|
|
AttributeInit("headerBytesSent", &header_bytes_sent),
|
|
AttributeInit("retransmittedBytesSent", &retransmitted_bytes_sent),
|
|
AttributeInit("targetBitrate", &target_bitrate),
|
|
AttributeInit("framesEncoded", &frames_encoded),
|
|
AttributeInit("keyFramesEncoded", &key_frames_encoded),
|
|
AttributeInit("totalEncodeTime", &total_encode_time),
|
|
AttributeInit("totalEncodedBytesTarget", &total_encoded_bytes_target),
|
|
AttributeInit("frameWidth", &frame_width),
|
|
AttributeInit("frameHeight", &frame_height),
|
|
AttributeInit("framesPerSecond", &frames_per_second),
|
|
AttributeInit("framesSent", &frames_sent),
|
|
AttributeInit("hugeFramesSent", &huge_frames_sent),
|
|
AttributeInit("totalPacketSendDelay", &total_packet_send_delay),
|
|
AttributeInit("qualityLimitationReason", &quality_limitation_reason),
|
|
AttributeInit("qualityLimitationDurations", &quality_limitation_durations),
|
|
AttributeInit("qualityLimitationResolutionChanges",
|
|
&quality_limitation_resolution_changes),
|
|
AttributeInit("contentType", &content_type),
|
|
AttributeInit("encoderImplementation", &encoder_implementation),
|
|
AttributeInit("firCount", &fir_count),
|
|
AttributeInit("pliCount", &pli_count),
|
|
AttributeInit("nackCount", &nack_count),
|
|
AttributeInit("qpSum", &qp_sum),
|
|
AttributeInit("active", &active),
|
|
AttributeInit("powerEfficientEncoder", &power_efficient_encoder),
|
|
AttributeInit("scalabilityMode", &scalability_mode),
|
|
AttributeInit("rtxSsrc", &rtx_ssrc))
|
|
// clang-format on
|
|
|
|
RTCOutboundRtpStreamStats::RTCOutboundRtpStreamStats(std::string id,
|
|
Timestamp timestamp)
|
|
: RTCSentRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCOutboundRtpStreamStats::~RTCOutboundRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(
|
|
RTCRemoteInboundRtpStreamStats, RTCReceivedRtpStreamStats,
|
|
"remote-inbound-rtp",
|
|
AttributeInit("localId", &local_id),
|
|
AttributeInit("roundTripTime", &round_trip_time),
|
|
AttributeInit("fractionLost", &fraction_lost),
|
|
AttributeInit("totalRoundTripTime", &total_round_trip_time),
|
|
AttributeInit("roundTripTimeMeasurements", &round_trip_time_measurements))
|
|
// clang-format on
|
|
|
|
RTCRemoteInboundRtpStreamStats::RTCRemoteInboundRtpStreamStats(
|
|
std::string id,
|
|
Timestamp timestamp)
|
|
: RTCReceivedRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCRemoteInboundRtpStreamStats::~RTCRemoteInboundRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(
|
|
RTCRemoteOutboundRtpStreamStats, RTCSentRtpStreamStats,
|
|
"remote-outbound-rtp",
|
|
AttributeInit("localId", &local_id),
|
|
AttributeInit("remoteTimestamp", &remote_timestamp),
|
|
AttributeInit("reportsSent", &reports_sent),
|
|
AttributeInit("roundTripTime", &round_trip_time),
|
|
AttributeInit("roundTripTimeMeasurements", &round_trip_time_measurements),
|
|
AttributeInit("totalRoundTripTime", &total_round_trip_time))
|
|
// clang-format on
|
|
|
|
RTCRemoteOutboundRtpStreamStats::RTCRemoteOutboundRtpStreamStats(
|
|
std::string id,
|
|
Timestamp timestamp)
|
|
: RTCSentRtpStreamStats(std::move(id), timestamp) {}
|
|
|
|
RTCRemoteOutboundRtpStreamStats::~RTCRemoteOutboundRtpStreamStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCMediaSourceStats, RTCStats, "parent-media-source",
|
|
AttributeInit("trackIdentifier", &track_identifier),
|
|
AttributeInit("kind", &kind))
|
|
// clang-format on
|
|
|
|
RTCMediaSourceStats::RTCMediaSourceStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCMediaSourceStats::~RTCMediaSourceStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCAudioSourceStats, RTCMediaSourceStats, "media-source",
|
|
AttributeInit("audioLevel", &audio_level),
|
|
AttributeInit("totalAudioEnergy", &total_audio_energy),
|
|
AttributeInit("totalSamplesDuration", &total_samples_duration),
|
|
AttributeInit("echoReturnLoss", &echo_return_loss),
|
|
AttributeInit("echoReturnLossEnhancement", &echo_return_loss_enhancement))
|
|
// clang-format on
|
|
|
|
RTCAudioSourceStats::RTCAudioSourceStats(std::string id, Timestamp timestamp)
|
|
: RTCMediaSourceStats(std::move(id), timestamp) {}
|
|
|
|
RTCAudioSourceStats::~RTCAudioSourceStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCVideoSourceStats, RTCMediaSourceStats, "media-source",
|
|
AttributeInit("width", &width),
|
|
AttributeInit("height", &height),
|
|
AttributeInit("frames", &frames),
|
|
AttributeInit("framesPerSecond", &frames_per_second))
|
|
// clang-format on
|
|
|
|
RTCVideoSourceStats::RTCVideoSourceStats(std::string id, Timestamp timestamp)
|
|
: RTCMediaSourceStats(std::move(id), timestamp) {}
|
|
|
|
RTCVideoSourceStats::~RTCVideoSourceStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCTransportStats, RTCStats, "transport",
|
|
AttributeInit("bytesSent", &bytes_sent),
|
|
AttributeInit("packetsSent", &packets_sent),
|
|
AttributeInit("bytesReceived", &bytes_received),
|
|
AttributeInit("packetsReceived", &packets_received),
|
|
AttributeInit("rtcpTransportStatsId", &rtcp_transport_stats_id),
|
|
AttributeInit("dtlsState", &dtls_state),
|
|
AttributeInit("selectedCandidatePairId", &selected_candidate_pair_id),
|
|
AttributeInit("localCertificateId", &local_certificate_id),
|
|
AttributeInit("remoteCertificateId", &remote_certificate_id),
|
|
AttributeInit("tlsVersion", &tls_version),
|
|
AttributeInit("dtlsCipher", &dtls_cipher),
|
|
AttributeInit("dtlsRole", &dtls_role),
|
|
AttributeInit("srtpCipher", &srtp_cipher),
|
|
AttributeInit("selectedCandidatePairChanges",
|
|
&selected_candidate_pair_changes),
|
|
AttributeInit("iceRole", &ice_role),
|
|
AttributeInit("iceLocalUsernameFragment", &ice_local_username_fragment),
|
|
AttributeInit("iceState", &ice_state))
|
|
// clang-format on
|
|
|
|
RTCTransportStats::RTCTransportStats(std::string id, Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp) {}
|
|
|
|
RTCTransportStats::~RTCTransportStats() {}
|
|
|
|
// clang-format off
|
|
WEBRTC_RTCSTATS_IMPL(RTCAudioPlayoutStats, RTCStats, "media-playout",
|
|
AttributeInit("kind", &kind),
|
|
AttributeInit("synthesizedSamplesDuration", &synthesized_samples_duration),
|
|
AttributeInit("synthesizedSamplesEvents", &synthesized_samples_events),
|
|
AttributeInit("totalSamplesDuration", &total_samples_duration),
|
|
AttributeInit("totalPlayoutDelay", &total_playout_delay),
|
|
AttributeInit("totalSamplesCount", &total_samples_count))
|
|
// clang-format on
|
|
|
|
RTCAudioPlayoutStats::RTCAudioPlayoutStats(const std::string& id,
|
|
Timestamp timestamp)
|
|
: RTCStats(std::move(id), timestamp), kind("audio") {}
|
|
|
|
RTCAudioPlayoutStats::~RTCAudioPlayoutStats() {}
|
|
|
|
} // namespace webrtc
|