Add Clone() to Vp8FrameBufferControllerFactory

Bug: None
Change-Id: Ie59c795361420695ca9cb363ec5b3035728306f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142227
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28297}
diff --git a/api/video_codecs/vp8_frame_buffer_controller.h b/api/video_codecs/vp8_frame_buffer_controller.h
index 0d38455..91bb2f6 100644
--- a/api/video_codecs/vp8_frame_buffer_controller.h
+++ b/api/video_codecs/vp8_frame_buffer_controller.h
@@ -176,6 +176,12 @@
  public:
   virtual ~Vp8FrameBufferControllerFactory() = default;
 
+  // Clones oneself. (Avoids Vp8FrameBufferControllerFactoryFactory.)
+  // TODO(bugs.webrtc.org/10720): Update downstream and make pure-virtual.
+  virtual std::unique_ptr<Vp8FrameBufferControllerFactory> Clone() const {
+    return nullptr;
+  }
+
   // TODO(bugs.webrtc.org/10720): Update downstream and remove.
   virtual std::unique_ptr<Vp8FrameBufferController> Create(
       const VideoCodec& codec) {
diff --git a/api/video_codecs/vp8_temporal_layers_factory.cc b/api/video_codecs/vp8_temporal_layers_factory.cc
index 878fa79..1a77323 100644
--- a/api/video_codecs/vp8_temporal_layers_factory.cc
+++ b/api/video_codecs/vp8_temporal_layers_factory.cc
@@ -47,4 +47,9 @@
   return absl::make_unique<Vp8TemporalLayers>(std::move(controllers));
 }
 
+std::unique_ptr<Vp8FrameBufferControllerFactory>
+Vp8TemporalLayersFactory::Clone() const {
+  return absl::make_unique<Vp8TemporalLayersFactory>();
+}
+
 }  // namespace webrtc
diff --git a/api/video_codecs/vp8_temporal_layers_factory.h b/api/video_codecs/vp8_temporal_layers_factory.h
index fd5e5d6..747580f 100644
--- a/api/video_codecs/vp8_temporal_layers_factory.h
+++ b/api/video_codecs/vp8_temporal_layers_factory.h
@@ -21,6 +21,8 @@
  public:
   ~Vp8TemporalLayersFactory() override = default;
 
+  std::unique_ptr<Vp8FrameBufferControllerFactory> Clone() const override;
+
   std::unique_ptr<Vp8FrameBufferController> Create(
       const VideoCodec& codec,
       const VideoEncoder::Settings& settings) override;