#include <atomic>
#include <chrono>
#include <condition_variable>
+#include <deque>
#include <memory>
#include <mutex>
#include <queue>
#include "DeckLinkAPITypes.h"
#include "LinuxCOM.h"
-#include "context.h"
+#include "shared/context.h"
#include "print_latency.h"
#include "quittable_sleeper.h"
#include "ref_counted_frame.h"
std::mutex frame_queue_mutex;
std::queue<std::unique_ptr<Frame>> pending_video_frames; // Under <frame_queue_mutex>.
std::queue<std::unique_ptr<Frame>> frame_freelist; // Under <frame_queue_mutex>.
- int num_frames_in_flight = 0; // Number of frames allocated but not on the freelist. Under <frame_queue_mutex>.
+ std::deque<Frame *> scheduled_frames; // Owned by the driver, so no unique_ptr. Under <frame_queue_mutex>.
+
std::condition_variable frame_queues_changed;
bool playback_initiated = false, playback_started = false;
int64_t base_pts, frame_duration;
bool last_frame_had_mode_mismatch = false;
movit::ResourcePool *resource_pool;
+ IDeckLinkInput *input = nullptr;
IDeckLinkOutput *output = nullptr;
BMDVideoConnection video_connection;
QSurface *surface;