Commit ca0d09c5 authored by Max Kellermann's avatar Max Kellermann

EncoderPlugin: pass config_param reference

parent 81c32240
......@@ -49,7 +49,7 @@ struct Encoder {
struct EncoderPlugin {
const char *name;
Encoder *(*init)(const struct config_param *param,
Encoder *(*init)(const config_param &param,
GError **error);
void (*finish)(Encoder *encoder);
......@@ -87,7 +87,7 @@ struct EncoderPlugin {
* @return an encoder object on success, NULL on failure
*/
static inline Encoder *
encoder_init(const EncoderPlugin &plugin, const config_param *param,
encoder_init(const EncoderPlugin &plugin, const config_param &param,
GError **error_r)
{
return plugin.init(param, error_r);
......
......@@ -63,17 +63,16 @@ flac_encoder_quark(void)
}
static bool
flac_encoder_configure(struct flac_encoder *encoder,
const struct config_param *param, G_GNUC_UNUSED GError **error)
flac_encoder_configure(struct flac_encoder *encoder, const config_param &param,
gcc_unused GError **error)
{
encoder->compression = config_get_block_unsigned(param,
"compression", 5);
encoder->compression = param.GetBlockValue("compression", 5u);
return true;
}
static Encoder *
flac_encoder_init(const struct config_param *param, GError **error)
flac_encoder_init(const config_param &param, GError **error)
{
flac_encoder *encoder = new flac_encoder();
......
......@@ -43,7 +43,7 @@ struct LameEncoder final {
LameEncoder():encoder(lame_encoder_plugin) {}
bool Configure(const config_param *param, GError **error);
bool Configure(const config_param &param, GError **error);
};
static inline GQuark
......@@ -53,12 +53,12 @@ lame_encoder_quark(void)
}
bool
LameEncoder::Configure(const config_param *param, GError **error)
LameEncoder::Configure(const config_param &param, GError **error)
{
const char *value;
char *endptr;
value = config_get_block_string(param, "quality", nullptr);
value = param.GetBlockValue("quality");
if (value != nullptr) {
/* a quality was configured (VBR) */
......@@ -68,26 +68,26 @@ LameEncoder::Configure(const config_param *param, GError **error)
g_set_error(error, lame_encoder_quark(), 0,
"quality \"%s\" is not a number in the "
"range -1 to 10, line %i",
value, param->line);
value, param.line);
return false;
}
if (config_get_block_string(param, "bitrate", nullptr) != nullptr) {
if (param.GetBlockValue("bitrate") != nullptr) {
g_set_error(error, lame_encoder_quark(), 0,
"quality and bitrate are "
"both defined (line %i)",
param->line);
param.line);
return false;
}
} else {
/* a bit rate was configured */
value = config_get_block_string(param, "bitrate", nullptr);
value = param.GetBlockValue("bitrate");
if (value == nullptr) {
g_set_error(error, lame_encoder_quark(), 0,
"neither bitrate nor quality defined "
"at line %i",
param->line);
param.line);
return false;
}
......@@ -97,7 +97,7 @@ LameEncoder::Configure(const config_param *param, GError **error)
if (*endptr != '\0' || bitrate <= 0) {
g_set_error(error, lame_encoder_quark(), 0,
"bitrate at line %i should be a positive integer",
param->line);
param.line);
return false;
}
}
......@@ -106,7 +106,7 @@ LameEncoder::Configure(const config_param *param, GError **error)
}
static Encoder *
lame_encoder_init(const struct config_param *param, GError **error_r)
lame_encoder_init(const config_param &param, GError **error_r)
{
LameEncoder *encoder = new LameEncoder();
......
......@@ -40,7 +40,7 @@ struct NullEncoder final {
};
static Encoder *
null_encoder_init(gcc_unused const struct config_param *param,
null_encoder_init(gcc_unused const config_param &param,
gcc_unused GError **error)
{
NullEncoder *encoder = new NullEncoder();
......
......@@ -75,9 +75,9 @@ opus_encoder_quark(void)
static bool
opus_encoder_configure(struct opus_encoder *encoder,
const struct config_param *param, GError **error_r)
const config_param &param, GError **error_r)
{
const char *value = config_get_block_string(param, "bitrate", "auto");
const char *value = param.GetBlockValue("bitrate", "auto");
if (strcmp(value, "auto") == 0)
encoder->bitrate = OPUS_AUTO;
else if (strcmp(value, "max") == 0)
......@@ -93,15 +93,14 @@ opus_encoder_configure(struct opus_encoder *encoder,
}
}
encoder->complexity = config_get_block_unsigned(param, "complexity",
10);
encoder->complexity = param.GetBlockValue("complexity", 10u);
if (encoder->complexity > 10) {
g_set_error(error_r, opus_encoder_quark(), 0,
"Invalid complexity");
return false;
}
value = config_get_block_string(param, "signal", "auto");
value = param.GetBlockValue("signal", "auto");
if (strcmp(value, "auto") == 0)
encoder->signal = OPUS_AUTO;
else if (strcmp(value, "voice") == 0)
......@@ -118,7 +117,7 @@ opus_encoder_configure(struct opus_encoder *encoder,
}
static Encoder *
opus_encoder_init(const struct config_param *param, GError **error)
opus_encoder_init(const config_param &param, GError **error)
{
opus_encoder *encoder = new opus_encoder();
......
......@@ -48,7 +48,7 @@ struct TwolameEncoder final {
TwolameEncoder():encoder(twolame_encoder_plugin) {}
bool Configure(const config_param *param, GError **error);
bool Configure(const config_param &param, GError **error);
};
static inline GQuark
......@@ -58,12 +58,12 @@ twolame_encoder_quark(void)
}
bool
TwolameEncoder::Configure(const config_param *param, GError **error)
TwolameEncoder::Configure(const config_param &param, GError **error)
{
const char *value;
char *endptr;
value = config_get_block_string(param, "quality", nullptr);
value = param.GetBlockValue("quality");
if (value != nullptr) {
/* a quality was configured (VBR) */
......@@ -73,26 +73,26 @@ TwolameEncoder::Configure(const config_param *param, GError **error)
g_set_error(error, twolame_encoder_quark(), 0,
"quality \"%s\" is not a number in the "
"range -1 to 10, line %i",
value, param->line);
value, param.line);
return false;
}
if (config_get_block_string(param, "bitrate", nullptr) != nullptr) {
if (param.GetBlockValue("bitrate") != nullptr) {
g_set_error(error, twolame_encoder_quark(), 0,
"quality and bitrate are "
"both defined (line %i)",
param->line);
param.line);
return false;
}
} else {
/* a bit rate was configured */
value = config_get_block_string(param, "bitrate", nullptr);
value = param.GetBlockValue("bitrate");
if (value == nullptr) {
g_set_error(error, twolame_encoder_quark(), 0,
"neither bitrate nor quality defined "
"at line %i",
param->line);
param.line);
return false;
}
......@@ -102,7 +102,7 @@ TwolameEncoder::Configure(const config_param *param, GError **error)
if (*endptr != '\0' || bitrate <= 0) {
g_set_error(error, twolame_encoder_quark(), 0,
"bitrate at line %i should be a positive integer",
param->line);
param.line);
return false;
}
}
......@@ -111,7 +111,7 @@ TwolameEncoder::Configure(const config_param *param, GError **error)
}
static Encoder *
twolame_encoder_init(const struct config_param *param, GError **error_r)
twolame_encoder_init(const config_param &param, GError **error_r)
{
g_debug("libtwolame version %s", get_twolame_version());
......
......@@ -62,9 +62,9 @@ vorbis_encoder_quark(void)
static bool
vorbis_encoder_configure(struct vorbis_encoder *encoder,
const struct config_param *param, GError **error)
const config_param &param, GError **error)
{
const char *value = config_get_block_string(param, "quality", nullptr);
const char *value = param.GetBlockValue("quality");
if (value != nullptr) {
/* a quality was configured (VBR) */
......@@ -76,26 +76,26 @@ vorbis_encoder_configure(struct vorbis_encoder *encoder,
g_set_error(error, vorbis_encoder_quark(), 0,
"quality \"%s\" is not a number in the "
"range -1 to 10, line %i",
value, param->line);
value, param.line);
return false;
}
if (config_get_block_string(param, "bitrate", nullptr) != nullptr) {
if (param.GetBlockValue("bitrate") != nullptr) {
g_set_error(error, vorbis_encoder_quark(), 0,
"quality and bitrate are "
"both defined (line %i)",
param->line);
param.line);
return false;
}
} else {
/* a bit rate was configured */
value = config_get_block_string(param, "bitrate", nullptr);
value = param.GetBlockValue("bitrate");
if (value == nullptr) {
g_set_error(error, vorbis_encoder_quark(), 0,
"neither bitrate nor quality defined "
"at line %i",
param->line);
param.line);
return false;
}
......@@ -106,7 +106,7 @@ vorbis_encoder_configure(struct vorbis_encoder *encoder,
if (*endptr != '\0' || encoder->bitrate <= 0) {
g_set_error(error, vorbis_encoder_quark(), 0,
"bitrate at line %i should be a positive integer",
param->line);
param.line);
return false;
}
}
......@@ -115,7 +115,7 @@ vorbis_encoder_configure(struct vorbis_encoder *encoder,
}
static Encoder *
vorbis_encoder_init(const struct config_param *param, GError **error)
vorbis_encoder_init(const config_param &param, GError **error)
{
vorbis_encoder *encoder = new vorbis_encoder();
......
......@@ -83,7 +83,7 @@ fill_wave_header(struct wave_header *header, int channels, int bits,
}
static Encoder *
wave_encoder_init(gcc_unused const struct config_param *param,
wave_encoder_init(gcc_unused const config_param &param,
gcc_unused GError **error)
{
WaveEncoder *encoder = new WaveEncoder();
......
......@@ -123,7 +123,7 @@ HttpdOutput::Configure(const config_param &param, GError **error_r)
/* initialize encoder */
encoder = encoder_init(*encoder_plugin, &param, error_r);
encoder = encoder_init(*encoder_plugin, param, error_r);
if (encoder == nullptr)
return false;
......
......@@ -108,7 +108,7 @@ RecorderOutput::Configure(const config_param &param, GError **error_r)
/* initialize encoder */
encoder = encoder_init(*encoder_plugin, &param, error_r);
encoder = encoder_init(*encoder_plugin, param, error_r);
if (encoder == nullptr)
return false;
......
......@@ -185,7 +185,7 @@ ShoutOutput::Configure(const config_param &param, GError **error_r)
return false;
}
encoder = encoder_init(*encoder_plugin, &param, error_r);
encoder = encoder_init(*encoder_plugin, param, error_r);
if (encoder == nullptr)
return false;
......
......@@ -71,7 +71,7 @@ int main(int argc, char **argv)
config_param param;
param.AddBlockParam("quality", "5.0", -1);
const auto encoder = encoder_init(*plugin, &param, &error);
const auto encoder = encoder_init(*plugin, param, &error);
if (encoder == NULL) {
g_printerr("Failed to initialize encoder: %s\n",
error->message);
......
......@@ -56,7 +56,7 @@ main(G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv)
config_param param;
param.AddBlockParam("quality", "5.0", -1);
const auto encoder = encoder_init(*plugin, &param, NULL);
const auto encoder = encoder_init(*plugin, param, NULL);
assert(encoder != NULL);
/* open the encoder */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment