From: Andre Noll Date: Sat, 26 May 2007 20:25:44 +0000 (+0200) Subject: fix some signed warnings in aac and mp3 decoders X-Git-Tag: v0.2.17~65 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=f695fe47a8a6509379225c837dadfa9837a7d746 fix some signed warnings in aac and mp3 decoders Only trivial stuff. --- diff --git a/aac.h b/aac.h index bad81f95..94946514 100644 --- a/aac.h +++ b/aac.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006 Andre Noll + * Copyright (C) 2006-2007 Andre Noll * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +21,8 @@ #include NeAACDecHandle aac_open(void); -ssize_t aac_find_esds(unsigned char *buf, size_t buflen, size_t *skip); +int aac_find_esds(unsigned char *buf, size_t buflen, size_t *skip, + unsigned long *decoder_length); ssize_t aac_find_entry_point(unsigned char *buf, size_t buflen, size_t *skip); static inline unsigned aac_read_int32(unsigned char *buf) diff --git a/aac_afh.c b/aac_afh.c index 126eb6ce..26cffa3c 100644 --- a/aac_afh.c +++ b/aac_afh.c @@ -113,10 +113,9 @@ static int aac_get_file_info(char *map, size_t numbytes, NeAACDecHandle handle; unsigned char *umap = (unsigned char *) map; - ret = aac_find_esds(umap, numbytes, &skip); + ret = aac_find_esds(umap, numbytes, &skip, &decoder_len); if (ret < 0) goto out; - decoder_len = ret; handle = aac_open(); ret = -E_AACDEC_INIT; if (NeAACDecInit(handle, umap + skip, decoder_len, &rate, &channels)) diff --git a/aac_common.c b/aac_common.c index 2dc97901..90ad67b3 100644 --- a/aac_common.c +++ b/aac_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006 Andre Noll + * Copyright (C) 2006-2007 Andre Noll * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,11 +42,11 @@ NeAACDecHandle aac_open(void) return h; }; -static int aac_read_decoder_length(unsigned char *buf, int *description_len) +static unsigned long aac_read_decoder_length(unsigned char *buf, int *description_len) { uint8_t b; uint8_t numBytes = 0; - uint32_t length = 0; + unsigned long length = 0; do { b = buf[numBytes]; @@ -65,16 +65,19 @@ static int aac_read_decoder_length(unsigned char *buf, int *description_len) * \param buflen length of \a buf * \param skip Upon succesful return, this contains the offset in \a buf where * the decoder config starts. + * \param decoder_length result pointer that is filled in with the length of + * the decoder configuration on success. * - * \return The length of the decoder configuration + * \return positive on success, negative on errors */ -ssize_t aac_find_esds(unsigned char *buf, size_t buflen, size_t *skip) +int aac_find_esds(unsigned char *buf, size_t buflen, size_t *skip, + unsigned long *decoder_length) { size_t i; for (i = 0; i + 4 < buflen; i++) { unsigned char *p = buf + i; - int decoder_length, description_len; + int description_len; if (p[0] != 'e' || p[1] != 's' || p[2] != 'd' || p[3] != 's') continue; @@ -96,11 +99,11 @@ ssize_t aac_find_esds(unsigned char *buf, size_t buflen, size_t *skip) continue; i++; p = buf + i; - decoder_length = aac_read_decoder_length(p, &description_len); - PARA_INFO_LOG("decoder length: %d\n", decoder_length); + *decoder_length = aac_read_decoder_length(p, &description_len); + PARA_INFO_LOG("decoder length: %lu\n", *decoder_length); i += description_len; *skip = i; - return decoder_length; + return 1; } return -E_ESDS; } diff --git a/aacdec.c b/aacdec.c index 89781c52..79c437d5 100644 --- a/aacdec.c +++ b/aacdec.c @@ -53,7 +53,7 @@ struct private_aacdec_data { * return value of aac_find_esds(). Used to call the right aacdec * init function */ - int decoder_length; + unsigned long decoder_length; /** number of times the decoder returned an error */ unsigned error_count; /** number of bytes already consumed from the imput stream */ @@ -79,9 +79,9 @@ static ssize_t aacdec(char *input_buffer, size_t len, struct filter_node *fn) if (!padd->initialized) { unsigned long rate = 0; unsigned char channels = 0; - padd->decoder_length = aac_find_esds(inbuf, len, &skip); - PARA_INFO_LOG("decoder len: %d\n", padd->decoder_length); - if (padd->decoder_length < 0) { + ret = aac_find_esds(inbuf, len, &skip, &padd->decoder_length); + if (ret < 0) { + PARA_INFO_LOG("%s\n", PARA_STRERROR(-ret)); ret = NeAACDecInit(padd->handle, inbuf, len, &rate, &channels); PARA_INFO_LOG("decoder init: %d\n", ret); @@ -91,6 +91,8 @@ static ssize_t aacdec(char *input_buffer, size_t len, struct filter_node *fn) } consumed = ret; } else { + PARA_INFO_LOG("decoder len: %lu\n", + padd->decoder_length); consumed += skip; p = inbuf + consumed; ret = -E_AACDEC_INIT; diff --git a/filter.h b/filter.h index 456a50de..9956619c 100644 --- a/filter.h +++ b/filter.h @@ -301,7 +301,7 @@ void *(*parse_config)(int argc, char **argv); }; -static inline void write_int16_host_endian(char *buf, int16_t val) +static inline void write_int16_host_endian(char *buf, int val) { #ifdef WORDS_BIGENDIAN *buf = val >> 8; diff --git a/mp3dec.c b/mp3dec.c index a1374b73..335c2baa 100644 --- a/mp3dec.c +++ b/mp3dec.c @@ -74,7 +74,7 @@ next_frame: mad_synth_frame(&pmd->synth, &pmd->frame); for (i = 0; i < pmd->synth.pcm.length; i++) { - signed short s = MAD_TO_SHORT(pmd->synth.pcm.samples[0][i]); + int s = MAD_TO_SHORT(pmd->synth.pcm.samples[0][i]); write_int16_host_endian(fn->buf + fn->loaded, s); fn->loaded += 2; if (MAD_NCHANNELS(&pmd->frame.header) == 2) { /* stereo */