Голосовой чат Speex: сбой EXC_BAD_ACCESS при попытке декодирования - PullRequest
0 голосов
/ 14 августа 2011

Я разрабатываю голосовой чат и использую speex для сжатия передаваемых данных.Но я столкнулся с падением, когда я пытаюсь декодировать полученные данные.Я сжимаю данные, используя этот код:

Метод инициализации (выполняется только один раз):

/*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 голосов
/ 16 сентября 2011

Э-э, вы действительно передаете состояние кодировщика в speex_decode () ??

...