两个手机同时打开Lte-Voip,通话,由于之前做了一个加密功能,
在3G,2G通话都没有问题,正常,其中一个手机是4G,也正常;如果
同时是4G Voip,会出现提示“网络信号错误,丢失,无法通话”;
查看了初步的代码,得出基本的结论,修改的代码不会影响网络,只
可能是Modem直接死掉;然后根据这个原则,判断是内存分配或使用上的问题;
经过log打印,发现果真如此。
原来2G,3G,4G在数据的up,dn时,所采用的编码格式不一样,4G Voip
实际上走的数据业务,可通讯的语音数据量大了一倍640,另外4G语音PCM采样率也大一倍16K,
所以问题....
解决方案,使用动态获取返回大小。
Android侧代码:
retval = mSpeechMessenger->readMdDataFromShareMemory(
mP4WSDBuf,
&data_type,
&data_size,
p_sph_msg->length,
p_sph_msg->rw_index);
// share memory
retval = mSpeechMessenger->writeApDataToShareMemory(mMicData,
SHARE_BUFF_DATA_TYPE_PCM_FillSE,
320, ///// 首要怀疑点,
&payload_length,
&write_idx);
Modem侧代码:
void spc_pcmNWay_writeSEDataDone(kal_uint16 offset, {
ASSERT(info.syncWord == 0xA2A2);
ASSERT(info.type == AUD_CCCI_STRMBUF_TYPE_PCM_FillSE);
ASSERT(info.length == (length - sizeof(spcBufInfo)));
if(info.length >0){
ASSERT(info.length == gSpc_Pcm4way.seBufSize);