From 11680e1989c6c867f207be7197602776e05cae6a Mon Sep 17 00:00:00 2001 Message-Id: <11680e1989c6c867f207be7197602776e05cae6a.1714843482.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 6 Jun 2010 19:09:53 +0100 Subject: [PATCH] Use hands-off reader in MP3 decoding. Organization: Straylight/Edgeware From: Richard Kettlewell --- lib/hreader.c | 1 + lib/hreader.h | 1 - server/decode.c | 11 ++++++----- 3 files changed, 7 insertions(+), 6 deletions(-) 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)) -- [mdw]