X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fexport_status.h;h=90e6c1b56aac431587c443b9b3e72ee6da5b039f;hb=5fa05b403ca21a6573d07b921dc14f0769dc9fc7;hp=c85d37156cf8f77fed02bdfddd402f248101cbdc;hpb=db384a6f143ee878e70740c65e7c7f699e3fa076;p=ardour.git diff --git a/libs/ardour/ardour/export_status.h b/libs/ardour/ardour/export_status.h index c85d37156c..90e6c1b56a 100644 --- a/libs/ardour/ardour/export_status.h +++ b/libs/ardour/ardour/export_status.h @@ -21,9 +21,10 @@ #ifndef __ardour_export_status_h__ #define __ardour_export_status_h__ -#include #include +#include "ardour/libardour_visibility.h" +#include "ardour/export_analysis.h" #include "ardour/types.h" #include "pbd/signals.h" @@ -31,46 +32,63 @@ namespace ARDOUR { -struct ExportStatus { - +class LIBARDOUR_API ExportStatus { + public: ExportStatus (); void init (); /* Status info */ volatile bool stop; - volatile bool running; - PBD::Signal0 Aborting; void abort (bool error_occurred = false); bool aborted () const { return _aborted; } bool errors () const { return _errors; } + bool running () const { return _running; } + + void set_running (bool r) { + assert (!_run_lock.trylock()); // must hold lock + _running = r; + } + Glib::Threads::Mutex& lock () { return _run_lock; } PBD::Signal0 Finished; void finish (); - bool finished () const { return _finished; } + + void cleanup (); /* Progress info */ - volatile bool normalizing; + volatile enum Progress { + Exporting, + Normalizing, + Encoding, + Tagging, + Uploading, + Command } + active_job; volatile uint32_t total_timespans; volatile uint32_t timespan; + std::string timespan_name; + + volatile samplecnt_t total_samples; + volatile samplecnt_t processed_samples; - volatile framecnt_t total_frames; - volatile framecnt_t processed_frames; + volatile samplecnt_t total_samples_current_timespan; + volatile samplecnt_t processed_samples_current_timespan; - volatile framecnt_t total_frames_current_timespan; - volatile framecnt_t processed_frames_current_timespan; + volatile uint32_t total_postprocessing_cycles; + volatile uint32_t current_postprocessing_cycle; - volatile uint32_t total_normalize_cycles; - volatile uint32_t current_normalize_cycle; + AnalysisResults result_map; private: volatile bool _aborted; volatile bool _errors; - volatile bool _finished; + volatile bool _running; + Glib::Threads::Mutex _run_lock; }; } // namespace ARDOUR