作者guybejude (aaa)
看板Language
标题[问题]使用msdn上的acmStreamConvert压缩档案ꨠ…
时间Tue Aug 9 23:13:35 2005
※ [本文转录自 C_and_CPP 看板]
作者: guybejude (aaa) 看板: C_and_CPP
标题: [问题]使用msdn上的acmStreamConvert压缩档案的问题
时间: Tue Aug 9 19:00:28 2005
大家好,
小弟我欲写一个程式可以进行音频压缩,也就是PCM->G.711 A-Law
我参照了以下的网址,而进行改写。
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarmulmed
/html/msdn_codec.asp
及
http://david.weekly.org/code/mp3acm.html
我的程式目的是将default的PCM转成defaul的G.711 A-Law格式。
程式可正常执行,但是在转换档案方面确有问题。即是,所转出来的wav档(A-Law format)
不被windows读取。
// open file
FILE *fpIn = fopen( INPUT_FILE, "rb" );
if( fpIn == NULL ){
assert( !"can't open WAVE file!" );
return E_FAIL;
}
//// let's dump this data off to disk
FILE *fpOut = fopen( OUTPUT_FILE, "wb" );
if( fpOut == NULL ){
assert( !"can't output output PCM!" );
return E_FAIL;
}
.....
while(1) {
// suck in some WAV data
int count = fread( srcbuf, 1, BLOCK_SIZE, fpIn );
//从来源档读入BLOCK_SIZE大小之资料入srcbuf中
if( count != BLOCK_SIZE ) break;
//if (count<=0)
// convert the data
// 在srcbuf中资料将进行转换,且将已转换好之资料存入rawbuf中
mmr = acmStreamConvert(hstr, &strhdr, 0);
if (mmr) {
printf("Failed to do PCM to driver format conversion\n");
exit(1);
}
// write the decoded PCM to disk
count = fwrite( rawbuf, 1, strhdr.cbDstLengthUsed, fpOut );
assert( count == strhdr.cbDstLengthUsed );
}
......
谢谢指导,
:)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.162.169
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.162.169
1F:嘘 jslu:真是天兵... 这不是电脑语言板啦!!! XD140.112.195.150 08/11