diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2002-01-10 00:56:05 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2002-01-10 00:56:05 +0000 |
commit | 27a3e2c5e036b3199416b5c055a7db775e8f0620 (patch) | |
tree | d8f82222487d0eb3cfb29308773d69302c11ec85 /libavcodec/mpegaudiodec.c | |
parent | bff6ecaa9c707f31be6143946df3a7ac88ee6c9e (diff) | |
download | ffmpeg-27a3e2c5e036b3199416b5c055a7db775e8f0620.tar.gz |
another bitstream reader code (faster on intel cpus) - patch by Michael Niedermayer <michaelni@gmx.at>
Originally committed as revision 252 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegaudiodec.c')
-rw-r--r-- | libavcodec/mpegaudiodec.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index bbb3ff1c11..bb86bd0ca4 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -1371,7 +1371,11 @@ static void seek_to_maindata(MPADecodeContext *s, long backstep) UINT8 *ptr; /* compute current position in stream */ +#ifdef ALT_BITSTREAM_READER + ptr = s->gb.buffer + (s->gb.index>>3); +#else ptr = s->gb.buf_ptr - (s->gb.bit_cnt >> 3); +#endif /* copy old data before current one */ ptr -= backstep; memcpy(ptr, s->inbuf1[s->inbuf_index ^ 1] + @@ -1528,15 +1532,25 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, /* some encoders generate an incorrect size for this part. We must go back into the data */ s_index -= 4; +#ifdef ALT_BITSTREAM_READER + s->gb.buffer = last_buf_ptr; + s->gb.index = last_bit_cnt; +#else s->gb.buf_ptr = last_buf_ptr; s->gb.bit_buf = last_bit_buf; s->gb.bit_cnt = last_bit_cnt; +#endif } break; } +#ifdef ALT_BITSTREAM_READER + last_buf_ptr = s->gb.buffer; + last_bit_cnt = s->gb.index; +#else last_buf_ptr = s->gb.buf_ptr; last_bit_buf = s->gb.bit_buf; last_bit_cnt = s->gb.bit_cnt; +#endif code = get_vlc(&s->gb, vlc); dprintf("t=%d code=%d\n", g->count1table_select, code); |