diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc
index 000152f..a467662 100644
--- a/modules/video_coding/frame_buffer2.cc
+++ b/modules/video_coding/frame_buffer2.cc
@@ -299,14 +299,10 @@
     }
 
     float rtt_mult = protection_mode_ == kProtectionNackFEC ? 0.0 : 1.0;
-    float jitter_est_cap_ms = 300.0;
     if (RttMultExperiment::RttMultEnabled()) {
       rtt_mult = RttMultExperiment::GetRttMultValue();
-      // TODO(mhoro): add RttMultExperiment::GetJitterEstCapValue();
-      jitter_est_cap_ms = 300.0;
     }
-    timing_->SetJitterDelay(
-        jitter_estimator_.GetJitterEstimate(rtt_mult, jitter_est_cap_ms));
+    timing_->SetJitterDelay(jitter_estimator_.GetJitterEstimate(rtt_mult));
     timing_->UpdateCurrentDelay(render_time_ms, now_ms);
   } else {
     if (RttMultExperiment::RttMultEnabled() || add_rtt_to_playout_delay_)
diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc
index 7a7f632..3d3b967 100644
--- a/modules/video_coding/jitter_buffer.cc
+++ b/modules/video_coding/jitter_buffer.cc
@@ -582,8 +582,7 @@
 uint32_t VCMJitterBuffer::EstimatedJitterMs() {
   rtc::CritScope cs(&crit_sect_);
   const double rtt_mult = 1.0f;
-  const double jitter_est_cap_ms = 300.0f;
-  return jitter_estimate_.GetJitterEstimate(rtt_mult, jitter_est_cap_ms);
+  return jitter_estimate_.GetJitterEstimate(rtt_mult);
 }
 
 void VCMJitterBuffer::SetNackSettings(size_t max_nack_list_size,
diff --git a/modules/video_coding/jitter_estimator.cc b/modules/video_coding/jitter_estimator.cc
index d4899a2..052d306 100644
--- a/modules/video_coding/jitter_estimator.cc
+++ b/modules/video_coding/jitter_estimator.cc
@@ -374,8 +374,7 @@
 
 // Returns the current filtered estimate if available,
 // otherwise tries to calculate an estimate.
-int VCMJitterEstimator::GetJitterEstimate(double rttMultiplier,
-                                          double jitterEstCapMs) {
+int VCMJitterEstimator::GetJitterEstimate(double rttMultiplier) {
   double jitterMS = CalculateEstimate() + OPERATING_SYSTEM_JITTER;
   uint64_t now = clock_->TimeInMicroseconds();
 
@@ -384,10 +383,8 @@
 
   if (_filterJitterEstimate > jitterMS)
     jitterMS = _filterJitterEstimate;
-  if (_nackCount >= _nackLimit) {
+  if (_nackCount >= _nackLimit)
     jitterMS += _rttFilter.RttMs() * rttMultiplier;
-    jitterMS = std::min(jitterMS, jitterEstCapMs);
-  }
 
   static const double kJitterScaleLowThreshold = 5.0;
   static const double kJitterScaleHighThreshold = 10.0;
diff --git a/modules/video_coding/jitter_estimator.h b/modules/video_coding/jitter_estimator.h
index a58d667..4ce43f9 100644
--- a/modules/video_coding/jitter_estimator.h
+++ b/modules/video_coding/jitter_estimator.h
@@ -46,7 +46,7 @@
   //          - rttMultiplier  : RTT param multiplier (when applicable).
   //
   // Return value              : Jitter estimate in milliseconds.
-  virtual int GetJitterEstimate(double rttMultiplier, double jitterEstCapMs);
+  virtual int GetJitterEstimate(double rttMultiplier);
 
   // Updates the nack counter.
   void FrameNacked();
diff --git a/modules/video_coding/jitter_estimator_tests.cc b/modules/video_coding/jitter_estimator_tests.cc
index 3f5221a..fba2bf7 100644
--- a/modules/video_coding/jitter_estimator_tests.cc
+++ b/modules/video_coding/jitter_estimator_tests.cc
@@ -67,7 +67,7 @@
     estimator_->UpdateEstimate(gen.Delay(), gen.FrameSize());
     AdvanceClock(time_delta_us);
     if (i > 2)
-      EXPECT_EQ(estimator_->GetJitterEstimate(0, 300), 0);
+      EXPECT_EQ(estimator_->GetJitterEstimate(0), 0);
     gen.Advance();
   }
 }
@@ -98,7 +98,7 @@
       estimator_->UpdateEstimate(gen.Delay(), gen.FrameSize());
       AdvanceClock(time_delta_us);
       context.percentiles.Add(
-          static_cast<uint32_t>(estimator_->GetJitterEstimate(0, 300)));
+          static_cast<uint32_t>(estimator_->GetJitterEstimate(0)));
       gen.Advance();
     }
   }
