remove Session::get_nth_stripable.cc
[ardour.git] / libs / ardour / ardour / export_format_base.h
index 08bcbfb2bdaf717f5a0cd7fadd9dd4665a8c40ea..093913e294b9f8b1302d3d4115e5addb1710b3e6 100644 (file)
 #define __ardour_export_format_base_h__
 
 #include <set>
-#include <algorithm>
+#include <string>
+
 #include <boost/shared_ptr.hpp>
-#include <glibmm/ustring.h>
 
 #include <sndfile.h>
 #include <samplerate.h>
 
-#include "ardour/ardour.h"
+#include "pbd/signals.h"
+#include "ardour/libardour_visibility.h"
+#include "ardour/types.h"
 
-#include "audiographer/sample_format_converter.h"
+#include "audiographer/general/sample_format_converter.h"
 
 namespace ARDOUR
 {
 
-class HasSampleFormat;
-
-class ExportFormatBase {
+class LIBARDOUR_API ExportFormatBase {
   public:
 
        enum Type {
@@ -50,6 +50,7 @@ class ExportFormatBase {
                F_None = 0,
                F_WAV = SF_FORMAT_WAV,
                F_W64 = SF_FORMAT_W64,
+               F_CAF = SF_FORMAT_CAF,
                F_AIFF = SF_FORMAT_AIFF,
                F_AU = SF_FORMAT_AU,
                F_IRCAM = SF_FORMAT_IRCAM,
@@ -94,11 +95,14 @@ class ExportFormatBase {
 
        enum SampleRate {
                SR_None = 0,
-               SR_22_05 = 220500,
+               SR_Session = 1,
+               SR_8 = 8000,
+               SR_22_05 = 22050,
                SR_44_1 = 44100,
                SR_48 = 48000,
                SR_88_2 = 88200,
                SR_96 = 96000,
+               SR_176_4 = 176400,
                SR_192 = 192000
        };
 
@@ -111,7 +115,7 @@ class ExportFormatBase {
        };
 
        /// Class for managing selection and compatibility states
-       class SelectableCompatible {
+       class LIBARDOUR_API SelectableCompatible {
          public:
                SelectableCompatible ()
                        : _selected (false), _compatible (true) { }
@@ -122,19 +126,19 @@ class ExportFormatBase {
 
                bool selected () const { return _selected; }
                bool compatible () const { return _compatible; }
-               Glib::ustring name () const { return _name; }
+               std::string name () const { return _name; }
 
                void set_selected (bool value);
                void set_compatible (bool value);
 
          protected:
-               void set_name (Glib::ustring name) { _name = name; }
+               void set_name (std::string name) { _name = name; }
 
          private:
                bool _selected;
                bool _compatible;
 
-               Glib::ustring _name;
+               std::string _name;
        };
 
   public:
@@ -145,7 +149,6 @@ class ExportFormatBase {
        virtual ~ExportFormatBase ();
 
        boost::shared_ptr<ExportFormatBase> get_intersection (ExportFormatBase const & other) const;
-       boost::shared_ptr<ExportFormatBase> get_difference (ExportFormatBase const & other) const;
        boost::shared_ptr<ExportFormatBase> get_union (ExportFormatBase const & other) const;
 
        bool endiannesses_empty () const { return endiannesses.empty (); }
@@ -160,8 +163,10 @@ class ExportFormatBase {
        bool has_format (FormatId format) const { return format_ids.find (format) != format_ids.end(); }
        bool has_quality (Quality quality) const { return qualities.find (quality) != qualities.end(); }
 
-       void set_extension (Glib::ustring const & extension) { _extension = extension; }
-       Glib::ustring const & extension () const { return _extension; }
+       void set_extension (std::string const & extension) { _extension = extension; }
+       std::string const & extension () const { return _extension; }
+
+       static SampleRate nearest_sample_rate (framecnt_t sample_rate);
 
   protected:
 
@@ -182,11 +187,10 @@ class ExportFormatBase {
 
   private:
 
-       Glib::ustring  _extension;
+       std::string  _extension;
 
        enum SetOperation {
                SetUnion,
-               SetDifference,
                SetIntersection
        };