- int i_next_real_frame_size;
- unsigned int i_next_channels, i_next_rate, i_next_bit_rate;
- unsigned int i_next_frame_length, i_next_frame_size;
- unsigned int i_next_layer;
- while ( ShowBits( &p_dec->bit_stream, 11 ) != 0x07ff &&
- (!p_dec->p_fifo->b_die) &&
- (!p_dec->p_fifo->b_error) &&
- i < (int)i_frame_size + MAD_BUFFER_GUARD )
- {
- ((uint8_t *)p_buffer->p_buffer)[i++] =
- GetBits( &p_dec->bit_stream, 8 );
- }
- if ( p_dec->p_fifo->b_die || p_dec->p_fifo->b_error
- || i == (int)i_frame_size + MAD_BUFFER_GUARD )
- break;
- i_header = ShowBits( &p_dec->bit_stream, 8 );
- i_next_real_frame_size = SyncInfo( i_header,
- &i_next_channels, &i_next_rate,
- &i_next_bit_rate, &i_next_frame_length,
- &i_next_frame_size, &i_next_layer );
- if ( i_next_real_frame_size != 0 ||
- i_next_channels != i_original_channels ||
- i_next_rate != i_rate ||
- i_next_bit_rate != i_bit_rate ||
- i_next_frame_length != i_frame_length ||
- i_next_frame_size != i_frame_size ||
- i_next_layer != i_new_layer )
- {
- /* This is an emulated start code, try again. */
- continue;
- }
- i_free_frame_size = i;
- break;