]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
never-ending mp3 saga
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 24 Jul 2008 18:43:10 +0000 (18:43 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 24 Jul 2008 18:43:10 +0000 (18:43 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9172 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/formats/mod_shout/mod_shout.c

index a817fad148aa0b1abcb5c122a8b95349615b86e0..e619ed2e3009348c5e9852ce21c004b5a9878806 100644 (file)
@@ -223,13 +223,13 @@ static size_t decode_fd(shout_context_t *context, void *data, size_t bytes)
        int dlen = 0;
        int x = 0;
        char *in;
-       int inlen;
+       int inlen = 0;
        char *out;
        int outlen;
        int usedlen;
        char inbuf[MP3_SCACHE];
        int done = 0;
-
+       size_t used;
        size_t lp;
        size_t rb = 0;
 
@@ -248,10 +248,9 @@ static size_t decode_fd(shout_context_t *context, void *data, size_t bytes)
                x = 0;
 
                if (inlen < bytes) {
-                       bytes = inlen;
                        done = 1;
                }
-
+               
                do {
                        decode_status = decodeMP3(&context->mp, in, inlen, out, outlen, &dlen);
 
@@ -310,8 +309,10 @@ static size_t decode_fd(shout_context_t *context, void *data, size_t bytes)
                }
        }
 
-       if (done || switch_buffer_inuse(context->audio_buffer) >= bytes) {
-               rb = switch_buffer_read(context->audio_buffer, data, bytes);
+       used = switch_buffer_inuse(context->audio_buffer);
+       
+       if (done || used >= bytes) {
+               rb = switch_buffer_read(context->audio_buffer, data, used);
                return rb;
        }