diff --git a/api/test/mock_video_decoder.h b/api/test/mock_video_decoder.h
index 6dee760..8719422 100644
--- a/api/test/mock_video_decoder.h
+++ b/api/test/mock_video_decoder.h
@@ -29,8 +29,6 @@
                void(VideoFrame& decodedImage,  // NOLINT
                     absl::optional<int32_t> decode_time_ms,
                     absl::optional<uint8_t> qp));
-  MOCK_METHOD1(ReceivedDecodedReferenceFrame,
-               int32_t(const uint64_t pictureId));
   MOCK_METHOD1(ReceivedDecodedFrame, int32_t(const uint64_t pictureId));
 };
 
diff --git a/api/video_codecs/video_decoder.cc b/api/video_codecs/video_decoder.cc
index 32725b9..b0a1c87 100644
--- a/api/video_codecs/video_decoder.cc
+++ b/api/video_codecs/video_decoder.cc
@@ -24,11 +24,6 @@
   Decoded(decodedImage, decode_time_ms.value_or(-1));
 }
 
-int32_t DecodedImageCallback::ReceivedDecodedReferenceFrame(
-    const uint64_t pictureId) {
-  return -1;
-}
-
 int32_t DecodedImageCallback::ReceivedDecodedFrame(const uint64_t pictureId) {
   return -1;
 }
diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index 3403987..d0341b1 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -43,8 +43,6 @@
                        absl::optional<int32_t> decode_time_ms,
                        absl::optional<uint8_t> qp);
 
-  virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
-
   virtual int32_t ReceivedDecodedFrame(const uint64_t pictureId);
 };
 
diff --git a/modules/video_coding/generic_decoder.cc b/modules/video_coding/generic_decoder.cc
index 7da932a..c8085bb 100644
--- a/modules/video_coding/generic_decoder.cc
+++ b/modules/video_coding/generic_decoder.cc
@@ -147,11 +147,6 @@
   _receiveCallback->FrameToRender(decodedImage, qp, frameInfo->content_type);
 }
 
-int32_t VCMDecodedFrameCallback::ReceivedDecodedReferenceFrame(
-    const uint64_t pictureId) {
-  return _receiveCallback->ReceivedDecodedReferenceFrame(pictureId);
-}
-
 int32_t VCMDecodedFrameCallback::ReceivedDecodedFrame(
     const uint64_t pictureId) {
   _lastReceivedPictureID = pictureId;
diff --git a/modules/video_coding/generic_decoder.h b/modules/video_coding/generic_decoder.h
index d4a15d9..a4cf9b4 100644
--- a/modules/video_coding/generic_decoder.h
+++ b/modules/video_coding/generic_decoder.h
@@ -48,7 +48,6 @@
   void Decoded(VideoFrame& decodedImage,
                absl::optional<int32_t> decode_time_ms,
                absl::optional<uint8_t> qp) override;
-  int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId) override;
   int32_t ReceivedDecodedFrame(const uint64_t pictureId) override;
 
   uint64_t LastReceivedPictureID() const;
diff --git a/modules/video_coding/include/mock/mock_vcm_callbacks.h b/modules/video_coding/include/mock/mock_vcm_callbacks.h
index 3749a6a..d2d0378 100644
--- a/modules/video_coding/include/mock/mock_vcm_callbacks.h
+++ b/modules/video_coding/include/mock/mock_vcm_callbacks.h
@@ -29,7 +29,6 @@
 
   MOCK_METHOD3(FrameToRender,
                int32_t(VideoFrame&, absl::optional<uint8_t>, VideoContentType));
-  MOCK_METHOD1(ReceivedDecodedReferenceFrame, int32_t(const uint64_t));
   MOCK_METHOD1(OnIncomingPayloadType, void(int));
   MOCK_METHOD1(OnDecoderImplementationName, void(const char*));
 };
diff --git a/modules/video_coding/include/video_coding_defines.h b/modules/video_coding/include/video_coding_defines.h
index 8ea5725..c1bcbf3 100644
--- a/modules/video_coding/include/video_coding_defines.h
+++ b/modules/video_coding/include/video_coding_defines.h
@@ -67,7 +67,6 @@
                                 absl::optional<uint8_t> qp,
                                 VideoContentType content_type) = 0;
 
-  virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
   // Called when the current receive codec changes.
   virtual void OnIncomingPayloadType(int payload_type);
   virtual void OnDecoderImplementationName(const char* implementation_name);
diff --git a/modules/video_coding/video_coding_defines.cc b/modules/video_coding/video_coding_defines.cc
index 0a9cb3a..0927697 100644
--- a/modules/video_coding/video_coding_defines.cc
+++ b/modules/video_coding/video_coding_defines.cc
@@ -12,10 +12,6 @@
 
 namespace webrtc {
 
-int32_t VCMReceiveCallback::ReceivedDecodedReferenceFrame(
-    const uint64_t pictureId) {
-  return -1;
-}
 void VCMReceiveCallback::OnIncomingPayloadType(int payload_type) {}
 void VCMReceiveCallback::OnDecoderImplementationName(
     const char* implementation_name) {}
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 9944076..0acfa0d 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
@@ -175,14 +175,6 @@
   delegate_callback_->Decoded(decodedImage, decode_time_ms, qp);
 }
 
-int32_t
-QualityAnalyzingVideoDecoder::DecoderCallback::ReceivedDecodedReferenceFrame(
-    const uint64_t pictureId) {
-  rtc::CritScope crit(&callback_lock_);
-  RTC_DCHECK(delegate_callback_);
-  return delegate_callback_->ReceivedDecodedReferenceFrame(pictureId);
-}
-
 int32_t QualityAnalyzingVideoDecoder::DecoderCallback::ReceivedDecodedFrame(
     const uint64_t pictureId) {
   rtc::CritScope crit(&callback_lock_);
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 0b826ba..50ccc23 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
@@ -84,7 +84,6 @@
     void Decoded(VideoFrame& decodedImage,
                  absl::optional<int32_t> decode_time_ms,
                  absl::optional<uint8_t> qp) override;
-    int32_t ReceivedDecodedReferenceFrame(uint64_t pictureId) override;
     int32_t ReceivedDecodedFrame(uint64_t pictureId) override;
 
     int32_t IrrelevantSimulcastStreamDecoded(uint16_t frame_id,
diff --git a/video/video_stream_decoder.cc b/video/video_stream_decoder.cc
index 75152f6..3fdb905 100644
--- a/video/video_stream_decoder.cc
+++ b/video/video_stream_decoder.cc
@@ -51,12 +51,6 @@
   return 0;
 }
 
-int32_t VideoStreamDecoder::ReceivedDecodedReferenceFrame(
-    const uint64_t picture_id) {
-  RTC_NOTREACHED();
-  return 0;
-}
-
 void VideoStreamDecoder::OnIncomingPayloadType(int payload_type) {
   receive_stats_callback_->OnIncomingPayloadType(payload_type);
 }
diff --git a/video/video_stream_decoder.h b/video/video_stream_decoder.h
index b3381b4..50b0c8c 100644
--- a/video/video_stream_decoder.h
+++ b/video/video_stream_decoder.h
@@ -43,7 +43,6 @@
   int32_t FrameToRender(VideoFrame& video_frame,
                         absl::optional<uint8_t> qp,
                         VideoContentType content_type) override;
-  int32_t ReceivedDecodedReferenceFrame(const uint64_t picture_id) override;
   void OnIncomingPayloadType(int payload_type) override;
   void OnDecoderImplementationName(const char* implementation_name) override;
 
