X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=oggdec_filter.c;h=c158df7e4df7777f1f92468c3ef0f3a333756237;hp=bdfafedfbab45153a566dc953a989c22e15d097d;hb=8b8a81f7faf8faec7a14ebfca4ce2e5c6ad3ac40;hpb=7cb521f3eeb7fda02344c523989d5903251e673e diff --git a/oggdec_filter.c b/oggdec_filter.c index bdfafedf..c158df7e 100644 --- a/oggdec_filter.c +++ b/oggdec_filter.c @@ -6,8 +6,10 @@ /** \file oggdec_filter.c Paraslash's ogg vorbis decoder. */ -#include "para.h" +#include +#include +#include "para.h" #include "oggdec_filter.cmdline.h" #include "list.h" #include "sched.h" @@ -16,8 +18,6 @@ #include "error.h" #include "string.h" -#include - /** Determine byte sex. */ #ifdef WORDS_BIGENDIAN #define ENDIAN 1 @@ -136,7 +136,7 @@ static ssize_t ogg_convert(char *inbuffer, size_t len, struct filter_node *fn) NULL, /* no initial buffer */ 0, /* no initial bytes */ ovc); /* the ov_open_callbacks */ - if (ret == OV_ENOTVORBIS) { + if (ret == OV_ENOTVORBIS || ret == OV_EBADHEADER) { /* this might be due to the input buffer being too small */ int ib = 1024 * conf->initial_buffer_arg; /* initial buffer */ if (len < ib) { @@ -146,14 +146,13 @@ static ssize_t ogg_convert(char *inbuffer, size_t len, struct filter_node *fn) pod->vf = NULL; return 0; } - return -E_OGGDEC_NOTVORBIS; + return ret == OV_ENOTVORBIS? + -E_OGGDEC_NOTVORBIS : -E_OGGDEC_BADHEADER; } if (ret == OV_EREAD) return -E_OGGDEC_READ; if (ret == OV_EVERSION) return -E_OGGDEC_VERSION; - if (ret == OV_EBADHEADER) - return -E_OGGDEC_BADHEADER; if (ret < 0) return -E_OGGDEC_FAULT; fn->fc->channels = ov_info(pod->vf, 0)->channels;