Reland "Update internal encoder factory to new interface"

This is a reland of 2c8c8e26fc58a0f2789b7a5cd2646a8319c14d3e
Original change's description:
> Update internal encoder factory to new interface
>
> TBR=stefan@webrtc.org
>
> Bug: webrtc:7925
> Change-Id: I0bb97acdf0d58a9ce531ecdd672bb17ef96360df
> Reviewed-on: https://webrtc-review.googlesource.com/21162
> Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> Reviewed-by: Anders Carlsson <andersc@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20717}

TBR=andersc@webrtc.org,brandt@webrtc.org,stefan@webrtc.org

Bug: webrtc:7925
Change-Id: I0d269b3edb029e372a36c3b461a577bca2b6d0cb
Reviewed-on: https://webrtc-review.googlesource.com/24000
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20747}
diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc
index a87daf5..8087d7b 100644
--- a/media/engine/simulcast_encoder_adapter_unittest.cc
+++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -12,6 +12,8 @@
 #include <memory>
 #include <vector>
 
+#include "api/video_codecs/sdp_video_format.h"
+#include "api/video_codecs/video_encoder_factory.h"
 #include "common_video/include/video_frame_buffer.h"
 #include "media/engine/internalencoderfactory.h"
 #include "media/engine/simulcast_encoder_adapter.h"
@@ -25,8 +27,7 @@
 
 class TestSimulcastEncoderAdapter : public TestVp8Simulcast {
  public:
-  TestSimulcastEncoderAdapter()
-      : factory_(new cricket::InternalEncoderFactory()) {}
+  TestSimulcastEncoderAdapter() : factory_(new InternalEncoderFactory()) {}
 
  protected:
   std::unique_ptr<VP8Encoder> CreateEncoder() override {
@@ -37,7 +38,7 @@
   }
 
  private:
-  std::unique_ptr<cricket::WebRtcVideoEncoderFactory> factory_;
+  std::unique_ptr<VideoEncoderFactory> factory_;
 };
 
 TEST_F(TestSimulcastEncoderAdapter, TestKeyFrameRequestsOnAllStreams) {
@@ -92,8 +93,34 @@
   TestVp8Simulcast::TestSpatioTemporalLayers321PatternEncoder();
 }
 
+class MockVideoEncoder;
+
+class MockVideoEncoderFactory : public VideoEncoderFactory {
+ public:
+  std::vector<SdpVideoFormat> GetSupportedFormats() const override;
+
+  std::unique_ptr<VideoEncoder> CreateVideoEncoder(
+      const SdpVideoFormat& format) override;
+
+  CodecInfo QueryVideoEncoder(const SdpVideoFormat& format) const override;
+
+  const std::vector<MockVideoEncoder*>& encoders() const;
+  void SetEncoderNames(const std::vector<const char*>& encoder_names);
+  void set_init_encode_return_value(int32_t value);
+
+  void DestroyVideoEncoder(VideoEncoder* encoder);
+
+ private:
+  int32_t init_encode_return_value_ = 0;
+  std::vector<MockVideoEncoder*> encoders_;
+  std::vector<const char*> encoder_names_;
+};
+
 class MockVideoEncoder : public VideoEncoder {
  public:
+  explicit MockVideoEncoder(MockVideoEncoderFactory* factory)
+      : factory_(factory) {}
+
   // TODO(nisse): Valid overrides commented out, because the gmock
   // methods don't use any override declarations, and we want to avoid
   // warnings from -Winconsistent-missing-override. See
@@ -131,7 +158,7 @@
     return supports_native_handle_;
   }
 
-  virtual ~MockVideoEncoder() {}
+  virtual ~MockVideoEncoder() { factory_->DestroyVideoEncoder(this); }
 
   const VideoCodec& codec() const { return codec_; }
 
@@ -158,6 +185,7 @@
   MOCK_CONST_METHOD0(ImplementationName, const char*());
 
  private:
+  MockVideoEncoderFactory* const factory_;
   bool supports_native_handle_ = false;
   int32_t init_encode_return_value_ = 0;
   BitrateAllocation last_set_bitrate_;
@@ -166,53 +194,50 @@
   EncodedImageCallback* callback_;
 };
 
-class MockVideoEncoderFactory : public cricket::WebRtcVideoEncoderFactory {
- public:
-  MockVideoEncoderFactory() {
-    supported_codecs_.push_back(cricket::VideoCodec("VP8"));
-  }
+std::vector<SdpVideoFormat> MockVideoEncoderFactory::GetSupportedFormats()
+    const {
+  std::vector<SdpVideoFormat> formats = {SdpVideoFormat("VP8")};
+  return formats;
+}
 
-  const std::vector<cricket::VideoCodec>& supported_codecs() const override {
-    return supported_codecs_;
-  }
+std::unique_ptr<VideoEncoder> MockVideoEncoderFactory::CreateVideoEncoder(
+    const SdpVideoFormat& format) {
+  std::unique_ptr<MockVideoEncoder> encoder(
+      new ::testing::NiceMock<MockVideoEncoder>(this));
+  encoder->set_init_encode_return_value(init_encode_return_value_);
+  const char* encoder_name = encoder_names_.empty()
+                                 ? "codec_implementation_name"
+                                 : encoder_names_[encoders_.size()];
+  ON_CALL(*encoder, ImplementationName()).WillByDefault(Return(encoder_name));
+  encoders_.push_back(encoder.get());
+  return encoder;
+}
 
-  VideoEncoder* CreateVideoEncoder(const cricket::VideoCodec& codec) override {
-    MockVideoEncoder* encoder = new ::testing::NiceMock<MockVideoEncoder>();
-    encoder->set_init_encode_return_value(init_encode_return_value_);
-    const char* encoder_name = encoder_names_.empty()
-                                   ? "codec_implementation_name"
-                                   : encoder_names_[encoders_.size()];
-    ON_CALL(*encoder, ImplementationName()).WillByDefault(Return(encoder_name));
-    encoders_.push_back(encoder);
-    return encoder;
-  }
-
-  void DestroyVideoEncoder(VideoEncoder* encoder) override {
-    for (size_t i = 0; i < encoders_.size(); ++i) {
-      if (encoders_[i] == encoder) {
-        encoders_.erase(encoders_.begin() + i);
-        break;
-      }
+void MockVideoEncoderFactory::DestroyVideoEncoder(VideoEncoder* encoder) {
+  for (size_t i = 0; i < encoders_.size(); ++i) {
+    if (encoders_[i] == encoder) {
+      encoders_.erase(encoders_.begin() + i);
+      break;
     }
-    delete encoder;
   }
+}
 
-  virtual ~MockVideoEncoderFactory() {}
+VideoEncoderFactory::CodecInfo MockVideoEncoderFactory::QueryVideoEncoder(
+    const SdpVideoFormat& format) const {
+  return CodecInfo();
+}
 
-  const std::vector<MockVideoEncoder*>& encoders() const { return encoders_; }
-  void SetEncoderNames(const std::vector<const char*>& encoder_names) {
-    encoder_names_ = encoder_names;
-  }
-  void set_init_encode_return_value(int32_t value) {
-    init_encode_return_value_ = value;
-  }
-
- private:
-  std::vector<cricket::VideoCodec> supported_codecs_;
-  int32_t init_encode_return_value_ = 0;
-  std::vector<MockVideoEncoder*> encoders_;
-  std::vector<const char*> encoder_names_;
-};
+const std::vector<MockVideoEncoder*>& MockVideoEncoderFactory::encoders()
+    const {
+  return encoders_;
+}
+void MockVideoEncoderFactory::SetEncoderNames(
+    const std::vector<const char*>& encoder_names) {
+  encoder_names_ = encoder_names;
+}
+void MockVideoEncoderFactory::set_init_encode_return_value(int32_t value) {
+  init_encode_return_value_ = value;
+}
 
 class TestSimulcastEncoderAdapterFakeHelper {
  public: