Add 24kHz as export rate, and limit opus to 8,24,48 per spec

This commit is contained in:
Robin Gareus 2022-12-06 05:34:52 +01:00
parent c8b39094ca
commit d2212cbfb9
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
6 changed files with 17 additions and 1 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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);

View File

@ -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))));

View File

@ -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;

View File

@ -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);