]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
fix some signed warnings in aac and mp3 decoders
authorAndre Noll <maan@systemlinux.org>
Sat, 26 May 2007 20:25:44 +0000 (22:25 +0200)
committerAndre Noll <maan@systemlinux.org>
Sat, 26 May 2007 20:25:44 +0000 (22:25 +0200)
Only trivial stuff.

aac.h
aac_afh.c
aac_common.c
aacdec.c
filter.h
mp3dec.c

diff --git a/aac.h b/aac.h
index bad81f95e9ce451b5c9f3b5158e227ebe3556c05..9494651490fd876ca2d9aef26f7570ae29157849 100644 (file)
--- a/aac.h
+++ b/aac.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2007 Andre Noll <maan@systemlinux.org>
  *
  *     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 <neaacdec.h>
 
 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)
index 126eb6ce58b58339ce9530898f514e21673bcdca..26cffa3cd3b62f4f6e2138d1eb6b9e39e3a4f2c4 100644 (file)
--- 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))
index 2dc979011be245850cef106167bd4fad611abe1e..90ad67b3074c7d2d18e3ad8efa20df6492466802 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2007 Andre Noll <maan@systemlinux.org>
  *
  *     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;
 }
index 89781c528d9f107a65d75cf120cd9eb412c47271..79c437d52b11f65b294ceac8ea9d7e995a4bd5ce 100644 (file)
--- 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;
index 456a50de3a79c942299ddea50f21fc2169fac9f4..9956619c94c7bd5a93138270491b9dfdd9bbacec 100644 (file)
--- 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;
index a1374b7319b1e66167ab316c3ee03a588f5a8327..335c2baaea66f2ac6b9392b177958101fc36b0e2 100644 (file)
--- 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 */