VideoTrackSourceInterface: make some newly introduced methods pure virtual.

Bug: webrtc:11114
Change-Id: Ic4d3835ae84b6a652c49f30a9c275870bbf3dacf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174440
Commit-Queue: Markus Handell <handellm@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31211}
diff --git a/api/media_stream_interface.h b/api/media_stream_interface.h
index 79d463d..bd4a2c0 100644
--- a/api/media_stream_interface.h
+++ b/api/media_stream_interface.h
@@ -137,15 +137,11 @@
   virtual bool GetStats(Stats* stats) = 0;
 
   // Returns true if encoded output can be enabled in the source.
-  // TODO(bugs.webrtc.org/11114): make pure virtual once downstream project
-  // adapts.
-  virtual bool SupportsEncodedOutput() const { return false; }
+  virtual bool SupportsEncodedOutput() const = 0;
 
   // Reliably cause a key frame to be generated in encoded output.
   // TODO(bugs.webrtc.org/11115): find optimal naming.
-  // TODO(bugs.webrtc.org/11114): make pure virtual once downstream project
-  // adapts.
-  virtual void GenerateKeyFrame() {}
+  virtual void GenerateKeyFrame() = 0;
 
   // Add an encoded video sink to the source and additionally cause
   // a key frame to be generated from the source. The sink will be
@@ -153,13 +149,11 @@
   // TODO(bugs.webrtc.org/11114): make pure virtual once downstream project
   // adapts.
   virtual void AddEncodedSink(
-      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) {}
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) = 0;
 
   // Removes an encoded video sink from the source.
-  // TODO(bugs.webrtc.org/11114): make pure virtual once downstream project
-  // adapts.
   virtual void RemoveEncodedSink(
-      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) {}
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) = 0;
 
  protected:
   ~VideoTrackSourceInterface() override = default;
diff --git a/media/base/adapted_video_track_source.h b/media/base/adapted_video_track_source.h
index 667715a..7dbab54 100644
--- a/media/base/adapted_video_track_source.h
+++ b/media/base/adapted_video_track_source.h
@@ -79,6 +79,14 @@
 
   void OnSinkWantsChanged(const rtc::VideoSinkWants& wants);
 
+  // Encoded sinks not implemented for AdaptedVideoTrackSource.
+  bool SupportsEncodedOutput() const override { return false; }
+  void GenerateKeyFrame() override {}
+  void AddEncodedSink(
+      rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {}
+  void RemoveEncodedSink(
+      rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {}
+
   cricket::VideoAdapter video_adapter_;
 
   rtc::CriticalSection stats_crit_;
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index d3114f3..db00dd7 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -248,6 +248,12 @@
   void AddOrUpdateSink(rtc::VideoSinkInterface<VideoFrame>* sink,
                        const rtc::VideoSinkWants& wants) override {}
   void RemoveSink(rtc::VideoSinkInterface<VideoFrame>* sink) override {}
+  bool SupportsEncodedOutput() const override { return false; }
+  void GenerateKeyFrame() override {}
+  void AddEncodedSink(
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) override {}
+  void RemoveEncodedSink(
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) override {}
 
  private:
   int input_width_;
diff --git a/pc/video_track_source.h b/pc/video_track_source.h
index ad0fe09..27331ea 100644
--- a/pc/video_track_source.h
+++ b/pc/video_track_source.h
@@ -41,6 +41,13 @@
                        const rtc::VideoSinkWants& wants) override;
   void RemoveSink(rtc::VideoSinkInterface<VideoFrame>* sink) override;
 
+  bool SupportsEncodedOutput() const override { return false; }
+  void GenerateKeyFrame() override {}
+  void AddEncodedSink(
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) override {}
+  void RemoveEncodedSink(
+      rtc::VideoSinkInterface<RecordableEncodedFrame>* sink) override {}
+
  protected:
   virtual rtc::VideoSourceInterface<VideoFrame>* source() = 0;
 
diff --git a/sdk/android/native_api/video/video_source.cc b/sdk/android/native_api/video/video_source.cc
index a813f40..1f4bc4d 100644
--- a/sdk/android/native_api/video/video_source.cc
+++ b/sdk/android/native_api/video/video_source.cc
@@ -89,6 +89,14 @@
   }
 
  private:
+  // Encoded sinks not implemented for JavaVideoTrackSourceImpl.
+  bool SupportsEncodedOutput() const override { return false; }
+  void GenerateKeyFrame() override {}
+  void AddEncodedSink(
+      rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {}
+  void RemoveEncodedSink(
+      rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {}
+
   rtc::scoped_refptr<jni::AndroidVideoTrackSource> android_video_track_source_;
   ScopedJavaGlobalRef<jobject> native_capturer_observer_;
 };