X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fexport_status.h;h=99642a2d7c31fd6ad38e40644efda46a15c2df57;hb=79abf3dfa6d649fbf1fb6fd16cd489f434d0b909;hp=88c2feb4937ad6556c36ee40569adedacec5656b;hpb=6b50ba341da426805ce3c92609c0fa12c52b67ac;p=ardour.git diff --git a/libs/ardour/ardour/export_status.h b/libs/ardour/ardour/export_status.h index 88c2feb493..99642a2d7c 100644 --- a/libs/ardour/ardour/export_status.h +++ b/libs/ardour/ardour/export_status.h @@ -21,59 +21,74 @@ #ifndef __ardour_export_status_h__ #define __ardour_export_status_h__ -#include - #include -#include -namespace ARDOUR -{ +#include "ardour/libardour_visibility.h" +#include "ardour/export_analysis.h" +#include "ardour/types.h" -enum ExportStage { - export_None, - export_ReadTimespan, - export_PostProcess, - export_Write -}; +#include "pbd/signals.h" -struct ExportStatus { +namespace ARDOUR +{ +class LIBARDOUR_API ExportStatus { + public: ExportStatus (); void init (); - + /* Status info */ - + volatile bool stop; - volatile bool running; - - sigc::signal Aborting; + void abort (bool error_occurred = false); bool aborted () const { return _aborted; } bool errors () const { return _errors; } - - sigc::signal Finished; + 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 _aborted; } - + + void cleanup (); + /* Progress info */ - - volatile ExportStage stage; - volatile float progress; - + + volatile enum Progress { + Exporting, + Normalizing, + Encoding, + Tagging, + Uploading, + Command } + active_job; + volatile uint32_t total_timespans; volatile uint32_t timespan; - - volatile uint32_t total_channel_configs; - volatile uint32_t channel_config; - - volatile uint32_t total_formats; - volatile uint32_t format; - + std::string timespan_name; + + volatile framecnt_t total_frames; + volatile framecnt_t processed_frames; + + 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; + + AnalysisResults result_map; + private: volatile bool _aborted; volatile bool _errors; - volatile bool _finished; - + volatile bool _running; + + Glib::Threads::Mutex _run_lock; }; } // namespace ARDOUR