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
#include "
KisImportExportErrorCode.h
"
18
19
class
QImage;
20
class
QWidget;
21
22
class
KRITAUI_EXPORT
KisMediaEncoderFormat
23
{
24
public
:
25
enum class
Type
{
26
AndroidMediaEncoder,
27
LibavMediaEncoder,
28
};
29
30
virtual
~KisMediaEncoderFormat
() =
default
;
31
32
virtual
Type
type
()
const
= 0;
33
virtual
QString
key
()
const
= 0;
34
virtual
QString
title
()
const
= 0;
35
virtual
QString
extension
()
const
= 0;
36
virtual
bool
supportsAudio
()
const
= 0;
37
38
virtual
QWidget *
createPreferencesWidget
(
const
QVariantMap &preferences)
const
= 0;
39
virtual
void
resetPreferencesWidget
(QWidget *widget)
const
= 0;
40
virtual
QVariantMap
getPreferencesFromWidget
(QWidget *widget)
const
= 0;
41
42
protected
:
43
KisMediaEncoderFormat
() =
default
;
44
};
45
46
struct
KRITAUI_EXPORT
KisMediaEncoderWrapperSettings
{
47
QString
outputFile
;
48
QStringList
inputFiles
;
49
QString
audioFile
;
50
KisMediaEncoderFormat
*
format
;
51
QVariantMap
formatPreferences
;
52
QString
scaleFilter
;
53
QSize
outputSize
;
54
int
inputFps
;
55
int
outputFps
;
56
int
firstFrameSec
;
57
int
lastFrameSec
;
58
int
audioSeekFrame
;
59
};
60
61
// Intentionally not exported, this is only needed internally.
62
class
KisMediaEncoderRunnable
:
public
QObject,
public
QRunnable
63
{
64
Q_OBJECT
65
Q_DISABLE_COPY_MOVE(
KisMediaEncoderRunnable
)
66
public
:
67
void
run
()
override
;
68
69
public
Q_SLOTS:
70
void
slotHandleCancelRequested
();
71
72
Q_SIGNALS:
73
void
sigStarted
();
74
void
sigCompleted
();
75
void
sigCancelled
();
76
void
sigFailed
(
const
QString &errorMessage);
77
void
sigProgressUpdated
(
int
frameNo);
78
79
protected
:
80
enum class
EncodeResult
{
81
Completed
,
82
Cancelled
,
83
Failed
,
84
};
85
86
class
Frame
87
{
88
public
:
89
explicit
Frame
(
const
QString &path = QString(),
int
instances
= 0)
90
:
m_path
(path)
91
,
m_instances
(
instances
)
92
{
93
}
94
95
const
QString &
path
()
const
96
{
97
return
m_path
;
98
}
99
100
int
instances
()
const
101
{
102
return
m_instances
;
103
}
104
105
bool
readImage
(QImage &outImage)
const
;
106
107
private
:
108
QString
m_path
;
109
int
m_instances
;
110
};
111
112
KisMediaEncoderRunnable
(
const
KisMediaEncoderWrapperSettings
&
settings
, QObject *parent);
113
114
virtual
EncodeResult
encode
(QString &outErrorMessage) = 0;
115
116
const
KisMediaEncoderWrapperSettings
settings
()
117
{
118
return
m_settings
;
119
}
120
121
bool
isCancelled
()
const
122
{
123
return
m_cancel
;
124
}
125
126
void
setOutputFrameNoMultiplier
(
double
outputFrameNoMultiplier)
127
{
128
m_outputFrameNoMultiplier
= outputFrameNoMultiplier;
129
}
130
131
bool
nextFrame
(Frame &outFrame);
132
void
rewindFrames
();
133
134
private
:
135
EncodeResult
prepareAndEncode
(QString &outErrorMessage);
136
137
KisMediaEncoderWrapperSettings
m_settings
;
138
double
m_inputTime
= 0.0;
139
int
m_inputFileIndex
= 0;
140
double
m_outputFrameNo
= 0.0;
141
double
m_outputFrameNoMultiplier
= 1.0;
142
bool
m_needsPreviewBefore
=
true
;
143
bool
m_needsLingerAfter
=
true
;
144
bool
m_cancel
=
false
;
145
};
146
147
class
KRITAUI_EXPORT
KisMediaEncoderWrapper
:
public
QObject
148
{
149
Q_OBJECT
150
Q_DISABLE_COPY_MOVE(
KisMediaEncoderWrapper
)
151
public
:
152
explicit
KisMediaEncoderWrapper
(QObject *parent =
nullptr
);
153
~KisMediaEncoderWrapper
()
override
;
154
155
KisImportExportErrorCode
start(
const
KisMediaEncoderWrapperSettings
&settings,
bool
batchMode);
156
void
startNonBlocking(
const
KisMediaEncoderWrapperSettings
&settings);
157
void
reset();
158
159
static
const
QVector<KisMediaEncoderFormat *>
&getSupportedFormats();
160
static
KisMediaEncoderFormat
*getFormatByKey(
const
QString &key);
161
162
Q_SIGNALS:
163
void
sigStarted
();
164
void
sigFinished
();
165
void
sigFinishedWithError
(QString message);
166
void
sigProgressUpdated
(
int
frameNo);
167
void
sigCancelRequested
();
168
169
private
:
170
static
KisMediaEncoderRunnable
*makeSupportedRunnable(
const
KisMediaEncoderWrapperSettings
&settings);
171
172
QPointer<KisMediaEncoderRunnable>
m_runnable
;
173
};
174
175
#endif
KisImportExportErrorCode.h
KisImportExportErrorCode
Definition
KisImportExportErrorCode.h:110
KisMediaEncoderFormat
Definition
KisMediaEncoderWrapper.h:23
KisMediaEncoderFormat::supportsAudio
virtual bool supportsAudio() const =0
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:25
KisMediaEncoderFormat::resetPreferencesWidget
virtual void resetPreferencesWidget(QWidget *widget) const =0
KisMediaEncoderRunnable::Frame
Definition
KisMediaEncoderWrapper.h:87
KisMediaEncoderRunnable::Frame::m_path
QString m_path
Definition
KisMediaEncoderWrapper.h:108
KisMediaEncoderRunnable::Frame::instances
int instances() const
Definition
KisMediaEncoderWrapper.h:100
KisMediaEncoderRunnable::Frame::path
const QString & path() const
Definition
KisMediaEncoderWrapper.h:95
KisMediaEncoderRunnable::Frame::readImage
bool readImage(QImage &outImage) const
Definition
KisMediaEncoderWrapper.cpp:46
KisMediaEncoderRunnable::Frame::m_instances
int m_instances
Definition
KisMediaEncoderWrapper.h:109
KisMediaEncoderRunnable::Frame::Frame
Frame(const QString &path=QString(), int instances=0)
Definition
KisMediaEncoderWrapper.h:89
KisMediaEncoderRunnable
Definition
KisMediaEncoderWrapper.h:63
KisMediaEncoderRunnable::rewindFrames
void rewindFrames()
Definition
KisMediaEncoderWrapper.cpp:133
KisMediaEncoderRunnable::EncodeResult
EncodeResult
Definition
KisMediaEncoderWrapper.h:80
KisMediaEncoderRunnable::EncodeResult::Completed
@ Completed
KisMediaEncoderRunnable::EncodeResult::Cancelled
@ Cancelled
KisMediaEncoderRunnable::EncodeResult::Failed
@ Failed
KisMediaEncoderRunnable::KisMediaEncoderRunnable
KisMediaEncoderRunnable(const KisMediaEncoderWrapperSettings &settings, QObject *parent)
Definition
KisMediaEncoderWrapper.cpp:66
KisMediaEncoderRunnable::sigStarted
void sigStarted()
KisMediaEncoderRunnable::sigCompleted
void sigCompleted()
KisMediaEncoderRunnable::m_inputFileIndex
int m_inputFileIndex
Definition
KisMediaEncoderWrapper.h:139
KisMediaEncoderRunnable::settings
const KisMediaEncoderWrapperSettings settings()
Definition
KisMediaEncoderWrapper.h:116
KisMediaEncoderRunnable::m_needsPreviewBefore
bool m_needsPreviewBefore
Definition
KisMediaEncoderWrapper.h:142
KisMediaEncoderRunnable::slotHandleCancelRequested
void slotHandleCancelRequested()
Definition
KisMediaEncoderWrapper.cpp:27
KisMediaEncoderRunnable::nextFrame
bool nextFrame(Frame &outFrame)
Definition
KisMediaEncoderWrapper.cpp:72
KisMediaEncoderRunnable::m_cancel
bool m_cancel
Definition
KisMediaEncoderWrapper.h:144
KisMediaEncoderRunnable::isCancelled
bool isCancelled() const
Definition
KisMediaEncoderWrapper.h:121
KisMediaEncoderRunnable::setOutputFrameNoMultiplier
void setOutputFrameNoMultiplier(double outputFrameNoMultiplier)
Definition
KisMediaEncoderWrapper.h:126
KisMediaEncoderRunnable::m_inputTime
double m_inputTime
Definition
KisMediaEncoderWrapper.h:138
KisMediaEncoderRunnable::m_outputFrameNo
double m_outputFrameNo
Definition
KisMediaEncoderWrapper.h:140
KisMediaEncoderRunnable::m_outputFrameNoMultiplier
double m_outputFrameNoMultiplier
Definition
KisMediaEncoderWrapper.h:141
KisMediaEncoderRunnable::sigCancelled
void sigCancelled()
KisMediaEncoderRunnable::m_settings
KisMediaEncoderWrapperSettings m_settings
Definition
KisMediaEncoderWrapper.h:137
KisMediaEncoderRunnable::sigFailed
void sigFailed(const QString &errorMessage)
KisMediaEncoderRunnable::prepareAndEncode
EncodeResult prepareAndEncode(QString &outErrorMessage)
Definition
KisMediaEncoderWrapper.cpp:141
KisMediaEncoderRunnable::encode
virtual EncodeResult encode(QString &outErrorMessage)=0
KisMediaEncoderRunnable::run
void run() override
Definition
KisMediaEncoderWrapper.cpp:32
KisMediaEncoderRunnable::m_needsLingerAfter
bool m_needsLingerAfter
Definition
KisMediaEncoderWrapper.h:143
KisMediaEncoderRunnable::sigProgressUpdated
void sigProgressUpdated(int frameNo)
KisMediaEncoderWrapper
Definition
KisMediaEncoderWrapper.h:148
KisMediaEncoderWrapper::sigFinished
void sigFinished()
KisMediaEncoderWrapper::sigCancelRequested
void sigCancelRequested()
KisMediaEncoderWrapper::sigFinishedWithError
void sigFinishedWithError(QString message)
KisMediaEncoderWrapper::m_runnable
QPointer< KisMediaEncoderRunnable > m_runnable
Definition
KisMediaEncoderWrapper.h:172
KisMediaEncoderWrapper::sigStarted
void sigStarted()
KisMediaEncoderWrapper::sigProgressUpdated
void sigProgressUpdated(int frameNo)
QList< QString >
QPointer
Definition
kis_types.h:255
KisMediaEncoderWrapperSettings
Definition
KisMediaEncoderWrapper.h:46
KisMediaEncoderWrapperSettings::scaleFilter
QString scaleFilter
Definition
KisMediaEncoderWrapper.h:52
KisMediaEncoderWrapperSettings::outputFps
int outputFps
Definition
KisMediaEncoderWrapper.h:55
KisMediaEncoderWrapperSettings::inputFps
int inputFps
Definition
KisMediaEncoderWrapper.h:54
KisMediaEncoderWrapperSettings::audioFile
QString audioFile
Definition
KisMediaEncoderWrapper.h:49
KisMediaEncoderWrapperSettings::outputSize
QSize outputSize
Definition
KisMediaEncoderWrapper.h:53
KisMediaEncoderWrapperSettings::audioSeekFrame
int audioSeekFrame
Definition
KisMediaEncoderWrapper.h:58
KisMediaEncoderWrapperSettings::format
KisMediaEncoderFormat * format
Definition
KisMediaEncoderWrapper.h:50
KisMediaEncoderWrapperSettings::inputFiles
QStringList inputFiles
Definition
KisMediaEncoderWrapper.h:48
KisMediaEncoderWrapperSettings::outputFile
QString outputFile
Definition
KisMediaEncoderWrapper.h:47
KisMediaEncoderWrapperSettings::formatPreferences
QVariantMap formatPreferences
Definition
KisMediaEncoderWrapper.h:51
KisMediaEncoderWrapperSettings::lastFrameSec
int lastFrameSec
Definition
KisMediaEncoderWrapper.h:57
KisMediaEncoderWrapperSettings::firstFrameSec
int firstFrameSec
Definition
KisMediaEncoderWrapper.h:56
libs
ui
animation
KisMediaEncoderWrapper.h
Generated at
2026-08-31 02:30:03+02:00
from
Krita
branch
master
, commit
7d4746aba9610501232b573fd3f032030ed26498