aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/decode.c8
-rw-r--r--src/decode.h7
-rw-r--r--src/decoder_api.c15
-rw-r--r--src/decoder_api.h7
-rw-r--r--src/inputPlugins/aac_plugin.c4
-rw-r--r--src/inputPlugins/audiofile_plugin.c2
-rw-r--r--src/inputPlugins/flac_plugin.c2
-rw-r--r--src/inputPlugins/mod_plugin.c2
-rw-r--r--src/inputPlugins/mp3_plugin.c8
-rw-r--r--src/inputPlugins/mp4_plugin.c4
-rw-r--r--src/inputPlugins/mpc_plugin.c2
-rw-r--r--src/inputPlugins/oggflac_plugin.c2
-rw-r--r--src/inputPlugins/oggvorbis_plugin.c2
-rw-r--r--src/inputPlugins/wavpack_plugin.c2
14 files changed, 34 insertions, 33 deletions
diff --git a/src/decode.c b/src/decode.c
index 9cef281a6..ec69a2f46 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -48,14 +48,6 @@ static void dc_command(enum decoder_command cmd)
dc_command_wait();
}
-void dc_command_finished(void)
-{
- assert(dc.command != DECODE_COMMAND_NONE);
-
- dc.command = DECODE_COMMAND_NONE;
- notify_signal(&pc.notify);
-}
-
static void stopDecode(void)
{
if (dc.command == DECODE_COMMAND_START ||
diff --git a/src/decode.h b/src/decode.h
index ab943626d..fbee97c82 100644
--- a/src/decode.h
+++ b/src/decode.h
@@ -63,11 +63,4 @@ void decode(void);
void decoderInit(void);
-/**
- * Called by the decoder thread when it has performed the requested
- * command (dc->command). This function resets dc->command and wakes
- * up the player thread.
- */
-void dc_command_finished(void);
-
#endif
diff --git a/src/decoder_api.c b/src/decoder_api.c
index 639278cb9..9d9b1b903 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -50,11 +50,20 @@ enum decoder_command decoder_get_command(mpd_unused struct decoder * decoder)
return dc.command;
}
+void decoder_command_finished(mpd_unused struct decoder * decoder)
+{
+ assert(dc.command != DECODE_COMMAND_NONE);
+
+ dc.command = DECODE_COMMAND_NONE;
+ notify_signal(&pc.notify);
+}
+
/**
* All chunks are full of decoded data; wait for the player to free
* one.
*/
-static int need_chunks(InputStream * inStream, int seekable)
+static int need_chunks(struct decoder *decoder, InputStream * inStream,
+ int seekable)
{
if (dc.command == DECODE_COMMAND_STOP)
return OUTPUT_BUFFER_DC_STOP;
@@ -64,7 +73,7 @@ static int need_chunks(InputStream * inStream, int seekable)
return OUTPUT_BUFFER_DC_SEEK;
} else {
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
}
@@ -119,7 +128,7 @@ int decoder_data(struct decoder *decoder, InputStream * inStream,
data += nbytes;
if (datalen > 0) {
- ret = need_chunks(inStream, seekable);
+ ret = need_chunks(decoder, inStream, seekable);
if (ret != 0)
return ret;
}
diff --git a/src/decoder_api.h b/src/decoder_api.h
index 5913a5961..980693362 100644
--- a/src/decoder_api.h
+++ b/src/decoder_api.h
@@ -106,6 +106,13 @@ void decoder_initialized(struct decoder * decoder,
enum decoder_command decoder_get_command(struct decoder * decoder);
/**
+ * Called by the decoder when it has performed the requested command
+ * (dc->command). This function resets dc->command and wakes up the
+ * player thread.
+ */
+void decoder_command_finished(struct decoder * decoder);
+
+/**
* This function is called by the decoder plugin when it has
* successfully decoded block of input data.
*
diff --git a/src/inputPlugins/aac_plugin.c b/src/inputPlugins/aac_plugin.c
index 29cb23db0..b3c72f5f1 100644
--- a/src/inputPlugins/aac_plugin.c
+++ b/src/inputPlugins/aac_plugin.c
@@ -391,7 +391,7 @@ static int aac_decode(struct decoder * mpd_decoder, char *path)
bitRate, NULL);
if (decoder_get_command(decoder) == DECODE_COMMAND_SEEK) {
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
} else if (decoder_get_command(decoder) == DECODE_COMMAND_STOP)
break;
}
@@ -407,7 +407,7 @@ static int aac_decode(struct decoder * mpd_decoder, char *path)
if (decoder_get_command(decoder) == DECODE_COMMAND_SEEK) {
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
return 0;
diff --git a/src/inputPlugins/audiofile_plugin.c b/src/inputPlugins/audiofile_plugin.c
index c75c189c7..105edc414 100644
--- a/src/inputPlugins/audiofile_plugin.c
+++ b/src/inputPlugins/audiofile_plugin.c
@@ -95,7 +95,7 @@ static int audiofile_decode(struct decoder * decoder, char *path)
current = dc.seekWhere *
audio_format.sampleRate;
afSeekFrame(af_fp, AF_DEFAULT_TRACK, current);
- dc_command_finished();
+ decoder_command_finished(decoder);
}
ret = afReadFrames(af_fp, AF_DEFAULT_TRACK, chunk,
diff --git a/src/inputPlugins/flac_plugin.c b/src/inputPlugins/flac_plugin.c
index fd6ab4e2f..cef1f6ed0 100644
--- a/src/inputPlugins/flac_plugin.c
+++ b/src/inputPlugins/flac_plugin.c
@@ -433,7 +433,7 @@ static int flac_decode_internal(struct decoder * decoder,
data.position = 0;
} else
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
}
if (decoder_get_command(decoder) != DECODE_COMMAND_STOP) {
diff --git a/src/inputPlugins/mod_plugin.c b/src/inputPlugins/mod_plugin.c
index 9f972ed15..9386bfca8 100644
--- a/src/inputPlugins/mod_plugin.c
+++ b/src/inputPlugins/mod_plugin.c
@@ -189,7 +189,7 @@ static int mod_decode(struct decoder * decoder, char *path)
while (1) {
if (decoder_get_command(decoder) == DECODE_COMMAND_SEEK) {
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
if (decoder_get_command(decoder) == DECODE_COMMAND_STOP)
diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c
index e1262fa6d..5685cb507 100644
--- a/src/inputPlugins/mp3_plugin.c
+++ b/src/inputPlugins/mp3_plugin.c
@@ -855,7 +855,7 @@ static int mp3Read(mp3DecodeData * data, struct decoder *decoder,
data->outputPtr = data->outputBuffer;
decoder_clear(decoder);
data->muteFrame = 0;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
break;
default:
@@ -968,12 +968,12 @@ static int mp3Read(mp3DecodeData * data, struct decoder *decoder,
} else
dc.seekError = 1;
data->muteFrame = 0;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
} else if (decoder_get_command(decoder) == DECODE_COMMAND_SEEK &&
!data->inStream->seekable) {
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
}
@@ -1076,7 +1076,7 @@ static int mp3_decode(struct decoder * decoder, InputStream * inStream)
if (decoder_get_command(decoder) == DECODE_COMMAND_SEEK &&
data.muteFrame == MUTEFRAME_SEEK) {
decoder_clear(decoder);
- dc_command_finished();
+ decoder_command_finished(decoder);
}
decoder_flush(decoder);
diff --git a/src/inputPlugins/mp4_plugin.c b/src/inputPlugins/mp4_plugin.c
index 91bf68e02..2ebb2a49e 100644
--- a/src/inputPlugins/mp4_plugin.c
+++ b/src/inputPlugins/mp4_plugin.c
@@ -213,7 +213,7 @@ static int mp4_decode(struct decoder * mpd_decoder, InputStream * inStream)
seekPositionFound = 0;
decoder_clear(mpd_decoder);
seeking = 0;
- dc_command_finished();
+ decoder_command_finished(mpd_decoder);
}
if (seeking)
@@ -284,7 +284,7 @@ static int mp4_decode(struct decoder * mpd_decoder, InputStream * inStream)
if (decoder_get_command(mpd_decoder) == DECODE_COMMAND_SEEK && seeking) {
decoder_clear(mpd_decoder);
- dc_command_finished();
+ decoder_command_finished(mpd_decoder);
}
decoder_flush(mpd_decoder);
diff --git a/src/inputPlugins/mpc_plugin.c b/src/inputPlugins/mpc_plugin.c
index ff378fe7b..5be9ba446 100644
--- a/src/inputPlugins/mpc_plugin.c
+++ b/src/inputPlugins/mpc_plugin.c
@@ -185,7 +185,7 @@ static int mpc_decode(struct decoder * mpd_decoder, InputStream * inStream)
chunkpos = 0;
} else
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(mpd_decoder);
}
vbrUpdateAcc = 0;
diff --git a/src/inputPlugins/oggflac_plugin.c b/src/inputPlugins/oggflac_plugin.c
index 09a514194..38474d7d0 100644
--- a/src/inputPlugins/oggflac_plugin.c
+++ b/src/inputPlugins/oggflac_plugin.c
@@ -364,7 +364,7 @@ static int oggflac_decode(struct decoder * mpd_decoder, InputStream * inStream)
data.position = 0;
} else
dc.seekError = 1;
- dc_command_finished(dc);
+ decoder_command_finished(mpd_decoder);
}
}
diff --git a/src/inputPlugins/oggvorbis_plugin.c b/src/inputPlugins/oggvorbis_plugin.c
index 8e98bdf4e..1b8c7154f 100644
--- a/src/inputPlugins/oggvorbis_plugin.c
+++ b/src/inputPlugins/oggvorbis_plugin.c
@@ -273,7 +273,7 @@ static int oggvorbis_decode(struct decoder * decoder, InputStream * inStream)
chunkpos = 0;
} else
dc.seekError = 1;
- dc_command_finished();
+ decoder_command_finished(decoder);
}
ret = ov_read(&vf, chunk + chunkpos,
OGG_CHUNK_SIZE - chunkpos,
diff --git a/src/inputPlugins/wavpack_plugin.c b/src/inputPlugins/wavpack_plugin.c
index 926c9f710..75afb8603 100644
--- a/src/inputPlugins/wavpack_plugin.c
+++ b/src/inputPlugins/wavpack_plugin.c
@@ -188,7 +188,7 @@ static void wavpack_decode(struct decoder * decoder,
dc.seekError = 1;
}
- dc_command_finished();
+ decoder_command_finished(decoder);
}
if (decoder_get_command(decoder) == DECODE_COMMAND_STOP)