Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMediaEncoderWrapper.h
Go to the documentation of this file.
1
/*
2
* SPDX-License-Identifier: GPL-3.0-or-later
3
*/
4
#ifndef KISMEDIAENCODERWRAPPER
5
#define KISMEDIAENCODERWRAPPER
6
7
#include <QDir>
8
#include <QObject>
9
#include <QPointer>
10
#include <QRunnable>
11
#include <QSize>
12
#include <QVariantMap>
13
#include <QVector>
14
15
#include <kritaui_export.h>
16
17
class
QImage;
18
class
QWidget;
19
20
class
KRITAUI_EXPORT
KisMediaEncoderFormat
21
{
22
public
:
23
enum class
Type
{
24
AndroidMediaEncoder,
25
};
26
27
virtual
~KisMediaEncoderFormat
() =
default
;
28
29
virtual
Type
type
()
const
= 0;
30
virtual
QString
key
()
const
= 0;
31
virtual
QString
title
()
const
= 0;
32
virtual
QString
extension
()
const
= 0;
33
34
virtual
QWidget *
createPreferencesWidget
(
const
QVariantMap &preferences)
const
= 0;
35
virtual
void
resetPreferencesWidget
(QWidget *widget)
const
= 0;
36
virtual
QVariantMap
getPreferencesFromWidget
(QWidget *widget)
const
= 0;
37
38
protected
:
39
KisMediaEncoderFormat
() =
default
;
40
};
41
42
struct
KRITAUI_EXPORT
KisMediaEncoderWrapperSettings
{
43
QString
outputFile
;
44
QStringList
inputFiles
;
45
KisMediaEncoderFormat
*
format
;
46
QVariantMap
formatPreferences
;
47
QSize
outputSize
;
48
int
inputFps
;
49
int
outputFps
;
50
int
firstFrameSec
;
51
int
lastFrameSec
;
52
};
53
54
// Intentionally not exported, this is only needed internally.
55
class
KisMediaEncoderRunnable
:
public
QObject,
public
QRunnable
56
{
57
Q_OBJECT
58
Q_DISABLE_COPY_MOVE(
KisMediaEncoderRunnable
)
59
public
:
60
void
run
()
override
;
61
62
public
Q_SLOTS:
63
void
slotHandleCancelRequested
();
64
65
Q_SIGNALS:
66
void
sigStarted
();
67
void
sigCompleted
();
68
void
sigCancelled
();
69
void
sigFailed
(
const
QString &errorMessage);
70
void
sigProgressUpdated
(
int
frameNo);
71
72
protected
:
73
enum class
EncodeResult
{
74
Completed
,
75
Cancelled
,
76
Failed
,
77
};
78
79
class
Frame
80
{
81
public
:
82
explicit
Frame
(
const
QString &path = QString(),
int
instances
= 0)
83
:
m_path
(path)
84
,
m_instances
(
instances
)
85
{
86
}
87
88
int
instances
()
const
89
{
90
return
m_instances
;
91
}
92
93
bool
readImage
(QImage &outImage)
const
;
94
95
private
:
96
QString
m_path
;
97
int
m_instances
;
98
};
99
100
KisMediaEncoderRunnable
(
const
KisMediaEncoderWrapperSettings
&
settings
, QObject *parent);
101
102
virtual
EncodeResult
encode
(QString &outErrorMessage) = 0;
103
104
const
KisMediaEncoderWrapperSettings
settings
()
105
{
106
return
m_settings
;
107
}
108
109
bool
isCancelled
()
const
110
{
111
return
m_cancel
;
112
}
113
114
bool
nextFrame
(Frame &outFrame);
115
116
private
:
117
EncodeResult
prepareAndEncode
(QString &outErrorMessage);
118
119
KisMediaEncoderWrapperSettings
m_settings
;
120
double
m_inputTime
= 0.0;
121
int
m_inputFileIndex
= 0;
122
int
m_outputFrameNo
= 0;
123
bool
m_needsPreviewBefore
=
true
;
124
bool
m_needsLingerAfter
=
true
;
125
bool
m_cancel
=
false
;
126
};
127
128
class
KRITAUI_EXPORT
KisMediaEncoderWrapper
:
public
QObject
129
{
130
Q_OBJECT
131
Q_DISABLE_COPY_MOVE(
KisMediaEncoderWrapper
)
132
public
:
133
explicit
KisMediaEncoderWrapper
(QObject *parent =
nullptr
);
134
~KisMediaEncoderWrapper
()
override
;
135
136
void
startNonBlocking(
const
KisMediaEncoderWrapperSettings
&settings);
137
void
reset();
138
139
static
const
QVector<KisMediaEncoderFormat *>
&getSupportedFormats();
140
static
KisMediaEncoderFormat
*getFormatByKey(
const
QString &key);
141
142
Q_SIGNALS:
143
void
sigStarted
();
144
void
sigFinished
();
145
void
sigFinishedWithError
(QString message);
146
void
sigProgressUpdated
(
int
frameNo);
147
void
sigCancelRequested
();
148
149
private
:
150
static
KisMediaEncoderRunnable
*makeSupportedRunnable(
const
KisMediaEncoderWrapperSettings
&settings);
151
152
QPointer<KisMediaEncoderRunnable>
m_runnable
;
153
};
154
155
#endif
KisMediaEncoderFormat
Definition
KisMediaEncoderWrapper.h:21
KisMediaEncoderFormat::extension
virtual QString extension() const =0
KisMediaEncoderFormat::key
virtual QString key() const =0
KisMediaEncoderFormat::title
virtual QString title() const =0
KisMediaEncoderFormat::type
virtual Type type() const =0
KisMediaEncoderFormat::~KisMediaEncoderFormat
virtual ~KisMediaEncoderFormat()=default
KisMediaEncoderFormat::createPreferencesWidget
virtual QWidget * createPreferencesWidget(const QVariantMap &preferences) const =0
KisMediaEncoderFormat::getPreferencesFromWidget
virtual QVariantMap getPreferencesFromWidget(QWidget *widget) const =0
KisMediaEncoderFormat::KisMediaEncoderFormat
KisMediaEncoderFormat()=default
KisMediaEncoderFormat::Type
Type
Definition
KisMediaEncoderWrapper.h:23
KisMediaEncoderFormat::resetPreferencesWidget
virtual void resetPreferencesWidget(QWidget *widget) const =0
KisMediaEncoderRunnable::Frame
Definition
KisMediaEncoderWrapper.h:80
KisMediaEncoderRunnable::Frame::m_path
QString m_path
Definition
KisMediaEncoderWrapper.h:96
KisMediaEncoderRunnable::Frame::instances
int instances() const
Definition
KisMediaEncoderWrapper.h:88
KisMediaEncoderRunnable::Frame::readImage
bool readImage(QImage &outImage) const
Definition
KisMediaEncoderWrapper.cpp:42
KisMediaEncoderRunnable::Frame::m_instances
int m_instances
Definition
KisMediaEncoderWrapper.h:97
KisMediaEncoderRunnable::Frame::Frame
Frame(const QString &path=QString(), int instances=0)
Definition
KisMediaEncoderWrapper.h:82
KisMediaEncoderRunnable
Definition
KisMediaEncoderWrapper.h:56
KisMediaEncoderRunnable::EncodeResult
EncodeResult
Definition
KisMediaEncoderWrapper.h:73
KisMediaEncoderRunnable::EncodeResult::Completed
@ Completed
KisMediaEncoderRunnable::EncodeResult::Cancelled
@ Cancelled
KisMediaEncoderRunnable::EncodeResult::Failed
@ Failed
KisMediaEncoderRunnable::KisMediaEncoderRunnable
KisMediaEncoderRunnable(const KisMediaEncoderWrapperSettings &settings, QObject *parent)
Definition
KisMediaEncoderWrapper.cpp:62
KisMediaEncoderRunnable::sigStarted
void sigStarted()
KisMediaEncoderRunnable::sigCompleted
void sigCompleted()
KisMediaEncoderRunnable::m_inputFileIndex
int m_inputFileIndex
Definition
KisMediaEncoderWrapper.h:121
KisMediaEncoderRunnable::settings
const KisMediaEncoderWrapperSettings settings()
Definition
KisMediaEncoderWrapper.h:104
KisMediaEncoderRunnable::m_needsPreviewBefore
bool m_needsPreviewBefore
Definition
KisMediaEncoderWrapper.h:123
KisMediaEncoderRunnable::m_outputFrameNo
int m_outputFrameNo
Definition
KisMediaEncoderWrapper.h:122
KisMediaEncoderRunnable::slotHandleCancelRequested
void slotHandleCancelRequested()
Definition
KisMediaEncoderWrapper.cpp:23
KisMediaEncoderRunnable::nextFrame
bool nextFrame(Frame &outFrame)
Definition
KisMediaEncoderWrapper.cpp:68
KisMediaEncoderRunnable::m_cancel
bool m_cancel
Definition
KisMediaEncoderWrapper.h:125
KisMediaEncoderRunnable::isCancelled
bool isCancelled() const
Definition
KisMediaEncoderWrapper.h:109
KisMediaEncoderRunnable::m_inputTime
double m_inputTime
Definition
KisMediaEncoderWrapper.h:120
KisMediaEncoderRunnable::sigCancelled
void sigCancelled()
KisMediaEncoderRunnable::m_settings
KisMediaEncoderWrapperSettings m_settings
Definition
KisMediaEncoderWrapper.h:119
KisMediaEncoderRunnable::sigFailed
void sigFailed(const QString &errorMessage)
KisMediaEncoderRunnable::prepareAndEncode
EncodeResult prepareAndEncode(QString &outErrorMessage)
Definition
KisMediaEncoderWrapper.cpp:125
KisMediaEncoderRunnable::encode
virtual EncodeResult encode(QString &outErrorMessage)=0
KisMediaEncoderRunnable::run
void run() override
Definition
KisMediaEncoderWrapper.cpp:28
KisMediaEncoderRunnable::m_needsLingerAfter
bool m_needsLingerAfter
Definition
KisMediaEncoderWrapper.h:124
KisMediaEncoderRunnable::sigProgressUpdated
void sigProgressUpdated(int frameNo)
KisMediaEncoderWrapper
Definition
KisMediaEncoderWrapper.h:129
KisMediaEncoderWrapper::sigFinished
void sigFinished()
KisMediaEncoderWrapper::sigCancelRequested
void sigCancelRequested()
KisMediaEncoderWrapper::sigFinishedWithError
void sigFinishedWithError(QString message)
KisMediaEncoderWrapper::m_runnable
QPointer< KisMediaEncoderRunnable > m_runnable
Definition
KisMediaEncoderWrapper.h:152
KisMediaEncoderWrapper::sigStarted
void sigStarted()
KisMediaEncoderWrapper::sigProgressUpdated
void sigProgressUpdated(int frameNo)
QList< QString >
QPointer
Definition
kis_types.h:255
KisMediaEncoderWrapperSettings
Definition
KisMediaEncoderWrapper.h:42
KisMediaEncoderWrapperSettings::outputFps
int outputFps
Definition
KisMediaEncoderWrapper.h:49
KisMediaEncoderWrapperSettings::inputFps
int inputFps
Definition
KisMediaEncoderWrapper.h:48
KisMediaEncoderWrapperSettings::outputSize
QSize outputSize
Definition
KisMediaEncoderWrapper.h:47
KisMediaEncoderWrapperSettings::format
KisMediaEncoderFormat * format
Definition
KisMediaEncoderWrapper.h:45
KisMediaEncoderWrapperSettings::inputFiles
QStringList inputFiles
Definition
KisMediaEncoderWrapper.h:44
KisMediaEncoderWrapperSettings::outputFile
QString outputFile
Definition
KisMediaEncoderWrapper.h:43
KisMediaEncoderWrapperSettings::formatPreferences
QVariantMap formatPreferences
Definition
KisMediaEncoderWrapper.h:46
KisMediaEncoderWrapperSettings::lastFrameSec
int lastFrameSec
Definition
KisMediaEncoderWrapper.h:51
KisMediaEncoderWrapperSettings::firstFrameSec
int firstFrameSec
Definition
KisMediaEncoderWrapper.h:50
libs
ui
animation
KisMediaEncoderWrapper.h
Generated at
2026-07-16 02:30:11+02:00
from
Krita
branch
master
, commit
a788c87613f94f0657ee6a3d88f6745bc44af899