video_dialog.h
Go to the documentation of this file.
1 #ifndef VIDEO_DIALOG_H
2 #define VIDEO_DIALOG_H
3 
4 #include <memory>
5 #include <QDialog>
6 #include <QtAV>
7 #include <QSlider>
8 #include <QPushButton>
9 #include <QCloseEvent>
10 #include <QtAV/FrameReader.h>
11 #include "ui_video_dialog.h"
12 
13 #include "qoi.h"
14 
15 class ImageLabel : public QWidget
16 {
17  Q_OBJECT
18 
19 public:
20  explicit ImageLabel(QWidget *parent = nullptr);
21  const QPixmap* pixmap() const;
22 
23 public slots:
24  void setPixmap(const QPixmap&);
25 
26 protected:
27  void paintEvent(QPaintEvent *);
28 
29 private:
30  QPixmap pix;
31 };
32 
33 
34 class VideoDialog : public QDialog
35 {
36  Q_OBJECT
37 
38 public:
39  explicit VideoDialog(QWidget *parent = nullptr);
40  ~VideoDialog();
41 
42  QString referenceCurve() const;
43 
44  void pause(bool paused);
45 
46  bool isPaused() const;
47 
48  Ui::VideoDialog *ui;
49 
50  bool loadFile(QString filename);
51 
52 private slots:
53  void on_loadButton_clicked();
54 
55  void on_timeSlider_valueChanged(int value);
56 
57  void closeEvent (QCloseEvent *event)
58  {
59  emit closed();
60  }
61 
62 public Q_SLOTS:
63 
64  void seekByValue(double value);
65 
66 private Q_SLOTS:
67  void updateSliderPos(qint64 value);
68  void updateSlider();
69  void updateSliderUnit();
70 
71  void on_clearButton_clicked();
72 
73  void on_decodeButton_clicked();
74 
75 signals:
76 
77  void closed();
78 
79 private:
80  QtAV::VideoOutput *_video_output;
81  QtAV::AVPlayer *_media_player;
82  std::unique_ptr<QtAV::FrameReader> _frame_reader;
83  //std::vector<QImage> _frames;
85  {
86  CompressedFrame(): length(0), data(nullptr) {}
87  CompressedFrame(const CompressedFrame&) = delete;
89  {
90  std::swap(other.data, data);
91  std::swap(other.length, length);
92  }
93 
95  {
96  if(data) free(data);
97  }
98 
99  int length;
101  void* data;
102  };
103  std::vector<CompressedFrame> _compressed_frames;
104 
105  bool eventFilter(QObject* obj, QEvent* ev);
107 
109 
110  bool _decoded = false;
111 };
112 
113 #endif // VIDEO_DIALOG_H
#define nullptr
Definition: backward.hpp:386
const QPixmap * pixmap() const
QString _dragging_curve
Definition: video_dialog.h:106
std::vector< CompressedFrame > _compressed_frames
Definition: video_dialog.h:103
ImageLabel(QWidget *parent=nullptr)
void closeEvent(QCloseEvent *event)
Definition: video_dialog.h:57
CompressedFrame(CompressedFrame &&other)
Definition: video_dialog.h:88
ImageLabel * _label
Definition: video_dialog.h:108
void paintEvent(QPaintEvent *)
NLOHMANN_BASIC_JSON_TPL_DECLARATION void swap(nlohmann::NLOHMANN_BASIC_JSON_TPL &j1, nlohmann::NLOHMANN_BASIC_JSON_TPL &j2) noexcept(//NOLINT(readability-inconsistent-declaration-parameter-name) is_nothrow_move_constructible< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value &&//NOLINT(misc-redundant-expression) is_nothrow_move_assignable< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value)
exchanges the values of two JSON objects
Definition: json.hpp:21884
std::unique_ptr< QtAV::FrameReader > _frame_reader
Definition: video_dialog.h:82
Definition: qoi.h:256
QPixmap pix
Definition: video_dialog.h:30
QtAV::VideoOutput * _video_output
Definition: video_dialog.h:80
void setPixmap(const QPixmap &)
QtAV::AVPlayer * _media_player
Definition: video_dialog.h:81
Definition: core.h:1131
Ui::VideoDialog * ui
Definition: video_dialog.h:48
Definition: format.h:895


plotjuggler
Author(s): Davide Faconti
autogenerated on Mon Jun 19 2023 03:12:53