//G711 PCMA编码
bool CEncoder::G711A_AudioEncode(LPBYTE pInput, unsigned int nInLen, LPBYTE pOutput, unsigned int& nOutLen)
{
if(!pInput || !pOutput || nInLen <= 0)
return false;
unsigned int out_size = (nInLen >> 1);
uint8_t* pout_data = pOutput;
int16_t* pin_data = (int16_t*)pInput;
for(int i=0; i<out_size; i++)
{
pout_data[i] = linear2alaw(pin_data[i]);
}
nOutLen = out_size;
return true;
}
//G711 PCMU编码
bool CEncoder::G711U_AudioEncode(LPBYTE pInput, unsigned int nInLen, LPBYTE pOutput, unsigned int& nOutLen)
{
if(!pInput || !pOutput || nInLen <= 0)
return false;
unsigned int out_size = (nInLen >> 1);
uint8_t* pout_data = pOutput;
int16_t* pin_data = (int16_t*)pInput;
for(int i=0; i<out_size; i++)
{
pout_data[i] = linear2ulaw(pin_data[i]);
}
nOutLen = out_size;
return true;
}原文:http://blog.csdn.net/acm2008/article/details/44649563