[SCM] libav/experimental: factorize switch_buffer()
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 15:55:54 UTC 2013
The following commit has been merged in the experimental branch:
commit 5773d46009d63182217798f0d0dd31115f4a157e
Author: Michael Niedermayer <michaelni at gmx.at>
Date: Sat Feb 3 13:15:55 2007 +0000
factorize switch_buffer()
Originally committed as revision 7813 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 998efb8..ef3384b 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -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;
}
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list