mod_shout: Rework our_mpg123_new() to handle error cases correctly and to clean up the code

Keeping parameter handling quirks for backwards compatibility reasons.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
This commit is contained in:
Stefan Knoblich 2013-07-11 03:12:25 +02:00
parent 0e2a590afa
commit e20fbadc12
1 changed files with 26 additions and 35 deletions

View File

@ -60,52 +60,43 @@ static struct {
mpg123_handle *our_mpg123_new(const char *decoder, int *error) mpg123_handle *our_mpg123_new(const char *decoder, int *error)
{ {
mpg123_handle *mh;
const char *arch = "auto"; const char *arch = "auto";
const char *err = NULL;
mpg123_handle *mh;
int x64 = 0; int x64 = 0;
int rc = 0; int rc = 0;
const char *err = NULL;
if (*globals.decoder || globals.outscale || globals.vol) {
if (*globals.decoder) { if (*globals.decoder) {
arch = globals.decoder; arch = globals.decoder;
} }
if ((mh = mpg123_new(arch, &rc))) { #ifndef WIN32
if (rc) { else if (sizeof(void *) == 4) {
err = mpg123_plain_strerror(rc); arch = "i586";
} else {
x64 = 1;
} }
#else
x64 = 1;
#endif
mh = mpg123_new(arch, &rc);
if (!mh) {
err = mpg123_plain_strerror(rc);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error allocating mpg123 handle! %s\n", switch_str_nil(err));
return NULL;
}
/* NOTE: keeping the globals.decoder check here for behaviour backwards compat - stkn */
if (*globals.decoder || globals.outscale || globals.vol) {
if (globals.outscale) { if (globals.outscale) {
mpg123_param(mh, MPG123_OUTSCALE, globals.outscale, 0); mpg123_param(mh, MPG123_OUTSCALE, globals.outscale, 0);
} }
if (globals.vol) { if (globals.vol) {
mpg123_volume(mh, globals.vol); mpg123_volume(mh, globals.vol);
} }
} } else if (x64) {
} else {
#ifdef WIN32
x64++;
#else
if (sizeof(void *) == 4) {
arch = "i586";
} else {
x64++;
}
#endif
if ((mh = mpg123_new(arch, &rc))) {
if (rc) {
err = mpg123_plain_strerror(rc);
}
if (x64) {
mpg123_param(mh, MPG123_OUTSCALE, 8192, 0); mpg123_param(mh, MPG123_OUTSCALE, 8192, 0);
} }
}
}
if (err) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error allocating mpg123 handle! %s\n", err);
}
return mh; return mh;
} }