/*** Olive - Non-Linear Video Editor Copyright (C) 2019 Olive Team This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ***/ #ifndef PROXYGENERATOR_H #define PROXYGENERATOR_H #include #include #include #include #include "project/media.h" struct ProxyInfo { Media* media; double size_multiplier; int codec_type; QString path; }; class ProxyGenerator : public QThread { Q_OBJECT public: ProxyGenerator(); void run(); void queue(const ProxyInfo& info); void cancel(); double get_proxy_progress(Media *f); private: // queue of footage to process proxies for QVector proxy_queue; // threading objects QWaitCondition waitCond; QMutex mutex; // set to true if you want to permanently close ProxyGenerator bool cancelled; // set to true if you want to abort the footage currently being processed bool skip; // stores progress in percent of proxy currently being processed double current_progress; // function that performs the actual transcode void transcode(const ProxyInfo& info); }; namespace olive { // proxy generator is a global omnipotent entity extern ProxyGenerator proxy_generator; } #endif // PROXYGENERATOR_H