X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_formats.cc;h=642f05a2280a2f20e63ad75ab8d9d500b97ed069;hb=d7a16786fc2bfa79d33dac676013fb34132d6fba;hp=f3c8f7197c31e0c4c225c48496af94f32a103f00;hpb=6b50ba341da426805ce3c92609c0fa12c52b67ac;p=ardour.git diff --git a/libs/ardour/export_formats.cc b/libs/ardour/export_formats.cc index f3c8f7197c..642f05a228 100644 --- a/libs/ardour/export_formats.cc +++ b/libs/ardour/export_formats.cc @@ -18,9 +18,11 @@ */ -#include +#include "ardour/export_formats.h" -#include "i18n.h" +#include "pbd/i18n.h" + +using namespace std; namespace ARDOUR { @@ -43,7 +45,7 @@ HasSampleFormat::HasSampleFormat (ExportFormatBase::SampleFormatSet & sample_for _sample_formats (sample_formats) { /* Dither Types */ - + add_dither_type (ExportFormatBase::D_Shaped, _("Shaped Noise")); add_dither_type (ExportFormatBase::D_Tri, _("Triangular")); add_dither_type (ExportFormatBase::D_Rect, _("Rectangular")); @@ -54,22 +56,28 @@ void HasSampleFormat::add_sample_format (ExportFormatBase::SampleFormat format) { _sample_formats.insert (format); - + SampleFormatPtr ptr (new SampleFormatState (format, get_sample_format_name (format))); sample_format_states.push_back (ptr); - ptr->SelectChanged.connect (sigc::bind (SampleFormatSelectChanged.make_slot(), WeakSampleFormatPtr (ptr))); - ptr->SelectChanged.connect (sigc::mem_fun (*this, &HasSampleFormat::update_sample_format_selection)); - ptr->CompatibleChanged.connect (sigc::bind (SampleFormatCompatibleChanged.make_slot(), WeakSampleFormatPtr (ptr))); + ptr->SelectChanged.connect_same_thread (*this, boost::bind (&HasSampleFormat::update_sample_format_selection, this, _1)); + // BOOST SIGNALS Could this be made any uglier? + ptr->SelectChanged.connect_same_thread (*this, + boost::bind (boost::type (), boost::ref (SampleFormatSelectChanged), _1, WeakSampleFormatPtr (ptr))); + ptr->CompatibleChanged.connect_same_thread (*this, + boost::bind (boost::type (), boost::ref (SampleFormatCompatibleChanged), _1, WeakSampleFormatPtr (ptr))); } void -HasSampleFormat::add_dither_type (ExportFormatBase::DitherType type, Glib::ustring name) +HasSampleFormat::add_dither_type (ExportFormatBase::DitherType type, string name) { DitherTypePtr ptr (new DitherTypeState (type, name)); dither_type_states.push_back (ptr); - ptr->SelectChanged.connect (sigc::bind (DitherTypeSelectChanged.make_slot(), WeakDitherTypePtr (ptr))); - ptr->SelectChanged.connect (sigc::mem_fun (*this, &HasSampleFormat::update_dither_type_selection)); - ptr->CompatibleChanged.connect (sigc::bind (DitherTypeCompatibleChanged.make_slot(), WeakDitherTypePtr (ptr))); + ptr->SelectChanged.connect_same_thread (*this, boost::bind (&HasSampleFormat::update_dither_type_selection, this, _1)); + // BOOST SIGNALS Could this be made any uglier? + ptr->SelectChanged.connect_same_thread (*this, + boost::bind (boost::type (), boost::ref (DitherTypeSelectChanged), _1, WeakDitherTypePtr (ptr))); + ptr->CompatibleChanged.connect_same_thread (*this, + boost::bind (boost::type (),boost::ref ( DitherTypeCompatibleChanged), _1, WeakDitherTypePtr (ptr))); } HasSampleFormat::SampleFormatPtr @@ -80,7 +88,7 @@ HasSampleFormat::get_selected_sample_format () return *it; } } - + return SampleFormatPtr(); } @@ -92,7 +100,7 @@ HasSampleFormat::get_selected_dither_type () return *it; } } - + return DitherTypePtr(); } @@ -103,7 +111,7 @@ HasSampleFormat::update_sample_format_selection (bool) if (!format) { return; } - + if (format->format == ExportFormatBase::SF_24 || format->format == ExportFormatBase::SF_32 || format->format == ExportFormatBase::SF_Float || @@ -130,13 +138,13 @@ HasSampleFormat::update_dither_type_selection (bool) if (!type) { return; } - + if (!type->compatible()) { SampleFormatPtr format = get_selected_sample_format(); if (format) { format->set_selected (false); } - + for (DitherTypeList::iterator it = dither_type_states.begin(); it != dither_type_states.end(); ++it) { (*it)->set_compatible (true); } @@ -148,19 +156,19 @@ HasSampleFormat::get_sample_format_name (ExportFormatBase::SampleFormat format) { switch (format) { case ExportFormatBase::SF_8: - return _("8bit"); + return _("8-bit"); case ExportFormatBase::SF_16: - return _("16bit"); + return _("16-bit"); case ExportFormatBase::SF_24: - return _("24bit"); + return _("24-bit"); case ExportFormatBase::SF_32: - return _("32bit"); + return _("32-bit"); case ExportFormatBase::SF_Float: return _("float"); case ExportFormatBase::SF_Double: return _("double"); case ExportFormatBase::SF_U8: - return _("8bit unsigned"); + return _("8-bit unsigned"); case ExportFormatBase::SF_Vorbis: return _("Vorbis sample format"); case ExportFormatBase::SF_None: @@ -171,22 +179,24 @@ HasSampleFormat::get_sample_format_name (ExportFormatBase::SampleFormat format) /*** Linear ***/ -ExportFormatLinear::ExportFormatLinear (Glib::ustring name, FormatId format_id) : +ExportFormatLinear::ExportFormatLinear (string name, FormatId format_id) : HasSampleFormat (sample_formats), _default_sample_format (SF_None) { set_name (name); set_format_id (format_id); - + + add_sample_rate (SR_8); add_sample_rate (SR_22_05); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); add_sample_rate (SR_192); - + add_sample_rate (SR_Session); + add_endianness (E_FileDefault); - + set_quality (Q_LosslessLinear); } @@ -200,29 +210,29 @@ ExportFormatLinear::set_compatibility_state (ExportFormatCompatibility const & c if (!compatibility.has_quality (Q_LosslessLinear)) { compatible = false; } - + if (!compatibility.has_format (get_format_id())) { compatible = false; } boost::shared_ptr intersection = get_intersection (compatibility); - + if (intersection->endiannesses_empty()) { compatible = false; } - + if (intersection->sample_rates_empty()) { compatible = false; } - + if (intersection->sample_formats_empty()) { compatible = false; } - + set_compatible (compatible); /* Sample Formats */ - + for (SampleFormatList::iterator it = sample_format_states.begin(); it != sample_format_states.end(); ++it) { (*it)->set_compatible (compatibility.has_sample_format ((*it)->format)); } @@ -234,34 +244,34 @@ ExportFormatLinear::set_compatibility_state (ExportFormatCompatibility const & c ExportFormatOggVorbis::ExportFormatOggVorbis () { + /* Check system compatibility */ + + SF_INFO sf_info; + sf_info.channels = 2; + sf_info.samplerate = SR_44_1; + sf_info.format = F_Ogg | SF_Vorbis; + if (sf_format_check (&sf_info) != SF_TRUE) { + throw ExportFormatIncompatible(); + } + set_name ("Ogg Vorbis"); set_format_id (F_Ogg); sample_formats.insert (SF_Vorbis); - + add_sample_rate (SR_22_05); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); add_sample_rate (SR_192); - + add_sample_rate (SR_Session); + add_endianness (E_FileDefault); - + set_extension ("ogg"); set_quality (Q_LossyCompression); } -bool -ExportFormatOggVorbis::check_system_compatibility () -{ - SF_INFO sf_info; - sf_info.channels = 2; - sf_info.samplerate = SR_44_1; - sf_info.format = F_Ogg | SF_Vorbis; - - return (sf_format_check (&sf_info) == SF_TRUE ? true : false); -} - bool ExportFormatOggVorbis::set_compatibility_state (ExportFormatCompatibility const & compatibility) { @@ -275,37 +285,37 @@ ExportFormatOggVorbis::set_compatibility_state (ExportFormatCompatibility const ExportFormatFLAC::ExportFormatFLAC () : HasSampleFormat (sample_formats) { + /* Check system compatibility */ + + SF_INFO sf_info; + sf_info.channels = 2; + sf_info.samplerate = SR_44_1; + sf_info.format = F_FLAC | SF_16; + if (sf_format_check (&sf_info) != SF_TRUE) { + throw ExportFormatIncompatible(); + } + set_name ("FLAC"); set_format_id (F_FLAC); - + add_sample_rate (SR_22_05); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); add_sample_rate (SR_192); - + add_sample_rate (SR_Session); + add_sample_format (SF_8); add_sample_format (SF_16); add_sample_format (SF_24); - + add_endianness (E_FileDefault); - + set_extension ("flac"); set_quality (Q_LosslessCompression); } -bool -ExportFormatFLAC::check_system_compatibility () -{ - SF_INFO sf_info; - sf_info.channels = 2; - sf_info.samplerate = SR_44_1; - sf_info.format = F_FLAC | SF_16; - - return (sf_format_check (&sf_info) == SF_TRUE ? true : false); -} - bool ExportFormatFLAC::set_compatibility_state (ExportFormatCompatibility const & compatibility) { @@ -321,13 +331,14 @@ ExportFormatBWF::ExportFormatBWF () : { set_name ("BWF"); set_format_id (F_WAV); - + add_sample_rate (SR_22_05); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); add_sample_rate (SR_192); + add_sample_rate (SR_Session); add_sample_format (SF_U8); add_sample_format (SF_16); @@ -335,9 +346,9 @@ ExportFormatBWF::ExportFormatBWF () : add_sample_format (SF_32); add_sample_format (SF_Float); add_sample_format (SF_Double); - + add_endianness (E_FileDefault); - + set_extension ("wav"); set_quality (Q_LosslessLinear); }