diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index 266d653..155e76c 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -59,6 +59,7 @@
   // Returns true if the decoder prefer to decode frames late.
   // That is, it can not decode infinite number of frames before the decoded
   // frame is consumed.
+  // TODO(bugs.webrtc.org/12271): Remove when downstream has been updated.
   virtual bool PrefersLateDecoding() const;
 
   virtual const char* ImplementationName() const;
diff --git a/api/video_codecs/video_decoder_software_fallback_wrapper.cc b/api/video_codecs/video_decoder_software_fallback_wrapper.cc
index 128087f..32941d2 100644
--- a/api/video_codecs/video_decoder_software_fallback_wrapper.cc
+++ b/api/video_codecs/video_decoder_software_fallback_wrapper.cc
@@ -50,7 +50,6 @@
       DecodedImageCallback* callback) override;
 
   int32_t Release() override;
-  bool PrefersLateDecoding() const override;
 
   const char* ImplementationName() const override;
 
@@ -262,10 +261,6 @@
   return status;
 }
 
-bool VideoDecoderSoftwareFallbackWrapper::PrefersLateDecoding() const {
-  return active_decoder().PrefersLateDecoding();
-}
-
 const char* VideoDecoderSoftwareFallbackWrapper::ImplementationName() const {
   return decoder_type_ == DecoderType::kFallback
              ? fallback_implementation_name_.c_str()
diff --git a/modules/video_coding/decoder_database.cc b/modules/video_coding/decoder_database.cc
index a7a4b8f..594ca86 100644
--- a/modules/video_coding/decoder_database.cc
+++ b/modules/video_coding/decoder_database.cc
@@ -133,10 +133,6 @@
   return ptr_decoder_.get();
 }
 
-bool VCMDecoderDataBase::PrefersLateDecoding() const {
-  return ptr_decoder_ ? ptr_decoder_->PrefersLateDecoding() : true;
-}
-
 std::unique_ptr<VCMGenericDecoder> VCMDecoderDataBase::CreateAndInitDecoder(
     const VCMEncodedFrame& frame,
     VideoCodec* new_codec) const {
diff --git a/modules/video_coding/decoder_database.h b/modules/video_coding/decoder_database.h
index abfd81e..f7c5d70 100644
--- a/modules/video_coding/decoder_database.h
+++ b/modules/video_coding/decoder_database.h
@@ -59,10 +59,6 @@
       const VCMEncodedFrame& frame,
       VCMDecodedFrameCallback* decoded_frame_callback);
 
-  // Returns true if the currently active decoder prefer to decode frames late.
-  // That means that frames must be decoded near the render times stamp.
-  bool PrefersLateDecoding() const;
-
  private:
   typedef std::map<uint8_t, VCMDecoderMapItem*> DecoderMap;
   typedef std::map<uint8_t, VCMExtDecoderMapItem*> ExternalDecoderMap;
diff --git a/modules/video_coding/generic_decoder.cc b/modules/video_coding/generic_decoder.cc
index 7905792..d237d0c 100644
--- a/modules/video_coding/generic_decoder.cc
+++ b/modules/video_coding/generic_decoder.cc
@@ -294,8 +294,4 @@
   return decoder_->RegisterDecodeCompleteCallback(callback);
 }
 
-bool VCMGenericDecoder::PrefersLateDecoding() const {
-  return decoder_->PrefersLateDecoding();
-}
-
 }  // namespace webrtc
diff --git a/modules/video_coding/generic_decoder.h b/modules/video_coding/generic_decoder.h
index 8481fdc..bd3620d 100644
--- a/modules/video_coding/generic_decoder.h
+++ b/modules/video_coding/generic_decoder.h
@@ -111,7 +111,6 @@
    */
   int32_t RegisterDecodeCompleteCallback(VCMDecodedFrameCallback* callback);
 
-  bool PrefersLateDecoding() const;
   bool IsSameDecoder(VideoDecoder* decoder) const {
     return decoder_.get() == decoder;
   }
diff --git a/modules/video_coding/video_receiver.cc b/modules/video_coding/video_receiver.cc
index c2c8f8a..23c251f 100644
--- a/modules/video_coding/video_receiver.cc
+++ b/modules/video_coding/video_receiver.cc
@@ -173,8 +173,7 @@
 // Should be called as often as possible to get the most out of the decoder.
 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) {
   RTC_DCHECK_RUN_ON(&decoder_thread_checker_);
-  VCMEncodedFrame* frame = _receiver.FrameForDecoding(
-      maxWaitTimeMs, _codecDataBase.PrefersLateDecoding());
+  VCMEncodedFrame* frame = _receiver.FrameForDecoding(maxWaitTimeMs, true);
 
   if (!frame)
     return VCM_FRAME_NOT_READY;
diff --git a/sdk/android/api/org/webrtc/VideoDecoder.java b/sdk/android/api/org/webrtc/VideoDecoder.java
index 879b694..f4d3b8f 100644
--- a/sdk/android/api/org/webrtc/VideoDecoder.java
+++ b/sdk/android/api/org/webrtc/VideoDecoder.java
@@ -90,7 +90,10 @@
    * The decoder should return true if it prefers late decoding. That is, it can not decode
    * infinite number of frames before the decoded frame is consumed.
    */
-  @CalledByNative boolean getPrefersLateDecoding();
+  // TODO(bugs.webrtc.org/12271): Remove when downstream has been updated.
+  default boolean getPrefersLateDecoding() {
+    return true;
+  }
   /**
    * Should return a descriptive name for the implementation. Gets called once and cached. May be
    * called from arbitrary thread.
diff --git a/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java b/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
index b70c664..027120e 100644
--- a/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
+++ b/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
@@ -32,11 +32,6 @@
   }
 
   @Override
-  public final boolean getPrefersLateDecoding() {
-    throw new UnsupportedOperationException("Not implemented.");
-  }
-
-  @Override
   public final String getImplementationName() {
     throw new UnsupportedOperationException("Not implemented.");
   }
diff --git a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
index dcb045f..35a0f0e 100644
--- a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
+++ b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
@@ -292,11 +292,6 @@
   }
 
   @Override
-  public boolean getPrefersLateDecoding() {
-    return true;
-  }
-
-  @Override
   public String getImplementationName() {
     return codecName;
   }
diff --git a/sdk/android/src/jni/video_decoder_wrapper.cc b/sdk/android/src/jni/video_decoder_wrapper.cc
index 4eb70f7..01fb84f 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_wrapper.cc
@@ -144,11 +144,6 @@
   return status;
 }
 
-bool VideoDecoderWrapper::PrefersLateDecoding() const {
-  JNIEnv* jni = AttachCurrentThreadIfNeeded();
-  return Java_VideoDecoder_getPrefersLateDecoding(jni, decoder_);
-}
-
 const char* VideoDecoderWrapper::ImplementationName() const {
   return implementation_name_.c_str();
 }
diff --git a/sdk/android/src/jni/video_decoder_wrapper.h b/sdk/android/src/jni/video_decoder_wrapper.h
index f5c4787..e8d0fec 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.h
+++ b/sdk/android/src/jni/video_decoder_wrapper.h
@@ -47,11 +47,6 @@
   // still safe and synchronous.
   int32_t Release() override RTC_NO_THREAD_SAFETY_ANALYSIS;
 
-  // Returns true if the decoder prefer to decode frames late.
-  // That is, it can not decode infinite number of frames before the decoded
-  // frame is consumed.
-  bool PrefersLateDecoding() const override;
-
   const char* ImplementationName() const override;
 
   // Wraps the frame to a AndroidVideoBuffer and passes it to the callback.
diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
index 196f900..5cd961e 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
@@ -123,10 +123,6 @@
   return result;
 }
 
-bool QualityAnalyzingVideoDecoder::PrefersLateDecoding() const {
-  return delegate_->PrefersLateDecoding();
-}
-
 const char* QualityAnalyzingVideoDecoder::ImplementationName() const {
   return implementation_name_.c_str();
 }
diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
index 2381f59..79ca68d 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
@@ -69,7 +69,6 @@
   int32_t RegisterDecodeCompleteCallback(
       DecodedImageCallback* callback) override;
   int32_t Release() override;
-  bool PrefersLateDecoding() const override;
   const char* ImplementationName() const override;
 
  private:
diff --git a/test/video_decoder_proxy_factory.h b/test/video_decoder_proxy_factory.h
index 84552e3..2027f71 100644
--- a/test/video_decoder_proxy_factory.h
+++ b/test/video_decoder_proxy_factory.h
@@ -61,7 +61,6 @@
       return decoder_->RegisterDecodeCompleteCallback(callback);
     }
     int32_t Release() override { return decoder_->Release(); }
-    bool PrefersLateDecoding() const { return decoder_->PrefersLateDecoding(); }
     const char* ImplementationName() const override {
       return decoder_->ImplementationName();
     }
diff --git a/video/frame_dumping_decoder.cc b/video/frame_dumping_decoder.cc
index 4ccb333..c27a653 100644
--- a/video/frame_dumping_decoder.cc
+++ b/video/frame_dumping_decoder.cc
@@ -32,7 +32,6 @@
   int32_t RegisterDecodeCompleteCallback(
       DecodedImageCallback* callback) override;
   int32_t Release() override;
-  bool PrefersLateDecoding() const override;
   const char* ImplementationName() const override;
 
  private:
@@ -73,10 +72,6 @@
   return decoder_->Release();
 }
 
-bool FrameDumpingDecoder::PrefersLateDecoding() const {
-  return decoder_->PrefersLateDecoding();
-}
-
 const char* FrameDumpingDecoder::ImplementationName() const {
   return decoder_->ImplementationName();
 }
