From: Richard Kettlewell Date: Sun, 6 Jun 2010 18:09:53 +0000 (+0100) Subject: Use hands-off reader in MP3 decoding. X-Git-Tag: branchpoint-5.1~77^2~8 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/11680e1989c6c867f207be7197602776e05cae6a?ds=inline;hp=-c Use hands-off reader in MP3 decoding. --- 11680e1989c6c867f207be7197602776e05cae6a diff --git a/lib/hreader.c b/lib/hreader.c index 6390d69..5973375 100644 --- a/lib/hreader.c +++ b/lib/hreader.c @@ -60,6 +60,7 @@ int hreader_fill(struct hreader *h) { if(n < 0) return -1; h->bytes = n; + h->offset += n; return n; } diff --git a/lib/hreader.h b/lib/hreader.h index ac56b2c..1eadc55 100644 --- a/lib/hreader.h +++ b/lib/hreader.h @@ -67,7 +67,6 @@ void hreader_consume(struct hreader *h, size_t n); #endif /* HREADER_H */ - /* Local Variables: c-basic-offset:2 diff --git a/server/decode.c b/server/decode.c index 11a0592..1724876 100644 --- a/server/decode.c +++ b/server/decode.c @@ -20,6 +20,7 @@ */ #include "disorder-server.h" +#include "hreader.h" #include #include @@ -45,8 +46,7 @@ struct decoder { void (*decode)(void); }; -/** @brief Input file */ -static int inputfd; +static struct hreader input[1]; /** @brief Output file */ static FILE *outputfp; @@ -239,7 +239,9 @@ static enum mad_flow mp3_input(void attribute((unused)) *data, remain = 0; } /* Read new data */ - n = read(inputfd, input_buffer + remain, (sizeof input_buffer) - remain); + n = hreader_read(input, + input_buffer + remain, + (sizeof input_buffer) - remain); if(n < 0) disorder_fatal(errno, "reading from %s", path); /* Compute total number of bytes available */ @@ -267,8 +269,7 @@ static enum mad_flow mp3_error(void attribute((unused)) *data, static void decode_mp3(void) { struct mad_decoder mad[1]; - if((inputfd = open(path, O_RDONLY)) < 0) - disorder_fatal(errno, "opening %s", path); + hreader_init(path, input); mad_decoder_init(mad, 0/*data*/, mp3_input, 0/*header*/, 0/*filter*/, mp3_output, mp3_error, 0/*message*/); if(mad_decoder_run(mad, MAD_DECODER_MODE_SYNC))