some libmpeg2 style bitstream reader fixes (no dv doesnt yet work with it)

Originally committed as revision 1874 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2003-05-14 10:54:25 +00:00
parent cfd06ceb27
commit 924311cd98

View File

@ -157,7 +157,7 @@ static const uint16_t block_sizes[6] = {
}; };
#ifndef ALT_BITSTREAM_READER #ifndef ALT_BITSTREAM_READER
#error only works with ALT_BITSTREAM_READER #warning only works with ALT_BITSTREAM_READER
#endif #endif
/* decode ac coefs */ /* decode ac coefs */
@ -171,7 +171,10 @@ static void dv_decode_ac(DVVideoDecodeContext *s,
int pos = mb->pos; int pos = mb->pos;
int level, pos1, sign, run; int level, pos1, sign, run;
int partial_bit_count; int partial_bit_count;
#ifndef ALT_BITSTREAM_READER //FIXME
int re_index=0;
int re1_index=0;
#endif
OPEN_READER(re, &s->gb); OPEN_READER(re, &s->gb);
#ifdef VLC_DEBUG #ifdef VLC_DEBUG
@ -364,7 +367,7 @@ static inline void dv_decode_video_segment(DVVideoDecodeContext *s,
/* write the remaining bits in a new buffer only if the /* write the remaining bits in a new buffer only if the
block is finished */ block is finished */
bits_left = last_index - s->gb.index; bits_left = last_index - get_bits_count(&s->gb);
if (mb->eob_reached) { if (mb->eob_reached) {
mb->partial_bit_count = 0; mb->partial_bit_count = 0;
mb_bit_count += bits_left; mb_bit_count += bits_left;
@ -389,13 +392,13 @@ static inline void dv_decode_video_segment(DVVideoDecodeContext *s,
mb = mb1; mb = mb1;
init_get_bits(&s->gb, mb_bit_buffer, 80*8); init_get_bits(&s->gb, mb_bit_buffer, 80*8);
for(j = 0;j < 6; j++) { for(j = 0;j < 6; j++) {
if (!mb->eob_reached && s->gb.index < mb_bit_count) { if (!mb->eob_reached && get_bits_count(&s->gb) < mb_bit_count) {
dv_decode_ac(s, mb, block, mb_bit_count); dv_decode_ac(s, mb, block, mb_bit_count);
/* if still not finished, no need to parse other blocks */ /* if still not finished, no need to parse other blocks */
if (!mb->eob_reached) { if (!mb->eob_reached) {
/* we could not parse the current AC coefficient, /* we could not parse the current AC coefficient,
so we add the remaining bytes */ so we add the remaining bytes */
bits_left = mb_bit_count - s->gb.index; bits_left = mb_bit_count - get_bits_count(&s->gb);
if (bits_left > 0) { if (bits_left > 0) {
mb->partial_bit_count += bits_left; mb->partial_bit_count += bits_left;
mb->partial_bit_buffer = mb->partial_bit_buffer =
@ -410,7 +413,7 @@ static inline void dv_decode_video_segment(DVVideoDecodeContext *s,
} }
/* all blocks are finished, so the extra bytes can be used at /* all blocks are finished, so the extra bytes can be used at
the video segment level */ the video segment level */
bits_left = mb_bit_count - s->gb.index; bits_left = mb_bit_count - get_bits_count(&s->gb);
vs_bit_count += bits_left; vs_bit_count += bits_left;
bit_copy(&vs_pb, &s->gb, bits_left); bit_copy(&vs_pb, &s->gb, bits_left);
next_mb: next_mb: