www.pudn.com > NETVIDEO.rar > bitstream.c
#include "mpeg3private.h" #include "mpeg3protos.h" #include "bitstream.h" #includempeg3_bits_t *mpeg3bits_new_stream(void) { mpeg3_bits_t *stream = malloc(sizeof(mpeg3_bits_t)); stream->bfr = 0; stream->bfr_size = 0; stream->bit_number = 0; stream->input_ptr = NULL; return stream; } int mpeg3bits_delete_stream(mpeg3_bits_t* stream) { free(stream); return 0; } /* For mp3 decompression use a pointer in a buffer for getbits. */ int mpeg3bits_use_ptr(mpeg3_bits_t* stream, unsigned char *buffer) { stream->bfr_size = stream->bit_number = 0; stream->bfr = 0; stream->input_ptr = buffer; stream->orig_ptr = buffer; stream->buflen = 65535; return 0; } int mpeg3bits_use_ptr_len(mpeg3_bits_t *stream, unsigned char *buffer, long buflen) { stream->bfr_size = stream->bit_number = 0; stream->bfr = 0; stream->input_ptr = buffer; stream->orig_ptr = buffer; stream->buflen = buflen; return 0; } /* 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; 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++; return mpeg3bits_eof(stream); } int mpeg3bits_byte_align(mpeg3_bits_t *stream) { stream->bit_number = (stream->bit_number + 7) & 0xf8; return 0; } int mpeg3bits_getbitoffset(mpeg3_bits_t *stream) { return stream->bit_number & 7; }