Speex语音聊天:尝试解码时EXC_BAD_ACCESS崩溃

时间:2011-08-14 15:58:23

标签: c exc-bad-access speex

我正在开发语音聊天,我使用speex来压缩正在传输的数据。 但是当我尝试解码收到的数据时遇到了崩溃。 我使用以下代码压缩数据:

Init方法(仅运行一次):

/*Create a new encoder state in narrowband mode*/
state = speex_encoder_init(&speex_nb_mode);

/*Set the quality to 8 (15 kbps)*/
int tmp=8;
speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);

speex_bits_init(&bits);

压缩方法:

AudioBuffer sourceBuffer = bufferList->mBuffers[0];
speex_bits_reset(&bits);
/*Encode the frame*/
speex_encode(state, sourceBuffer.mData, &bits);
char cbits[200];
int nbBytes = speex_bits_write(&bits, cbits, 200);

NSData *result = [[NSData alloc] initWithBytes:cbits length:200];

解压缩方法:

NSLog(@"Lenght %d", [data length]);
speex_bits_reset(&bits);

/*Copy the data into the bit-stream struct*/
speex_bits_read_from(&bits, (void*)[data bytes], [data length]);

/*Decode the data*/
speex_decode(state, &bits, tempBuffer.mData);

与之前相同的初始化

它在speex_decode没有错误时崩溃。我检查了输入NSData和输出的长度,它们是相同的。内部的字节是相同的。

1 个答案:

答案 0 :(得分:0)

Euh,你是否实际将编码器状态传递给speex_decode()??