File indexing completed on 2024-12-08 04:27:21
0001 /* 0002 SPDX-FileCopyrightText: 2014 Till Theato <root@ttill.de> 0003 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #pragma once 0007 0008 #include <QString> 0009 #include <memory> 0010 0011 namespace Mlt { 0012 class Repository; 0013 } 0014 0015 /** @class MltConnection 0016 @brief Initializes MLT and provides access to its API. 0017 This is where the Mlt Factory is initialized, as well as the producers 0018 */ 0019 class MltConnection 0020 { 0021 0022 public: 0023 /** @brief Open connection to the MLT framework 0024 */ 0025 static void construct(const QString &mltPath); 0026 0027 /** @brief Returns a pointer to the MLT Repository*/ 0028 std::unique_ptr<Mlt::Repository> &getMltRepository(); 0029 0030 /** @brief Returns a pointer to the instance of the singleton */ 0031 static std::unique_ptr<MltConnection> &self(); 0032 0033 /** @brief Updates the list of available Lumas 0034 */ 0035 static void refreshLumas(); 0036 0037 protected: 0038 /** @brief Open connection to the MLT framework 0039 This constructor should be called only once 0040 */ 0041 MltConnection(const QString &mltPath); 0042 0043 /** @brief Locates the MLT environment. 0044 * @param mltPath (optional) path to MLT environment 0045 * 0046 * It tries to set the paths of the MLT profiles and renderer, using 0047 * mltPath, MLT_PREFIX, searching for the binary `melt`, or asking to the 0048 * user. It doesn't fill any list of profiles, while its name suggests so. */ 0049 void locateMeltAndProfilesPath(const QString &mltPath = QString()); 0050 0051 static std::unique_ptr<MltConnection> m_self; 0052 0053 /** @brief The MLT repository, useful for filter/producer requests */ 0054 std::unique_ptr<Mlt::Repository> m_repository; 0055 };