Index: webrtc/media/engine/webrtcvideoengine.h |
diff --git a/webrtc/media/engine/webrtcvideoengine.h b/webrtc/media/engine/webrtcvideoengine.h |
index e61f42228dd68817fc2cf8467a2d9d79a092bdab..8c8aefb140662ebf274a1c37860e3a408b2accde 100644 |
--- a/webrtc/media/engine/webrtcvideoengine.h |
+++ b/webrtc/media/engine/webrtcvideoengine.h |
@@ -97,12 +97,13 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler { |
// WebRtcVideoEngine is used for the new native WebRTC Video API (webrtc:1667). |
class WebRtcVideoEngine { |
public: |
- WebRtcVideoEngine(); |
+ // Video engine does not take ownership of the video codec factories and the |
+ // caller needs to make sure they outlive the video engine. Internal SW video |
+ // codecs will be added on top of the external codecs. |
+ WebRtcVideoEngine(WebRtcVideoEncoderFactory* external_video_encoder_factory, |
+ WebRtcVideoDecoderFactory* external_video_decoder_factory); |
virtual ~WebRtcVideoEngine(); |
- // Basic video engine implementation. |
- void Init(); |
- |
WebRtcVideoChannel* CreateChannel(webrtc::Call* call, |
const MediaConfig& config, |
const VideoOptions& options); |
@@ -110,21 +111,9 @@ class WebRtcVideoEngine { |
std::vector<VideoCodec> codecs() const; |
RtpCapabilities GetCapabilities() const; |
- // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does |
- // not take the ownership of |decoder_factory|. The caller needs to make sure |
- // that |decoder_factory| outlives the video engine. |
- void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory); |
- // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does |
- // not take the ownership of |encoder_factory|. The caller needs to make sure |
- // that |encoder_factory| outlives the video engine. |
- virtual void SetExternalEncoderFactory( |
- WebRtcVideoEncoderFactory* encoder_factory); |
- |
private: |
- bool initialized_; |
- |
- std::unique_ptr<DecoderFactoryAdapter> decoder_factory_; |
- std::unique_ptr<EncoderFactoryAdapter> encoder_factory_; |
+ const std::unique_ptr<DecoderFactoryAdapter> decoder_factory_; |
+ const std::unique_ptr<EncoderFactoryAdapter> encoder_factory_; |
}; |
class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
@@ -132,8 +121,8 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
WebRtcVideoChannel(webrtc::Call* call, |
const MediaConfig& config, |
const VideoOptions& options, |
- const EncoderFactoryAdapter& encoder_factory, |
- const DecoderFactoryAdapter& decoder_factory); |
+ const EncoderFactoryAdapter* encoder_factory, |
+ const DecoderFactoryAdapter* decoder_factory); |
~WebRtcVideoChannel() override; |
// VideoMediaChannel implementation |
@@ -261,7 +250,7 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
const StreamParams& sp, |
webrtc::VideoSendStream::Config config, |
const VideoOptions& options, |
- const EncoderFactoryAdapter& encoder_factory, |
+ const EncoderFactoryAdapter* encoder_factory, |
bool enable_cpu_overuse_detection, |
int max_bitrate_bps, |
const rtc::Optional<VideoCodecSettings>& codec_settings, |
@@ -338,9 +327,9 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
webrtc::Call* const call_; |
const bool enable_cpu_overuse_detection_; |
rtc::VideoSourceInterface<webrtc::VideoFrame>* source_ |
- RTC_ACCESS_ON(&thread_checker_); |
- std::unique_ptr<EncoderFactoryAdapter> encoder_factory_ |
- RTC_ACCESS_ON(&thread_checker_); |
+ ACCESS_ON(&thread_checker_); |
+ const EncoderFactoryAdapter* const encoder_factory_ |
+ ACCESS_ON(&thread_checker_); |
webrtc::VideoSendStream* stream_ RTC_ACCESS_ON(&thread_checker_); |
rtc::VideoSinkInterface<webrtc::VideoFrame>* encoder_sink_ |
@@ -371,7 +360,7 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
webrtc::Call* call, |
const StreamParams& sp, |
webrtc::VideoReceiveStream::Config config, |
- const DecoderFactoryAdapter& decoder_factory, |
+ const DecoderFactoryAdapter* decoder_factory, |
bool default_stream, |
const std::vector<VideoCodecSettings>& recv_codecs, |
const webrtc::FlexfecReceiveStream::Config& flexfec_config); |
@@ -432,7 +421,7 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
webrtc::FlexfecReceiveStream::Config flexfec_config_; |
webrtc::FlexfecReceiveStream* flexfec_stream_; |
- std::unique_ptr<DecoderFactoryAdapter> decoder_factory_; |
+ const DecoderFactoryAdapter* decoder_factory_; |
DecoderMap allocated_decoders_; |
rtc::CriticalSection sink_lock_; |
@@ -496,8 +485,8 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { |
rtc::Optional<VideoCodecSettings> send_codec_; |
rtc::Optional<std::vector<webrtc::RtpExtension>> send_rtp_extensions_; |
- std::unique_ptr<EncoderFactoryAdapter> encoder_factory_; |
- std::unique_ptr<DecoderFactoryAdapter> decoder_factory_; |
+ const EncoderFactoryAdapter* const encoder_factory_; |
+ const DecoderFactoryAdapter* const decoder_factory_; |
std::vector<VideoCodecSettings> recv_codecs_; |
std::vector<webrtc::RtpExtension> recv_rtp_extensions_; |
// See reason for keeping track of the FlexFEC payload type separately in |