Mark functions using old factory classes as deprecated.

The flag rtc_use_builtin_sw_codecs will be removed in a later CL and
this marks usage of the various entry points using the old video factory
API as deprecated.

Bug: webrtc:7925, webrtc:10044
Change-Id: I5c75516a41b0666e77539c028808cc2b173ed4bd
Reviewed-on: https://webrtc-review.googlesource.com/c/113061
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25970}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 5f13009..eb41260 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -62,6 +62,7 @@
     "../modules/audio_device:audio_device_api",
     "../modules/audio_processing:api",
     "../pc:peerconnection",
+    "../rtc_base:deprecation",
     "../rtc_base:ptr_util",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_base_approved",
diff --git a/api/DEPS b/api/DEPS
index 29c213b..e4bb408 100644
--- a/api/DEPS
+++ b/api/DEPS
@@ -67,6 +67,7 @@
   ],
 
   "create_peerconnection_factory\.h": [
+    "+rtc_base/deprecation.h",
     "+rtc_base/scoped_ref_ptr.h",
   ],
 
diff --git a/api/create_peerconnection_factory.h b/api/create_peerconnection_factory.h
index baa50c7..063de18 100644
--- a/api/create_peerconnection_factory.h
+++ b/api/create_peerconnection_factory.h
@@ -19,6 +19,7 @@
 #include "api/fec_controller.h"
 #include "api/peerconnectioninterface.h"
 #include "api/transport/network_control.h"
+#include "rtc_base/deprecation.h"
 #include "rtc_base/scoped_ref_ptr.h"
 
 namespace rtc {
@@ -49,7 +50,7 @@
 // rtc::Thread::Current()->Run(), or call
 // rtc::Thread::Current()->ProcessMessages() within the application's own
 // message loop.
-RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
+RTC_DEPRECATED RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactory(
     rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
     rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory);
@@ -64,7 +65,7 @@
 // returned factory.
 // TODO(deadbeef): Use rtc::scoped_refptr<> and std::unique_ptr<> to make this
 // ownership transfer and ref counting more obvious.
-RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
+RTC_DEPRECATED RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactory(
     rtc::Thread* network_thread,
     rtc::Thread* worker_thread,
@@ -81,7 +82,7 @@
 // If |audio_mixer| is null, an internal audio mixer will be created and used.
 // If |audio_processing| is null, an internal audio processing module will be
 // created and used.
-RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
+RTC_DEPRECATED RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactory(
     rtc::Thread* network_thread,
     rtc::Thread* worker_thread,
@@ -104,7 +105,7 @@
 // be created and used.
 // If |network_controller_factory| is provided, it will be used if enabled via
 // field trial.
-RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
+RTC_DEPRECATED RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactory(
     rtc::Thread* network_thread,
     rtc::Thread* worker_thread,
@@ -144,7 +145,7 @@
 // mixer.
 //
 // If |audio_mixer| is null, an internal audio mixer will be created and used.
-RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
+RTC_DEPRECATED RTC_EXPORT rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactoryWithAudioMixer(
     rtc::Thread* network_thread,
     rtc::Thread* worker_thread,
@@ -158,6 +159,7 @@
 
 // Create a new instance of PeerConnectionFactoryInterface.
 // Same thread is used as worker and network thread.
+RTC_DEPRECATED
 RTC_EXPORT inline rtc::scoped_refptr<PeerConnectionFactoryInterface>
 CreatePeerConnectionFactory(
     rtc::Thread* worker_and_network_thread,
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 84fd610..b00615e 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -297,6 +297,7 @@
     "../modules/video_coding:webrtc_vp8",
     "../modules/video_coding:webrtc_vp9",
     "../rtc_base:checks",
+    "../rtc_base:deprecation",
     "../rtc_base:rtc_base_approved",
     "../rtc_base/system:rtc_export",
     "//third_party/abseil-cpp/absl/strings",
diff --git a/media/engine/convert_legacy_video_factory.cc b/media/engine/convert_legacy_video_factory.cc
index 4c30dc2..45fd420 100644
--- a/media/engine/convert_legacy_video_factory.cc
+++ b/media/engine/convert_legacy_video_factory.cc
@@ -89,8 +89,8 @@
 
   std::unique_ptr<webrtc::VideoEncoder> CreateVideoEncoder(
       const webrtc::SdpVideoFormat& format) override {
-    return CreateScopedVideoEncoder(external_encoder_factory_.get(),
-                                    VideoCodec(format));
+    return DEPRECATED_CreateScopedVideoEncoder(external_encoder_factory_.get(),
+                                               VideoCodec(format));
   }
 
  private:
@@ -200,8 +200,9 @@
       const webrtc::SdpVideoFormat& format,
       const std::string& receive_stream_id) override {
     if (external_decoder_factory_ != nullptr) {
-      return CreateScopedVideoDecoder(external_decoder_factory_.get(),
-                                      VideoCodec(format), {receive_stream_id});
+      return DEPRECATED_CreateScopedVideoDecoder(
+          external_decoder_factory_.get(), VideoCodec(format),
+          {receive_stream_id});
     }
     return nullptr;
   }
@@ -279,13 +280,15 @@
 
 }  // namespace
 
-std::unique_ptr<webrtc::VideoEncoderFactory> ConvertVideoEncoderFactory(
+std::unique_ptr<webrtc::VideoEncoderFactory>
+DEPRECATED_ConvertVideoEncoderFactory(
     std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory) {
   return std::unique_ptr<webrtc::VideoEncoderFactory>(
       new EncoderAdapter(std::move(external_encoder_factory)));
 }
 
-std::unique_ptr<webrtc::VideoDecoderFactory> ConvertVideoDecoderFactory(
+std::unique_ptr<webrtc::VideoDecoderFactory>
+DEPRECATED_ConvertVideoDecoderFactory(
     std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory) {
   return std::unique_ptr<webrtc::VideoDecoderFactory>(
       new DecoderAdapter(std::move(external_decoder_factory)));
diff --git a/media/engine/convert_legacy_video_factory.h b/media/engine/convert_legacy_video_factory.h
index 27383ab..f83415a 100644
--- a/media/engine/convert_legacy_video_factory.h
+++ b/media/engine/convert_legacy_video_factory.h
@@ -12,7 +12,11 @@
 #define MEDIA_ENGINE_CONVERT_LEGACY_VIDEO_FACTORY_H_
 
 #include <memory>
+#include <utility>
 
+#include "media/engine/webrtcvideodecoderfactory.h"
+#include "media/engine/webrtcvideoencoderfactory.h"
+#include "rtc_base/deprecation.h"
 #include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
@@ -22,20 +26,31 @@
 
 namespace cricket {
 
-class WebRtcVideoEncoderFactory;
-class WebRtcVideoDecoderFactory;
+RTC_EXPORT std::unique_ptr<webrtc::VideoEncoderFactory>
+DEPRECATED_ConvertVideoEncoderFactory(
+    std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory);
+
+RTC_EXPORT std::unique_ptr<webrtc::VideoDecoderFactory>
+DEPRECATED_ConvertVideoDecoderFactory(
+    std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory);
 
 // Adds internal SW codecs, simulcast, SW fallback wrappers, and converts to the
 // new type of codec factories. The purpose of these functions is to provide an
 // easy way for clients to migrate to the API with new factory types.
 // TODO(magjed): Remove once old factories are gone, webrtc:7925.
-RTC_EXPORT std::unique_ptr<webrtc::VideoEncoderFactory>
+RTC_DEPRECATED RTC_EXPORT inline std::unique_ptr<webrtc::VideoEncoderFactory>
 ConvertVideoEncoderFactory(
-    std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory);
+    std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory) {
+  return DEPRECATED_ConvertVideoEncoderFactory(
+      std::move(external_encoder_factory));
+}
 
-RTC_EXPORT std::unique_ptr<webrtc::VideoDecoderFactory>
+RTC_DEPRECATED RTC_EXPORT inline std::unique_ptr<webrtc::VideoDecoderFactory>
 ConvertVideoDecoderFactory(
-    std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory);
+    std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory) {
+  return DEPRECATED_ConvertVideoDecoderFactory(
+      std::move(external_decoder_factory));
+}
 
 }  // namespace cricket
 
diff --git a/media/engine/scopedvideodecoder.cc b/media/engine/scopedvideodecoder.cc
index a473aa2..118ab41 100644
--- a/media/engine/scopedvideodecoder.cc
+++ b/media/engine/scopedvideodecoder.cc
@@ -85,7 +85,7 @@
 
 }  // namespace
 
-std::unique_ptr<webrtc::VideoDecoder> CreateScopedVideoDecoder(
+std::unique_ptr<webrtc::VideoDecoder> DEPRECATED_CreateScopedVideoDecoder(
     WebRtcVideoDecoderFactory* factory,
     const VideoCodec& codec,
     VideoDecoderParams params) {
diff --git a/media/engine/scopedvideodecoder.h b/media/engine/scopedvideodecoder.h
index 2857847..fcb3145 100644
--- a/media/engine/scopedvideodecoder.h
+++ b/media/engine/scopedvideodecoder.h
@@ -16,9 +16,15 @@
 #include "api/video_codecs/video_decoder.h"
 #include "media/base/codec.h"
 #include "media/engine/webrtcvideodecoderfactory.h"
+#include "rtc_base/deprecation.h"
 
 namespace cricket {
 
+std::unique_ptr<webrtc::VideoDecoder> DEPRECATED_CreateScopedVideoDecoder(
+    cricket::WebRtcVideoDecoderFactory* factory,
+    const VideoCodec& codec,
+    VideoDecoderParams params);
+
 // Helper function that creates a webrtc::VideoDecoder held by an
 // std::unique_ptr instead of having to be deleted through
 // WebRtcVideoDecoderFactory::DestroyVideoDecoder. The factory passed in must
@@ -26,10 +32,12 @@
 // TODO(andersc): This helper function will be deleted once
 // cricket::WebRtcVideoDecoderFactory is deprecated, see
 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7925 for more info.
-std::unique_ptr<webrtc::VideoDecoder> CreateScopedVideoDecoder(
-    cricket::WebRtcVideoDecoderFactory* factory,
-    const VideoCodec& codec,
-    VideoDecoderParams params);
+RTC_DEPRECATED inline std::unique_ptr<webrtc::VideoDecoder>
+CreateScopedVideoDecoder(cricket::WebRtcVideoDecoderFactory* factory,
+                         const VideoCodec& codec,
+                         VideoDecoderParams params) {
+  return DEPRECATED_CreateScopedVideoDecoder(factory, codec, params);
+}
 
 }  // namespace cricket
 
diff --git a/media/engine/scopedvideoencoder.cc b/media/engine/scopedvideoencoder.cc
index b1df115..4ff2c72 100644
--- a/media/engine/scopedvideoencoder.cc
+++ b/media/engine/scopedvideoencoder.cc
@@ -96,7 +96,7 @@
 
 }  // namespace
 
-std::unique_ptr<webrtc::VideoEncoder> CreateScopedVideoEncoder(
+std::unique_ptr<webrtc::VideoEncoder> DEPRECATED_CreateScopedVideoEncoder(
     WebRtcVideoEncoderFactory* factory,
     const VideoCodec& codec) {
   webrtc::VideoEncoder* encoder = factory->CreateVideoEncoder(codec);
diff --git a/media/engine/scopedvideoencoder.h b/media/engine/scopedvideoencoder.h
index 0d67873..46ad8b0 100644
--- a/media/engine/scopedvideoencoder.h
+++ b/media/engine/scopedvideoencoder.h
@@ -16,9 +16,14 @@
 #include "api/video_codecs/video_encoder.h"
 #include "media/base/codec.h"
 #include "media/engine/webrtcvideoencoderfactory.h"
+#include "rtc_base/deprecation.h"
 
 namespace cricket {
 
+std::unique_ptr<webrtc::VideoEncoder> DEPRECATED_CreateScopedVideoEncoder(
+    cricket::WebRtcVideoEncoderFactory* factory,
+    const VideoCodec& codec);
+
 // Helper function that creates a webrtc::VideoEncoder held by an
 // std::unique_ptr instead of having to be deleted through
 // WebRtcVideoEncoderFactory::DestroyVideoEncoder. The factory passed in must
@@ -26,9 +31,11 @@
 // TODO(magjed): This helper function will be deleted once
 // cricket::WebRtcVideoEncoderFactory is deprecated, see
 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7925 for more info.
-std::unique_ptr<webrtc::VideoEncoder> CreateScopedVideoEncoder(
-    cricket::WebRtcVideoEncoderFactory* factory,
-    const VideoCodec& codec);
+RTC_DEPRECATED inline std::unique_ptr<webrtc::VideoEncoder>
+CreateScopedVideoEncoder(cricket::WebRtcVideoEncoderFactory* factory,
+                         const VideoCodec& codec) {
+  return DEPRECATED_CreateScopedVideoEncoder(factory, codec);
+}
 
 }  // namespace cricket
 
diff --git a/media/engine/webrtcmediaengine.cc b/media/engine/webrtcmediaengine.cc
index bc7d3c3..844f463 100644
--- a/media/engine/webrtcmediaengine.cc
+++ b/media/engine/webrtcmediaengine.cc
@@ -19,6 +19,10 @@
 #include "api/video_codecs/video_encoder_factory.h"
 #include "media/engine/webrtcvoiceengine.h"
 
+#if defined(USE_BUILTIN_SW_CODECS)
+#include "media/engine/convert_legacy_video_factory.h"
+#endif
+
 #ifdef HAVE_WEBRTC_VIDEO
 #include "media/engine/webrtcvideoengine.h"
 #else
@@ -45,8 +49,10 @@
   std::unique_ptr<VideoEngineInterface> video_engine;
 #ifdef HAVE_WEBRTC_VIDEO
   video_engine = absl::make_unique<WebRtcVideoEngine>(
-      std::unique_ptr<WebRtcVideoEncoderFactory>(video_encoder_factory),
-      std::unique_ptr<WebRtcVideoDecoderFactory>(video_decoder_factory),
+      DEPRECATED_ConvertVideoEncoderFactory(
+          std::unique_ptr<WebRtcVideoEncoderFactory>(video_encoder_factory)),
+      DEPRECATED_ConvertVideoDecoderFactory(
+          std::unique_ptr<WebRtcVideoDecoderFactory>(video_decoder_factory)),
       std::move(video_bitrate_allocator_factory));
 #else
   video_engine = absl::make_unique<NullWebRtcVideoEngine>();
diff --git a/media/engine/webrtcmediaengine.h b/media/engine/webrtcmediaengine.h
index fbf4466..9256c0c 100644
--- a/media/engine/webrtcmediaengine.h
+++ b/media/engine/webrtcmediaengine.h
@@ -43,7 +43,7 @@
   // TODO(deadbeef): Change these to return an std::unique_ptr<>, to indicate
   // that the caller owns the returned object.
 #if defined(USE_BUILTIN_SW_CODECS)
-  static MediaEngineInterface* Create(
+  RTC_DEPRECATED static MediaEngineInterface* Create(
       webrtc::AudioDeviceModule* adm,
       const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
           audio_encoder_factory,
@@ -52,7 +52,7 @@
       WebRtcVideoEncoderFactory* video_encoder_factory,
       WebRtcVideoDecoderFactory* video_decoder_factory);
 
-  static MediaEngineInterface* Create(
+  RTC_DEPRECATED static MediaEngineInterface* Create(
       webrtc::AudioDeviceModule* adm,
       const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
           audio_encoder_factory,
@@ -63,7 +63,7 @@
       rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer,
       rtc::scoped_refptr<webrtc::AudioProcessing> apm);
 
-  static MediaEngineInterface* Create(
+  RTC_DEPRECATED static MediaEngineInterface* Create(
       webrtc::AudioDeviceModule* adm,
       const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
           audio_encoder_factory,
@@ -74,7 +74,7 @@
       std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
           video_bitrate_allocator_factory);
 
-  static MediaEngineInterface* Create(
+  RTC_DEPRECATED static MediaEngineInterface* Create(
       webrtc::AudioDeviceModule* adm,
       const rtc::scoped_refptr<webrtc::AudioEncoderFactory>&
           audio_encoder_factory,
diff --git a/media/engine/webrtcvideoengine.h b/media/engine/webrtcvideoengine.h
index 3b79ad4..a93453d 100644
--- a/media/engine/webrtcvideoengine.h
+++ b/media/engine/webrtcvideoengine.h
@@ -83,7 +83,7 @@
  public:
 #if defined(USE_BUILTIN_SW_CODECS)
   // Internal SW video codecs will be added on top of the external codecs.
-  WebRtcVideoEngine(
+  RTC_DEPRECATED WebRtcVideoEngine(
       std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
       std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory,
       std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>