diff options
author | Max Kellermann <max@duempel.org> | 2008-08-26 08:27:14 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-08-26 08:27:14 +0200 |
commit | 940ecf5345f339b9d3ec3e8029e345540358fa4c (patch) | |
tree | be22d8c04732d41f1ba6f49298eef7829d097095 /src/inputPlugins/oggvorbis_plugin.c | |
parent | d80260ab4e1d4f926344ab2074543ea4a7723216 (diff) | |
download | mpd-940ecf5345f339b9d3ec3e8029e345540358fa4c.tar.gz mpd-940ecf5345f339b9d3ec3e8029e345540358fa4c.tar.xz mpd-940ecf5345f339b9d3ec3e8029e345540358fa4c.zip |
added decoder_read()
On our way to stabilize the decoder API, we will one day remove the
input stream functions. The most basic function, read() will be
provided by decoder_api.h with this patch. It already contains a loop
(still with manual polling), error/eof handling and decoder command
checks. This kind of code used to be duplicated in all decoder
plugins.
Diffstat (limited to 'src/inputPlugins/oggvorbis_plugin.c')
-rw-r--r-- | src/inputPlugins/oggvorbis_plugin.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/inputPlugins/oggvorbis_plugin.c b/src/inputPlugins/oggvorbis_plugin.c index 4801cb47b..6a6ecbd98 100644 --- a/src/inputPlugins/oggvorbis_plugin.c +++ b/src/inputPlugins/oggvorbis_plugin.c @@ -58,18 +58,12 @@ static size_t ogg_read_cb(void *ptr, size_t size, size_t nmemb, void *vdata) size_t ret; OggCallbackData *data = (OggCallbackData *) vdata; - while (1) { - ret = readFromInputStream(data->inStream, ptr, size, nmemb); - if (ret == 0 && !inputStreamAtEOF(data->inStream) && - decoder_get_command(data->decoder) != DECODE_COMMAND_STOP) { - my_usleep(10000); - } else - break; - } + ret = decoder_read(data->decoder, data->inStream, ptr, size * nmemb); + errno = 0; /*if(ret<0) errno = ((InputStream *)inStream)->error; */ - return ret; + return ret / size; } static int ogg_seek_cb(void *vdata, ogg_int64_t offset, int whence) |