PonyPlayer
preview.hpp
浏览该文件的文档.
1//
2// Created by ColorsWind on 2022/5/8.
3//
4
5#pragma once
6#include <QObject>
7#include <QImage>
8#include <QThread>
10
11class Preview : public QObject {
12 Q_OBJECT
13private:
14 Previewer *m_worker = nullptr;
15 QThread *m_affinityThread;
16public:
17 Preview(QObject *parent) {
18 m_affinityThread = new QThread;
19 m_affinityThread->setObjectName("PreviewThread");
20 this->moveToThread(m_affinityThread);
21 m_affinityThread->start();
22 }
23
24 ~Preview() override {
25 // set interrupt flag
26 m_affinityThread->quit();
27 }
28
29
30public slots:
31 void previewRequest(qreal pos) {
32 if (m_worker) {
33 auto ret = m_worker->previewRequest(pos);
34 emit previewResponse(pos, std::move(ret), QPrivateSignal());
35 }
36 };
37
38 void openFile(const QString &fn) {
39 qDebug() << "Previewer: Open file" << fn;
40 if (m_worker) {
41 qWarning() << "Previewer: Already open file:" << m_worker->filename.c_str();
42 emit openFileResult(false, QPrivateSignal());
43 return;
44 }
45 try {
46 m_worker = new Previewer(fn.toStdString(), this);
47 } catch (std::runtime_error &ex) {
48 qWarning() << "Previewer: Error opening file:" << ex.what();
49 m_worker = nullptr;
50 emit openFileResult(false, QPrivateSignal());
51 return;
52 }
53 emit openFileResult(true, QPrivateSignal());
54 }
55
56 void close() {
57 if (m_worker) {
58 qDebug() << "Previewer: Close file" << m_worker->filename.c_str();
59 m_worker->deleteLater();
60 m_worker = nullptr;
61 } else {
62 qWarning() << "Previewer: Try to close file while no file has been opened.";
63 }
64 }
65
66signals:
67 void previewResponse(qreal pos, VideoFrameRef frame, QPrivateSignal);
68
69 void openFileResult(bool ret, QPrivateSignal);
70
71};
const std::string filename
Definition: dispatcher.hpp:84
Definition: preview.hpp:11
~Preview() override
Definition: preview.hpp:24
void openFile(const QString &fn)
Definition: preview.hpp:38
void previewResponse(qreal pos, VideoFrameRef frame, QPrivateSignal)
void previewRequest(qreal pos)
Definition: preview.hpp:31
void close()
Definition: preview.hpp:56
void openFileResult(bool ret, QPrivateSignal)
Preview(QObject *parent)
Definition: preview.hpp:17
Definition: previewer.hpp:14
VideoFrameRef previewRequest(qreal pos)
Definition: previewer.hpp:47
Definition: frame.hpp:47