Pass webrtc::Environment through InternalDecoderFactory::Create

Bug: webrtc:15791
Change-Id: I1c7cecffaa58f42f3a23520a8afdbc5ad1086d67
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340280
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41784}
diff --git a/media/engine/internal_decoder_factory.cc b/media/engine/internal_decoder_factory.cc
index e623aeb..d79cbf2 100644
--- a/media/engine/internal_decoder_factory.cc
+++ b/media/engine/internal_decoder_factory.cc
@@ -11,6 +11,7 @@
 #include "media/engine/internal_decoder_factory.h"
 
 #include "absl/strings/match.h"
+#include "api/environment/environment.h"
 #include "api/video_codecs/av1_profile.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_codec.h"
@@ -78,7 +79,8 @@
   return codec_support;
 }
 
-std::unique_ptr<VideoDecoder> InternalDecoderFactory::CreateVideoDecoder(
+std::unique_ptr<VideoDecoder> InternalDecoderFactory::Create(
+    const Environment& env,
     const SdpVideoFormat& format) {
   if (!format.IsCodecInList(GetSupportedFormats())) {
     RTC_LOG(LS_WARNING) << "Trying to create decoder for unsupported format. "
@@ -87,7 +89,7 @@
   }
 
   if (absl::EqualsIgnoreCase(format.name, cricket::kVp8CodecName))
-    return VP8Decoder::Create();
+    return CreateVp8Decoder(env);
   if (absl::EqualsIgnoreCase(format.name, cricket::kVp9CodecName))
     return VP9Decoder::Create();
   if (absl::EqualsIgnoreCase(format.name, cricket::kH264CodecName))
diff --git a/media/engine/internal_decoder_factory.h b/media/engine/internal_decoder_factory.h
index 0129fb2..a2cd362 100644
--- a/media/engine/internal_decoder_factory.h
+++ b/media/engine/internal_decoder_factory.h
@@ -14,6 +14,7 @@
 #include <memory>
 #include <vector>
 
+#include "api/environment/environment.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_decoder.h"
 #include "api/video_codecs/video_decoder_factory.h"
@@ -26,8 +27,8 @@
   std::vector<SdpVideoFormat> GetSupportedFormats() const override;
   CodecSupport QueryCodecSupport(const SdpVideoFormat& format,
                                  bool reference_scaling) const override;
-  std::unique_ptr<VideoDecoder> CreateVideoDecoder(
-      const SdpVideoFormat& format) override;
+  std::unique_ptr<VideoDecoder> Create(const Environment& env,
+                                       const SdpVideoFormat& format) override;
 };
 
 }  // namespace webrtc
diff --git a/media/engine/internal_decoder_factory_unittest.cc b/media/engine/internal_decoder_factory_unittest.cc
index e06b4c3..7debe73 100644
--- a/media/engine/internal_decoder_factory_unittest.cc
+++ b/media/engine/internal_decoder_factory_unittest.cc
@@ -10,6 +10,8 @@
 
 #include "media/engine/internal_decoder_factory.h"
 
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
 #include "api/video_codecs/av1_profile.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_decoder.h"
@@ -56,44 +58,48 @@
 }
 
 TEST(InternalDecoderFactoryTest, Vp8) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
   std::unique_ptr<VideoDecoder> decoder =
-      factory.CreateVideoDecoder(SdpVideoFormat(cricket::kVp8CodecName));
+      factory.Create(env, SdpVideoFormat(cricket::kVp8CodecName));
   EXPECT_TRUE(decoder);
 }
 
 TEST(InternalDecoderFactoryTest, Vp9Profile0) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
-  std::unique_ptr<VideoDecoder> decoder =
-      factory.CreateVideoDecoder(SdpVideoFormat(
-          cricket::kVp9CodecName,
-          {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile0)}}));
+  std::unique_ptr<VideoDecoder> decoder = factory.Create(
+      env, SdpVideoFormat(cricket::kVp9CodecName,
+                          {{kVP9FmtpProfileId,
+                            VP9ProfileToString(VP9Profile::kProfile0)}}));
   EXPECT_EQ(static_cast<bool>(decoder), kVp9Enabled);
 }
 
 TEST(InternalDecoderFactoryTest, Vp9Profile1) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
-  std::unique_ptr<VideoDecoder> decoder =
-      factory.CreateVideoDecoder(SdpVideoFormat(
-          cricket::kVp9CodecName,
-          {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile1)}}));
+  std::unique_ptr<VideoDecoder> decoder = factory.Create(
+      env, SdpVideoFormat(cricket::kVp9CodecName,
+                          {{kVP9FmtpProfileId,
+                            VP9ProfileToString(VP9Profile::kProfile1)}}));
   EXPECT_EQ(static_cast<bool>(decoder), kVp9Enabled);
 }
 
 TEST(InternalDecoderFactoryTest, H264) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
   std::unique_ptr<VideoDecoder> decoder =
-      factory.CreateVideoDecoder(SdpVideoFormat(cricket::kH264CodecName));
+      factory.Create(env, SdpVideoFormat(cricket::kH264CodecName));
   EXPECT_EQ(static_cast<bool>(decoder), kH264Enabled);
 }
 
 TEST(InternalDecoderFactoryTest, Av1Profile0) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
   if (kDav1dIsIncluded) {
     EXPECT_THAT(factory.GetSupportedFormats(),
                 Contains(Field(&SdpVideoFormat::name, cricket::kAv1CodecName)));
-    EXPECT_TRUE(
-        factory.CreateVideoDecoder(SdpVideoFormat(cricket::kAv1CodecName)));
+    EXPECT_TRUE(factory.Create(env, SdpVideoFormat(cricket::kAv1CodecName)));
   } else {
     EXPECT_THAT(
         factory.GetSupportedFormats(),
@@ -103,9 +109,10 @@
 
 // At current stage since internal H.265 decoder is not implemented,
 TEST(InternalDecoderFactoryTest, H265IsNotEnabled) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
   std::unique_ptr<VideoDecoder> decoder =
-      factory.CreateVideoDecoder(SdpVideoFormat(cricket::kH265CodecName));
+      factory.Create(env, SdpVideoFormat(cricket::kH265CodecName));
   EXPECT_EQ(static_cast<bool>(decoder), kH265Enabled);
 }
 
@@ -118,8 +125,10 @@
 #endif
 
 TEST(InternalDecoderFactoryTest, Av1Profile1_Dav1dDecoderTrialEnabled) {
+  const Environment env = CreateEnvironment();
   InternalDecoderFactory factory;
-  std::unique_ptr<VideoDecoder> decoder = factory.CreateVideoDecoder(
+  std::unique_ptr<VideoDecoder> decoder = factory.Create(
+      env,
       SdpVideoFormat(cricket::kAv1CodecName,
                      {{cricket::kAv1FmtpProfile,
                        AV1ProfileToString(AV1Profile::kProfile1).data()}}));