#include <movit/flat_input.h>
#include <zita-resampler/resampler.h>
#include <atomic>
+#include <chrono>
#include <condition_variable>
#include <cstddef>
#include <functional>
void render_one_frame(int64_t duration);
void send_audio_level_callback();
void audio_thread_func();
- void process_audio_one_frame(int64_t frame_pts_int, int num_samples);
+ void process_audio_one_frame(int64_t frame_pts_int, int num_samples, bool adjust_rate);
void subsample_chroma(GLuint src_tex, GLuint dst_dst);
void release_display_frame(DisplayFrame *frame);
double pts() { return double(pts_int) / TIMEBASE; }
struct AudioTask {
int64_t pts_int;
int num_samples;
+ bool adjust_rate;
};
std::mutex audio_mutex;
std::condition_variable audio_task_queue_changed;
bool is_mode_scanning[MAX_CARDS]{ false };
std::vector<uint32_t> mode_scanlist[MAX_CARDS];
unsigned mode_scanlist_index[MAX_CARDS]{ 0 };
- timespec last_mode_scan_change[MAX_CARDS];
+ std::chrono::steady_clock::time_point last_mode_scan_change[MAX_CARDS];
};
extern Mixer *global_mixer;