Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMediaEncoderWrapper Class Reference

#include <KisMediaEncoderWrapper.h>

+ Inheritance diagram for KisMediaEncoderWrapper:

Signals

void sigCancelRequested ()
 
void sigFinished ()
 
void sigFinishedWithError (QString message)
 
void sigProgressUpdated (int frameNo)
 
void sigStarted ()
 

Public Member Functions

 KisMediaEncoderWrapper (QObject *parent=nullptr)
 
void reset ()
 
KisImportExportErrorCode start (const KisMediaEncoderWrapperSettings &settings, bool batchMode)
 
void startNonBlocking (const KisMediaEncoderWrapperSettings &settings)
 
 ~KisMediaEncoderWrapper () override
 

Static Public Member Functions

static KisMediaEncoderFormatgetFormatByKey (const QString &key)
 
static const QVector< KisMediaEncoderFormat * > & getSupportedFormats ()
 

Static Private Member Functions

static KisMediaEncoderRunnablemakeSupportedRunnable (const KisMediaEncoderWrapperSettings &settings)
 

Private Attributes

QPointer< KisMediaEncoderRunnablem_runnable
 

Detailed Description

Definition at line 147 of file KisMediaEncoderWrapper.h.

Constructor & Destructor Documentation

◆ KisMediaEncoderWrapper()

KisMediaEncoderWrapper::KisMediaEncoderWrapper ( QObject * parent = nullptr)
explicit

Definition at line 156 of file KisMediaEncoderWrapper.cpp.

157 : QObject(parent)
158{
159}

◆ ~KisMediaEncoderWrapper()

KisMediaEncoderWrapper::~KisMediaEncoderWrapper ( )
override

Definition at line 161 of file KisMediaEncoderWrapper.cpp.

162{
163 reset();
164}

References reset().

Member Function Documentation

◆ getFormatByKey()

KisMediaEncoderFormat * KisMediaEncoderWrapper::getFormatByKey ( const QString & key)
static

Definition at line 312 of file KisMediaEncoderWrapper.cpp.

313{
315 if (format->key() == key) {
316 return format;
317 }
318 }
319 return nullptr;
320}
static const QVector< KisMediaEncoderFormat * > & getSupportedFormats()

References getSupportedFormats().

◆ getSupportedFormats()

const QVector< KisMediaEncoderFormat * > & KisMediaEncoderWrapper::getSupportedFormats ( )
static

Definition at line 299 of file KisMediaEncoderWrapper.cpp.

300{
301 static QVector<KisMediaEncoderFormat *> *supportedFormats;
302 if (!supportedFormats) {
303 supportedFormats = new QVector<KisMediaEncoderFormat *>();
304#ifdef Q_OS_ANDROID
306#endif
308 }
309 return *supportedFormats;
310}
static void getSupportedFormats(QVector< KisMediaEncoderFormat * > &outSupportedFormats)
static void getSupportedFormats(QVector< KisMediaEncoderFormat * > &outSupportedFormats)

References KisAndroidMediaEncoderRunnable::getSupportedFormats(), and KisLibavMediaEncoderRunnable::getSupportedFormats().

◆ makeSupportedRunnable()

KisMediaEncoderRunnable * KisMediaEncoderWrapper::makeSupportedRunnable ( const KisMediaEncoderWrapperSettings & settings)
staticprivate

Definition at line 322 of file KisMediaEncoderWrapper.cpp.

323{
325
326#ifdef Q_OS_ANDROID
327 {
329 if (androidRunnable) {
330 return androidRunnable;
331 }
332 }
333#endif
334 {
336 if (libavRunnable) {
337 return libavRunnable;
338 }
339 }
340
341 return nullptr;
342}
static KisAndroidMediaEncoderRunnable * create(const KisMediaEncoderWrapperSettings &settings, QObject *parent=nullptr)
static KisLibavMediaEncoderRunnable * create(const KisMediaEncoderWrapperSettings &settings, QObject *parent=nullptr)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References KisAndroidMediaEncoderRunnable::create(), KisLibavMediaEncoderRunnable::create(), KisMediaEncoderWrapperSettings::format, and KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE.

◆ reset()

void KisMediaEncoderWrapper::reset ( )

Definition at line 289 of file KisMediaEncoderWrapper.cpp.

290{
291 KisMediaEncoderRunnable *runnable = m_runnable.data();
292 if (runnable) {
293 m_runnable.clear();
294 Q_EMIT sigCancelRequested();
295 disconnect(runnable);
296 }
297}
QPointer< KisMediaEncoderRunnable > m_runnable

References m_runnable, and sigCancelRequested().

◆ sigCancelRequested

void KisMediaEncoderWrapper::sigCancelRequested ( )
signal

◆ sigFinished

void KisMediaEncoderWrapper::sigFinished ( )
signal

◆ sigFinishedWithError

void KisMediaEncoderWrapper::sigFinishedWithError ( QString message)
signal

◆ sigProgressUpdated

void KisMediaEncoderWrapper::sigProgressUpdated ( int frameNo)
signal

◆ sigStarted

void KisMediaEncoderWrapper::sigStarted ( )
signal

◆ start()

KisImportExportErrorCode KisMediaEncoderWrapper::start ( const KisMediaEncoderWrapperSettings & settings,
bool batchMode )

Definition at line 166 of file KisMediaEncoderWrapper.cpp.

167{
168 reset();
169
172 if (runnable) {
173 connect(
174 runnable,
176 this,
177 [&errorCode] {
179 },
180 Qt::DirectConnection);
181 connect(
182 runnable,
184 this,
185 [&errorCode] {
187 },
188 Qt::DirectConnection);
189 connect(
190 runnable,
192 this,
193 [&errorCode](const QString &errorMessage) {
194 errorCode = KisImportExportErrorCode(errorMessage);
195 },
196 Qt::DirectConnection);
197 connect(this,
199 runnable,
201 Qt::DirectConnection);
202
203 QProgressDialog *progressDlg;
204 if (batchMode) {
205 progressDlg = nullptr;
206 } else {
207 progressDlg = new QProgressDialog;
208 progressDlg->setLabelText(i18n("Rendering animation..."));
209 connect(
210 runnable,
212 this,
213 [progressDlg, frameCount = settings.inputFiles.size()](int frameNo) {
214 int progress;
215 if (frameNo < 0) {
216 progress = 0;
217 } else if (frameNo >= frameCount) {
218 progress = 100;
219 } else {
220 progress = qRound(qreal(frameNo) / qreal(frameCount) * 100.0);
221 }
222 progressDlg->setValue(progress);
223 QCoreApplication::processEvents();
224 },
225 Qt::DirectConnection);
226 connect(progressDlg,
227 &QProgressDialog::canceled,
228 this,
230 Qt::DirectConnection);
231 progressDlg->show();
232 QCoreApplication::processEvents();
233 }
234
235 m_runnable = runnable;
236 runnable->run();
237 delete runnable;
238 delete progressDlg;
239 }
240 return errorCode;
241}
void sigFailed(const QString &errorMessage)
void sigProgressUpdated(int frameNo)
static KisMediaEncoderRunnable * makeSupportedRunnable(const KisMediaEncoderWrapperSettings &settings)

References ImportExportCodes::Cancelled, KisMediaEncoderWrapperSettings::inputFiles, ImportExportCodes::InternalError, m_runnable, makeSupportedRunnable(), ImportExportCodes::OK, reset(), KisMediaEncoderRunnable::run(), KisMediaEncoderRunnable::sigCancelled(), sigCancelRequested(), KisMediaEncoderRunnable::sigCompleted(), KisMediaEncoderRunnable::sigFailed(), KisMediaEncoderRunnable::sigProgressUpdated(), and KisMediaEncoderRunnable::slotHandleCancelRequested().

◆ startNonBlocking()

void KisMediaEncoderWrapper::startNonBlocking ( const KisMediaEncoderWrapperSettings & settings)

Definition at line 243 of file KisMediaEncoderWrapper.cpp.

244{
245 reset();
246
248 if (runnable) {
249 connect(runnable,
251 this,
253 Qt::QueuedConnection);
254 connect(runnable,
256 this,
258 Qt::QueuedConnection);
259 connect(runnable,
261 this,
263 Qt::QueuedConnection);
264 connect(runnable,
266 this,
268 Qt::QueuedConnection);
269 connect(runnable,
271 this,
273 Qt::QueuedConnection);
274 connect(this,
276 runnable,
278 Qt::QueuedConnection);
279
280 m_runnable = runnable;
281 runnable->setAutoDelete(true);
282 QThreadPool::globalInstance()->start(runnable);
283
284 } else {
285 Q_EMIT sigFinishedWithError(i18n("No encoder for the selected format found"));
286 }
287}
void sigFinishedWithError(QString message)
void sigProgressUpdated(int frameNo)

References m_runnable, makeSupportedRunnable(), reset(), KisMediaEncoderRunnable::sigCancelled(), sigCancelRequested(), KisMediaEncoderRunnable::sigCompleted(), KisMediaEncoderRunnable::sigFailed(), sigFinished(), sigFinishedWithError(), KisMediaEncoderRunnable::sigProgressUpdated(), sigProgressUpdated(), KisMediaEncoderRunnable::sigStarted(), sigStarted(), and KisMediaEncoderRunnable::slotHandleCancelRequested().

Member Data Documentation

◆ m_runnable

QPointer<KisMediaEncoderRunnable> KisMediaEncoderWrapper::m_runnable
private

Definition at line 172 of file KisMediaEncoderWrapper.h.


The documentation for this class was generated from the following files: