diff --git a/api/video_codecs/video_encoder_factory.h b/api/video_codecs/video_encoder_factory.h index d28a2a4035..fa043f5296 100644 --- a/api/video_codecs/video_encoder_factory.h +++ b/api/video_codecs/video_encoder_factory.h @@ -16,14 +16,15 @@ #include #include "absl/types/optional.h" +#include "api/environment/environment.h" #include "api/units/data_rate.h" #include "api/video/render_resolution.h" #include "api/video_codecs/sdp_video_format.h" +#include "api/video_codecs/video_encoder.h" +#include "rtc_base/checks.h" namespace webrtc { -class VideoEncoder; - // A factory that creates VideoEncoders. // NOTE: This class is still under development and may change without notice. class VideoEncoderFactory { @@ -96,8 +97,21 @@ class VideoEncoderFactory { } // Creates a VideoEncoder for the specified format. + virtual std::unique_ptr Create(const Environment& env, + const SdpVideoFormat& format) { + return CreateVideoEncoder(format); + } + + // Deprecated in favor of the `Create` above. + // TODO: bugs.webrtc.org/15860 - Make private when all callers are updated + // to use Create function above. Delete when all derived classes implement + // `Create` instead of this function. virtual std::unique_ptr CreateVideoEncoder( - const SdpVideoFormat& format) = 0; + const SdpVideoFormat& format) { + // Newer code shouldn't call this function, + // Older code should implement it in derived classes. + RTC_CHECK_NOTREACHED(); + } // This method creates a EncoderSelector to use for a VideoSendStream. // (and hence should probably been called CreateEncoderSelector()). diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 35d9c435cc..c28d086fa4 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -947,8 +947,7 @@ void VideoStreamEncoder::ReconfigureEncoder() { encoder_.reset(); encoder_ = MaybeCreateFrameDumpingEncoderWrapper( - settings_.encoder_factory->CreateVideoEncoder( - encoder_config_.video_format), + settings_.encoder_factory->Create(env_, encoder_config_.video_format), env_.field_trials()); if (!encoder_) { RTC_LOG(LS_ERROR) << "CreateVideoEncoder failed, failing encoder format: "