Based on a patch by Alex Beregszaszi.
Originally committed as revision 10279 to svn://svn.ffmpeg.org/ffmpeg/trunk
#include "avcodec.h"
#include "bitstream.h"
#include "bytestream.h"
+#include "unary.h"
#define ALAC_EXTRADATA_SIZE 36
#define MAX_CHANNELS 2
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 */
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);
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 */