// CPU conversion), but it would require some more plumbing, and it would also
// fail if the file changes parameters midway, which is allowed in some formats.
//
-// There is currently no audio support. There is also no support for changing
-// the video underway (unlike images), although there really should be.
+// There is currently no audio support.
#include <assert.h>
#include <stdint.h>
uint32_t get_current_video_mode() const override { return 0; }
std::set<bmusb::PixelFormat> get_available_pixel_formats() const override {
- return std::set<bmusb::PixelFormat>{ bmusb::PixelFormat_8BitRGBA };
+ return std::set<bmusb::PixelFormat>{ bmusb::PixelFormat_8BitBGRA };
}
void set_pixel_format(bmusb::PixelFormat pixel_format) override {
- assert(pixel_format == bmusb::PixelFormat_8BitRGBA);
+ assert(pixel_format == bmusb::PixelFormat_8BitBGRA);
}
bmusb::PixelFormat get_current_pixel_format() const override {
- return bmusb::PixelFormat_8BitRGBA;
+ return bmusb::PixelFormat_8BitBGRA;
}
std::map<uint32_t, std::string> get_available_video_inputs() const override {
private:
void producer_thread_func();
bool play_video(const std::string &pathname);
+ void internal_rewind();
std::string description, filename;
uint16_t timecode = 0;
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;