示例#1
0
/* Erase the buffer with the previous 4 bytes in the file. */
int mpeg3bits_refill_backwards(mpeg3_bits_t* stream)
{
	stream->bit_number = 0;
	stream->bfr_size = 32;
	stream->bfr = mpeg3demux_read_prev_char(stream->demuxer);
	stream->bfr |= (unsigned int)mpeg3demux_read_prev_char(stream->demuxer) << 8;
	stream->bfr |= (unsigned int)mpeg3demux_read_prev_char(stream->demuxer) << 16;
	stream->bfr |= (unsigned int)mpeg3demux_read_prev_char(stream->demuxer) << 24;
	return mpeg3demux_eof(stream->demuxer);
}
示例#2
0
/* Default is forward operation */
void mpeg3bits_start_reverse(mpeg3_bits_t* stream)
{
	int i;
	for(i = 0; i < stream->bfr_size; i += 8)
		if(stream->input_ptr)
			stream->input_ptr--;
		else
			mpeg3demux_read_prev_char(stream->demuxer);
}
示例#3
0
/* Fill a buffer.  Only works if bit_number is on an 8 bit boundary */
int mpeg3bits_read_buffer(mpeg3_bits_t* stream, unsigned char *buffer, int bytes)
{
	int result, i = 0;
	while(stream->bit_number > 0)
	{
		stream->bit_number -= 8;
		mpeg3demux_read_prev_char(stream->demuxer);
	}

	stream->bit_number = 0;
	stream->bfr_size = 0;
	stream->bfr = 0;
	result = mpeg3demux_read_data(stream->demuxer, buffer, bytes);
	return result;
}