aboutsummaryrefslogtreecommitdiffstats
path: root/src/inputPlugins/oggvorbis_plugin.c
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-01-01 10:09:56 +0000
committerEric Wong <normalperson@yhbt.net>2008-01-01 10:09:56 +0000
commit2cc59816a6e6304e643bc5c7ca055dd2567cba9e (patch)
tree2686ddfc3b7e98feb8a47e6f64c3658c15b92f0b /src/inputPlugins/oggvorbis_plugin.c
parent5e7367c580f3a7aca93f6523e6c9d37f81b1d48b (diff)
downloadmpd-2cc59816a6e6304e643bc5c7ca055dd2567cba9e.tar.gz
mpd-2cc59816a6e6304e643bc5c7ca055dd2567cba9e.tar.xz
mpd-2cc59816a6e6304e643bc5c7ca055dd2567cba9e.zip
Simplify decode cleanup logic a bit
DECODE_STATE_STOP is always set as dc->state, and dc->stop is always cleared. So handle it in decodeStart once rather than doing it in every plugin. While we're at it, fix a long-standing (but difficult to trigger) bug in mpc_decode where we failed to return if mpc_decoder_initialize() fails. git-svn-id: https://svn.musicpd.org/mpd/trunk@7122 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r--src/inputPlugins/oggvorbis_plugin.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/src/inputPlugins/oggvorbis_plugin.c b/src/inputPlugins/oggvorbis_plugin.c
index 622e3807b..05c665386 100644
--- a/src/inputPlugins/oggvorbis_plugin.c
+++ b/src/inputPlugins/oggvorbis_plugin.c
@@ -92,11 +92,10 @@ static int ogg_seek_cb(void *vdata, ogg_int64_t offset, int whence)
return seekInputStream(data->inStream, offset, whence);
}
+/* TODO: check Ogg libraries API and see if we can just not have this func */
static int ogg_close_cb(void *vdata)
{
- OggCallbackData *data = (OggCallbackData *) vdata;
-
- return closeInputStream(data->inStream);
+ return 0;
}
static long ogg_tell_cb(void *vdata)
@@ -253,7 +252,6 @@ static int oggvorbis_decode(OutputBuffer * cb, DecoderControl * dc,
callbacks.close_func = ogg_close_cb;
callbacks.tell_func = ogg_tell_cb;
if ((ret = ov_open_callbacks(&data, &vf, NULL, 0, callbacks)) < 0) {
- closeInputStream(inStream);
if (!dc->stop) {
switch (ret) {
case OV_EREAD:
@@ -278,9 +276,6 @@ static int oggvorbis_decode(OutputBuffer * cb, DecoderControl * dc,
ERROR("Error decoding Ogg Vorbis stream: %s\n",
errorStr);
return -1;
- } else {
- dc->state = DECODE_STATE_STOP;
- dc->stop = 0;
}
return 0;
}
@@ -358,12 +353,6 @@ static int oggvorbis_decode(OutputBuffer * cb, DecoderControl * dc,
flushOutputBuffer(cb);
- if (dc->stop) {
- dc->state = DECODE_STATE_STOP;
- dc->stop = 0;
- } else
- dc->state = DECODE_STATE_STOP;
-
return 0;
}