1 /* 2 * Copyright (c) 2012-2019 Meltytech, LLC 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef MELTJOB_H 19 #define MELTJOB_H 20 21 #include "abstractjob.h" 22 #include <QTemporaryFile> 23 #include <MltProfile.h> 24 25 class MeltJob : public AbstractJob 26 { 27 Q_OBJECT 28 public: 29 MeltJob(const QString& name, const QString& xml, int frameRateNum, int frameRateDen); 30 MeltJob(const QString& name, const QStringList& args, int frameRateNum, int frameRateDen); 31 virtual ~MeltJob(); 32 QString xml(); xmlPath()33 QString xmlPath() const { return m_xml->fileName(); } 34 void setIsStreaming(bool streaming); 35 void setUseMultiConsumer(bool multi = true); 36 37 public slots: 38 void start(); 39 void onViewXmlTriggered(); 40 41 protected slots: 42 virtual void onOpenTiggered(); 43 virtual void onFinished(int exitCode, QProcess::ExitStatus exitStatus); 44 void onShowFolderTriggered(); 45 void onReadyRead(); 46 47 protected: 48 QScopedPointer<QTemporaryFile> m_xml; 49 50 private: 51 52 bool m_isStreaming; 53 int m_previousPercent; 54 QStringList m_args; 55 int m_currentFrame; 56 Mlt::Profile m_profile; 57 bool m_useMultiConsumer; 58 }; 59 60 #endif // MELTJOB_H 61