decoder: return void from decode() methods
The stream_decode() and file_decode() methods returned a boolean, indicating whether they were able to decode the song. This is redundant, since we already know that: if decoder_initialized() has been called (and dc.state==DECODE), the plugin succeeded. Change both methods to return void.
This commit is contained in:
parent
05e69ac086
commit
9eed41911f
|
@ -301,7 +301,7 @@ static int getAacTotalTime(const char *file)
|
|||
return file_time;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
aac_stream_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
||||
{
|
||||
float file_time;
|
||||
|
@ -354,7 +354,7 @@ aac_stream_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
|||
faacDecClose(decoder);
|
||||
if (b.buffer)
|
||||
free(b.buffer);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 16;
|
||||
|
@ -419,15 +419,10 @@ aac_stream_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
|||
faacDecClose(decoder);
|
||||
if (b.buffer)
|
||||
free(b.buffer);
|
||||
|
||||
if (!initialized)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
static bool
|
||||
static void
|
||||
aac_decode(struct decoder *mpd_decoder, const char *path)
|
||||
{
|
||||
float file_time;
|
||||
|
@ -451,10 +446,10 @@ aac_decode(struct decoder *mpd_decoder, const char *path)
|
|||
bool initialized = false;
|
||||
|
||||
if ((totalTime = getAacFloatTotalTime(path)) < 0)
|
||||
return false;
|
||||
return;
|
||||
|
||||
if (!input_stream_open(&inStream, path))
|
||||
return false;
|
||||
return;
|
||||
|
||||
initAacBuffer(&b, mpd_decoder, &inStream);
|
||||
aac_parse_header(&b, NULL);
|
||||
|
@ -484,7 +479,7 @@ aac_decode(struct decoder *mpd_decoder, const char *path)
|
|||
faacDecClose(decoder);
|
||||
if (b.buffer)
|
||||
free(b.buffer);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 16;
|
||||
|
@ -547,11 +542,6 @@ aac_decode(struct decoder *mpd_decoder, const char *path)
|
|||
faacDecClose(decoder);
|
||||
if (b.buffer)
|
||||
free(b.buffer);
|
||||
|
||||
if (!initialized)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *aacTagDup(const char *file)
|
||||
|
|
|
@ -41,7 +41,7 @@ static int getAudiofileTotalTime(const char *file)
|
|||
return total_time;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
audiofile_decode(struct decoder *decoder, const char *path)
|
||||
{
|
||||
int fs, frame_count;
|
||||
|
@ -56,13 +56,13 @@ audiofile_decode(struct decoder *decoder, const char *path)
|
|||
|
||||
if (stat(path, &st) < 0) {
|
||||
ERROR("failed to stat: %s\n", path);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
af_fp = afOpenFile(path, "r", NULL);
|
||||
if (af_fp == AF_NULL_FILEHANDLE) {
|
||||
ERROR("failed to open: %s\n", path);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
afSetVirtualSampleFormat(af_fp, AF_DEFAULT_TRACK,
|
||||
|
@ -84,7 +84,7 @@ audiofile_decode(struct decoder *decoder, const char *path)
|
|||
ERROR("Only 8 and 16-bit files are supported. %s is %i-bit\n",
|
||||
path, audio_format.bits);
|
||||
afCloseFile(af_fp);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
fs = (int)afGetVirtualFrameSize(af_fp, AF_DEFAULT_TRACK, 1);
|
||||
|
@ -112,7 +112,6 @@ audiofile_decode(struct decoder *decoder, const char *path)
|
|||
} while (decoder_get_command(decoder) != DECODE_COMMAND_STOP);
|
||||
|
||||
afCloseFile(af_fp);
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *audiofileTagDup(const char *file)
|
||||
|
|
|
@ -281,7 +281,7 @@ ffmpeg_decode_internal(struct ffmpeg_context *ctx)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
ffmpeg_decode(struct decoder *decoder, struct input_stream *input)
|
||||
{
|
||||
struct ffmpeg_context ctx;
|
||||
|
@ -289,7 +289,7 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input)
|
|||
ctx.input = input;
|
||||
ctx.decoder = decoder;
|
||||
|
||||
return ffmpeg_helper(input, ffmpeg_decode_internal, &ctx);
|
||||
ffmpeg_helper(input, ffmpeg_decode_internal, &ctx);
|
||||
}
|
||||
|
||||
static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx)
|
||||
|
|
|
@ -301,7 +301,7 @@ static struct tag *flacTagDup(const char *file)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
flac_decode_internal(struct decoder * decoder, struct input_stream *inStream,
|
||||
bool is_ogg)
|
||||
{
|
||||
|
@ -310,7 +310,7 @@ flac_decode_internal(struct decoder * decoder, struct input_stream *inStream,
|
|||
const char *err = NULL;
|
||||
|
||||
if (!(flacDec = flac_new()))
|
||||
return false;
|
||||
return;
|
||||
init_FlacData(&data, decoder, inStream);
|
||||
|
||||
#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
|
||||
|
@ -375,15 +375,15 @@ fail:
|
|||
|
||||
if (err) {
|
||||
ERROR("flac %s\n", err);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
flac_decode(struct decoder * decoder, struct input_stream *inStream)
|
||||
{
|
||||
return flac_decode_internal(decoder, inStream, false);
|
||||
flac_decode_internal(decoder, inStream, false);
|
||||
}
|
||||
|
||||
#ifndef HAVE_OGGFLAC
|
||||
|
@ -431,17 +431,17 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
oggflac_decode(struct decoder *decoder, struct input_stream *inStream)
|
||||
{
|
||||
if (ogg_stream_type_detect(inStream) != FLAC)
|
||||
return false;
|
||||
return;
|
||||
|
||||
/* rewind the stream, because ogg_stream_type_detect() has
|
||||
moved it */
|
||||
input_stream_seek(inStream, 0, SEEK_SET);
|
||||
|
||||
return flac_decode_internal(decoder, inStream, true);
|
||||
flac_decode_internal(decoder, inStream, true);
|
||||
}
|
||||
|
||||
static const char *const oggflac_suffixes[] = { "ogg", "oga", NULL };
|
||||
|
|
|
@ -160,7 +160,7 @@ static void mod_close(mod_Data * data)
|
|||
free(data);
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
mod_decode(struct decoder *decoder, const char *path)
|
||||
{
|
||||
mod_Data *data;
|
||||
|
@ -173,7 +173,7 @@ mod_decode(struct decoder *decoder, const char *path)
|
|||
if (!(data = mod_open(path))) {
|
||||
ERROR("failed to open mod: %s\n", path);
|
||||
MikMod_Exit();
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 16;
|
||||
|
@ -197,8 +197,6 @@ mod_decode(struct decoder *decoder, const char *path)
|
|||
mod_close(data);
|
||||
|
||||
MikMod_Exit();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *modTagDup(const char *file)
|
||||
|
|
|
@ -1050,7 +1050,7 @@ static void mp3_audio_format(struct mp3_data *data, struct audio_format *af)
|
|||
af->channels = MAD_NCHANNELS(&(data->frame).header);
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
||||
{
|
||||
struct mp3_data data;
|
||||
|
@ -1059,12 +1059,10 @@ mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
|||
struct audio_format audio_format;
|
||||
|
||||
if (!mp3_open(input_stream, &data, decoder, &tag, &replay_gain_info)) {
|
||||
if (decoder_get_command(decoder) == DECODE_COMMAND_NONE) {
|
||||
if (decoder_get_command(decoder) == DECODE_COMMAND_NONE)
|
||||
ERROR
|
||||
("Input does not appear to be a mp3 bit stream.\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
mp3_audio_format(&data, &audio_format);
|
||||
|
@ -1087,7 +1085,6 @@ mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
|||
decoder_command_finished(decoder);
|
||||
|
||||
mp3_data_finish(&data);
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *mp3_tag_dup(const char *file)
|
||||
|
|
|
@ -90,7 +90,7 @@ mp4_seek(void *user_data, uint64_t position)
|
|||
? 0 : -1;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
||||
{
|
||||
struct mp4_context ctx = {
|
||||
|
@ -133,14 +133,14 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
|||
mp4fh = mp4ff_open_read(&callback);
|
||||
if (!mp4fh) {
|
||||
g_warning("Input does not appear to be a mp4 stream.\n");
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
track = mp4_get_aac_track(mp4fh);
|
||||
if (track < 0) {
|
||||
g_warning("No AAC track found in mp4 stream.\n");
|
||||
mp4ff_close(mp4fh);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
decoder = faacDecOpen();
|
||||
|
@ -164,7 +164,7 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
|||
g_warning("Not an AAC stream.\n");
|
||||
faacDecClose(decoder);
|
||||
mp4ff_close(mp4fh);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
file_time = mp4ff_get_track_duration_use_offsets(mp4fh, track);
|
||||
|
@ -176,7 +176,7 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
|||
g_warning("Error getting audio format of mp4 AAC track.\n");
|
||||
faacDecClose(decoder);
|
||||
mp4ff_close(mp4fh);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
total_time = ((float)file_time) / scale;
|
||||
|
||||
|
@ -185,7 +185,7 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
|||
g_warning("Integer overflow.\n");
|
||||
faacDecClose(decoder);
|
||||
mp4ff_close(mp4fh);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
file_time = 0.0;
|
||||
|
@ -299,14 +299,6 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
|
|||
free(seek_table);
|
||||
faacDecClose(decoder);
|
||||
mp4ff_close(mp4fh);
|
||||
|
||||
if (!initialized)
|
||||
return false;
|
||||
|
||||
if (decoder_get_command(mpd_decoder) == DECODE_COMMAND_SEEK && seeking)
|
||||
decoder_command_finished(mpd_decoder);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *
|
||||
|
|
|
@ -96,7 +96,7 @@ static inline int32_t convertSample(MPC_SAMPLE_FORMAT sample)
|
|||
return val;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
mpc_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
||||
{
|
||||
mpc_decoder decoder;
|
||||
|
@ -135,21 +135,17 @@ mpc_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
|||
mpc_streaminfo_init(&info);
|
||||
|
||||
if ((ret = mpc_streaminfo_read(&info, &reader)) != ERROR_CODE_OK) {
|
||||
if (decoder_get_command(mpd_decoder) != DECODE_COMMAND_STOP) {
|
||||
if (decoder_get_command(mpd_decoder) != DECODE_COMMAND_STOP)
|
||||
ERROR("Not a valid musepack stream\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
mpc_decoder_setup(&decoder, &reader);
|
||||
|
||||
if (!mpc_decoder_initialize(&decoder, &info)) {
|
||||
if (decoder_get_command(mpd_decoder) != DECODE_COMMAND_STOP) {
|
||||
if (decoder_get_command(mpd_decoder) != DECODE_COMMAND_STOP)
|
||||
ERROR("Not a valid musepack stream\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 24;
|
||||
|
@ -232,8 +228,6 @@ mpc_decode(struct decoder *mpd_decoder, struct input_stream *inStream)
|
|||
}
|
||||
|
||||
replay_gain_info_free(replayGainInfo);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static float mpcGetTime(const char *file)
|
||||
|
|
|
@ -284,17 +284,15 @@ static bool oggflac_try_decode(struct input_stream *inStream)
|
|||
return ogg_stream_type_detect(inStream) == FLAC;
|
||||
}
|
||||
|
||||
static bool
|
||||
static void
|
||||
oggflac_decode(struct decoder * mpd_decoder, struct input_stream *inStream)
|
||||
{
|
||||
OggFLAC__SeekableStreamDecoder *decoder = NULL;
|
||||
FlacData data;
|
||||
bool ret = true;
|
||||
|
||||
init_FlacData(&data, mpd_decoder, inStream);
|
||||
|
||||
if (!(decoder = full_decoder_init_and_read_metadata(&data, 0))) {
|
||||
ret = false;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -329,8 +327,6 @@ oggflac_decode(struct decoder * mpd_decoder, struct input_stream *inStream)
|
|||
|
||||
fail:
|
||||
oggflac_cleanup(&data, decoder);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const char *const oggflac_Suffixes[] = { "ogg", "oga", NULL };
|
||||
|
|
|
@ -196,7 +196,7 @@ static void putOggCommentsIntoOutputBuffer(struct decoder *decoder,
|
|||
}
|
||||
|
||||
/* public */
|
||||
static bool
|
||||
static void
|
||||
oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
||||
{
|
||||
OggVorbis_File vf;
|
||||
|
@ -217,7 +217,7 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||
bool initialized = false;
|
||||
|
||||
if (ogg_stream_type_detect(inStream) != VORBIS)
|
||||
return false;
|
||||
return;
|
||||
|
||||
/* rewind the stream, because ogg_stream_type_detect() has
|
||||
moved it */
|
||||
|
@ -232,7 +232,7 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||
callbacks.tell_func = ogg_tell_cb;
|
||||
if ((ret = ov_open_callbacks(&data, &vf, NULL, 0, callbacks)) < 0) {
|
||||
if (decoder_get_command(decoder) != DECODE_COMMAND_NONE)
|
||||
return true;
|
||||
return;
|
||||
|
||||
switch (ret) {
|
||||
case OV_EREAD:
|
||||
|
@ -256,7 +256,7 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||
}
|
||||
ERROR("Error decoding Ogg Vorbis stream: %s\n",
|
||||
errorStr);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
audio_format.bits = 16;
|
||||
|
||||
|
@ -336,7 +336,6 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||
replay_gain_info_free(replayGainInfo);
|
||||
|
||||
ov_clear(&vf);
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct tag *oggvorbis_TagDup(const char *file)
|
||||
|
|
|
@ -475,7 +475,7 @@ wavpack_open_wvc(struct decoder *decoder, struct input_stream *is_wvc,
|
|||
/*
|
||||
* Decodes a stream.
|
||||
*/
|
||||
static bool
|
||||
static void
|
||||
wavpack_streamdecode(struct decoder * decoder, struct input_stream *is)
|
||||
{
|
||||
char error[ERRORLEN];
|
||||
|
@ -496,7 +496,7 @@ wavpack_streamdecode(struct decoder * decoder, struct input_stream *is)
|
|||
|
||||
if (wpc == NULL) {
|
||||
g_warning("failed to open WavPack stream: %s\n", error);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
wavpack_decode(decoder, wpc, canseek, NULL);
|
||||
|
@ -505,14 +505,12 @@ wavpack_streamdecode(struct decoder * decoder, struct input_stream *is)
|
|||
if (open_flags & OPEN_WVC) {
|
||||
input_stream_close(&is_wvc);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Decodes a file.
|
||||
*/
|
||||
static bool
|
||||
static void
|
||||
wavpack_filedecode(struct decoder *decoder, const char *fname)
|
||||
{
|
||||
char error[ERRORLEN];
|
||||
|
@ -525,7 +523,7 @@ wavpack_filedecode(struct decoder *decoder, const char *fname)
|
|||
if (wpc == NULL) {
|
||||
g_warning("failed to open WavPack file \"%s\": %s\n",
|
||||
fname, error);
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
replay_gain_info = wavpack_replaygain(wpc);
|
||||
|
@ -537,8 +535,6 @@ wavpack_filedecode(struct decoder *decoder, const char *fname)
|
|||
}
|
||||
|
||||
WavpackCloseFile(wpc);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static char const *const wavpack_suffixes[] = { "wv", NULL };
|
||||
|
|
|
@ -68,7 +68,7 @@ struct decoder_plugin {
|
|||
* true if it was able to do so (even if an error occured
|
||||
* during playback)
|
||||
*/
|
||||
bool (*stream_decode)(struct decoder *, struct input_stream *);
|
||||
void (*stream_decode)(struct decoder *, struct input_stream *);
|
||||
|
||||
/**
|
||||
* use this if and only if your InputPlugin can only be passed
|
||||
|
@ -79,7 +79,7 @@ struct decoder_plugin {
|
|||
* true if it was able to do so (even if an error occured
|
||||
* during playback)
|
||||
*/
|
||||
bool (*file_decode)(struct decoder *, const char *path);
|
||||
void (*file_decode)(struct decoder *, const char *path);
|
||||
|
||||
/**
|
||||
* file should be the full path! Returns NULL if a tag cannot
|
||||
|
|
|
@ -33,8 +33,6 @@ decoder_stream_decode(const struct decoder_plugin *plugin,
|
|||
struct decoder *decoder,
|
||||
struct input_stream *input_stream)
|
||||
{
|
||||
bool ret;
|
||||
|
||||
assert(plugin != NULL);
|
||||
assert(plugin->stream_decode != NULL);
|
||||
assert(decoder != NULL);
|
||||
|
@ -46,27 +44,18 @@ decoder_stream_decode(const struct decoder_plugin *plugin,
|
|||
/* rewind the stream, so each plugin gets a fresh start */
|
||||
input_stream_seek(input_stream, 0, SEEK_SET);
|
||||
|
||||
ret = plugin->stream_decode(decoder, input_stream);
|
||||
plugin->stream_decode(decoder, input_stream);
|
||||
|
||||
if (ret) {
|
||||
/* if the method has succeeded, the plugin must have
|
||||
called decoder_initialized() */
|
||||
assert(dc.state == DECODE_STATE_DECODE);
|
||||
} else {
|
||||
/* no decoder_initialized() allowed when the plugin
|
||||
hasn't recognized the file format */
|
||||
assert(dc.state == DECODE_STATE_START);
|
||||
}
|
||||
assert(dc.state == DECODE_STATE_START ||
|
||||
dc.state == DECODE_STATE_DECODE);
|
||||
|
||||
return ret;
|
||||
return dc.state != DECODE_STATE_START;
|
||||
}
|
||||
|
||||
static bool
|
||||
decoder_file_decode(const struct decoder_plugin *plugin,
|
||||
struct decoder *decoder, const char *path)
|
||||
{
|
||||
bool ret;
|
||||
|
||||
assert(plugin != NULL);
|
||||
assert(plugin->stream_decode != NULL);
|
||||
assert(decoder != NULL);
|
||||
|
@ -75,19 +64,12 @@ decoder_file_decode(const struct decoder_plugin *plugin,
|
|||
assert(path[0] == '/');
|
||||
assert(dc.state == DECODE_STATE_START);
|
||||
|
||||
ret = plugin->file_decode(decoder, path);
|
||||
plugin->file_decode(decoder, path);
|
||||
|
||||
if (ret) {
|
||||
/* if the method has succeeded, the plugin must have
|
||||
called decoder_initialized() */
|
||||
assert(dc.state == DECODE_STATE_DECODE);
|
||||
} else {
|
||||
/* no decoder_initialized() allowed when the plugin
|
||||
hasn't recognized the file format */
|
||||
assert(dc.state == DECODE_STATE_START);
|
||||
}
|
||||
assert(dc.state == DECODE_STATE_START ||
|
||||
dc.state == DECODE_STATE_DECODE);
|
||||
|
||||
return ret;
|
||||
return dc.state != DECODE_STATE_START;
|
||||
}
|
||||
|
||||
static void decoder_run(void)
|
||||
|
|
Loading…
Reference in New Issue