diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 5f8d2df..854a18a 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -197,6 +197,7 @@
     FrameEncryptorInterface* frame_encryptor,
     const CryptoOptions& crypto_options,
     rtc::scoped_refptr<FrameTransformerInterface> frame_transformer,
+    bool use_deferred_fec,
     const WebRtcKeyValueConfig& trials) {
   RTC_DCHECK_GT(rtp_config.ssrcs.size(), 0);
 
@@ -244,7 +245,9 @@
     std::unique_ptr<VideoFecGenerator> fec_generator =
         MaybeCreateFecGenerator(clock, rtp_config, suspended_ssrcs, i, trials);
     configuration.fec_generator = fec_generator.get();
-    video_config.fec_generator = fec_generator.get();
+    if (!use_deferred_fec) {
+      video_config.fec_generator = fec_generator.get();
+    }
 
     configuration.rtx_send_ssrc =
         rtp_config.GetRtxSsrcAssociatedWithMediaSsrc(rtp_config.ssrcs[i]);
@@ -338,6 +341,9 @@
           field_trials_.Lookup("WebRTC-UseEarlyLossDetection"),
           "Disabled")),
       has_packet_feedback_(TransportSeqNumExtensionConfigured(rtp_config)),
+      use_deferred_fec_(
+          absl::StartsWith(field_trials_.Lookup("WebRTC-DeferredFecGeneration"),
+                           "Enabled")),
       active_(false),
       module_process_thread_(nullptr),
       suspended_ssrcs_(std::move(suspended_ssrcs)),
@@ -356,6 +362,7 @@
                                           frame_encryptor,
                                           crypto_options,
                                           std::move(frame_transformer),
+                                          use_deferred_fec_,
                                           field_trials_)),
       rtp_config_(rtp_config),
       codec_type_(GetVideoCodecType(rtp_config)),
@@ -848,14 +855,26 @@
   *sent_nack_rate_bps = 0;
   *sent_fec_rate_bps = 0;
   for (const RtpStreamSender& stream : rtp_streams_) {
-    if (stream.fec_generator) {
-      stream.fec_generator->SetProtectionParameters(*delta_params, *key_params);
-      *sent_fec_rate_bps += stream.fec_generator->CurrentFecRate().bps();
+    if (use_deferred_fec_) {
+      stream.rtp_rtcp->SetFecProtectionParams(*delta_params, *key_params);
+
+      auto send_bitrate = stream.rtp_rtcp->GetSendRates();
+      *sent_video_rate_bps += send_bitrate[RtpPacketMediaType::kVideo].bps();
+      *sent_fec_rate_bps +=
+          send_bitrate[RtpPacketMediaType::kForwardErrorCorrection].bps();
+      *sent_nack_rate_bps +=
+          send_bitrate[RtpPacketMediaType::kRetransmission].bps();
+    } else {
+      if (stream.fec_generator) {
+        stream.fec_generator->SetProtectionParameters(*delta_params,
+                                                      *key_params);
+        *sent_fec_rate_bps += stream.fec_generator->CurrentFecRate().bps();
+      }
+      *sent_video_rate_bps += stream.sender_video->VideoBitrateSent();
+      *sent_nack_rate_bps +=
+          stream.rtp_rtcp->GetSendRates()[RtpPacketMediaType::kRetransmission]
+              .bps<uint32_t>();
     }
-    *sent_video_rate_bps += stream.sender_video->VideoBitrateSent();
-    *sent_nack_rate_bps +=
-        stream.rtp_rtcp->GetSendRates()[RtpPacketMediaType::kRetransmission]
-            .bps<uint32_t>();
   }
   return 0;
 }
