# HG changeset patch # User michael # Date 1170508555 0 # Node ID a2e82396193ccb6cdd883dd551973783502cd578 # Parent 5455cb5a759ccb84020a53f978251a9f410ba638 factorize switch_buffer() diff -r 5455cb5a759c -r a2e82396193c mpegaudiodec.c --- a/mpegaudiodec.c Sat Feb 03 12:42:12 2007 +0000 +++ b/mpegaudiodec.c Sat Feb 03 13:15:55 2007 +0000 @@ -1592,6 +1592,19 @@ return get_bits(s, n); } + +static void switch_buffer(MPADecodeContext *s, int *pos, int *end_pos, int *end_pos2){ + if(s->in_gb.buffer && *pos >= s->gb.size_in_bits){ + s->gb= s->in_gb; + s->in_gb.buffer=NULL; + assert((get_bits_count(&s->gb) & 7) == 0); + skip_bits_long(&s->gb, *pos - *end_pos); + *end_pos2= + *end_pos= *end_pos2 + get_bits_count(&s->gb) - *pos; + *pos= get_bits_count(&s->gb); + } +} + static int huffman_decode(MPADecodeContext *s, GranuleDef *g, int16_t *exponents, int end_pos2) { @@ -1627,15 +1640,7 @@ if (pos >= end_pos){ // av_log(NULL, AV_LOG_ERROR, "pos: %d %d %d %d\n", pos, end_pos, end_pos2, s_index); - if(s->in_gb.buffer && pos >= s->gb.size_in_bits){ - s->gb= s->in_gb; - s->in_gb.buffer=NULL; - assert((get_bits_count(&s->gb) & 7) == 0); - skip_bits_long(&s->gb, pos - end_pos); - end_pos2= - end_pos= end_pos2 + get_bits_count(&s->gb) - pos; - pos= get_bits_count(&s->gb); - } + switch_buffer(s, &pos, &end_pos, &end_pos2); // av_log(NULL, AV_LOG_ERROR, "new pos: %d %d\n", pos, end_pos); if(pos >= end_pos) break; @@ -1712,15 +1717,7 @@ break; } // av_log(NULL, AV_LOG_ERROR, "pos2: %d %d %d %d\n", pos, end_pos, end_pos2, s_index); - if(s->in_gb.buffer && pos >= s->gb.size_in_bits){ - s->gb= s->in_gb; - s->in_gb.buffer=NULL; - assert((get_bits_count(&s->gb) & 7) == 0); - skip_bits_long(&s->gb, pos - end_pos); - end_pos2= - end_pos= end_pos2 + get_bits_count(&s->gb) - pos; - pos= get_bits_count(&s->gb); - } + switch_buffer(s, &pos, &end_pos, &end_pos2); // av_log(NULL, AV_LOG_ERROR, "new pos2: %d %d %d\n", pos, end_pos, s_index); if(pos >= end_pos) break; @@ -1760,12 +1757,7 @@ skip_bits_long(&s->gb, bits_left); i= get_bits_count(&s->gb); - if(s->in_gb.buffer && i >= s->gb.size_in_bits){ - s->gb= s->in_gb; - s->in_gb.buffer=NULL; - assert((get_bits_count(&s->gb) & 7) == 0); - skip_bits_long(&s->gb, i - end_pos); - } + switch_buffer(s, &i, &end_pos, &end_pos2); return 0; }