#include "ardour/audiofile_tagger.h"
#include "ardour/debug.h"
#include "ardour/export_graph_builder.h"
#include "ardour/audiofile_tagger.h"
#include "ardour/debug.h"
#include "ardour/export_graph_builder.h"
, session (session)
, graph_builder (new ExportGraphBuilder (session))
, export_status (session.get_export_status ())
, session (session)
, graph_builder (new ExportGraphBuilder (session))
, export_status (session.get_export_status ())
for (ConfigMap::iterator it = timespan_bounds.first; it != timespan_bounds.second; ++it) {
// Filenames can be shared across timespans
FileSpec & spec = it->second;
spec.filename->set_timespan (it->first);
for (ConfigMap::iterator it = timespan_bounds.first; it != timespan_bounds.second; ++it) {
// Filenames can be shared across timespans
FileSpec & spec = it->second;
spec.filename->set_timespan (it->first);
session.ProcessExport.connect_same_thread (process_connection, boost::bind (&ExportHandler::process, this, _1));
process_position = current_timespan->get_start();
session.ProcessExport.connect_same_thread (process_connection, boost::bind (&ExportHandler::process, this, _1));
process_position = current_timespan->get_start();
/* Do actual processing */
int ret = graph_builder->process (frames_to_read, last_cycle);
/* Do actual processing */
int ret = graph_builder->process (frames_to_read, last_cycle);
- normalizing = graph_builder->will_normalize();
- if (normalizing) {
- export_status->total_normalize_cycles = graph_builder->get_normalize_cycle_count();
- export_status->current_normalize_cycle = 0;
+ post_processing = graph_builder->need_postprocessing ();
+ if (post_processing) {
+ export_status->total_postprocessing_cycles = graph_builder->get_postprocessing_cycle_count();
+ export_status->current_postprocessing_cycle = 0;
- export_status->active_job = ExportStatus::Normalizing;
+ if (graph_builder->realtime ()) {
+ export_status->active_job = ExportStatus::Encoding;
+ } else {
+ export_status->active_job = ExportStatus::Normalizing;
+ }
std::stringstream year;
year << metadata.year ();
subs.insert (std::pair<char, std::string> ('a', metadata.artist ()));
subs.insert (std::pair<char, std::string> ('b', PBD::basename_nosuffix (filename)));
std::stringstream year;
year << metadata.year ();
subs.insert (std::pair<char, std::string> ('a', metadata.artist ()));
subs.insert (std::pair<char, std::string> ('b', PBD::basename_nosuffix (filename)));
subs.insert (std::pair<char, std::string> ('d', Glib::path_get_dirname (filename) + G_DIR_SEPARATOR));
subs.insert (std::pair<char, std::string> ('f', filename));
subs.insert (std::pair<char, std::string> ('d', Glib::path_get_dirname (filename) + G_DIR_SEPARATOR));
subs.insert (std::pair<char, std::string> ('f', filename));
subs.insert (std::pair<char, std::string> ('n', session.name ()));
subs.insert (std::pair<char, std::string> ('s', session.path ()));
subs.insert (std::pair<char, std::string> ('n', session.name ()));
subs.insert (std::pair<char, std::string> ('s', session.path ()));
subs.insert (std::pair<char, std::string> ('A', metadata.album ()));
subs.insert (std::pair<char, std::string> ('C', metadata.comment ()));
subs.insert (std::pair<char, std::string> ('E', metadata.engineer ()));
subs.insert (std::pair<char, std::string> ('G', metadata.genre ()));
subs.insert (std::pair<char, std::string> ('A', metadata.album ()));
subs.insert (std::pair<char, std::string> ('C', metadata.comment ()));
subs.insert (std::pair<char, std::string> ('E', metadata.engineer ()));
subs.insert (std::pair<char, std::string> ('G', metadata.genre ()));
subs.insert (std::pair<char, std::string> ('N', current_timespan->name())); // =?= config_map.begin()->first->name ()
subs.insert (std::pair<char, std::string> ('N', current_timespan->name())); // =?= config_map.begin()->first->name ()
subs.insert (std::pair<char, std::string> ('T', track_number.str ()));
subs.insert (std::pair<char, std::string> ('Y', year.str ()));
subs.insert (std::pair<char, std::string> ('T', track_number.str ()));
subs.insert (std::pair<char, std::string> ('Y', year.str ()));
ARDOUR::SystemExec *se = new ARDOUR::SystemExec(fmt->command(), subs);
info << "Post-export command line : {" << se->to_s () << "}" << endmsg;
ARDOUR::SystemExec *se = new ARDOUR::SystemExec(fmt->command(), subs);
info << "Post-export command line : {" << se->to_s () << "}" << endmsg;
- latin1_txt = Glib::convert (txt, "ISO-8859-1", "UTF-8");
+ latin1_txt = Glib::convert_with_fallback (txt, "ISO-8859-1", "UTF-8", "_");
} catch (Glib::ConvertError& err) {
throw Glib::ConvertError (err.code(), string_compose (_("Cannot convert %1 to Latin-1 text"), txt));
}
} catch (Glib::ConvertError& err) {
throw Glib::ConvertError (err.code(), string_compose (_("Cannot convert %1 to Latin-1 text"), txt));
}