void paintGL() override;
void wheelEvent(QWheelEvent *event) override;
+ // For dragging, and for back/forward button presses.
+ void mousePressEvent(QMouseEvent *e);
+ void mouseReleaseEvent(QMouseEvent *e);
+ void mouseMoveEvent(QMouseEvent *e);
+
signals:
void position_changed(uint64_t pos);
+ void mouse_back_clicked();
+ void mouse_forward_clicked();
private:
// Should really have been persistent and a PBO, but this is OK for now.
unsigned chroma_width, chroma_height;
std::unique_ptr<uint8_t[]> data; // Y, followed by Cb, followed by Cr.
};
- std::shared_ptr<Frame> current_frame;
+ std::mutex current_frame_mu;
+ std::shared_ptr<Frame> current_frame; // Protected by current_frame_mu.
std::deque<AVFrameWithDeleter> queued_frames; // Frames decoded but not displayed. Only used when frame-stepping backwards.
GLuint ycbcr_vertex_shader, ycbcr_fragment_shader, ycbcr_program;
std::string pathname;
+ bool dragging = false;
+ float last_drag_x, last_drag_y;
+
void producer_thread_func();
bool play_video(const std::string &pathname);
void internal_rewind();