19,469
社区成员
发帖
与我相关
我的任务
分享
#define CANNELS 1
#define SAMPLE_RATE (44100/2)
#define BITS_PER_SAMPLE 16
wf.wFormatTag = WAVE_FORMAT_PCM; // PCM格式
wf.nChannels = CANNELS; // 单声道
wf.wBitsPerSample = BITS_PER_SAMPLE; // 16位的样本
wf.nSamplesPerSec = SAMPLE_RATE; // 44100/2的采样率
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8; // 这个不用设置了
wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign; // 这个也是
int main ()
{
Record ();
/* let us encode it ! */
{
int Tick = GetTickCount ();
lame_global_flags *gfp;
gfp = lame_init ();
lame_set_bWriteVbrTag(gfp, 0);
lame_set_errorf(gfp,error_hander);
lame_set_debugf(gfp,error_hander);
lame_set_msgf(gfp,error_hander);
lame_set_num_channels(gfp, CANNELS);
lame_set_in_samplerate(gfp, SAMPLE_RATE);
lame_set_brate(gfp, 128);
lame_set_mode(gfp, MONO);
lame_set_quality(gfp, 2); /* 2=high 5 = medium 7=low */
//lame_set_out_samplerate (gfp, SAMPLE_RATE);
lame_init_params (gfp);
int num_samples = DataSize/BITS_PER_SAMPLE*8/CANNELS;
unsigned mp3buffer_size = (unsigned)(1.25 * num_samples + 7200);
mp3Data = new unsigned char[mp3buffer_size];
Mp3Size = 0;
Mp3Size = lame_encode_buffer(gfp,
(short *)wh.lpData, 0,
num_samples, mp3Data, mp3buffer_size);
Mp3Size += lame_encode_flush (gfp, mp3Data, mp3buffer_size);
lame_mp3_tags_fid(gfp, 0);
lame_close(gfp);
printf("lame spent : %u\n", GetTickCount () - Tick);
}
ZeroMemory (wh.lpData, DataSize);
// let us decode it!
hip_t hip = hip_decode_init ();
mp3data_struct md;
int DecodeSize;
DecodeSize = hip_decode_headers (hip, mp3Data, Mp3Size, (short *)wh.lpData, 0, &md);
hip_decode_exit (hip);
printf ("mp3Data Size : %u, OrgSize : %u decodeSize: %u\t %0.2f%% \n", Mp3Size, DataSize, DecodeSize, Mp3Size*100.0/DataSize);
Replay();
printf ("press any key to exit;\n");
getchar ();
}