shorten: only calculate output size when returning decoded samples, otherwise
authorJustin Ruggles <justin.ruggles@gmail.com>
Wed, 14 Sep 2011 22:54:42 +0000 (18:54 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Thu, 20 Oct 2011 17:09:25 +0000 (13:09 -0400)
just set data_size to zero.

libavcodec/shorten.c

index 62cead4..a4313ae 100644 (file)
@@ -385,6 +385,7 @@ static int shorten_decode_frame(AVCodecContext *avctx,
         int ret;
         if ((ret = read_header(s)) < 0)
             return ret;
+        *data_size = 0;
     }
     else
     {
@@ -423,8 +424,9 @@ static int shorten_decode_frame(AVCodecContext *avctx,
                     break;
                 }
                 case FN_QUIT:
-                    goto frame_done;
+                    break;
             }
+            *data_size = 0;
         } else {
             /* process audio command */
             int residual_size = 0;
@@ -510,12 +512,12 @@ static int shorten_decode_frame(AVCodecContext *avctx,
             if (s->cur_chan == s->channels) {
                 samples = interleave_buffer(samples, s->channels, s->blocksize, s->decoded);
                 s->cur_chan = 0;
-                goto frame_done;
+                *data_size = (int8_t *)samples - (int8_t *)data;
+            } else {
+                *data_size = 0;
             }
         }
     }
-frame_done:
-    *data_size = (int8_t *)samples - (int8_t *)data;
 
     //    s->last_blocksize = s->blocksize;
     s->bitindex = get_bits_count(&s->gb) - 8*((get_bits_count(&s->gb))/8);