Remove webrtc::VideoDecoder::PrefersLateDecoding.

This is just general cleanup.

The assumed behavior is late decoding, and this function is not used to make any decision (except in the deprecated jitter buffer).

Bug: webrtc:12271
Change-Id: Ifb48186d55903f068f25e44c5f73e7a724f6f456
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/200804
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32940}
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();
 }