Expose new video codec factories in the PeerConnectionFactory API

This CL exposes the new type of video codec factories that represent all
video codecs in the PeerConnectionFactory API, i.e. no extra internal SW
video codecs will be added. Clients of the new functions will be
responsible for adding all SW video codecs themselves, and also handling
SW fallback and simulcast.

BUG=webrtc:7925
R=deadbeef@webrtc.org

Review-Url: https://codereview.webrtc.org/3004353002 .
Cr-Commit-Position: refs/heads/master@{#19866}
diff --git a/api/peerconnectioninterface.h b/api/peerconnectioninterface.h
index 13e78e6..3753da4 100644
--- a/api/peerconnectioninterface.h
+++ b/api/peerconnectioninterface.h
@@ -112,6 +112,8 @@
 class AudioMixer;
 class CallFactoryInterface;
 class MediaConstraintsInterface;
+class VideoDecoderFactory;
+class VideoEncoderFactory;
 
 // MediaStream container interface.
 class StreamCollectionInterface : public rtc::RefCountInterface {
@@ -1116,6 +1118,21 @@
     rtc::scoped_refptr<AudioMixer> audio_mixer,
     rtc::scoped_refptr<AudioProcessing> audio_processing);
 
+// Create a new instance of PeerConnectionFactoryInterface with optional video
+// codec factories. These video factories represents all video codecs, i.e. no
+// extra internal video codecs will be added.
+rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
+    rtc::Thread* network_thread,
+    rtc::Thread* worker_thread,
+    rtc::Thread* signaling_thread,
+    rtc::scoped_refptr<AudioDeviceModule> default_adm,
+    rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
+    rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory,
+    std::unique_ptr<VideoEncoderFactory> video_encoder_factory,
+    std::unique_ptr<VideoDecoderFactory> video_decoder_factory,
+    rtc::scoped_refptr<AudioMixer> audio_mixer,
+    rtc::scoped_refptr<AudioProcessing> audio_processing);
+
 // Create a new instance of PeerConnectionFactoryInterface with external audio
 // mixer.
 //