File indexing completed on 2024-12-01 04:28:35
0001 /* 0002 SPDX-FileCopyrightText: 2021 Jean-Baptiste Mardelle <jb@kdenlive.org> 0003 This file is part of Kdenlive. See www.kdenlive.org. 0004 0005 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #pragma once 0009 0010 #include "definitions.h" 0011 #include "abstracttask.h" 0012 #include <mlt++/MltProducer.h> 0013 #include <mlt++/MltProfile.h> 0014 0015 #include <QRunnable> 0016 #include <QDomElement> 0017 #include <QObject> 0018 #include <QList> 0019 0020 class ProjectClip; 0021 0022 class ClipLoadTask : public AbstractTask 0023 { 0024 Q_OBJECT 0025 public: 0026 ClipLoadTask(const ObjectId &owner, const QDomElement &xml, bool thumbOnly, int in, int out, QObject* object); 0027 ~ClipLoadTask() override; 0028 static void start(const ObjectId &owner, const QDomElement &xml, bool thumbOnly, int in, int out, QObject* object, bool force = false, const std::function<void()> &readyCallBack = []() {}); 0029 static ClipType::ProducerType getTypeForService(const QString &id, const QString &path); 0030 std::shared_ptr<Mlt::Producer> loadResource(QString resource, const QString &type); 0031 std::shared_ptr<Mlt::Producer> loadPlaylist(QString &resource); 0032 void processProducerProperties(const std::shared_ptr<Mlt::Producer> &prod, const QDomElement &xml); 0033 void processSlideShow(std::shared_ptr<Mlt::Producer> producer); 0034 0035 protected: 0036 void run() override; 0037 0038 private: 0039 //QString cacheKey(); 0040 QDomElement m_xml; 0041 int m_in; 0042 int m_out; 0043 bool m_thumbOnly; 0044 QString m_errorMessage; 0045 void generateThumbnail(std::shared_ptr<ProjectClip>binClip, std::shared_ptr<Mlt::Producer> producer); 0046 void abort(); 0047 0048 Q_SIGNALS: 0049 void taskDone(); 0050 };