summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/export_formats.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-11-19 23:44:50 +0100
committerRobin Gareus <robin@gareus.org>2018-11-20 00:21:01 +0100
commit27e0e78e1df90c2c1fa41a342a11d1c941fca1bf (patch)
tree8a51367d3b91b86e774c1e2a0e0c2226f6ca1264 /libs/ardour/ardour/export_formats.h
parent5fa05b403ca21a6573d07b921dc14f0769dc9fc7 (diff)
Implement FFMPEG/MP3 export-format spec and profile
Diffstat (limited to 'libs/ardour/ardour/export_formats.h')
-rw-r--r--libs/ardour/ardour/export_formats.h35
1 files changed, 34 insertions, 1 deletions
diff --git a/libs/ardour/ardour/export_formats.h b/libs/ardour/ardour/export_formats.h
index 8e51827b89..b8ce3db96a 100644
--- a/libs/ardour/ardour/export_formats.h
+++ b/libs/ardour/ardour/export_formats.h
@@ -52,6 +52,8 @@ class LIBARDOUR_API ExportFormat : public ExportFormatBase, public ExportFormatB
Quality get_quality () const { return *qualities.begin(); }
bool has_sample_format ();
+ bool has_codec_quality ();
+
bool sample_format_is_compatible (SampleFormat format) const;
/* If the format has a specific sample format, this function should be overridden
@@ -76,6 +78,7 @@ class LIBARDOUR_API ExportFormat : public ExportFormatBase, public ExportFormatB
virtual bool has_broadcast_info () const { return false; }
+
protected:
void add_sample_rate (SampleRate rate) { sample_rates.insert (rate); }
@@ -85,6 +88,36 @@ class LIBARDOUR_API ExportFormat : public ExportFormatBase, public ExportFormatB
void set_quality (Quality value) { qualities.clear(); qualities.insert (value); }
};
+class LIBARDOUR_API HasCodecQuality : public PBD::ScopedConnectionList {
+public:
+ struct CodecQuality {
+ CodecQuality (std::string const& n, int q)
+ : name (n)
+ , quality (q)
+ {}
+
+ std::string name;
+ int quality;
+ };
+
+ typedef boost::shared_ptr<CodecQuality> CodecQualityPtr;
+ typedef std::list<CodecQualityPtr> CodecQualityList;
+
+ virtual ~HasCodecQuality () {}
+
+ void add_codec_quality (std::string const& name, int q) {
+ CodecQualityPtr ptr (new CodecQuality (name, q));
+ _codec_qualties.push_back (ptr);
+ }
+
+ CodecQualityList const & get_codec_qualities () const {
+ return _codec_qualties;
+ }
+
+protected:
+ CodecQualityList _codec_qualties;
+};
+
/// Class to be inherited by export formats that have a selectable sample format
class LIBARDOUR_API HasSampleFormat : public PBD::ScopedConnectionList {
public:
@@ -211,7 +244,7 @@ class LIBARDOUR_API ExportFormatBWF : public ExportFormat, public HasSampleForma
};
-class LIBARDOUR_API ExportFormatFFMPEG : public ExportFormat {
+class LIBARDOUR_API ExportFormatFFMPEG : public ExportFormat, public HasCodecQuality {
public:
ExportFormatFFMPEG (std::string const& name, std::string const& ext);
~ExportFormatFFMPEG () {};