Moves logged event structs to separate header.
Bug: webrtc:10170
Change-Id: I2f6f5b9688f5064fc476063e4e64ac3f9a335b3c
Reviewed-on: https://webrtc-review.googlesource.com/c/116061
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26123}
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index 27be9d5..3eda875 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -290,6 +290,7 @@
rtc_static_library("rtc_event_log_parser") {
visibility = [ "*" ]
sources = [
+ "rtc_event_log/logged_events.h",
"rtc_event_log/rtc_event_log_parser_new.cc",
"rtc_event_log/rtc_event_log_parser_new.h",
"rtc_event_log/rtc_event_processor.h",
diff --git a/logging/rtc_event_log/logged_events.h b/logging/rtc_event_log/logged_events.h
new file mode 100644
index 0000000..7ff7e2d
--- /dev/null
+++ b/logging/rtc_event_log/logged_events.h
@@ -0,0 +1,441 @@
+/*
+ * Copyright 2019 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.
+ */
+#ifndef LOGGING_RTC_EVENT_LOG_LOGGED_EVENTS_H_
+#define LOGGING_RTC_EVENT_LOG_LOGGED_EVENTS_H_
+
+#include <string>
+#include <vector>
+
+#include "api/rtp_headers.h"
+#include "logging/rtc_event_log/events/rtc_event_dtls_transport_state.h"
+#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h"
+#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h"
+#include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
+#include "logging/rtc_event_log/rtc_stream_config.h"
+#include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h"
+#include "modules/remote_bitrate_estimator/include/bwe_defines.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/nack.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/remb.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
+
+namespace webrtc {
+
+// The different event types are deliberately POD. Analysis of large logs is
+// already resource intensive. The code simplifications that would be possible
+// possible by having a base class (containing e.g. the log time) are not
+// considered to outweigh the added memory and runtime overhead incurred by
+// adding a vptr.
+struct LoggedAlrStateEvent {
+ LoggedAlrStateEvent() = default;
+ LoggedAlrStateEvent(int64_t timestamp_us, bool in_alr)
+ : timestamp_us(timestamp_us), in_alr(in_alr) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ bool in_alr;
+};
+
+struct LoggedAudioPlayoutEvent {
+ LoggedAudioPlayoutEvent() = default;
+ LoggedAudioPlayoutEvent(int64_t timestamp_us, uint32_t ssrc)
+ : timestamp_us(timestamp_us), ssrc(ssrc) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ uint32_t ssrc;
+};
+
+struct LoggedAudioNetworkAdaptationEvent {
+ LoggedAudioNetworkAdaptationEvent() = default;
+ LoggedAudioNetworkAdaptationEvent(int64_t timestamp_us,
+ const AudioEncoderRuntimeConfig& config)
+ : timestamp_us(timestamp_us), config(config) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ AudioEncoderRuntimeConfig config;
+};
+
+struct LoggedBweDelayBasedUpdate {
+ LoggedBweDelayBasedUpdate() = default;
+ LoggedBweDelayBasedUpdate(int64_t timestamp_us,
+ int32_t bitrate_bps,
+ BandwidthUsage detector_state)
+ : timestamp_us(timestamp_us),
+ bitrate_bps(bitrate_bps),
+ detector_state(detector_state) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int32_t bitrate_bps;
+ BandwidthUsage detector_state;
+};
+
+struct LoggedBweLossBasedUpdate {
+ LoggedBweLossBasedUpdate() = default;
+ LoggedBweLossBasedUpdate(int64_t timestamp_us,
+ int32_t bitrate_bps,
+ uint8_t fraction_lost,
+ int32_t expected_packets)
+ : timestamp_us(timestamp_us),
+ bitrate_bps(bitrate_bps),
+ fraction_lost(fraction_lost),
+ expected_packets(expected_packets) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int32_t bitrate_bps;
+ uint8_t fraction_lost;
+ int32_t expected_packets;
+};
+
+struct LoggedDtlsTransportState {
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ DtlsTransportState dtls_transport_state;
+};
+
+struct LoggedDtlsWritableState {
+ LoggedDtlsWritableState() = default;
+ explicit LoggedDtlsWritableState(bool writable) : writable(writable) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ bool writable;
+};
+
+struct LoggedBweProbeClusterCreatedEvent {
+ LoggedBweProbeClusterCreatedEvent() = default;
+ LoggedBweProbeClusterCreatedEvent(int64_t timestamp_us,
+ int32_t id,
+ int32_t bitrate_bps,
+ uint32_t min_packets,
+ uint32_t min_bytes)
+ : timestamp_us(timestamp_us),
+ id(id),
+ bitrate_bps(bitrate_bps),
+ min_packets(min_packets),
+ min_bytes(min_bytes) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int32_t id;
+ int32_t bitrate_bps;
+ uint32_t min_packets;
+ uint32_t min_bytes;
+};
+
+struct LoggedBweProbeSuccessEvent {
+ LoggedBweProbeSuccessEvent() = default;
+ LoggedBweProbeSuccessEvent(int64_t timestamp_us,
+ int32_t id,
+ int32_t bitrate_bps)
+ : timestamp_us(timestamp_us), id(id), bitrate_bps(bitrate_bps) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int32_t id;
+ int32_t bitrate_bps;
+};
+
+struct LoggedBweProbeFailureEvent {
+ LoggedBweProbeFailureEvent() = default;
+ LoggedBweProbeFailureEvent(int64_t timestamp_us,
+ int32_t id,
+ ProbeFailureReason failure_reason)
+ : timestamp_us(timestamp_us), id(id), failure_reason(failure_reason) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int32_t id;
+ ProbeFailureReason failure_reason;
+};
+
+struct LoggedIceCandidatePairConfig {
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ IceCandidatePairConfigType type;
+ uint32_t candidate_pair_id;
+ IceCandidateType local_candidate_type;
+ IceCandidatePairProtocol local_relay_protocol;
+ IceCandidateNetworkType local_network_type;
+ IceCandidatePairAddressFamily local_address_family;
+ IceCandidateType remote_candidate_type;
+ IceCandidatePairAddressFamily remote_address_family;
+ IceCandidatePairProtocol candidate_pair_protocol;
+};
+
+struct LoggedIceCandidatePairEvent {
+ LoggedIceCandidatePairEvent() = default;
+ LoggedIceCandidatePairEvent(int64_t timestamp_us,
+ IceCandidatePairEventType type,
+ uint32_t candidate_pair_id,
+ uint32_t transaction_id)
+ : timestamp_us(timestamp_us),
+ type(type),
+ candidate_pair_id(candidate_pair_id),
+ transaction_id(transaction_id) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ IceCandidatePairEventType type;
+ uint32_t candidate_pair_id;
+ uint32_t transaction_id;
+};
+
+struct LoggedRtpPacket {
+ LoggedRtpPacket(uint64_t timestamp_us,
+ RTPHeader header,
+ size_t header_length,
+ size_t total_length)
+ : timestamp_us(timestamp_us),
+ header(header),
+ header_length(header_length),
+ total_length(total_length) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ // TODO(terelius): This allocates space for 15 CSRCs even if none are used.
+ RTPHeader header;
+ size_t header_length;
+ size_t total_length;
+};
+
+struct LoggedRtpPacketIncoming {
+ LoggedRtpPacketIncoming(uint64_t timestamp_us,
+ RTPHeader header,
+ size_t header_length,
+ size_t total_length)
+ : rtp(timestamp_us, header, header_length, total_length) {}
+ int64_t log_time_us() const { return rtp.timestamp_us; }
+ int64_t log_time_ms() const { return rtp.timestamp_us / 1000; }
+
+ LoggedRtpPacket rtp;
+};
+
+struct LoggedRtpPacketOutgoing {
+ LoggedRtpPacketOutgoing(uint64_t timestamp_us,
+ RTPHeader header,
+ size_t header_length,
+ size_t total_length)
+ : rtp(timestamp_us, header, header_length, total_length) {}
+ int64_t log_time_us() const { return rtp.timestamp_us; }
+ int64_t log_time_ms() const { return rtp.timestamp_us / 1000; }
+
+ LoggedRtpPacket rtp;
+};
+
+struct LoggedRtcpPacket {
+ LoggedRtcpPacket(uint64_t timestamp_us,
+ const uint8_t* packet,
+ size_t total_length);
+ LoggedRtcpPacket(uint64_t timestamp_us, const std::string& packet);
+ LoggedRtcpPacket(const LoggedRtcpPacket&);
+ ~LoggedRtcpPacket();
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ std::vector<uint8_t> raw_data;
+};
+
+struct LoggedRtcpPacketIncoming {
+ LoggedRtcpPacketIncoming(uint64_t timestamp_us,
+ const uint8_t* packet,
+ size_t total_length)
+ : rtcp(timestamp_us, packet, total_length) {}
+ LoggedRtcpPacketIncoming(uint64_t timestamp_us, const std::string& packet)
+ : rtcp(timestamp_us, packet) {}
+
+ int64_t log_time_us() const { return rtcp.timestamp_us; }
+ int64_t log_time_ms() const { return rtcp.timestamp_us / 1000; }
+
+ LoggedRtcpPacket rtcp;
+};
+
+struct LoggedRtcpPacketOutgoing {
+ LoggedRtcpPacketOutgoing(uint64_t timestamp_us,
+ const uint8_t* packet,
+ size_t total_length)
+ : rtcp(timestamp_us, packet, total_length) {}
+ LoggedRtcpPacketOutgoing(uint64_t timestamp_us, const std::string& packet)
+ : rtcp(timestamp_us, packet) {}
+
+ int64_t log_time_us() const { return rtcp.timestamp_us; }
+ int64_t log_time_ms() const { return rtcp.timestamp_us / 1000; }
+
+ LoggedRtcpPacket rtcp;
+};
+
+struct LoggedRtcpPacketReceiverReport {
+ LoggedRtcpPacketReceiverReport() = default;
+ LoggedRtcpPacketReceiverReport(int64_t timestamp_us,
+ const rtcp::ReceiverReport& rr)
+ : timestamp_us(timestamp_us), rr(rr) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtcp::ReceiverReport rr;
+};
+
+struct LoggedRtcpPacketSenderReport {
+ LoggedRtcpPacketSenderReport() = default;
+ LoggedRtcpPacketSenderReport(int64_t timestamp_us,
+ const rtcp::SenderReport& sr)
+ : timestamp_us(timestamp_us), sr(sr) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtcp::SenderReport sr;
+};
+
+struct LoggedRtcpPacketRemb {
+ LoggedRtcpPacketRemb() = default;
+ LoggedRtcpPacketRemb(int64_t timestamp_us, const rtcp::Remb& remb)
+ : timestamp_us(timestamp_us), remb(remb) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtcp::Remb remb;
+};
+
+struct LoggedRtcpPacketNack {
+ LoggedRtcpPacketNack() = default;
+ LoggedRtcpPacketNack(int64_t timestamp_us, const rtcp::Nack& nack)
+ : timestamp_us(timestamp_us), nack(nack) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtcp::Nack nack;
+};
+
+struct LoggedRtcpPacketTransportFeedback {
+ LoggedRtcpPacketTransportFeedback() = default;
+ LoggedRtcpPacketTransportFeedback(
+ int64_t timestamp_us,
+ const rtcp::TransportFeedback& transport_feedback)
+ : timestamp_us(timestamp_us), transport_feedback(transport_feedback) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtcp::TransportFeedback transport_feedback;
+};
+
+struct LoggedStartEvent {
+ explicit LoggedStartEvent(int64_t timestamp_us)
+ : LoggedStartEvent(timestamp_us, timestamp_us / 1000) {}
+
+ LoggedStartEvent(int64_t timestamp_us, int64_t utc_start_time_ms)
+ : timestamp_us(timestamp_us), utc_start_time_ms(utc_start_time_ms) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ int64_t utc_start_time_ms;
+};
+
+struct LoggedStopEvent {
+ explicit LoggedStopEvent(int64_t timestamp_us) : timestamp_us(timestamp_us) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+};
+
+struct LoggedAudioRecvConfig {
+ LoggedAudioRecvConfig() = default;
+ LoggedAudioRecvConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
+ : timestamp_us(timestamp_us), config(config) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtclog::StreamConfig config;
+};
+
+struct LoggedAudioSendConfig {
+ LoggedAudioSendConfig() = default;
+ LoggedAudioSendConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
+ : timestamp_us(timestamp_us), config(config) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtclog::StreamConfig config;
+};
+
+struct LoggedVideoRecvConfig {
+ LoggedVideoRecvConfig() = default;
+ LoggedVideoRecvConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
+ : timestamp_us(timestamp_us), config(config) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtclog::StreamConfig config;
+};
+
+struct LoggedVideoSendConfig {
+ LoggedVideoSendConfig() = default;
+ LoggedVideoSendConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
+ : timestamp_us(timestamp_us), config(config) {}
+
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+
+ int64_t timestamp_us;
+ rtclog::StreamConfig config;
+};
+} // namespace webrtc
+#endif // LOGGING_RTC_EVENT_LOG_LOGGED_EVENTS_H_
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.h b/logging/rtc_event_log/rtc_event_log_parser_new.h
index 903993f..0ee70a5 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.h
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.h
@@ -20,20 +20,10 @@
#include "call/video_receive_stream.h"
#include "call/video_send_stream.h"
-#include "logging/rtc_event_log/events/rtc_event_dtls_transport_state.h"
-#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h"
-#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h"
-#include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
+#include "logging/rtc_event_log/logged_events.h"
#include "logging/rtc_event_log/rtc_event_log.h"
-#include "logging/rtc_event_log/rtc_stream_config.h"
-#include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/nack.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/remb.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
-#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include "rtc_base/ignore_wundef.h"
// Files generated at build-time by the protobuf compiler.
@@ -49,418 +39,6 @@
namespace webrtc {
-enum class BandwidthUsage;
-struct AudioEncoderRuntimeConfig;
-
-// The different event types are deliberately POD. Analysis of large logs is
-// already resource intensive. The code simplifications that would be possible
-// possible by having a base class (containing e.g. the log time) are not
-// considered to outweigh the added memory and runtime overhead incurred by
-// adding a vptr.
-struct LoggedAlrStateEvent {
- LoggedAlrStateEvent() = default;
- LoggedAlrStateEvent(int64_t timestamp_us, bool in_alr)
- : timestamp_us(timestamp_us), in_alr(in_alr) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- bool in_alr;
-};
-
-struct LoggedAudioPlayoutEvent {
- LoggedAudioPlayoutEvent() = default;
- LoggedAudioPlayoutEvent(int64_t timestamp_us, uint32_t ssrc)
- : timestamp_us(timestamp_us), ssrc(ssrc) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- uint32_t ssrc;
-};
-
-struct LoggedAudioNetworkAdaptationEvent {
- LoggedAudioNetworkAdaptationEvent() = default;
- LoggedAudioNetworkAdaptationEvent(int64_t timestamp_us,
- const AudioEncoderRuntimeConfig& config)
- : timestamp_us(timestamp_us), config(config) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- AudioEncoderRuntimeConfig config;
-};
-
-struct LoggedBweDelayBasedUpdate {
- LoggedBweDelayBasedUpdate() = default;
- LoggedBweDelayBasedUpdate(int64_t timestamp_us,
- int32_t bitrate_bps,
- BandwidthUsage detector_state)
- : timestamp_us(timestamp_us),
- bitrate_bps(bitrate_bps),
- detector_state(detector_state) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int32_t bitrate_bps;
- BandwidthUsage detector_state;
-};
-
-struct LoggedBweLossBasedUpdate {
- LoggedBweLossBasedUpdate() = default;
- LoggedBweLossBasedUpdate(int64_t timestamp_us,
- int32_t bitrate_bps,
- uint8_t fraction_lost,
- int32_t expected_packets)
- : timestamp_us(timestamp_us),
- bitrate_bps(bitrate_bps),
- fraction_lost(fraction_lost),
- expected_packets(expected_packets) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int32_t bitrate_bps;
- uint8_t fraction_lost;
- int32_t expected_packets;
-};
-
-struct LoggedDtlsTransportState {
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- DtlsTransportState dtls_transport_state;
-};
-
-struct LoggedDtlsWritableState {
- LoggedDtlsWritableState() = default;
- explicit LoggedDtlsWritableState(bool writable) : writable(writable) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- bool writable;
-};
-
-struct LoggedBweProbeClusterCreatedEvent {
- LoggedBweProbeClusterCreatedEvent() = default;
- LoggedBweProbeClusterCreatedEvent(int64_t timestamp_us,
- int32_t id,
- int32_t bitrate_bps,
- uint32_t min_packets,
- uint32_t min_bytes)
- : timestamp_us(timestamp_us),
- id(id),
- bitrate_bps(bitrate_bps),
- min_packets(min_packets),
- min_bytes(min_bytes) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int32_t id;
- int32_t bitrate_bps;
- uint32_t min_packets;
- uint32_t min_bytes;
-};
-
-struct LoggedBweProbeSuccessEvent {
- LoggedBweProbeSuccessEvent() = default;
- LoggedBweProbeSuccessEvent(int64_t timestamp_us,
- int32_t id,
- int32_t bitrate_bps)
- : timestamp_us(timestamp_us), id(id), bitrate_bps(bitrate_bps) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int32_t id;
- int32_t bitrate_bps;
-};
-
-struct LoggedBweProbeFailureEvent {
- LoggedBweProbeFailureEvent() = default;
- LoggedBweProbeFailureEvent(int64_t timestamp_us,
- int32_t id,
- ProbeFailureReason failure_reason)
- : timestamp_us(timestamp_us), id(id), failure_reason(failure_reason) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int32_t id;
- ProbeFailureReason failure_reason;
-};
-
-struct LoggedIceCandidatePairConfig {
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- IceCandidatePairConfigType type;
- uint32_t candidate_pair_id;
- IceCandidateType local_candidate_type;
- IceCandidatePairProtocol local_relay_protocol;
- IceCandidateNetworkType local_network_type;
- IceCandidatePairAddressFamily local_address_family;
- IceCandidateType remote_candidate_type;
- IceCandidatePairAddressFamily remote_address_family;
- IceCandidatePairProtocol candidate_pair_protocol;
-};
-
-struct LoggedIceCandidatePairEvent {
- LoggedIceCandidatePairEvent() = default;
- LoggedIceCandidatePairEvent(int64_t timestamp_us,
- IceCandidatePairEventType type,
- uint32_t candidate_pair_id,
- uint32_t transaction_id)
- : timestamp_us(timestamp_us),
- type(type),
- candidate_pair_id(candidate_pair_id),
- transaction_id(transaction_id) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- IceCandidatePairEventType type;
- uint32_t candidate_pair_id;
- uint32_t transaction_id;
-};
-
-struct LoggedRtpPacket {
- LoggedRtpPacket(uint64_t timestamp_us,
- RTPHeader header,
- size_t header_length,
- size_t total_length)
- : timestamp_us(timestamp_us),
- header(header),
- header_length(header_length),
- total_length(total_length) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- // TODO(terelius): This allocates space for 15 CSRCs even if none are used.
- RTPHeader header;
- size_t header_length;
- size_t total_length;
-};
-
-struct LoggedRtpPacketIncoming {
- LoggedRtpPacketIncoming(uint64_t timestamp_us,
- RTPHeader header,
- size_t header_length,
- size_t total_length)
- : rtp(timestamp_us, header, header_length, total_length) {}
- int64_t log_time_us() const { return rtp.timestamp_us; }
- int64_t log_time_ms() const { return rtp.timestamp_us / 1000; }
-
- LoggedRtpPacket rtp;
-};
-
-struct LoggedRtpPacketOutgoing {
- LoggedRtpPacketOutgoing(uint64_t timestamp_us,
- RTPHeader header,
- size_t header_length,
- size_t total_length)
- : rtp(timestamp_us, header, header_length, total_length) {}
- int64_t log_time_us() const { return rtp.timestamp_us; }
- int64_t log_time_ms() const { return rtp.timestamp_us / 1000; }
-
- LoggedRtpPacket rtp;
-};
-
-struct LoggedRtcpPacket {
- LoggedRtcpPacket(uint64_t timestamp_us,
- const uint8_t* packet,
- size_t total_length);
- LoggedRtcpPacket(uint64_t timestamp_us, const std::string& packet);
- LoggedRtcpPacket(const LoggedRtcpPacket&);
- ~LoggedRtcpPacket();
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- std::vector<uint8_t> raw_data;
-};
-
-struct LoggedRtcpPacketIncoming {
- LoggedRtcpPacketIncoming(uint64_t timestamp_us,
- const uint8_t* packet,
- size_t total_length)
- : rtcp(timestamp_us, packet, total_length) {}
- LoggedRtcpPacketIncoming(uint64_t timestamp_us, const std::string& packet)
- : rtcp(timestamp_us, packet) {}
-
- int64_t log_time_us() const { return rtcp.timestamp_us; }
- int64_t log_time_ms() const { return rtcp.timestamp_us / 1000; }
-
- LoggedRtcpPacket rtcp;
-};
-
-struct LoggedRtcpPacketOutgoing {
- LoggedRtcpPacketOutgoing(uint64_t timestamp_us,
- const uint8_t* packet,
- size_t total_length)
- : rtcp(timestamp_us, packet, total_length) {}
- LoggedRtcpPacketOutgoing(uint64_t timestamp_us, const std::string& packet)
- : rtcp(timestamp_us, packet) {}
-
- int64_t log_time_us() const { return rtcp.timestamp_us; }
- int64_t log_time_ms() const { return rtcp.timestamp_us / 1000; }
-
- LoggedRtcpPacket rtcp;
-};
-
-struct LoggedRtcpPacketReceiverReport {
- LoggedRtcpPacketReceiverReport() = default;
- LoggedRtcpPacketReceiverReport(int64_t timestamp_us,
- const rtcp::ReceiverReport& rr)
- : timestamp_us(timestamp_us), rr(rr) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtcp::ReceiverReport rr;
-};
-
-struct LoggedRtcpPacketSenderReport {
- LoggedRtcpPacketSenderReport() = default;
- LoggedRtcpPacketSenderReport(int64_t timestamp_us,
- const rtcp::SenderReport& sr)
- : timestamp_us(timestamp_us), sr(sr) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtcp::SenderReport sr;
-};
-
-struct LoggedRtcpPacketRemb {
- LoggedRtcpPacketRemb() = default;
- LoggedRtcpPacketRemb(int64_t timestamp_us, const rtcp::Remb& remb)
- : timestamp_us(timestamp_us), remb(remb) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtcp::Remb remb;
-};
-
-struct LoggedRtcpPacketNack {
- LoggedRtcpPacketNack() = default;
- LoggedRtcpPacketNack(int64_t timestamp_us, const rtcp::Nack& nack)
- : timestamp_us(timestamp_us), nack(nack) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtcp::Nack nack;
-};
-
-struct LoggedRtcpPacketTransportFeedback {
- LoggedRtcpPacketTransportFeedback() = default;
- LoggedRtcpPacketTransportFeedback(
- int64_t timestamp_us,
- const rtcp::TransportFeedback& transport_feedback)
- : timestamp_us(timestamp_us), transport_feedback(transport_feedback) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtcp::TransportFeedback transport_feedback;
-};
-
-struct LoggedStartEvent {
- explicit LoggedStartEvent(int64_t timestamp_us)
- : LoggedStartEvent(timestamp_us, timestamp_us / 1000) {}
-
- LoggedStartEvent(int64_t timestamp_us, int64_t utc_start_time_ms)
- : timestamp_us(timestamp_us), utc_start_time_ms(utc_start_time_ms) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- int64_t utc_start_time_ms;
-};
-
-struct LoggedStopEvent {
- explicit LoggedStopEvent(int64_t timestamp_us) : timestamp_us(timestamp_us) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
-};
-
-struct LoggedAudioRecvConfig {
- LoggedAudioRecvConfig() = default;
- LoggedAudioRecvConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
- : timestamp_us(timestamp_us), config(config) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtclog::StreamConfig config;
-};
-
-struct LoggedAudioSendConfig {
- LoggedAudioSendConfig() = default;
- LoggedAudioSendConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
- : timestamp_us(timestamp_us), config(config) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtclog::StreamConfig config;
-};
-
-struct LoggedVideoRecvConfig {
- LoggedVideoRecvConfig() = default;
- LoggedVideoRecvConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
- : timestamp_us(timestamp_us), config(config) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtclog::StreamConfig config;
-};
-
-struct LoggedVideoSendConfig {
- LoggedVideoSendConfig() = default;
- LoggedVideoSendConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
- : timestamp_us(timestamp_us), config(config) {}
-
- int64_t log_time_us() const { return timestamp_us; }
- int64_t log_time_ms() const { return timestamp_us / 1000; }
-
- int64_t timestamp_us;
- rtclog::StreamConfig config;
-};
-
template <typename T>
class PacketView;