/****************************************************************************** Copyright (C) 2014 by Ruwen Hahn 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 2 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 . ******************************************************************************/ #pragma once #include #include #include #include "ui_OBSRemux.h" #include #include class RemuxWorker; class OBSRemux : public QDialog { Q_OBJECT QThread remuxer; QPointer worker; std::unique_ptr ui; const char *recPath; void BrowseInput(); void BrowseOutput(); bool Stop(); virtual void closeEvent(QCloseEvent *event) override; virtual void reject() override; public: explicit OBSRemux(const char *recPath, QWidget *parent = nullptr); virtual ~OBSRemux() override; using job_t = std::shared_ptr; private slots: void inputChanged(const QString &str); public slots: void updateProgress(float percent); void remuxFinished(bool success); void Remux(); signals: void remux(); }; class RemuxWorker : public QObject { Q_OBJECT OBSRemux::job_t job; os_event_t *stop; float lastProgress; void UpdateProgress(float percent); explicit RemuxWorker(); virtual ~RemuxWorker(); private slots: void remux(); signals: void updateProgress(float percent); void remuxFinished(bool success); friend class OBSRemux; };