/* Reconfigure for forward operation */ void mpeg3bits_start_forward(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_char(stream->demuxer); }
/* Erase the buffer with the next 4 bytes in the file. */ int mpeg3bits_refill(mpeg3_bits_t* stream) { stream->bit_number = 32; stream->bfr_size = 32; if(stream->input_ptr) { stream->bfr = (unsigned int)(*stream->input_ptr++) << 24; stream->bfr |= (unsigned int)(*stream->input_ptr++) << 16; stream->bfr |= (unsigned int)(*stream->input_ptr++) << 8; stream->bfr |= *stream->input_ptr++; } else { stream->bfr = mpeg3demux_read_char(stream->demuxer) << 24; stream->bfr |= mpeg3demux_read_char(stream->demuxer) << 16; stream->bfr |= mpeg3demux_read_char(stream->demuxer) << 8; stream->bfr |= mpeg3demux_read_char(stream->demuxer); } return mpeg3demux_eof(stream->demuxer); }
/* Reconfigure for forward operation */ void mpeg3bits_start_forward(mpeg3_bits_t* stream) { int i; // If already at the bof, the buffer is already invalid. if(stream->demuxer && mpeg3bits_bof(stream)) { stream->bfr_size = 0; stream->bit_number = 0; stream->bfr = 0; stream->input_ptr = 0; mpeg3demux_read_char(stream->demuxer); } else for(i = 0; i < stream->bfr_size; i += 8) { if(stream->input_ptr) stream->input_ptr++; else mpeg3demux_read_char(stream->demuxer); } }