summaryrefslogtreecommitdiff
path: root/libavcodec/vble.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-12 02:02:22 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-12 03:08:38 +0100
commitdde0af2df1caffb9e33855c08fc691dbbbbc72b3 (patch)
tree2766161f59492035e22c9dbd08a1a5ac85a1d146 /libavcodec/vble.c
parente3618cd4a805a6260ac516105206391bfab6a319 (diff)
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>
Diffstat (limited to 'libavcodec/vble.c')
-rw-r--r--libavcodec/vble.c10
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;