Add tests for FrameBuffer3 and SyncDecoding in PC Integration Tests
Change-Id: I04ae6a694599a535347c29706e5ad40cba58155b
Bug: webrtc:13672
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251721
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36104}
diff --git a/pc/test/integration_test_helpers.h b/pc/test/integration_test_helpers.h
index 2a455fd..99ad8af 100644
--- a/pc/test/integration_test_helpers.h
+++ b/pc/test/integration_test_helpers.h
@@ -95,6 +95,7 @@
#include "pc/test/mock_peer_connection_observers.h"
#include "pc/video_track_source.h"
#include "rtc_base/checks.h"
+#include "rtc_base/event.h"
#include "rtc_base/fake_clock.h"
#include "rtc_base/fake_mdns_responder.h"
#include "rtc_base/fake_network.h"
@@ -111,9 +112,11 @@
#include "rtc_base/socket_address.h"
#include "rtc_base/ssl_stream_adapter.h"
#include "rtc_base/task_utils/pending_task_safety_flag.h"
+#include "rtc_base/task_utils/repeating_task.h"
#include "rtc_base/task_utils/to_queued_task.h"
#include "rtc_base/test_certificate_verifier.h"
#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
#include "rtc_base/time_utils.h"
#include "rtc_base/virtual_socket_server.h"
#include "system_wrappers/include/metrics.h"
@@ -172,6 +175,24 @@
const std::vector<const webrtc::RTCMediaStreamTrackStats*>&
media_stats_vec);
+class TaskQueueMetronome : public webrtc::Metronome {
+ public:
+ TaskQueueMetronome(TaskQueueFactory* factory, TimeDelta tick_period);
+ ~TaskQueueMetronome() override;
+
+ // webrtc::Metronome implementation.
+ void AddListener(TickListener* listener) override;
+ void RemoveListener(TickListener* listener) override;
+ TimeDelta TickPeriod() const override;
+
+ private:
+ Mutex mutex_;
+ const TimeDelta tick_period_;
+ std::set<TickListener*> listeners_ RTC_GUARDED_BY(mutex_);
+ RepeatingTaskHandle tick_task_;
+ rtc::TaskQueue queue_;
+};
+
class SignalingMessageReceiver {
public:
virtual void ReceiveSdpMessage(SdpType type, const std::string& msg) = 0;
@@ -735,6 +756,8 @@
pc_factory_dependencies.task_queue_factory =
webrtc::CreateDefaultTaskQueueFactory();
pc_factory_dependencies.trials = std::make_unique<FieldTrialBasedConfig>();
+ pc_factory_dependencies.metronome = std::make_unique<TaskQueueMetronome>(
+ pc_factory_dependencies.task_queue_factory.get(), TimeDelta::Millis(8));
cricket::MediaEngineDependencies media_deps;
media_deps.task_queue_factory =
pc_factory_dependencies.task_queue_factory.get();