#include <thread>
#include "bmusb/bmusb.h"
+#include "quittable_sleeper.h"
class FFmpegCapture : public bmusb::CaptureInterface
{
private:
void producer_thread_func();
bool play_video(const std::string &pathname);
+ void internal_rewind();
std::string description, filename;
uint16_t timecode = 0;
std::unique_ptr<bmusb::FrameAllocator> owned_audio_frame_allocator;
bmusb::frame_callback_t frame_callback = nullptr;
- std::atomic<bool> producer_thread_should_quit{false};
+ QuittableSleeper producer_thread_should_quit;
std::thread producer_thread;
+ int64_t pts_origin, last_pts;
+ std::chrono::steady_clock::time_point start, next_frame_start;
+
std::mutex queue_mu;
struct QueuedCommand {
enum Command { REWIND, CHANGE_RATE } command;