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}
This commit is contained in:
Markus Handell 2020-05-05 20:11:13 +02:00 committed by Commit Bot
parent a54ba4c02e
commit 6efc14b33d
5 changed files with 33 additions and 10 deletions

View File

@ -137,15 +137,11 @@ class VideoTrackSourceInterface : public MediaSourceInterface,
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 @@ class VideoTrackSourceInterface : public MediaSourceInterface,
// 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;

View File

@ -79,6 +79,14 @@ class RTC_EXPORT AdaptedVideoTrackSource
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_;

View File

@ -248,6 +248,12 @@ class FakeVideoTrackSourceForStats : public VideoTrackSourceInterface {
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_;

View File

@ -41,6 +41,13 @@ class RTC_EXPORT VideoTrackSource : public Notifier<VideoTrackSourceInterface> {
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;

View File

@ -89,6 +89,14 @@ class JavaVideoTrackSourceImpl : public JavaVideoTrackSourceInterface {
}
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_;
};