factorize switch_buffer()
Originally committed as revision 7813 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e0cf92048a
commit
5773d46009
@ -1592,6 +1592,19 @@ static inline int get_bitsz(GetBitContext *s, int n)
|
||||
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 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g,
|
||||
|
||||
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 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g,
|
||||
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 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g,
|
||||
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user