diff --git a/quiche/quic/moqt/moqt_bitrate_adjuster.cc b/quiche/quic/moqt/moqt_bitrate_adjuster.cc
index 8955759..fbcc224 100644
--- a/quiche/quic/moqt/moqt_bitrate_adjuster.cc
+++ b/quiche/quic/moqt/moqt_bitrate_adjuster.cc
@@ -6,6 +6,7 @@
 
 #include <cstdint>
 #include <cstdlib>
+#include <optional>
 
 #include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_time.h"
@@ -66,12 +67,14 @@
                                         BitrateAdjustmentType::kDown);
 }
 
-void MoqtBitrateAdjuster::OnObjectAckSupportKnown(bool supported) {
-  if (!supported) {
+void MoqtBitrateAdjuster::OnObjectAckSupportKnown(
+    std::optional<quic::QuicTimeDelta> time_window) {
+  if (!time_window.has_value() || *time_window <= QuicTimeDelta::Zero()) {
     QUICHE_DLOG(WARNING)
         << "OBJECT_ACK not supported; bitrate adjustments will not work.";
     return;
   }
+  time_window_ = *time_window;
   Start();
 }
 
diff --git a/quiche/quic/moqt/moqt_bitrate_adjuster.h b/quiche/quic/moqt/moqt_bitrate_adjuster.h
index b9a9487..135373a 100644
--- a/quiche/quic/moqt/moqt_bitrate_adjuster.h
+++ b/quiche/quic/moqt/moqt_bitrate_adjuster.h
@@ -6,6 +6,7 @@
 #define QUICHE_QUIC_MOQT_MOQT_BITRATE_ADJUSTER_H_
 
 #include <cstdint>
+#include <optional>
 
 #include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_clock.h"
@@ -69,7 +70,8 @@
       : clock_(clock), session_(session), adjustable_(adjustable) {}
 
   // MoqtPublishingMonitorInterface implementation.
-  void OnObjectAckSupportKnown(bool supported) override;
+  void OnObjectAckSupportKnown(
+      std::optional<quic::QuicTimeDelta> time_window) override;
   void OnObjectAckReceived(uint64_t group_id, uint64_t object_id,
                            quic::QuicTimeDelta delta_from_deadline) override;
 
@@ -84,6 +86,7 @@
   BitrateAdjustable* adjustable_;   // Not owned.
   MoqtBitrateAdjusterParameters parameters_;
   quic::QuicTime start_time_ = quic::QuicTime::Zero();
+  quic::QuicTimeDelta time_window_ = quic::QuicTimeDelta::Zero();
 };
 
 // Given a suggestion to change bitrate `old_bitrate` to `new_bitrate` with the
diff --git a/quiche/quic/moqt/moqt_bitrate_adjuster_test.cc b/quiche/quic/moqt/moqt_bitrate_adjuster_test.cc
index c6b499e..47ef36d 100644
--- a/quiche/quic/moqt/moqt_bitrate_adjuster_test.cc
+++ b/quiche/quic/moqt/moqt_bitrate_adjuster_test.cc
@@ -42,6 +42,7 @@
 constexpr QuicBandwidth kDefaultBitrate =
     QuicBandwidth::FromBitsPerSecond(2000);
 constexpr QuicTimeDelta kDefaultRtt = QuicTimeDelta::FromMilliseconds(20);
+constexpr QuicTimeDelta kDefaultTimeScale = QuicTimeDelta::FromSeconds(1);
 
 class MoqtBitrateAdjusterTest : public quiche::test::QuicheTest {
  protected:
@@ -55,7 +56,7 @@
     });
 
     clock_.AdvanceTime(quic::QuicTimeDelta::FromSeconds(10));
-    adjuster_.OnObjectAckSupportKnown(true);
+    adjuster_.OnObjectAckSupportKnown(kDefaultTimeScale);
   }
 
   MockBitrateAdjustable adjustable_;
diff --git a/quiche/quic/moqt/moqt_integration_test.cc b/quiche/quic/moqt/moqt_integration_test.cc
index e01317e..3b6af85 100644
--- a/quiche/quic/moqt/moqt_integration_test.cc
+++ b/quiche/quic/moqt/moqt_integration_test.cc
@@ -668,7 +668,7 @@
   parameters.oack_window_size = quic::QuicTimeDelta::FromMilliseconds(100);
   client_->session()->SubscribeCurrentObject(full_track_name, &client_visitor,
                                              parameters);
-  EXPECT_CALL(monitoring, OnObjectAckSupportKnown(true));
+  EXPECT_CALL(monitoring, OnObjectAckSupportKnown(parameters.oack_window_size));
   EXPECT_CALL(
       monitoring,
       OnObjectAckReceived(10, 20, quic::QuicTimeDelta::FromMicroseconds(-123)));
diff --git a/quiche/quic/moqt/moqt_session.cc b/quiche/quic/moqt/moqt_session.cc
index 76f09e0..eb11c26 100644
--- a/quiche/quic/moqt/moqt_session.cc
+++ b/quiche/quic/moqt/moqt_session.cc
@@ -1907,7 +1907,7 @@
       monitoring_interface_(monitoring_interface) {
   if (monitoring_interface_ != nullptr) {
     monitoring_interface_->OnObjectAckSupportKnown(
-        subscribe.parameters.oack_window_size.has_value());
+        subscribe.parameters.oack_window_size);
   }
   QUIC_DLOG(INFO) << ENDPOINT << "Created subscription for "
                   << subscribe.full_track_name;
diff --git a/quiche/quic/moqt/moqt_session.h b/quiche/quic/moqt/moqt_session.h
index e3166a0..25c5ae2 100644
--- a/quiche/quic/moqt/moqt_session.h
+++ b/quiche/quic/moqt/moqt_session.h
@@ -62,7 +62,8 @@
  public:
   virtual ~MoqtPublishingMonitorInterface() = default;
 
-  virtual void OnObjectAckSupportKnown(bool supported) = 0;
+  virtual void OnObjectAckSupportKnown(
+      std::optional<quic::QuicTimeDelta> time_window) = 0;
   virtual void OnObjectAckReceived(uint64_t group_id, uint64_t object_id,
                                    quic::QuicTimeDelta delta_from_deadline) = 0;
 };
diff --git a/quiche/quic/moqt/tools/moqt_mock_visitor.h b/quiche/quic/moqt/tools/moqt_mock_visitor.h
index f0be1c8..ab2943c 100644
--- a/quiche/quic/moqt/tools/moqt_mock_visitor.h
+++ b/quiche/quic/moqt/tools/moqt_mock_visitor.h
@@ -106,7 +106,8 @@
 
 class MockPublishingMonitorInterface : public MoqtPublishingMonitorInterface {
  public:
-  MOCK_METHOD(void, OnObjectAckSupportKnown, (bool supported), (override));
+  MOCK_METHOD(void, OnObjectAckSupportKnown,
+              (std::optional<quic::QuicTimeDelta> time_window), (override));
   MOCK_METHOD(void, OnObjectAckReceived,
               (uint64_t group_id, uint64_t object_id,
                quic::QuicTimeDelta delta_from_deadline),
