diff --git a/logging/rtc_event_log/events/rtc_event_alr_state.cc b/logging/rtc_event_log/events/rtc_event_alr_state.cc
index 8ab7f79..3c307b9 100644
--- a/logging/rtc_event_log/events/rtc_event_alr_state.cc
+++ b/logging/rtc_event_log/events/rtc_event_alr_state.cc
@@ -21,14 +21,6 @@
 
 RtcEventAlrState::~RtcEventAlrState() = default;
 
-RtcEvent::Type RtcEventAlrState::GetType() const {
-  return RtcEvent::Type::AlrStateEvent;
-}
-
-bool RtcEventAlrState::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventAlrState> RtcEventAlrState::Copy() const {
   return absl::WrapUnique<RtcEventAlrState>(new RtcEventAlrState(*this));
 }
diff --git a/logging/rtc_event_log/events/rtc_event_alr_state.h b/logging/rtc_event_log/events/rtc_event_alr_state.h
index 0869aa4..2e265d7 100644
--- a/logging/rtc_event_log/events/rtc_event_alr_state.h
+++ b/logging/rtc_event_log/events/rtc_event_alr_state.h
@@ -19,12 +19,13 @@
 
 class RtcEventAlrState final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::AlrStateEvent;
+
   explicit RtcEventAlrState(bool in_alr);
   ~RtcEventAlrState() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventAlrState> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
index 7378316..5f2d55c 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
@@ -31,14 +31,6 @@
 
 RtcEventAudioNetworkAdaptation::~RtcEventAudioNetworkAdaptation() = default;
 
-RtcEvent::Type RtcEventAudioNetworkAdaptation::GetType() const {
-  return RtcEvent::Type::AudioNetworkAdaptation;
-}
-
-bool RtcEventAudioNetworkAdaptation::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventAudioNetworkAdaptation>
 RtcEventAudioNetworkAdaptation::Copy() const {
   return absl::WrapUnique(new RtcEventAudioNetworkAdaptation(*this));
diff --git a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h
index 7c50054..3fbfa81 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h
+++ b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h
@@ -21,13 +21,14 @@
 
 class RtcEventAudioNetworkAdaptation final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::AudioNetworkAdaptation;
+
   explicit RtcEventAudioNetworkAdaptation(
       std::unique_ptr<AudioEncoderRuntimeConfig> config);
   ~RtcEventAudioNetworkAdaptation() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventAudioNetworkAdaptation> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_audio_playout.cc b/logging/rtc_event_log/events/rtc_event_audio_playout.cc
index 6c4aa98..dae61c4 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_playout.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_playout.cc
@@ -19,14 +19,6 @@
 RtcEventAudioPlayout::RtcEventAudioPlayout(const RtcEventAudioPlayout& other)
     : RtcEvent(other.timestamp_us_), ssrc_(other.ssrc_) {}
 
-RtcEvent::Type RtcEventAudioPlayout::GetType() const {
-  return RtcEvent::Type::AudioPlayout;
-}
-
-bool RtcEventAudioPlayout::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventAudioPlayout> RtcEventAudioPlayout::Copy() const {
   return absl::WrapUnique<RtcEventAudioPlayout>(
       new RtcEventAudioPlayout(*this));
diff --git a/logging/rtc_event_log/events/rtc_event_audio_playout.h b/logging/rtc_event_log/events/rtc_event_audio_playout.h
index 45836b7..ab7f7a8 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_playout.h
+++ b/logging/rtc_event_log/events/rtc_event_audio_playout.h
@@ -21,12 +21,13 @@
 
 class RtcEventAudioPlayout final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::AudioPlayout;
+
   explicit RtcEventAudioPlayout(uint32_t ssrc);
   ~RtcEventAudioPlayout() override = default;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventAudioPlayout> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
index 5cdfb47..87caaff 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
@@ -31,14 +31,6 @@
 
 RtcEventAudioReceiveStreamConfig::~RtcEventAudioReceiveStreamConfig() = default;
 
-RtcEvent::Type RtcEventAudioReceiveStreamConfig::GetType() const {
-  return RtcEvent::Type::AudioReceiveStreamConfig;
-}
-
-bool RtcEventAudioReceiveStreamConfig::IsConfigEvent() const {
-  return true;
-}
-
 std::unique_ptr<RtcEventAudioReceiveStreamConfig>
 RtcEventAudioReceiveStreamConfig::Copy() const {
   return absl::WrapUnique<RtcEventAudioReceiveStreamConfig>(
diff --git a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h
index 67f2860..8204024 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h
+++ b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h
@@ -23,13 +23,14 @@
 
 class RtcEventAudioReceiveStreamConfig final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::AudioReceiveStreamConfig;
+
   explicit RtcEventAudioReceiveStreamConfig(
       std::unique_ptr<rtclog::StreamConfig> config);
   ~RtcEventAudioReceiveStreamConfig() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return true; }
 
   std::unique_ptr<RtcEventAudioReceiveStreamConfig> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
index f4403af..681ae11 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
@@ -31,14 +31,6 @@
 
 RtcEventAudioSendStreamConfig::~RtcEventAudioSendStreamConfig() = default;
 
-RtcEvent::Type RtcEventAudioSendStreamConfig::GetType() const {
-  return RtcEvent::Type::AudioSendStreamConfig;
-}
-
-bool RtcEventAudioSendStreamConfig::IsConfigEvent() const {
-  return true;
-}
-
 std::unique_ptr<RtcEventAudioSendStreamConfig>
 RtcEventAudioSendStreamConfig::Copy() const {
   return absl::WrapUnique<RtcEventAudioSendStreamConfig>(
diff --git a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h
index 8617b95..477ebaa 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h
+++ b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h
@@ -23,13 +23,14 @@
 
 class RtcEventAudioSendStreamConfig final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::AudioSendStreamConfig;
+
   explicit RtcEventAudioSendStreamConfig(
       std::unique_ptr<rtclog::StreamConfig> config);
   ~RtcEventAudioSendStreamConfig() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return true; }
 
   std::unique_ptr<RtcEventAudioSendStreamConfig> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
index 94d9ece..f3f1219 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
@@ -28,14 +28,6 @@
 
 RtcEventBweUpdateDelayBased::~RtcEventBweUpdateDelayBased() = default;
 
-RtcEvent::Type RtcEventBweUpdateDelayBased::GetType() const {
-  return RtcEvent::Type::BweUpdateDelayBased;
-}
-
-bool RtcEventBweUpdateDelayBased::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventBweUpdateDelayBased> RtcEventBweUpdateDelayBased::Copy()
     const {
   return absl::WrapUnique<RtcEventBweUpdateDelayBased>(
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h
index 8908ce2..a0a407a 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h
@@ -23,13 +23,14 @@
 
 class RtcEventBweUpdateDelayBased final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::BweUpdateDelayBased;
+
   RtcEventBweUpdateDelayBased(int32_t bitrate_bps,
                               BandwidthUsage detector_state);
   ~RtcEventBweUpdateDelayBased() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventBweUpdateDelayBased> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
index 8453238..44524ab 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
@@ -30,14 +30,6 @@
 
 RtcEventBweUpdateLossBased::~RtcEventBweUpdateLossBased() = default;
 
-RtcEvent::Type RtcEventBweUpdateLossBased::GetType() const {
-  return RtcEvent::Type::BweUpdateLossBased;
-}
-
-bool RtcEventBweUpdateLossBased::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventBweUpdateLossBased> RtcEventBweUpdateLossBased::Copy()
     const {
   return absl::WrapUnique<RtcEventBweUpdateLossBased>(
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h
index 78829a9..039de71 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h
@@ -21,14 +21,15 @@
 
 class RtcEventBweUpdateLossBased final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::BweUpdateLossBased;
+
   RtcEventBweUpdateLossBased(int32_t bitrate_bps_,
                              uint8_t fraction_loss_,
                              int32_t total_packets_);
   ~RtcEventBweUpdateLossBased() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventBweUpdateLossBased> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_dtls_transport_state.cc b/logging/rtc_event_log/events/rtc_event_dtls_transport_state.cc
index ac8e642..f00342d 100644
--- a/logging/rtc_event_log/events/rtc_event_dtls_transport_state.cc
+++ b/logging/rtc_event_log/events/rtc_event_dtls_transport_state.cc
@@ -24,14 +24,6 @@
 
 RtcEventDtlsTransportState::~RtcEventDtlsTransportState() = default;
 
-RtcEvent::Type RtcEventDtlsTransportState::GetType() const {
-  return RtcEvent::Type::DtlsTransportState;
-}
-
-bool RtcEventDtlsTransportState::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventDtlsTransportState> RtcEventDtlsTransportState::Copy()
     const {
   return absl::WrapUnique<RtcEventDtlsTransportState>(
diff --git a/logging/rtc_event_log/events/rtc_event_dtls_transport_state.h b/logging/rtc_event_log/events/rtc_event_dtls_transport_state.h
index 4fbe5a7..d660de2 100644
--- a/logging/rtc_event_log/events/rtc_event_dtls_transport_state.h
+++ b/logging/rtc_event_log/events/rtc_event_dtls_transport_state.h
@@ -20,11 +20,13 @@
 
 class RtcEventDtlsTransportState : public RtcEvent {
  public:
+  static constexpr Type kType = Type::DtlsTransportState;
+
   explicit RtcEventDtlsTransportState(DtlsTransportState state);
   ~RtcEventDtlsTransportState() override;
 
-  Type GetType() const override;
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventDtlsTransportState> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_dtls_writable_state.cc b/logging/rtc_event_log/events/rtc_event_dtls_writable_state.cc
index 16c1e7b..d4cb093 100644
--- a/logging/rtc_event_log/events/rtc_event_dtls_writable_state.cc
+++ b/logging/rtc_event_log/events/rtc_event_dtls_writable_state.cc
@@ -23,14 +23,6 @@
 
 RtcEventDtlsWritableState::~RtcEventDtlsWritableState() = default;
 
-RtcEvent::Type RtcEventDtlsWritableState::GetType() const {
-  return RtcEvent::Type::DtlsWritableState;
-}
-
-bool RtcEventDtlsWritableState::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventDtlsWritableState> RtcEventDtlsWritableState::Copy()
     const {
   return absl::WrapUnique<RtcEventDtlsWritableState>(
diff --git a/logging/rtc_event_log/events/rtc_event_dtls_writable_state.h b/logging/rtc_event_log/events/rtc_event_dtls_writable_state.h
index 06a7f9d..0423df8 100644
--- a/logging/rtc_event_log/events/rtc_event_dtls_writable_state.h
+++ b/logging/rtc_event_log/events/rtc_event_dtls_writable_state.h
@@ -19,11 +19,13 @@
 
 class RtcEventDtlsWritableState : public RtcEvent {
  public:
+  static constexpr Type kType = Type::DtlsWritableState;
+
   explicit RtcEventDtlsWritableState(bool writable);
   ~RtcEventDtlsWritableState() override;
 
-  Type GetType() const override;
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventDtlsWritableState> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_frame_decoded.cc b/logging/rtc_event_log/events/rtc_event_frame_decoded.cc
index 19929e7..cde412e 100644
--- a/logging/rtc_event_log/events/rtc_event_frame_decoded.cc
+++ b/logging/rtc_event_log/events/rtc_event_frame_decoded.cc
@@ -36,14 +36,6 @@
       codec_(other.codec_),
       qp_(other.qp_) {}
 
-RtcEvent::Type RtcEventFrameDecoded::GetType() const {
-  return RtcEvent::Type::FrameDecoded;
-}
-
-bool RtcEventFrameDecoded::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventFrameDecoded> RtcEventFrameDecoded::Copy() const {
   return absl::WrapUnique<RtcEventFrameDecoded>(
       new RtcEventFrameDecoded(*this));
diff --git a/logging/rtc_event_log/events/rtc_event_frame_decoded.h b/logging/rtc_event_log/events/rtc_event_frame_decoded.h
index ebc0522..67e9c57 100644
--- a/logging/rtc_event_log/events/rtc_event_frame_decoded.h
+++ b/logging/rtc_event_log/events/rtc_event_frame_decoded.h
@@ -22,6 +22,8 @@
 
 class RtcEventFrameDecoded final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::FrameDecoded;
+
   RtcEventFrameDecoded(int64_t render_time_ms,
                        uint32_t ssrc,
                        int width,
@@ -30,9 +32,8 @@
                        uint8_t qp);
   ~RtcEventFrameDecoded() override = default;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventFrameDecoded> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_generic_ack_received.cc b/logging/rtc_event_log/events/rtc_event_generic_ack_received.cc
index 0ffe622..2da2de6 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_ack_received.cc
+++ b/logging/rtc_event_log/events/rtc_event_generic_ack_received.cc
@@ -51,12 +51,4 @@
 
 RtcEventGenericAckReceived::~RtcEventGenericAckReceived() = default;
 
-RtcEvent::Type RtcEventGenericAckReceived::GetType() const {
-  return RtcEvent::Type::GenericAckReceived;
-}
-
-bool RtcEventGenericAckReceived::IsConfigEvent() const {
-  return false;
-}
-
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_generic_ack_received.h b/logging/rtc_event_log/events/rtc_event_generic_ack_received.h
index 689c124..3c5eb15 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_ack_received.h
+++ b/logging/rtc_event_log/events/rtc_event_generic_ack_received.h
@@ -30,6 +30,8 @@
 
 class RtcEventGenericAckReceived final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::GenericAckReceived;
+
   // For a collection of acked packets, it creates a vector of logs to log with
   // the same timestamp.
   static std::vector<std::unique_ptr<RtcEventGenericAckReceived>> CreateLogs(
@@ -40,9 +42,8 @@
 
   std::unique_ptr<RtcEventGenericAckReceived> Copy() const;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   // An identifier of the packet which contained an ack.
   int64_t packet_number() const { return packet_number_; }
diff --git a/logging/rtc_event_log/events/rtc_event_generic_packet_received.cc b/logging/rtc_event_log/events/rtc_event_generic_packet_received.cc
index 92558b2..0bdc4dd 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_packet_received.cc
+++ b/logging/rtc_event_log/events/rtc_event_generic_packet_received.cc
@@ -28,12 +28,5 @@
 RtcEventGenericPacketReceived::Copy() const {
   return absl::WrapUnique(new RtcEventGenericPacketReceived(*this));
 }
-RtcEvent::Type RtcEventGenericPacketReceived::GetType() const {
-  return RtcEvent::Type::GenericPacketReceived;
-}
-
-bool RtcEventGenericPacketReceived::IsConfigEvent() const {
-  return false;
-}
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_generic_packet_received.h b/logging/rtc_event_log/events/rtc_event_generic_packet_received.h
index 1034826..7223313 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_packet_received.h
+++ b/logging/rtc_event_log/events/rtc_event_generic_packet_received.h
@@ -19,14 +19,15 @@
 
 class RtcEventGenericPacketReceived final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::GenericPacketReceived;
+
   RtcEventGenericPacketReceived(int64_t packet_number, size_t packet_length);
   ~RtcEventGenericPacketReceived() override;
 
   std::unique_ptr<RtcEventGenericPacketReceived> Copy() const;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   // An identifier of the packet.
   int64_t packet_number() const { return packet_number_; }
diff --git a/logging/rtc_event_log/events/rtc_event_generic_packet_sent.cc b/logging/rtc_event_log/events/rtc_event_generic_packet_sent.cc
index ef761d5..e833562 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_packet_sent.cc
+++ b/logging/rtc_event_log/events/rtc_event_generic_packet_sent.cc
@@ -33,12 +33,4 @@
   return absl::WrapUnique(new RtcEventGenericPacketSent(*this));
 }
 
-RtcEvent::Type RtcEventGenericPacketSent::GetType() const {
-  return RtcEvent::Type::GenericPacketSent;
-}
-
-bool RtcEventGenericPacketSent::IsConfigEvent() const {
-  return false;
-}
-
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_generic_packet_sent.h b/logging/rtc_event_log/events/rtc_event_generic_packet_sent.h
index d87a54c..713a474 100644
--- a/logging/rtc_event_log/events/rtc_event_generic_packet_sent.h
+++ b/logging/rtc_event_log/events/rtc_event_generic_packet_sent.h
@@ -19,6 +19,8 @@
 
 class RtcEventGenericPacketSent final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::GenericPacketSent;
+
   RtcEventGenericPacketSent(int64_t packet_number,
                             size_t overhead_length,
                             size_t payload_length,
@@ -27,9 +29,8 @@
 
   std::unique_ptr<RtcEventGenericPacketSent> Copy() const;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   // An identifier of the packet.
   int64_t packet_number() const { return packet_number_; }
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
index 225362d..2b4b5ba 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
@@ -31,14 +31,6 @@
 
 RtcEventIceCandidatePair::~RtcEventIceCandidatePair() = default;
 
-RtcEvent::Type RtcEventIceCandidatePair::GetType() const {
-  return RtcEvent::Type::IceCandidatePairEvent;
-}
-
-bool RtcEventIceCandidatePair::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventIceCandidatePair> RtcEventIceCandidatePair::Copy()
     const {
   return absl::WrapUnique<RtcEventIceCandidatePair>(
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h
index 88b8c82..5bb3803 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h
@@ -29,15 +29,16 @@
 
 class RtcEventIceCandidatePair final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::IceCandidatePairEvent;
+
   RtcEventIceCandidatePair(IceCandidatePairEventType type,
                            uint32_t candidate_pair_id,
                            uint32_t transaction_id);
 
   ~RtcEventIceCandidatePair() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventIceCandidatePair> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
index fbb8a73..eb458c4 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
@@ -54,16 +54,6 @@
 
 RtcEventIceCandidatePairConfig::~RtcEventIceCandidatePairConfig() = default;
 
-RtcEvent::Type RtcEventIceCandidatePairConfig::GetType() const {
-  return RtcEvent::Type::IceCandidatePairConfig;
-}
-
-// The ICE candidate pair config event is not equivalent to a RtcEventLog config
-// event.
-bool RtcEventIceCandidatePairConfig::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventIceCandidatePairConfig>
 RtcEventIceCandidatePairConfig::Copy() const {
   return absl::WrapUnique<RtcEventIceCandidatePairConfig>(
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h
index 338942a..c9a8199 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h
@@ -83,6 +83,8 @@
 
 class RtcEventIceCandidatePairConfig final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::IceCandidatePairConfig;
+
   RtcEventIceCandidatePairConfig(
       IceCandidatePairConfigType type,
       uint32_t candidate_pair_id,
@@ -90,9 +92,9 @@
 
   ~RtcEventIceCandidatePairConfig() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  // N.B. An ICE config event is not considered an RtcEventLog config event.
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventIceCandidatePairConfig> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
index c11a6ce..c3d9e59 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
@@ -31,14 +31,6 @@
       min_probes_(other.min_probes_),
       min_bytes_(other.min_bytes_) {}
 
-RtcEvent::Type RtcEventProbeClusterCreated::GetType() const {
-  return RtcEvent::Type::ProbeClusterCreated;
-}
-
-bool RtcEventProbeClusterCreated::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventProbeClusterCreated> RtcEventProbeClusterCreated::Copy()
     const {
   return absl::WrapUnique<RtcEventProbeClusterCreated>(
diff --git a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h
index 7bfe6a2..2cab9c8 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h
+++ b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h
@@ -21,15 +21,16 @@
 
 class RtcEventProbeClusterCreated final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::ProbeClusterCreated;
+
   RtcEventProbeClusterCreated(int32_t id,
                               int32_t bitrate_bps,
                               uint32_t min_probes,
                               uint32_t min_bytes);
   ~RtcEventProbeClusterCreated() override = default;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventProbeClusterCreated> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc b/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
index 295003a..a79b0c1 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
@@ -25,14 +25,6 @@
       id_(other.id_),
       failure_reason_(other.failure_reason_) {}
 
-RtcEvent::Type RtcEventProbeResultFailure::GetType() const {
-  return RtcEvent::Type::ProbeResultFailure;
-}
-
-bool RtcEventProbeResultFailure::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventProbeResultFailure> RtcEventProbeResultFailure::Copy()
     const {
   return absl::WrapUnique<RtcEventProbeResultFailure>(
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_failure.h b/logging/rtc_event_log/events/rtc_event_probe_result_failure.h
index a493de8..5d24f76 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_failure.h
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_failure.h
@@ -28,12 +28,13 @@
 
 class RtcEventProbeResultFailure final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::ProbeResultFailure;
+
   RtcEventProbeResultFailure(int32_t id, ProbeFailureReason failure_reason);
   ~RtcEventProbeResultFailure() override = default;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventProbeResultFailure> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_success.cc b/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
index d5f9e2f..e7bc7c2 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
@@ -24,14 +24,6 @@
       id_(other.id_),
       bitrate_bps_(other.bitrate_bps_) {}
 
-RtcEvent::Type RtcEventProbeResultSuccess::GetType() const {
-  return RtcEvent::Type::ProbeResultSuccess;
-}
-
-bool RtcEventProbeResultSuccess::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventProbeResultSuccess> RtcEventProbeResultSuccess::Copy()
     const {
   return absl::WrapUnique<RtcEventProbeResultSuccess>(
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_success.h b/logging/rtc_event_log/events/rtc_event_probe_result_success.h
index e0aba98..c715ca6 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_success.h
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_success.h
@@ -21,12 +21,13 @@
 
 class RtcEventProbeResultSuccess final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::ProbeResultSuccess;
+
   RtcEventProbeResultSuccess(int32_t id, int32_t bitrate_bps);
   ~RtcEventProbeResultSuccess() override = default;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventProbeResultSuccess> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_remote_estimate.h b/logging/rtc_event_log/events/rtc_event_remote_estimate.h
index b791948..ea1f752 100644
--- a/logging/rtc_event_log/events/rtc_event_remote_estimate.h
+++ b/logging/rtc_event_log/events/rtc_event_remote_estimate.h
@@ -20,11 +20,14 @@
 
 class RtcEventRemoteEstimate final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RemoteEstimateEvent;
+
   RtcEventRemoteEstimate(DataRate link_capacity_lower,
                          DataRate link_capacity_upper)
       : link_capacity_lower_(link_capacity_lower),
         link_capacity_upper_(link_capacity_upper) {}
-  Type GetType() const override { return RtcEvent::Type::RemoteEstimateEvent; }
+
+  Type GetType() const override { return kType; }
   bool IsConfigEvent() const override { return false; }
 
   const DataRate link_capacity_lower_;
diff --git a/logging/rtc_event_log/events/rtc_event_route_change.cc b/logging/rtc_event_log/events/rtc_event_route_change.cc
index 1ea63e2..71bd78b 100644
--- a/logging/rtc_event_log/events/rtc_event_route_change.cc
+++ b/logging/rtc_event_log/events/rtc_event_route_change.cc
@@ -24,14 +24,6 @@
 
 RtcEventRouteChange::~RtcEventRouteChange() = default;
 
-RtcEvent::Type RtcEventRouteChange::GetType() const {
-  return RtcEvent::Type::RouteChangeEvent;
-}
-
-bool RtcEventRouteChange::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventRouteChange> RtcEventRouteChange::Copy() const {
   return absl::WrapUnique<RtcEventRouteChange>(new RtcEventRouteChange(*this));
 }
diff --git a/logging/rtc_event_log/events/rtc_event_route_change.h b/logging/rtc_event_log/events/rtc_event_route_change.h
index 09fb31c..a364dd7 100644
--- a/logging/rtc_event_log/events/rtc_event_route_change.h
+++ b/logging/rtc_event_log/events/rtc_event_route_change.h
@@ -19,12 +19,13 @@
 
 class RtcEventRouteChange final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RouteChangeEvent;
+
   RtcEventRouteChange(bool connected, uint32_t overhead);
   ~RtcEventRouteChange() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventRouteChange> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
index 45a418f..0ea700a 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
@@ -25,14 +25,6 @@
 
 RtcEventRtcpPacketIncoming::~RtcEventRtcpPacketIncoming() = default;
 
-RtcEvent::Type RtcEventRtcpPacketIncoming::GetType() const {
-  return RtcEvent::Type::RtcpPacketIncoming;
-}
-
-bool RtcEventRtcpPacketIncoming::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventRtcpPacketIncoming> RtcEventRtcpPacketIncoming::Copy()
     const {
   return absl::WrapUnique<RtcEventRtcpPacketIncoming>(
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h
index 8237afe..1cbac77 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h
@@ -23,12 +23,13 @@
 
 class RtcEventRtcpPacketIncoming final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RtcpPacketIncoming;
+
   explicit RtcEventRtcpPacketIncoming(rtc::ArrayView<const uint8_t> packet);
   ~RtcEventRtcpPacketIncoming() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventRtcpPacketIncoming> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
index b583e56..b6a41ac 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
@@ -25,14 +25,6 @@
 
 RtcEventRtcpPacketOutgoing::~RtcEventRtcpPacketOutgoing() = default;
 
-RtcEvent::Type RtcEventRtcpPacketOutgoing::GetType() const {
-  return RtcEvent::Type::RtcpPacketOutgoing;
-}
-
-bool RtcEventRtcpPacketOutgoing::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventRtcpPacketOutgoing> RtcEventRtcpPacketOutgoing::Copy()
     const {
   return absl::WrapUnique<RtcEventRtcpPacketOutgoing>(
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h
index f451c73..0ecccbe 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h
@@ -23,12 +23,13 @@
 
 class RtcEventRtcpPacketOutgoing final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RtcpPacketOutgoing;
+
   explicit RtcEventRtcpPacketOutgoing(rtc::ArrayView<const uint8_t> packet);
   ~RtcEventRtcpPacketOutgoing() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventRtcpPacketOutgoing> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
index 898c0aa..4e505bd 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
@@ -37,14 +37,6 @@
 
 RtcEventRtpPacketIncoming::~RtcEventRtpPacketIncoming() = default;
 
-RtcEvent::Type RtcEventRtpPacketIncoming::GetType() const {
-  return RtcEvent::Type::RtpPacketIncoming;
-}
-
-bool RtcEventRtpPacketIncoming::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventRtpPacketIncoming> RtcEventRtpPacketIncoming::Copy()
     const {
   return absl::WrapUnique<RtcEventRtpPacketIncoming>(
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h
index 7e30d6d..8d13dc6 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h
@@ -22,12 +22,13 @@
 
 class RtcEventRtpPacketIncoming final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RtpPacketIncoming;
+
   explicit RtcEventRtpPacketIncoming(const RtpPacketReceived& packet);
   ~RtcEventRtpPacketIncoming() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventRtpPacketIncoming> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
index 050474e..e5324bf 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
@@ -40,14 +40,6 @@
 
 RtcEventRtpPacketOutgoing::~RtcEventRtpPacketOutgoing() = default;
 
-RtcEvent::Type RtcEventRtpPacketOutgoing::GetType() const {
-  return RtcEvent::Type::RtpPacketOutgoing;
-}
-
-bool RtcEventRtpPacketOutgoing::IsConfigEvent() const {
-  return false;
-}
-
 std::unique_ptr<RtcEventRtpPacketOutgoing> RtcEventRtpPacketOutgoing::Copy()
     const {
   return absl::WrapUnique<RtcEventRtpPacketOutgoing>(
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h
index 9211367..de4abcc 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h
@@ -22,13 +22,14 @@
 
 class RtcEventRtpPacketOutgoing final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::RtpPacketOutgoing;
+
   RtcEventRtpPacketOutgoing(const RtpPacketToSend& packet,
                             int probe_cluster_id);
   ~RtcEventRtpPacketOutgoing() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return false; }
 
   std::unique_ptr<RtcEventRtpPacketOutgoing> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
index 8942f8a..90ab818 100644
--- a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
@@ -30,14 +30,6 @@
 
 RtcEventVideoReceiveStreamConfig::~RtcEventVideoReceiveStreamConfig() = default;
 
-RtcEvent::Type RtcEventVideoReceiveStreamConfig::GetType() const {
-  return Type::VideoReceiveStreamConfig;
-}
-
-bool RtcEventVideoReceiveStreamConfig::IsConfigEvent() const {
-  return true;
-}
-
 std::unique_ptr<RtcEventVideoReceiveStreamConfig>
 RtcEventVideoReceiveStreamConfig::Copy() const {
   return absl::WrapUnique<RtcEventVideoReceiveStreamConfig>(
diff --git a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.h b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.h
index fe5099d..8e9841f 100644
--- a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.h
+++ b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.h
@@ -20,13 +20,14 @@
 
 class RtcEventVideoReceiveStreamConfig final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::VideoReceiveStreamConfig;
+
   explicit RtcEventVideoReceiveStreamConfig(
       std::unique_ptr<rtclog::StreamConfig> config);
   ~RtcEventVideoReceiveStreamConfig() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return true; }
 
   std::unique_ptr<RtcEventVideoReceiveStreamConfig> Copy() const;
 
diff --git a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
index 2c33466..c28a476 100644
--- a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
@@ -27,14 +27,6 @@
 
 RtcEventVideoSendStreamConfig::~RtcEventVideoSendStreamConfig() = default;
 
-RtcEvent::Type RtcEventVideoSendStreamConfig::GetType() const {
-  return RtcEvent::Type::VideoSendStreamConfig;
-}
-
-bool RtcEventVideoSendStreamConfig::IsConfigEvent() const {
-  return true;
-}
-
 std::unique_ptr<RtcEventVideoSendStreamConfig>
 RtcEventVideoSendStreamConfig::Copy() const {
   return absl::WrapUnique<RtcEventVideoSendStreamConfig>(
diff --git a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.h b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.h
index 11dd148..c06f783 100644
--- a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.h
+++ b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.h
@@ -20,13 +20,14 @@
 
 class RtcEventVideoSendStreamConfig final : public RtcEvent {
  public:
+  static constexpr Type kType = Type::VideoSendStreamConfig;
+
   explicit RtcEventVideoSendStreamConfig(
       std::unique_ptr<rtclog::StreamConfig> config);
   ~RtcEventVideoSendStreamConfig() override;
 
-  Type GetType() const override;
-
-  bool IsConfigEvent() const override;
+  Type GetType() const override { return kType; }
+  bool IsConfigEvent() const override { return true; }
 
   std::unique_ptr<RtcEventVideoSendStreamConfig> Copy() const;
 
