Commit a85534e5 authored by Christophe Massiot's avatar Christophe Massiot

* Fixed 32 bits bitstream bugs.

parent e3636eb1
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ext-dec.h: structures exported to the VideoLAN decoders * input_ext-dec.h: structures exported to the VideoLAN decoders
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-dec.h,v 1.11 2001/01/11 15:35:35 sam Exp $ * $Id: input_ext-dec.h,v 1.12 2001/01/12 11:36:49 massiot Exp $
* *
* Authors: * Authors:
* *
...@@ -308,22 +308,15 @@ static __inline__ void RemoveBits( bit_stream_t * p_bit_stream, int i_bits ) ...@@ -308,22 +308,15 @@ static __inline__ void RemoveBits( bit_stream_t * p_bit_stream, int i_bits )
*****************************************************************************/ *****************************************************************************/
static __inline__ void RemoveBits32( bit_stream_t * p_bit_stream ) static __inline__ void RemoveBits32( bit_stream_t * p_bit_stream )
{ {
#if (WORD_TYPE == u32) if( p_bit_stream->fifo.i_available )
/* If we are word aligned, do not touch the buffer */
if( p_bit_stream->fifo.i_available == 0 )
{ {
if( p_bit_stream->p_byte > p_bit_stream->p_end - sizeof(WORD_TYPE) ) p_bit_stream->fifo.buffer = GetWord( p_bit_stream )
{ << (32 - p_bit_stream->fifo.i_available);
p_bit_stream->pf_next_data_packet( p_bit_stream ); }
} else
{
((WORD_TYPE *)p_bit_stream->p_byte)++; p_bit_stream->fifo.buffer = GetWord( p_bit_stream );
return;
} }
#endif
p_bit_stream->fifo.buffer = GetWord( p_bit_stream )
<< (32 - p_bit_stream->fifo.i_available);
} }
/***************************************************************************** /*****************************************************************************
...@@ -360,21 +353,17 @@ static __inline__ WORD_TYPE GetBits32( bit_stream_t * p_bit_stream ) ...@@ -360,21 +353,17 @@ static __inline__ WORD_TYPE GetBits32( bit_stream_t * p_bit_stream )
{ {
WORD_TYPE i_result; WORD_TYPE i_result;
#if (WORD_TYPE == u32)
/* If we are word aligned, do not touch the buffer */
if( p_bit_stream->fifo.i_available == 0 )
{
return( GetWord( p_bit_stream ) );
}
#endif
i_result = p_bit_stream->fifo.buffer; i_result = p_bit_stream->fifo.buffer;
p_bit_stream->fifo.buffer = GetWord( p_bit_stream ); p_bit_stream->fifo.buffer = GetWord( p_bit_stream );
i_result |= p_bit_stream->fifo.buffer i_result |= p_bit_stream->fifo.buffer
>> (p_bit_stream->fifo.i_available); >> (p_bit_stream->fifo.i_available);
p_bit_stream->fifo.buffer <<= (8 * sizeof(WORD_TYPE) if( p_bit_stream->fifo.i_available )
{
p_bit_stream->fifo.buffer <<= (8 * sizeof(WORD_TYPE)
- p_bit_stream->fifo.i_available); - p_bit_stream->fifo.i_available);
}
return( i_result ); return( i_result );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment