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.