X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_formats.cc;h=b6c090652c9c1ebce974416041ef360121df6b32;hb=391cb44dc6d4cf76e33db33229b762758182f00e;hp=642f05a2280a2f20e63ad75ab8d9d500b97ed069;hpb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;p=ardour.git diff --git a/libs/ardour/export_formats.cc b/libs/ardour/export_formats.cc index 642f05a228..b6c090652c 100644 --- a/libs/ardour/export_formats.cc +++ b/libs/ardour/export_formats.cc @@ -33,6 +33,13 @@ ExportFormat::has_sample_format () return dynamic_cast (this); } +bool +ExportFormat::has_codec_quality () +{ + return dynamic_cast (this); +} + + bool ExportFormat::sample_format_is_compatible (SampleFormat format) const { @@ -192,6 +199,7 @@ ExportFormatLinear::ExportFormatLinear (string name, FormatId format_id) : add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); + add_sample_rate (SR_176_4); add_sample_rate (SR_192); add_sample_rate (SR_Session); @@ -263,9 +271,16 @@ ExportFormatOggVorbis::ExportFormatOggVorbis () add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); + add_sample_rate (SR_176_4); add_sample_rate (SR_192); add_sample_rate (SR_Session); + /* these are 100 vorbis_encode_init_vbr() quality */ + add_codec_quality ("Low (0)", 0); + add_codec_quality ("Default (4)", 40); + add_codec_quality ("High (6)", 60); + add_codec_quality ("Very High (10)", 100); + add_endianness (E_FileDefault); set_extension ("ogg"); @@ -303,6 +318,7 @@ ExportFormatFLAC::ExportFormatFLAC () : add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); + add_sample_rate (SR_176_4); add_sample_rate (SR_192); add_sample_rate (SR_Session); @@ -337,6 +353,7 @@ ExportFormatBWF::ExportFormatBWF () : add_sample_rate (SR_48); add_sample_rate (SR_88_2); add_sample_rate (SR_96); + add_sample_rate (SR_176_4); add_sample_rate (SR_192); add_sample_rate (SR_Session); @@ -361,4 +378,54 @@ ExportFormatBWF::set_compatibility_state (ExportFormatCompatibility const & comp return compatible; } + +/*** FFMPEG Pipe ***/ + +ExportFormatFFMPEG::ExportFormatFFMPEG (std::string const& name, std::string const& ext) +{ + set_name (name); + set_format_id (F_FFMPEG); + sample_formats.insert (SF_Float); + + 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_Session); + + add_endianness (E_Little); + + add_codec_quality ("VBR 220-260 kb/s", 0); + add_codec_quality ("VBR 190-250 kb/s", -1); + add_codec_quality ("VBR 170-210 kb/s", -2); + add_codec_quality ("VBR 150-195 kb/s", -3); + add_codec_quality ("VBR 140-185 kb/s", -4); + add_codec_quality ("VBR 120-150 kb/s", -5); + add_codec_quality ("VBR 100-130 kb/s", -6); + add_codec_quality ("VBR 80-120 kb/s", -7); + add_codec_quality ("VBR 70-105 kb/s", -8); + add_codec_quality ("VBR 45-85 kb/s", -9); + /* Available CBR options are: + * 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + */ + add_codec_quality ("CBR 64 kb/s", 64); + add_codec_quality ("CBR 128 kb/s", 128); + add_codec_quality ("CBR 160 kb/s", 160); + add_codec_quality ("CBR 192 kb/s", 192); + add_codec_quality ("CBR 256 kb/s", 256); + add_codec_quality ("CBR 320 kb/s", 320); + + set_extension (ext); + set_quality (Q_LossyCompression); +} + +bool +ExportFormatFFMPEG::set_compatibility_state (ExportFormatCompatibility const & compatibility) +{ + bool compatible = compatibility.has_format (F_FFMPEG); + set_compatible (compatible); + return compatible; +} + + }; // namespace ARDOUR