#define __ardour_export_handler_h__
#include <map>
-#include <list>
#include <fstream>
#include <boost/operators.hpp>
#include <boost/shared_ptr.hpp>
-#include "ardour/ardour.h"
#include "ardour/export_pointers.h"
#include "ardour/session.h"
+#include "ardour/libardour_visibility.h"
#include "ardour/types.h"
namespace AudioGrapher {
class ExportFormatSpecification;
class ExportFilename;
class ExportGraphBuilder;
+class Location;
-
-class ExportElementFactory
+class LIBARDOUR_API ExportElementFactory
{
public:
Session & session;
};
-class ExportHandler : public ExportElementFactory
+class LIBARDOUR_API ExportHandler : public ExportElementFactory
{
public:
struct FileSpec {
{}
ExportChannelConfigPtr channel_config;
- ExportFormatSpecPtr format;
+ ExportFormatSpecPtr format;
ExportFilenamePtr filename;
BroadcastInfoPtr broadcast_info;
};
- private:
-
- /* Stuff for export configs
- * The multimap maps timespans to file specifications
- */
-
- typedef std::pair<ExportTimespanPtr, FileSpec> ConfigPair;
- typedef std::multimap<ExportTimespanPtr, FileSpec> ConfigMap;
-
- typedef boost::shared_ptr<ExportGraphBuilder> GraphBuilderPtr;
-
private:
/* Session::get_export_handler() should be used to obtain an export handler
* This ensures that it doesn't go out of scope before finalize_audio_export is called
bool add_export_config (ExportTimespanPtr timespan, ExportChannelConfigPtr channel_config,
ExportFormatSpecPtr format, ExportFilenamePtr filename,
BroadcastInfoPtr broadcast_info);
- void do_export (bool rt = false);
+ void do_export ();
+
+ std::string get_cd_marker_filename(std::string filename, CDMarkerFormat format);
private:
+ void handle_duplicate_format_extensions();
int process (framecnt_t frames);
Session & session;
- GraphBuilderPtr graph_builder;
+ boost::shared_ptr<ExportGraphBuilder> graph_builder;
ExportStatusPtr export_status;
+
+ /* The timespan and corresponding file specifications that we are exporting;
+ there can be multiple FileSpecs for each ExportTimespan.
+ */
+ typedef std::multimap<ExportTimespanPtr, FileSpec> ConfigMap;
ConfigMap config_map;
- bool realtime;
bool normalizing;
/* Timespan management */
void write_index_info_toc (CDMarkerStatus & status);
void frames_to_cd_frames_string (char* buf, framepos_t when);
+ std::string toc_escape_cdtext (const std::string&);
+ std::string toc_escape_filename (const std::string&);
+ std::string cue_escape_cdtext (const std::string& txt);
int cue_tracknum;
int cue_indexnum;