3.3音频解压缩与回放
音频解压缩部份也在winio.dll封装,在VB程序中调用,解压部份用了话音压缩解码库G729a.lib中的函数va_g729a_init_decoder()。
bool _stdcall talk729decoderinit ()//初始化解码器
{
va_g729a_init_decoder();
return TRUE;
}
bool _stdcall DecodeAudioData( BYTE* pin,int len,short* pout,int* lenr)
//解压音频数据, 一次解压260字节压缩数据,
{
va_g729a_decoder(pin, pout,0);
va_g729a_decoder(pin+10, pout+80,0);
va_g729a_decoder(pin+20, pout+160,0);
va_g729a_decoder(pin+30, pout+240,0);
…
va_g729a_decoder(pin+250, pout+1820,0);
return TRUE;
}
解压缩函数void va_g729a_decoder(unsigned char *bitstream, short *synth_short, int bfi),每次解压10个字节 数据,变成80个16 位 数据,是压缩的反过程。
3.4 封装在VB6.0 调用的函数
bool _stdcall talk729decoderinit ()//初始化解压器
bool _stdcall DecodeAudioData( BYTE* pin,int len,short* pout,int* lenr)//解压音频数据, 一次解压260字节压缩数据。
bool _stdcall sendhwndtlp(HWND apitexthwnd,unsigned char* apilpmax,HWND apistorekhwnd,short* apilpalldata1,short* apilpalldata2,unsigned char* apilpcodedata)//向DLL传送句柄与数据地址指针
|