diff --git a/common_video/libyuv/webrtc_libyuv.cc b/common_video/libyuv/webrtc_libyuv.cc
index c7613ce..f4fb15e 100644
--- a/common_video/libyuv/webrtc_libyuv.cc
+++ b/common_video/libyuv/webrtc_libyuv.cc
@@ -14,7 +14,6 @@
 
 #include "api/video/i420_buffer.h"
 #include "common_video/include/video_frame_buffer.h"
-#include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
 #include "third_party/libyuv/include/libyuv.h"
 
@@ -138,10 +137,6 @@
       ConvertVideoType(dst_video_type));
 }
 
-// Helper functions for keeping references alive.
-void KeepBufferRefs(rtc::scoped_refptr<webrtc::VideoFrameBuffer>,
-                    rtc::scoped_refptr<webrtc::VideoFrameBuffer>) {}
-
 rtc::scoped_refptr<I420ABufferInterface> ScaleI420ABuffer(
     const I420ABufferInterface& buffer,
     int target_width,
@@ -160,7 +155,8 @@
       yuv_buffer->StrideY(), yuv_buffer->DataU(), yuv_buffer->StrideU(),
       yuv_buffer->DataV(), yuv_buffer->StrideV(), axx_buffer->DataY(),
       axx_buffer->StrideY(),
-      rtc::Bind(&KeepBufferRefs, yuv_buffer, axx_buffer));
+      // To keep references alive.
+      [yuv_buffer, axx_buffer] {});
   return merged_buffer;
 }
 
diff --git a/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
index 39c14e4..426a9f8 100644
--- a/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
+++ b/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
@@ -20,11 +20,6 @@
 #include "rtc_base/keep_ref_until_done.h"
 #include "rtc_base/logging.h"
 
-namespace {
-void KeepBufferRefs(rtc::scoped_refptr<webrtc::VideoFrameBuffer>,
-                    rtc::scoped_refptr<webrtc::VideoFrameBuffer>) {}
-}  // anonymous namespace
-
 namespace webrtc {
 
 class MultiplexDecoderAdapter::AdapterDecodedImageCallback
@@ -250,7 +245,8 @@
         yuv_buffer->StrideY(), yuv_buffer->DataU(), yuv_buffer->StrideU(),
         yuv_buffer->DataV(), yuv_buffer->StrideV(), alpha_buffer->DataY(),
         alpha_buffer->StrideY(),
-        rtc::Bind(&KeepBufferRefs, yuv_buffer, alpha_buffer));
+        // To keep references alive.
+        [yuv_buffer, alpha_buffer] {});
   }
   if (supports_augmenting_data_) {
     merged_buffer = rtc::scoped_refptr<webrtc::AugmentedVideoFrameBuffer>(
diff --git a/rtc_base/keep_ref_until_done.h b/rtc_base/keep_ref_until_done.h
index 7bebd82..5ae0ed1 100644
--- a/rtc_base/keep_ref_until_done.h
+++ b/rtc_base/keep_ref_until_done.h
@@ -12,29 +12,23 @@
 #define RTC_BASE_KEEP_REF_UNTIL_DONE_H_
 
 #include "api/scoped_refptr.h"
-#include "rtc_base/bind.h"
 #include "rtc_base/callback.h"
-#include "rtc_base/ref_count.h"
 
 namespace rtc {
 
-namespace impl {
-template <class T>
-static inline void DoNothing(const scoped_refptr<T>& object) {}
-}  // namespace impl
-
 // KeepRefUntilDone keeps a reference to |object| until the returned
 // callback goes out of scope. If the returned callback is copied, the
 // reference will be released when the last callback goes out of scope.
 template <class ObjectT>
 static inline Callback0<void> KeepRefUntilDone(ObjectT* object) {
-  return rtc::Bind(&impl::DoNothing<ObjectT>, scoped_refptr<ObjectT>(object));
+  scoped_refptr<ObjectT> p(object);
+  return [p] {};
 }
 
 template <class ObjectT>
 static inline Callback0<void> KeepRefUntilDone(
     const scoped_refptr<ObjectT>& object) {
-  return rtc::Bind(&impl::DoNothing<ObjectT>, object);
+  return [object] {};
 }
 
 }  // namespace rtc
diff --git a/test/frame_generator.cc b/test/frame_generator.cc
index 6c551d4..4594e1d 100644
--- a/test/frame_generator.cc
+++ b/test/frame_generator.cc
@@ -20,20 +20,12 @@
 #include "api/video/video_rotation.h"
 #include "common_video/include/video_frame_buffer.h"
 #include "common_video/libyuv/include/webrtc_libyuv.h"
-#include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/keep_ref_until_done.h"
 #include "test/frame_utils.h"
 
 namespace webrtc {
 namespace test {
-namespace {
-
-// Helper method for keeping a reference to passed pointers.
-void KeepBufferRefs(rtc::scoped_refptr<webrtc::VideoFrameBuffer>,
-                    rtc::scoped_refptr<webrtc::VideoFrameBuffer>) {}
-
-}  // namespace
 
 SquareGenerator::SquareGenerator(int width,
                                  int height,
@@ -81,12 +73,13 @@
           CreateI420Buffer(width_, height_);
       rtc::scoped_refptr<I420Buffer> axx_buffer =
           CreateI420Buffer(width_, height_);
-      buffer = WrapI420ABuffer(
-          yuv_buffer->width(), yuv_buffer->height(), yuv_buffer->DataY(),
-          yuv_buffer->StrideY(), yuv_buffer->DataU(), yuv_buffer->StrideU(),
-          yuv_buffer->DataV(), yuv_buffer->StrideV(), axx_buffer->DataY(),
-          axx_buffer->StrideY(),
-          rtc::Bind(&KeepBufferRefs, yuv_buffer, axx_buffer));
+      buffer = WrapI420ABuffer(yuv_buffer->width(), yuv_buffer->height(),
+                               yuv_buffer->DataY(), yuv_buffer->StrideY(),
+                               yuv_buffer->DataU(), yuv_buffer->StrideU(),
+                               yuv_buffer->DataV(), yuv_buffer->StrideV(),
+                               axx_buffer->DataY(), axx_buffer->StrideY(),
+                               // To keep references alive.
+                               [yuv_buffer, axx_buffer] {});
       break;
     }
     default:
