diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-11-12 02:02:22 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-11-12 03:08:38 +0100 |
commit | dde0af2df1caffb9e33855c08fc691dbbbbc72b3 (patch) | |
tree | 2766161f59492035e22c9dbd08a1a5ac85a1d146 | |
parent | e3618cd4a805a6260ac516105206391bfab6a319 (diff) | |
download | ffmpeg-dde0af2df1caffb9e33855c08fc691dbbbbc72b3.tar.gz |
vble: move get_bits_left() check out of inner loop, we can perform the check completely before the loop.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/vble.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/vble.c b/libavcodec/vble.c index 41d78dc6cd..1790a39e17 100644 --- a/libavcodec/vble.c +++ b/libavcodec/vble.c @@ -41,6 +41,7 @@ typedef struct { static int vble_unpack(VBLEContext *ctx, GetBitContext *gb) { int i; + int allbits = 0; static const uint8_t LUT[256] = { 8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, @@ -68,16 +69,17 @@ static int vble_unpack(VBLEContext *ctx, GetBitContext *gb) return -1; ctx->len[i] = 8; } + allbits += ctx->len[i]; } + /* Check we have enough bits left */ + if (get_bits_left(gb) < allbits) + return -1; + /* For any values that have length 0 */ memset(ctx->val, 0, ctx->size); for (i = 0; i < ctx->size; i++) { - /* Check we have enough bits left */ - if (get_bits_left(gb) < ctx->len[i]) - return -1; - /* get_bits can't take a length of 0 */ if (ctx->len[i]) ctx->val[i] = (1 << ctx->len[i]) + get_bits(gb, ctx->len[i]) - 1; |