diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.cc b/logging/rtc_event_log/rtc_event_log_parser_new.cc
index 0107722..cadea74 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.cc
@@ -1014,13 +1014,15 @@
     case rtclog::Event::VIDEO_RECEIVER_CONFIG_EVENT: {
       rtclog::StreamConfig config = GetVideoReceiveConfig(event);
       video_recv_configs_.emplace_back(GetTimestamp(event), config);
-      incoming_rtp_extensions_maps_[config.remote_ssrc] =
-          RtpHeaderExtensionMap(config.rtp_extensions);
-      // TODO(terelius): I don't understand the reason for configuring header
-      // extensions for the local SSRC. I think it should be removed, but for
-      // now I want to preserve the previous functionality.
-      incoming_rtp_extensions_maps_[config.local_ssrc] =
-          RtpHeaderExtensionMap(config.rtp_extensions);
+      if (!config.rtp_extensions.empty()) {
+        incoming_rtp_extensions_maps_[config.remote_ssrc] =
+            RtpHeaderExtensionMap(config.rtp_extensions);
+        // TODO(terelius): I don't understand the reason for configuring header
+        // extensions for the local SSRC. I think it should be removed, but for
+        // now I want to preserve the previous functionality.
+        incoming_rtp_extensions_maps_[config.local_ssrc] =
+            RtpHeaderExtensionMap(config.rtp_extensions);
+      }
       incoming_video_ssrcs_.insert(config.remote_ssrc);
       incoming_video_ssrcs_.insert(config.rtx_ssrc);
       incoming_rtx_ssrcs_.insert(config.rtx_ssrc);
@@ -1030,10 +1032,12 @@
       std::vector<rtclog::StreamConfig> configs = GetVideoSendConfig(event);
       video_send_configs_.emplace_back(GetTimestamp(event), configs);
       for (const auto& config : configs) {
-        outgoing_rtp_extensions_maps_[config.local_ssrc] =
-            RtpHeaderExtensionMap(config.rtp_extensions);
-        outgoing_rtp_extensions_maps_[config.rtx_ssrc] =
-            RtpHeaderExtensionMap(config.rtp_extensions);
+        if (!config.rtp_extensions.empty()) {
+          outgoing_rtp_extensions_maps_[config.local_ssrc] =
+              RtpHeaderExtensionMap(config.rtp_extensions);
+          outgoing_rtp_extensions_maps_[config.rtx_ssrc] =
+              RtpHeaderExtensionMap(config.rtp_extensions);
+        }
         outgoing_video_ssrcs_.insert(config.local_ssrc);
         outgoing_video_ssrcs_.insert(config.rtx_ssrc);
         outgoing_rtx_ssrcs_.insert(config.rtx_ssrc);
@@ -1043,18 +1047,22 @@
     case rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT: {
       rtclog::StreamConfig config = GetAudioReceiveConfig(event);
       audio_recv_configs_.emplace_back(GetTimestamp(event), config);
-      incoming_rtp_extensions_maps_[config.remote_ssrc] =
-          RtpHeaderExtensionMap(config.rtp_extensions);
-      incoming_rtp_extensions_maps_[config.local_ssrc] =
-          RtpHeaderExtensionMap(config.rtp_extensions);
+      if (!config.rtp_extensions.empty()) {
+        incoming_rtp_extensions_maps_[config.remote_ssrc] =
+            RtpHeaderExtensionMap(config.rtp_extensions);
+        incoming_rtp_extensions_maps_[config.local_ssrc] =
+            RtpHeaderExtensionMap(config.rtp_extensions);
+      }
       incoming_audio_ssrcs_.insert(config.remote_ssrc);
       break;
     }
     case rtclog::Event::AUDIO_SENDER_CONFIG_EVENT: {
       rtclog::StreamConfig config = GetAudioSendConfig(event);
       audio_send_configs_.emplace_back(GetTimestamp(event), config);
-      outgoing_rtp_extensions_maps_[config.local_ssrc] =
-          RtpHeaderExtensionMap(config.rtp_extensions);
+      if (!config.rtp_extensions.empty()) {
+        outgoing_rtp_extensions_maps_[config.local_ssrc] =
+            RtpHeaderExtensionMap(config.rtp_extensions);
+      }
       outgoing_audio_ssrcs_.insert(config.local_ssrc);
       break;
     }
