: QGLWidget(parent, global_share_widget) {
}
-void JPEGFrameView::update_frame()
+void JPEGFrameView::setFrame(unsigned stream_idx, int64_t pts)
{
+ current_stream_idx = stream_idx;
+
unique_lock<mutex> lock(cache_mu);
pending_decodes.emplace_back(JPEGID{ stream_idx, pts }, this);
any_pending_decodes.notify_all();
public:
JPEGFrameView(QWidget *parent);
- void setFrame(unsigned stream_idx, int64_t pts)
- {
- this->stream_idx = stream_idx;
- this->pts = pts;
- update_frame();
- }
+ void setFrame(unsigned stream_idx, int64_t pts);
void mousePressEvent(QMouseEvent *event) override;
- unsigned get_stream_idx() const { return stream_idx; }
+ unsigned get_stream_idx() const { return current_stream_idx; }
void setDecodedFrame(std::shared_ptr<Frame> frame);
void paintGL() override;
private:
- void update_frame();
-
- unsigned stream_idx;
- int64_t pts;
+ // The stream index of the latest frame we displayed.
+ unsigned current_stream_idx;
std::unique_ptr<movit::EffectChain> chain;
std::shared_ptr<Frame> current_frame; // So that we hold on to the pixels.