pcm/Convert: add option to enable the integer-only dsd2pcm implementation

This commit is contained in:
Max Kellermann
2020-01-17 16:37:09 +01:00
parent 925b5954c3
commit c84bae739a
5 changed files with 42 additions and 0 deletions

View File

@@ -79,6 +79,7 @@ enum class ConfigOption {
DESPOTIFY_USER,
DESPOTIFY_PASSWORD,
DESPOTIFY_HIGH_BITRATE,
DSD2PCM_CONVERTER,
MAX
};

View File

@@ -75,6 +75,7 @@ const ConfigTemplate config_param_templates[] = {
{ "despotify_user", false, true },
{ "despotify_password", false, true },
{ "despotify_high_bitrate", false, true },
{ "dsd2pcm_converter" },
};
static constexpr unsigned n_config_param_templates =

View File

@@ -19,16 +19,35 @@
#include "Convert.hxx"
#include "ConfiguredResampler.hxx"
#include "config/Data.hxx"
#include "util/ConstBuffer.hxx"
#include "util/StringAPI.hxx"
#include <stdexcept>
#include <assert.h>
#ifdef ENABLE_DSD
static bool dsd2pcm_integer = false;
#endif
void
pcm_convert_global_init(const ConfigData &config)
{
pcm_resampler_global_init(config);
#ifdef ENABLE_DSD
dsd2pcm_integer = config.With(ConfigOption::DSD2PCM_CONVERTER, [](const char *s){
if (s == nullptr)
return false;
else if (StringIsEqual(s, "float"))
return false;
else if (StringIsEqual(s, "integer"))
return true;
else
throw std::runtime_error("Unrecognized value");
});
#endif
}
PcmConvert::PcmConvert(const AudioFormat _src_format,