summaryrefslogtreecommitdiff
path: root/libavcodec/shorten.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-09-14 18:54:42 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2011-10-20 13:09:25 -0400
commit0f97c5014b63f94ebffeb3b0f48c21bbe77b11f3 (patch)
treebe69d62f55e579cec663424ae5e7950efa50f9e5 /libavcodec/shorten.c
parente9e37f2d1051ba71985878a5239deb976183a23b (diff)
shorten: only calculate output size when returning decoded samples, otherwise
just set data_size to zero.
Diffstat (limited to 'libavcodec/shorten.c')
-rw-r--r--libavcodec/shorten.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index 62cead49e1..a4313aeb37 100644
--- a/libavcodec/shorten.c
+++ b/libavcodec/shorten.c
@@ -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);