2016-08-30 14:04:35 -07:00
|
|
|
/*
|
|
|
|
|
* 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.
|
|
|
|
|
*/
|
|
|
|
|
|
2016-09-15 23:33:01 -07:00
|
|
|
#ifndef WEBRTC_API_STATS_RTCSTATS_OBJECTS_H_
|
|
|
|
|
#define WEBRTC_API_STATS_RTCSTATS_OBJECTS_H_
|
2016-08-30 14:04:35 -07:00
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
2016-09-15 23:33:01 -07:00
|
|
|
#include "webrtc/api/stats/rtcstats.h"
|
2016-08-30 14:04:35 -07:00
|
|
|
|
|
|
|
|
namespace webrtc {
|
|
|
|
|
|
2016-10-18 12:48:31 -07:00
|
|
|
// https://w3c.github.io/webrtc-pc/#idl-def-rtcdatachannelstate
|
|
|
|
|
struct RTCDataChannelState {
|
|
|
|
|
static const char* kConnecting;
|
|
|
|
|
static const char* kOpen;
|
|
|
|
|
static const char* kClosing;
|
|
|
|
|
static const char* kClosed;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-11 14:54:49 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#dom-rtcstatsicecandidatepairstate
|
|
|
|
|
struct RTCStatsIceCandidatePairState {
|
|
|
|
|
static const char* kFrozen;
|
|
|
|
|
static const char* kWaiting;
|
|
|
|
|
static const char* kInProgress;
|
|
|
|
|
static const char* kFailed;
|
|
|
|
|
static const char* kSucceeded;
|
|
|
|
|
static const char* kCancelled;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-18 12:48:31 -07:00
|
|
|
// https://w3c.github.io/webrtc-pc/#rtcicecandidatetype-enum
|
2016-10-07 02:18:47 -07:00
|
|
|
struct RTCIceCandidateType {
|
|
|
|
|
static const char* kHost;
|
|
|
|
|
static const char* kSrflx;
|
|
|
|
|
static const char* kPrflx;
|
|
|
|
|
static const char* kRelay;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-24 04:00:05 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#certificatestats-dict*
|
|
|
|
|
class RTCCertificateStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCCertificateStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCCertificateStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCCertificateStats(const RTCCertificateStats& other);
|
|
|
|
|
~RTCCertificateStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> fingerprint;
|
|
|
|
|
RTCStatsMember<std::string> fingerprint_algorithm;
|
|
|
|
|
RTCStatsMember<std::string> base64_certificate;
|
|
|
|
|
RTCStatsMember<std::string> issuer_certificate_id;
|
|
|
|
|
};
|
|
|
|
|
|
2016-11-23 02:32:06 -08:00
|
|
|
// https://w3c.github.io/webrtc-stats/#codec-dict*
|
|
|
|
|
// Tracking bug crbug.com/659117
|
|
|
|
|
// TODO(hbos): The present codec ID assignment is not sufficient to support
|
|
|
|
|
// Unified Plan or unbundled connections in all cases. crbug.com/659117
|
|
|
|
|
class RTCCodecStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCCodecStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCCodecStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCCodecStats(const RTCCodecStats& other);
|
|
|
|
|
~RTCCodecStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<uint32_t> payload_type;
|
|
|
|
|
RTCStatsMember<std::string> codec;
|
|
|
|
|
RTCStatsMember<uint32_t> clock_rate;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659117
|
|
|
|
|
RTCStatsMember<uint32_t> channels;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659117
|
|
|
|
|
RTCStatsMember<std::string> parameters;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659117
|
|
|
|
|
RTCStatsMember<std::string> implementation;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-24 04:00:05 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#dcstats-dict*
|
|
|
|
|
class RTCDataChannelStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCDataChannelStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCDataChannelStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCDataChannelStats(const RTCDataChannelStats& other);
|
|
|
|
|
~RTCDataChannelStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> label;
|
|
|
|
|
RTCStatsMember<std::string> protocol;
|
|
|
|
|
RTCStatsMember<int32_t> datachannelid;
|
|
|
|
|
// TODO(hbos): Support enum types? "RTCStatsMember<RTCDataChannelState>"?
|
|
|
|
|
RTCStatsMember<std::string> state;
|
|
|
|
|
RTCStatsMember<uint32_t> messages_sent;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_sent;
|
|
|
|
|
RTCStatsMember<uint32_t> messages_received;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_received;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// https://w3c.github.io/webrtc-stats/#candidatepair-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// TODO(hbos): Tracking bug crbug.com/633550
|
2016-11-01 01:50:46 -07:00
|
|
|
class RTCIceCandidatePairStats final : public RTCStats {
|
2016-10-11 14:54:49 -07:00
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCIceCandidatePairStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCIceCandidatePairStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCIceCandidatePairStats(const RTCIceCandidatePairStats& other);
|
|
|
|
|
~RTCIceCandidatePairStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> transport_id;
|
|
|
|
|
RTCStatsMember<std::string> local_candidate_id;
|
|
|
|
|
RTCStatsMember<std::string> remote_candidate_id;
|
|
|
|
|
// TODO(hbos): Support enum types?
|
|
|
|
|
// "RTCStatsMember<RTCStatsIceCandidatePairState>"?
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<std::string> state;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> priority;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<bool> nominated;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Collected by |RTCStatsCollector| but different than the spec.
|
|
|
|
|
// crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<bool> writable;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<bool> readable;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_sent;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_received;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<double> total_rtt;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Collected by |RTCStatsCollector| but different than the spec.
|
|
|
|
|
// crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<double> current_rtt;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<double> available_outgoing_bitrate;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<double> available_incoming_bitrate;
|
|
|
|
|
RTCStatsMember<uint64_t> requests_received;
|
|
|
|
|
RTCStatsMember<uint64_t> requests_sent;
|
|
|
|
|
RTCStatsMember<uint64_t> responses_received;
|
|
|
|
|
RTCStatsMember<uint64_t> responses_sent;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> retransmissions_received;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> retransmissions_sent;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> consent_requests_received;
|
|
|
|
|
RTCStatsMember<uint64_t> consent_requests_sent;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> consent_responses_received;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/633550
|
2016-10-11 14:54:49 -07:00
|
|
|
RTCStatsMember<uint64_t> consent_responses_sent;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-07 02:18:47 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#icecandidate-dict*
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): |RTCStatsCollector| only collects candidates that are part of
|
|
|
|
|
// ice candidate pairs, but there could be candidates not paired with anything.
|
|
|
|
|
// crbug.com/632723
|
2016-10-07 02:18:47 -07:00
|
|
|
class RTCIceCandidateStats : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCIceCandidateStats(const RTCIceCandidateStats& other);
|
|
|
|
|
~RTCIceCandidateStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> ip;
|
|
|
|
|
RTCStatsMember<int32_t> port;
|
|
|
|
|
RTCStatsMember<std::string> protocol;
|
|
|
|
|
// TODO(hbos): Support enum types? "RTCStatsMember<RTCIceCandidateType>"?
|
|
|
|
|
RTCStatsMember<std::string> candidate_type;
|
|
|
|
|
RTCStatsMember<int32_t> priority;
|
2016-10-24 09:27:10 -07:00
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/632723
|
2016-10-07 02:18:47 -07:00
|
|
|
RTCStatsMember<std::string> url;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
RTCIceCandidateStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCIceCandidateStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// In the spec both local and remote varieties are of type RTCIceCandidateStats.
|
|
|
|
|
// But here we define them as subclasses of |RTCIceCandidateStats| because the
|
|
|
|
|
// |kType| need to be different ("RTCStatsType type") in the local/remote case.
|
|
|
|
|
// https://w3c.github.io/webrtc-stats/#rtcstatstype-str*
|
|
|
|
|
class RTCLocalIceCandidateStats final : public RTCIceCandidateStats {
|
|
|
|
|
public:
|
|
|
|
|
static const char kType[];
|
|
|
|
|
RTCLocalIceCandidateStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCLocalIceCandidateStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
const char* type() const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class RTCRemoteIceCandidateStats final : public RTCIceCandidateStats {
|
|
|
|
|
public:
|
|
|
|
|
static const char kType[];
|
|
|
|
|
RTCRemoteIceCandidateStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCRemoteIceCandidateStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
const char* type() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2016-11-08 06:29:22 -08:00
|
|
|
// https://w3c.github.io/webrtc-stats/#msstats-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// TODO(hbos): Tracking bug crbug.com/660827
|
2016-11-08 06:29:22 -08:00
|
|
|
class RTCMediaStreamStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCMediaStreamStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCMediaStreamStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCMediaStreamStats(const RTCMediaStreamStats& other);
|
|
|
|
|
~RTCMediaStreamStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> stream_identifier;
|
|
|
|
|
RTCStatsMember<std::vector<std::string>> track_ids;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// https://w3c.github.io/webrtc-stats/#mststats-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// TODO(hbos): Tracking bug crbug.com/659137
|
2016-11-08 06:29:22 -08:00
|
|
|
class RTCMediaStreamTrackStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCMediaStreamTrackStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCMediaStreamTrackStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCMediaStreamTrackStats(const RTCMediaStreamTrackStats& other);
|
|
|
|
|
~RTCMediaStreamTrackStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> track_identifier;
|
|
|
|
|
RTCStatsMember<bool> remote_source;
|
|
|
|
|
RTCStatsMember<bool> ended;
|
|
|
|
|
// TODO(hbos): |RTCStatsCollector| does not return stats for detached tracks.
|
|
|
|
|
// crbug.com/659137
|
|
|
|
|
RTCStatsMember<bool> detached;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
RTCStatsMember<std::vector<std::string>> ssrc_ids;
|
|
|
|
|
// Video-only members
|
|
|
|
|
RTCStatsMember<uint32_t> frame_width;
|
|
|
|
|
RTCStatsMember<uint32_t> frame_height;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
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;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
RTCStatsMember<uint32_t> frames_dropped;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
RTCStatsMember<uint32_t> frames_corrupted;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
RTCStatsMember<uint32_t> partial_frames_lost;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
|
|
|
|
|
RTCStatsMember<uint32_t> full_frames_lost;
|
|
|
|
|
// Audio-only members
|
|
|
|
|
RTCStatsMember<double> audio_level;
|
|
|
|
|
RTCStatsMember<double> echo_return_loss;
|
|
|
|
|
RTCStatsMember<double> echo_return_loss_enhancement;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-03 14:16:56 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#pcstats-dict*
|
2016-10-07 02:18:47 -07:00
|
|
|
class RTCPeerConnectionStats final : public RTCStats {
|
2016-08-30 14:04:35 -07:00
|
|
|
public:
|
2016-10-06 02:06:10 -07:00
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
2016-08-31 07:57:36 -07:00
|
|
|
RTCPeerConnectionStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCPeerConnectionStats(std::string&& id, int64_t timestamp_us);
|
2016-10-06 02:06:10 -07:00
|
|
|
RTCPeerConnectionStats(const RTCPeerConnectionStats& other);
|
|
|
|
|
~RTCPeerConnectionStats() override;
|
2016-08-30 14:04:35 -07:00
|
|
|
|
|
|
|
|
RTCStatsMember<uint32_t> data_channels_opened;
|
|
|
|
|
RTCStatsMember<uint32_t> data_channels_closed;
|
|
|
|
|
};
|
|
|
|
|
|
2016-11-01 01:50:46 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#streamstats-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// TODO(hbos): Tracking bug crbug.com/657854
|
2016-11-01 01:50:46 -07:00
|
|
|
class RTCRTPStreamStats : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCRTPStreamStats(const RTCRTPStreamStats& other);
|
|
|
|
|
~RTCRTPStreamStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<std::string> ssrc;
|
|
|
|
|
// TODO(hbos): When the remote case is supported |RTCStatsCollector| needs to
|
|
|
|
|
// set this. crbug.com/657855, 657856
|
|
|
|
|
RTCStatsMember<std::string> associate_stats_id;
|
|
|
|
|
// TODO(hbos): Remote case not supported by |RTCStatsCollector|.
|
|
|
|
|
// crbug.com/657855, 657856
|
|
|
|
|
RTCStatsMember<bool> is_remote; // = false
|
|
|
|
|
RTCStatsMember<std::string> media_type;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657854, 659137
|
|
|
|
|
RTCStatsMember<std::string> media_track_id;
|
|
|
|
|
RTCStatsMember<std::string> transport_id;
|
|
|
|
|
RTCStatsMember<std::string> codec_id;
|
|
|
|
|
// FIR and PLI counts are only defined for |media_type == "video"|.
|
|
|
|
|
RTCStatsMember<uint32_t> fir_count;
|
|
|
|
|
RTCStatsMember<uint32_t> pli_count;
|
|
|
|
|
// TODO(hbos): NACK count should be collected by |RTCStatsCollector| for both
|
|
|
|
|
// audio and video but is only defined in the "video" case. crbug.com/657856
|
|
|
|
|
RTCStatsMember<uint32_t> nack_count;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657854
|
|
|
|
|
// SLI count is only defined for |media_type == "video"|.
|
|
|
|
|
RTCStatsMember<uint32_t> sli_count;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
RTCRTPStreamStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCRTPStreamStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
};
|
|
|
|
|
|
2016-11-01 03:00:17 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// Tracking bug crbug.com/657855
|
|
|
|
|
// TODO(hbos): Support the remote case |is_remote = true|. crbug.com/657855
|
2016-11-01 03:00:17 -07:00
|
|
|
class RTCInboundRTPStreamStats final : public RTCRTPStreamStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCInboundRTPStreamStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCInboundRTPStreamStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCInboundRTPStreamStats(const RTCInboundRTPStreamStats& other);
|
|
|
|
|
~RTCInboundRTPStreamStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<uint32_t> packets_received;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_received;
|
|
|
|
|
RTCStatsMember<uint32_t> packets_lost;
|
|
|
|
|
// TODO(hbos): Not collected in the "video" case by |RTCStatsCollector|.
|
|
|
|
|
// crbug.com/657855
|
|
|
|
|
RTCStatsMember<double> jitter;
|
|
|
|
|
RTCStatsMember<double> fraction_lost;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> packets_discarded;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> packets_repaired;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> burst_packets_lost;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> burst_packets_discarded;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> burst_loss_count;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<uint32_t> burst_discard_count;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<double> burst_loss_rate;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<double> burst_discard_rate;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<double> gap_loss_rate;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
|
|
|
|
|
RTCStatsMember<double> gap_discard_rate;
|
|
|
|
|
};
|
|
|
|
|
|
2016-11-01 01:50:46 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*
|
2016-11-23 02:32:06 -08:00
|
|
|
// Tracking bug crbug.com/657856
|
|
|
|
|
// TODO(hbos): Support the remote case |is_remote = true|. crbug.com/657856
|
2016-11-01 01:50:46 -07:00
|
|
|
class RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCOutboundRTPStreamStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCOutboundRTPStreamStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCOutboundRTPStreamStats(const RTCOutboundRTPStreamStats& other);
|
|
|
|
|
~RTCOutboundRTPStreamStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<uint32_t> packets_sent;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_sent;
|
|
|
|
|
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657856
|
|
|
|
|
RTCStatsMember<double> target_bitrate;
|
|
|
|
|
RTCStatsMember<double> round_trip_time;
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-24 04:00:05 -07:00
|
|
|
// https://w3c.github.io/webrtc-stats/#transportstats-dict*
|
|
|
|
|
class RTCTransportStats final : public RTCStats {
|
|
|
|
|
public:
|
|
|
|
|
WEBRTC_RTCSTATS_DECL();
|
|
|
|
|
|
|
|
|
|
RTCTransportStats(const std::string& id, int64_t timestamp_us);
|
|
|
|
|
RTCTransportStats(std::string&& id, int64_t timestamp_us);
|
|
|
|
|
RTCTransportStats(const RTCTransportStats& other);
|
|
|
|
|
~RTCTransportStats() override;
|
|
|
|
|
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_sent;
|
|
|
|
|
RTCStatsMember<uint64_t> bytes_received;
|
|
|
|
|
RTCStatsMember<std::string> rtcp_transport_stats_id;
|
|
|
|
|
RTCStatsMember<bool> active_connection;
|
|
|
|
|
RTCStatsMember<std::string> selected_candidate_pair_id;
|
|
|
|
|
RTCStatsMember<std::string> local_certificate_id;
|
|
|
|
|
RTCStatsMember<std::string> remote_certificate_id;
|
|
|
|
|
};
|
|
|
|
|
|
2016-08-30 14:04:35 -07:00
|
|
|
} // namespace webrtc
|
|
|
|
|
|
2016-09-15 23:33:01 -07:00
|
|
|
#endif // WEBRTC_API_STATS_RTCSTATS_OBJECTS_H_
|