pcm/Convert: add option to enable the integer-only dsd2pcm implementation
This commit is contained in:
@@ -79,6 +79,7 @@ enum class ConfigOption {
|
||||
DESPOTIFY_USER,
|
||||
DESPOTIFY_PASSWORD,
|
||||
DESPOTIFY_HIGH_BITRATE,
|
||||
DSD2PCM_CONVERTER,
|
||||
MAX
|
||||
};
|
||||
|
||||
|
@@ -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 =
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user