bitstream.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #include "mpeg3private.h"
  2. #include "mpeg3protos.h"
  3. #include "bitstream.h"
  4. #include <stdlib.h>
  5. mpeg3_bits_t *mpeg3bits_new_stream(void)
  6. {
  7. mpeg3_bits_t *stream = malloc(sizeof(mpeg3_bits_t));
  8. stream->bfr = 0;
  9. stream->bfr_size = 0;
  10. stream->bit_number = 0;
  11. stream->input_ptr = NULL;
  12. return stream;
  13. }
  14. int mpeg3bits_delete_stream(mpeg3_bits_t* stream)
  15. {
  16. free(stream);
  17. return 0;
  18. }
  19. /* For mp3 decompression use a pointer in a buffer for getbits. */
  20. int mpeg3bits_use_ptr(mpeg3_bits_t* stream, unsigned char *buffer)
  21. {
  22. stream->bfr_size = stream->bit_number = 0;
  23. stream->bfr = 0;
  24. stream->input_ptr = buffer;
  25. stream->orig_ptr = buffer;
  26. stream->buflen = 65535;
  27. return 0;
  28. }
  29. int mpeg3bits_use_ptr_len(mpeg3_bits_t *stream, unsigned char *buffer,
  30.   long buflen)
  31. {
  32.   stream->bfr_size = stream->bit_number = 0;
  33.   stream->bfr = 0;
  34.   stream->input_ptr = buffer;
  35.   stream->orig_ptr = buffer;
  36.   stream->buflen = buflen;
  37.   return 0;
  38. }
  39. /* Erase the buffer with the next 4 bytes in the file. */
  40. int mpeg3bits_refill(mpeg3_bits_t* stream)
  41. {
  42. stream->bit_number = 32;
  43. stream->bfr_size = 32;
  44. stream->bfr = (unsigned int)(*stream->input_ptr++) << 24;
  45. stream->bfr |= (unsigned int)(*stream->input_ptr++) << 16;
  46. stream->bfr |= (unsigned int)(*stream->input_ptr++) << 8;
  47. stream->bfr |= *stream->input_ptr++;
  48. return mpeg3bits_eof(stream);
  49. }
  50. int mpeg3bits_byte_align(mpeg3_bits_t *stream)
  51. {
  52. stream->bit_number = (stream->bit_number + 7) & 0xf8;
  53. return 0;
  54. }
  55. int mpeg3bits_getbitoffset(mpeg3_bits_t *stream)
  56. {
  57. return stream->bit_number & 7;
  58. }