video_timing_simulator: Replace home-made `VideoTimingFactory` with official `VideoJitterTimingFactory`

Bug: b/423646186
Change-Id: I6a56a25e0d70e50687c46598cea4d9c0ab909da1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/485540
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#48086}
diff --git a/video/timing/simulator/BUILD.gn b/video/timing/simulator/BUILD.gn
index ff3685d..f4ab384 100644
--- a/video/timing/simulator/BUILD.gn
+++ b/video/timing/simulator/BUILD.gn
@@ -60,6 +60,8 @@
       "../../../api/video:frame_buffer",
       "../../../api/video:video_frame",
       "../../../api/video:video_rtp_headers",
+      "../../../api/video/timing:video_jitter_timing_factory",
+      "../../../api/video/timing:video_jitter_timing_interface",
       "../../../call:rtp_interfaces",
       "../../../call:rtp_receiver",
       "../../../call:video_receive_stream_api",
diff --git a/video/timing/simulator/rendering_simulator.cc b/video/timing/simulator/rendering_simulator.cc
index 6ebe186..6052769 100644
--- a/video/timing/simulator/rendering_simulator.cc
+++ b/video/timing/simulator/rendering_simulator.cc
@@ -25,8 +25,10 @@
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
 #include "api/video/encoded_frame.h"
+#include "api/video/timing/video_jitter_timing_interface.h"
 #include "api/video/video_frame.h"
 #include "logging/rtc_event_log/rtc_event_log_parser.h"
+#include "modules/video_coding/timing/timing.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/sequence_number_unwrapper.h"
@@ -172,6 +174,18 @@
       RTC_GUARDED_BY(sequence_checker_);
 };
 
+std::unique_ptr<VCMTiming> CreateVCMTiming(
+    const Environment& env,
+    const RenderingSimulator::Config& config) {
+  std::unique_ptr<VideoJitterTimingInterface> video_jitter_timing =
+      config.video_jitter_timing_factory
+          ? config.video_jitter_timing_factory->Create(env)
+          : nullptr;
+  return std::make_unique<VCMTiming>(&env.clock(), env.field_trials(),
+                                     RenderingSimulator::kRenderDelay,
+                                     std::move(video_jitter_timing));
+}
+
 // Combines all objects needed to perform rendering simulation of a single
 // stream. Inserts the streams results to the `results` pointer when `Close()`
 // is called (at the end of simulation).
@@ -183,13 +197,12 @@
                            uint32_t rtx_ssrc,
                            RenderingSimulator::Results* absl_nonnull results)
       : collector_(env, ssrc),
-        tracker_(
-            env,
-            RenderingTracker::Config{
-                .ssrc = ssrc,
-                .render_delay = RenderingSimulator::kRenderDelay},
-            config.video_timing_factory(env, RenderingSimulator::kRenderDelay),
-            &collector_),
+        tracker_(env,
+                 RenderingTracker::Config{
+                     .ssrc = ssrc,
+                     .render_delay = RenderingSimulator::kRenderDelay},
+                 CreateVCMTiming(env, config),
+                 &collector_),
         assembler_(env, ssrc, &collector_, &tracker_),
         receiver_(env, ssrc, rtx_ssrc, &assembler_),
         results_(*results) {
diff --git a/video/timing/simulator/rendering_simulator.h b/video/timing/simulator/rendering_simulator.h
index aab6109..b62681d 100644
--- a/video/timing/simulator/rendering_simulator.h
+++ b/video/timing/simulator/rendering_simulator.h
@@ -12,8 +12,6 @@
 #define VIDEO_TIMING_SIMULATOR_RENDERING_SIMULATOR_H_
 
 #include <cstdint>
-#include <functional>
-#include <memory>
 #include <optional>
 #include <set>
 #include <span>
@@ -21,13 +19,12 @@
 #include <vector>
 
 #include "absl/algorithm/container.h"
-#include "api/environment/environment.h"
 #include "api/numerics/samples_stats_counter.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
+#include "api/video/timing/video_jitter_timing_factory.h"
 #include "logging/rtc_event_log/rtc_event_log_parser.h"
-#include "modules/video_coding/timing/timing.h"
 #include "rtc_base/checks.h"
 #include "video/timing/simulator/frame_base.h"
 #include "video/timing/simulator/results_base.h"
@@ -41,16 +38,9 @@
 class RenderingSimulator {
  public:
   struct Config {
-    using VideoTimingFactory =
-        std::function<std::unique_ptr<VCMTiming>(Environment, TimeDelta)>;
-
     std::string name = "";
     std::string field_trials_string = "";
-    VideoTimingFactory video_timing_factory = [](Environment env,
-                                                 TimeDelta render_delay) {
-      return std::make_unique<VCMTiming>(&env.clock(), env.field_trials(),
-                                         render_delay);
-    };
+    const VideoJitterTimingFactory* video_jitter_timing_factory = nullptr;
 
     // Whether or not to reset the stream state on newly logged streams with the
     // same SSRC.