diff --git a/libavcodec/alac.c b/libavcodec/alac.c index 257ad1c119..777c720f34 100644 --- a/libavcodec/alac.c +++ b/libavcodec/alac.c @@ -55,6 +55,7 @@ #include "avcodec.h" #include "bitstream.h" #include "bytestream.h" +#include "unary.h" #define ALAC_EXTRADATA_SIZE 36 #define MAX_CHANNELS 2 @@ -159,14 +160,12 @@ static void bastardized_rice_decompress(ALACContext *alac, int sign_modifier = 0; for (output_count = 0; output_count < output_size; output_count++) { - int32_t x = 0; + int32_t x; int32_t x_modified; int32_t final_val; /* read x - number of 1s before 0 represent the rice */ - while (x <= 8 && get_bits1(&alac->gb)) { - x++; - } + x = get_unary_0_9(&alac->gb); if (x > 8) { /* RICE THRESHOLD */ /* use alternative encoding */ @@ -227,10 +226,7 @@ static void bastardized_rice_decompress(ALACContext *alac, sign_modifier = 1; - x = 0; - while (x <= 8 && get_bits1(&alac->gb)) { - x++; - } + x = get_unary_0_9(&alac->gb); if (x > 8) { block_size = get_bits(&alac->gb, 16); diff --git a/libavcodec/unary.h b/libavcodec/unary.h index 0f600cc4e0..5484be4d56 100644 --- a/libavcodec/unary.h +++ b/libavcodec/unary.h @@ -48,4 +48,9 @@ static inline int get_unary_0_33(GetBitContext *gb) return get_unary(gb, 0, 33); } +static inline int get_unary_0_9(GetBitContext *gb) +{ + return get_unary(gb, 0, 9); +} + #endif /* AVCODEC_UNARY_H */