资源简介
实现对wav文件进行mp3编码,已在vc下编译调试通过,保证好使

代码片段和文件信息
/* bitstream.c */
#include “types.h“
extern int *scalefac_band_long;
static void encodeSideInfo( L3_side_info_t *si );
static int encodeMainData(int l3_enc[2][2][samp_per_frame2]
L3_side_info_t *si );
static void Huffmancodebits( int *ix gr_info *gi );
static int HuffmanCode(int table_select int x int y unsigned int *code
unsigned int *extword int *codebits int *extbits);
static int L3_huffman_coder_count1( struct huffcodetab *h
int v int w int x int y );
/* bitstream buffers.
* At a 24K samplerate and 8k bitrate in stereo sideinfo can be up to 86 frames
* ahead of its main data ( very silly combination ) */
#define FIFO_SIZE 128
static struct
{
int si_len; /* number of bytes in side info */
int fr_len; /* number of data bytes in frame */
unsigned char side[40]; /* side info max len = (288 bits / 8) + 1 which gets cleared */
} fifo[FIFO_SIZE];
static unsigned char main_[4096]; /* main data buffer (length always less than this) */
static int wr=0 rd=0; /* read and write index for side fifo */
static int by=0 bi=0; /* byte and bit counts within main or side stores */
static int count=0; /* byte counter within current frame */
static int bits=0; /* bit counter used when encoding side and main data */
static struct
{
FILE *f; /* bitstream output file handle */
unsigned int i; /* file buffer index */
unsigned char *b; /* buffer pointer */
} bs;
static unsigned char header[4];
#define BUFFER_SIZE 0x8000 /* output buffer size in bytes */
/*
* putbytes
* --------
* put n bytes in the output buffer. Empty the buffer when full.
*/
void putbytes(unsigned char *data int n)
{
unsigned int free = BUFFER_SIZE - bs.i;
if(n >= free)
{
// memcpy(&bs.b[bs.i]data(short)free);
memcpy(&bs.b[bs.i]datafree);
n -= free;
fwrite(bs.bsizeof(unsigned char)BUFFER_SIZEbs.f);
// memcpy(bs.b&data[free](short)n);
memcpy(bs.b&data[free]n);
bs.i = n;
}
else
{
// memcpy(&bs.b[bs.i]data(short)n);
memcpy(&bs.b[bs.i]datan);
bs.i += n;
}
}
/*
* setbytes
* --------
* set n bytes in the output buffer. Empty the buffer when full.
*/
void setbytes(unsigned char data int n)
{
unsigned int free = BUFFER_SIZE - bs.i;
if(n >= free)
{
// memset(&bs.b[bs.i]data(short)free);
memset(&bs.b[bs.i]datafree);
n -= free;
fwrite(bs.bsizeof(unsigned char)BUFFER_SIZEbs.f);
// memset(bs.bdata(short)n);
memset(bs.bdatan);
bs.i = n;
}
else
{
// memset(&bs.b[bs.i]data(short)n);
memset(&bs.b[bs.i]datan);
bs.i += n;
}
}
/*
* open_bit_stream
* ---------------
* open the device to write the bit stream into it
*/
void open_bit_stream(char *filename)
{
static unsigned char buff[BUFFER_SIZE];
if ((bs.f = fopen(filename “wb“)) == NULL)
error(“Unable to
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 19276 2009-12-21 14:59 mp3_encode_fixed\Debug\bitstream.obj
文件 14151 2009-12-29 11:33 mp3_encode_fixed\Debug\coder.obj
文件 12558 2009-12-18 20:03 mp3_encode_fixed\Debug\huffman.obj
文件 6599 2010-04-15 20:21 mp3_encode_fixed\Debug\la
文件 36535 2009-12-24 16:16 mp3_encode_fixed\Debug\loop.obj
文件 13484 2010-04-15 20:20 mp3_encode_fixed\Debug\main.obj
文件 237648 2010-04-15 20:21 mp3_encode_fixed\Debug\mp3_encode_fixed.exe
文件 214700 2010-04-15 20:21 mp3_encode_fixed\Debug\mp3_encode_fixed.ilk
文件 223664 2010-04-15 20:21 mp3_encode_fixed\Debug\mp3_encode_fixed.pch
文件 566272 2010-04-15 20:21 mp3_encode_fixed\Debug\mp3_encode_fixed.pdb
文件 2440 2009-12-09 14:38 mp3_encode_fixed\Debug\testtime.obj
文件 2304 2009-12-18 18:16 mp3_encode_fixed\Debug\utils.obj
文件 58368 2010-04-19 19:18 mp3_encode_fixed\Debug\vc60.idb
文件 53248 2010-04-15 20:21 mp3_encode_fixed\Debug\vc60.pdb
文件 9058 2009-12-29 11:16 mp3_encode_fixed\Debug\wave.obj
文件 17261 2010-04-14 20:22 mp3_encode_fixed\include\table1.h
文件 41023 2009-12-18 20:06 mp3_encode_fixed\include\table2.h
文件 3743 2010-04-15 20:21 mp3_encode_fixed\include\types.h
文件 237 2009-12-21 10:33 mp3_encode_fixed\include\utils.h
文件 5150 2010-04-14 20:29 mp3_encode_fixed\mp3_encode_fixed.dsp
文件 540 2009-11-30 10:32 mp3_encode_fixed\mp3_encode_fixed.dsw
文件 91136 2010-04-27 15:32 mp3_encode_fixed\mp3_encode_fixed.ncb
文件 51712 2010-04-27 15:32 mp3_encode_fixed\mp3_encode_fixed.opt
文件 266 2010-04-19 19:18 mp3_encode_fixed\mp3_encode_fixed.plg
文件 15325 2009-12-21 14:25 mp3_encode_fixed\source\bitstream.c
文件 4046 2009-12-29 11:33 mp3_encode_fixed\source\coder.c
文件 13993 2009-12-18 20:03 mp3_encode_fixed\source\huffman.c
文件 4426 2010-04-15 20:21 mp3_encode_fixed\source\la
文件 15706 2009-12-24 16:15 mp3_encode_fixed\source\loop.c
文件 6211 2010-04-14 20:24 mp3_encode_fixed\source\main.c
............此处省略8个文件信息
相关资源
- 瑞利信道的仿真,包括信号的调制,
- 八三编码器设计 VHDL代码 简单,包附
- mp3解析文档及其分析工具
- 在高斯白噪声信道下的QPSK编码误码率
- 信息论与编码(仇佩亮编著 高等教育
- UNICODE GBK双向码表二进制文件
- MP3文件ID3v2ID3v2APEv2标签读取
- LPC线性预测分析及编码
- 常用编码(UnicodeUTF-8GBK)转换工具
- L-Z编码L-Z解码
- 1553曼彻斯特编码程序
- 全自动多功能编码转换工具(URLASCI
- H.264编码器流程图
- 建立文件数据索引的c 代码
- 易语言QQTEA算法源码
- XSS Encode
- 基于三菱PLC-松下A6伺服485通讯-读编码
- LabVIEW 数据采集 模拟量+编码器(Daq
- UTF8编码表汉字对照
- 易语言搜搜mp3源码
- H.264视频编码基本知识
- 6通道增量式编码器在智控型纺织机的
-
MP3Pla
yer播放器 - 音频测试文件pcmmp3aacamrg711ag711u等多种
- 一种基于DAB接收机的MP3播放器设计方
- 矿井巷道时频编码协作MC-CDMA信道估计
- 易语言查询话费欠费信息源码
- 易语言图像编码、解码器源码易语言
- 哈夫曼树编码和译码实验报告+运行视
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论