⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitstream.c

📁 MPEG-4编解码的实现(包括MPEG4视音频编解码)
💻 C
字号:
#include "mpeg3private.h"
#include "mpeg3protos.h"
#include "bitstream.h"
#include <stdlib.h>

mpeg3_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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -