From d2212cbfb969f5963425fce13488a9778dd7019a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 6 Dec 2022 05:34:52 +0100 Subject: [PATCH] Add 24kHz as export rate, and limit opus to 8,24,48 per spec --- libs/ardour/ardour/export_format_base.h | 1 + libs/ardour/enums.cc | 1 + libs/ardour/export_format_base.cc | 1 + libs/ardour/export_format_manager.cc | 1 + libs/ardour/export_format_specification.cc | 3 +++ libs/ardour/export_formats.cc | 11 ++++++++++- 6 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/export_format_base.h b/libs/ardour/ardour/export_format_base.h index 54380c4859..f4537bd5f3 100644 --- a/libs/ardour/ardour/export_format_base.h +++ b/libs/ardour/ardour/export_format_base.h @@ -104,6 +104,7 @@ class LIBARDOUR_API ExportFormatBase { SR_Session = 1, SR_8 = 8000, SR_22_05 = 22050, + SR_24 = 24000, SR_44_1 = 44100, SR_48 = 48000, SR_88_2 = 88200, diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 7d56fbc3a3..2919932195 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -673,6 +673,7 @@ setup_enum_writer () REGISTER_CLASS_ENUM (ExportFormatBase, SR_Session); REGISTER_CLASS_ENUM (ExportFormatBase, SR_8); REGISTER_CLASS_ENUM (ExportFormatBase, SR_22_05); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_24); REGISTER_CLASS_ENUM (ExportFormatBase, SR_44_1); REGISTER_CLASS_ENUM (ExportFormatBase, SR_48); REGISTER_CLASS_ENUM (ExportFormatBase, SR_88_2); diff --git a/libs/ardour/export_format_base.cc b/libs/ardour/export_format_base.cc index 7487950467..23adbcc7a5 100644 --- a/libs/ardour/export_format_base.cc +++ b/libs/ardour/export_format_base.cc @@ -192,6 +192,7 @@ ExportFormatBase::nearest_sample_rate (samplecnt_t sample_rate) DO_SR_COMPARISON(SR_8); DO_SR_COMPARISON(SR_22_05); + DO_SR_COMPARISON(SR_24); DO_SR_COMPARISON(SR_44_1); DO_SR_COMPARISON(SR_48); DO_SR_COMPARISON(SR_88_2); diff --git a/libs/ardour/export_format_manager.cc b/libs/ardour/export_format_manager.cc index cc295f06c2..fa017887cf 100644 --- a/libs/ardour/export_format_manager.cc +++ b/libs/ardour/export_format_manager.cc @@ -237,6 +237,7 @@ ExportFormatManager::init_sample_rates () add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_Session, _("Session rate")))); add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_8, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(0), 8)))); add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_22_05, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(2), 22.05)))); + add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_24, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(0), 24)))); add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_44_1, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(1), 44.1)))); add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_48, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(0), 48)))); add_sample_rate (SampleRatePtr (new SampleRateState (ExportFormatBase::SR_88_2, string_compose ("%1%2%3 kHz", std::fixed, std::setprecision(1), 88.2)))); diff --git a/libs/ardour/export_format_specification.cc b/libs/ardour/export_format_specification.cc index 6d9f1c523e..03296cd563 100644 --- a/libs/ardour/export_format_specification.cc +++ b/libs/ardour/export_format_specification.cc @@ -667,6 +667,9 @@ ExportFormatSpecification::description (bool include_name) case SR_22_05: components.push_back ("22,5 kHz"); break; + case SR_24: + components.push_back ("24 kHz"); + break; case SR_44_1: components.push_back ("44,1 kHz"); break; diff --git a/libs/ardour/export_formats.cc b/libs/ardour/export_formats.cc index 1e9e22120b..42b495754c 100644 --- a/libs/ardour/export_formats.cc +++ b/libs/ardour/export_formats.cc @@ -200,6 +200,7 @@ ExportFormatLinear::ExportFormatLinear (string name, FormatId format_id) : add_sample_rate (SR_8); add_sample_rate (SR_22_05); + add_sample_rate (SR_24); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); @@ -272,6 +273,7 @@ ExportFormatOggVorbis::ExportFormatOggVorbis () sample_formats.insert (SF_Vorbis); add_sample_rate (SR_22_05); + add_sample_rate (SR_24); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); @@ -319,6 +321,7 @@ ExportFormatFLAC::ExportFormatFLAC () : set_format_id (F_FLAC); add_sample_rate (SR_22_05); + add_sample_rate (SR_24); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); @@ -354,6 +357,7 @@ ExportFormatBWF::ExportFormatBWF () : set_format_id (F_WAV); add_sample_rate (SR_22_05); + add_sample_rate (SR_24); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_88_2); @@ -390,7 +394,7 @@ ExportFormatOggOpus::ExportFormatOggOpus () { SF_INFO sf_info; sf_info.channels = 2; - sf_info.samplerate = SR_44_1; + sf_info.samplerate = SR_48; sf_info.format = F_Ogg | SF_Opus; if (sf_format_check (&sf_info) != SF_TRUE) { throw ExportFormatIncompatible(); @@ -400,6 +404,10 @@ ExportFormatOggOpus::ExportFormatOggOpus () set_format_id (F_Ogg); sample_formats.insert (SF_Opus); + add_sample_rate (SR_8); + add_sample_rate (SR_24); + add_sample_rate (SR_48); + /* libsndfile doesn't expose direct quality control, * bitrate = (((1.0 - quality) * (250000.0)) + 6000.0) */ @@ -472,6 +480,7 @@ ExportFormatFFMPEG::ExportFormatFFMPEG (std::string const& name, std::string con add_sample_rate (SR_8); add_sample_rate (SR_22_05); + add_sample_rate (SR_24); add_sample_rate (SR_44_1); add_sample_rate (SR_48); add_sample_rate (SR_Session);