Remove VideoCodingModule dependency on the global field trial string

Environment provides non-null interface for FieldTrialsView and thus VideoCodingModule no longer need to rely on FieldTrialBasedConfig class to provide field_trials when not passed at construction.

Bug: webrtc:10335
Change-Id: Iedfb29e8b29056618a85f2e7a1528da29e3be5c1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347701
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42163}
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index acd49d0..00b8236 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -334,7 +334,6 @@
     "../../api:rtp_packet_info",
     "../../api:sequence_checker",
     "../../api/environment",
-    "../../api/transport:field_trial_based_config",
     "../../api/units:timestamp",
     "../../api/video:encoded_image",
     "../../api/video:video_frame",
@@ -350,7 +349,6 @@
     "../../rtc_base:one_time_event",
     "../../rtc_base:rtc_event",
     "../../rtc_base:safe_conversions",
-    "../../rtc_base/memory:always_valid_pointer",
     "../../rtc_base/synchronization:mutex",
     "../../system_wrappers",
     "../rtp_rtcp:rtp_rtcp_format",
diff --git a/modules/video_coding/include/video_coding.h b/modules/video_coding/include/video_coding.h
index ad0f591..70ccebf 100644
--- a/modules/video_coding/include/video_coding.h
+++ b/modules/video_coding/include/video_coding.h
@@ -14,7 +14,6 @@
 #include <memory>
 
 #include "api/environment/environment.h"
-#include "api/field_trials_view.h"
 #include "api/video/video_frame.h"
 #include "api/video_codecs/video_decoder.h"
 #include "modules/rtp_rtcp/source/rtp_video_header.h"
@@ -22,17 +21,8 @@
 
 namespace webrtc {
 
-class Clock;
-class EncodedImageCallback;
-class VideoDecoder;
-class VideoEncoder;
-struct CodecSpecificInfo;
-
 class VideoCodingModule {
  public:
-  [[deprecated]] static VideoCodingModule* Create(
-      Clock* clock,
-      const FieldTrialsView* field_trials = nullptr);
   [[deprecated]] static std::unique_ptr<VideoCodingModule> CreateDeprecated(
       const Environment& env);
 
diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc
index 888ea60..8799d9b 100644
--- a/modules/video_coding/video_coding_impl.cc
+++ b/modules/video_coding/video_coding_impl.cc
@@ -15,12 +15,10 @@
 
 #include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
-#include "api/transport/field_trial_based_config.h"
 #include "api/video/encoded_image.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/timing/timing.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/memory/always_valid_pointer.h"
 #include "system_wrappers/include/clock.h"
 
 namespace webrtc {
@@ -175,12 +173,10 @@
 
 class VideoCodingModuleImpl : public VideoCodingModule {
  public:
-  explicit VideoCodingModuleImpl(Clock* clock,
-                                 const FieldTrialsView* field_trials)
-      : VideoCodingModule(),
-        field_trials_(field_trials),
-        timing_(new VCMTiming(clock, *field_trials_)),
-        receiver_(clock, timing_.get(), *field_trials_) {}
+  explicit VideoCodingModuleImpl(const Environment& env)
+      : env_(env),
+        timing_(&env_.clock(), env_.field_trials()),
+        receiver_(&env_.clock(), &timing_, env_.field_trials()) {}
 
   ~VideoCodingModuleImpl() override = default;
 
@@ -234,27 +230,18 @@
   }
 
  private:
-  AlwaysValidPointer<const FieldTrialsView, FieldTrialBasedConfig>
-      field_trials_;
+  const Environment env_;
   SequenceChecker construction_thread_;
-  const std::unique_ptr<VCMTiming> timing_;
+  VCMTiming timing_;
   vcm::VideoReceiver receiver_;
 };
 }  // namespace
 
 // DEPRECATED.  Create method for current interface, will be removed when the
 // new jitter buffer is in place.
-VideoCodingModule* VideoCodingModule::Create(
-    Clock* clock,
-    const FieldTrialsView* field_trials) {
-  RTC_DCHECK(clock);
-  return new VideoCodingModuleImpl(clock, field_trials);
-}
-
 std::unique_ptr<VideoCodingModule> VideoCodingModule::CreateDeprecated(
     const Environment& env) {
-  return std::make_unique<VideoCodingModuleImpl>(&env.clock(),
-                                                 &env.field_trials());
+  return std::make_unique<VideoCodingModuleImpl>(env);
 }
 
 }  // namespace webrtc