From 5bb8a0daa1bd660fd70261eaf2bba44f7aab1cd5 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 18 Apr 2005 12:08:16 +0000 Subject: [PATCH] various fixes related to the non alt_bitstream_reader Originally committed as revision 4136 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/bitstream.h | 2 +- libavcodec/dv.c | 1 + libavcodec/svq3.c | 12 ++++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h index e6177ee98c..93e1e4fca2 100644 --- a/libavcodec/bitstream.h +++ b/libavcodec/bitstream.h @@ -429,7 +429,7 @@ static inline int get_bits_count(GetBitContext *s){ # define UPDATE_CACHE(name, gb)\ if(name##_bit_count >= 0){\ name##_cache+= (int)be2me_16(*(uint16_t*)name##_buffer_ptr) << name##_bit_count;\ - ((uint16_t*)name##_buffer_ptr)++;\ + name##_buffer_ptr += 2;\ name##_bit_count-= 16;\ }\ diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 01e1ce6842..94440ed5cd 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -263,6 +263,7 @@ static const int mb_area_start[5] = { 1, 6, 21, 43, 64 }; #ifndef ALT_BITSTREAM_READER #warning only works with ALT_BITSTREAM_READER +static int re_index; //Hack to make it compile #endif static inline int get_bits_left(GetBitContext *s) diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index 6c189b5e9d..547679bf1c 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -720,7 +720,7 @@ static int svq3_decode_slice_header (H264Context *h) { } else { int length = (header >> 5) & 3; - h->next_slice_index = s->gb.index + 8*show_bits (&s->gb, 8*length) + 8*length; + h->next_slice_index = get_bits_count(&s->gb) + 8*show_bits (&s->gb, 8*length) + 8*length; if (h->next_slice_index > s->gb.size_in_bits){ av_log(h->s.avctx, AV_LOG_ERROR, "slice after bitstream end\n"); @@ -728,10 +728,10 @@ static int svq3_decode_slice_header (H264Context *h) { } s->gb.size_in_bits = h->next_slice_index - 8*(length - 1); - s->gb.index += 8; + skip_bits(&s->gb, 8); if (length > 0) { - memcpy ((uint8_t *) &s->gb.buffer[s->gb.index >> 3], + memcpy ((uint8_t *) &s->gb.buffer[get_bits_count(&s->gb) >> 3], &s->gb.buffer[s->gb.size_in_bits >> 3], (length - 1)); } } @@ -939,10 +939,10 @@ static int svq3_decode_frame (AVCodecContext *avctx, for (s->mb_y=0; s->mb_y < s->mb_height; s->mb_y++) { for (s->mb_x=0; s->mb_x < s->mb_width; s->mb_x++) { - if ( (s->gb.index + 7) >= s->gb.size_in_bits && - ((s->gb.index & 7) == 0 || show_bits (&s->gb, (-s->gb.index & 7)) == 0)) { + if ( (get_bits_count(&s->gb) + 7) >= s->gb.size_in_bits && + ((get_bits_count(&s->gb) & 7) == 0 || show_bits (&s->gb, (-get_bits_count(&s->gb) & 7)) == 0)) { - s->gb.index = h->next_slice_index; + skip_bits(&s->gb, h->next_slice_index - get_bits_count(&s->gb)); s->gb.size_in_bits = 8*buf_size; if (svq3_decode_slice_header (h))