decodificação speex dando errado

Estou usando o speex para codificar alguns dados de áudio e enviá-los pelo UDP e decodificá-los do outro lado. Fiz alguns testes com speex e notei que, se decodificar um pacote logo após a codificação, os dados decodificados não estarão nem perto dos dados originais. A maioria dos bytes no início do buffer é 0. Portanto, quando decodifico o áudio enviado pelo UDP, tudo o que recebo é ruído. É assim que estou codificando o áudio:

bool AudioEncoder::encode( float *raw, char *encoded_bits )
{
    for ( size_t i = 0; i < 256; i++ )
        this->_rfdata[i] = raw[i];
    speex_bits_reset(&this->_bits);
    speex_encode(this->_state, this->_rfdata, &this->_bits);
    int bytesWritten = speex_bits_write(&this->_bits, encoded_bits, 512);
    if (bytesWritten),
        return true;
    return false;
}

é assim que eu estou decodificando o áudio:

float *f = new float[256];
// recvbuf is the buffer I pass to my recv function on the socket
speex_bits_read_from(&this->_bits, recvbuf, 512);
speex_decode(this->state, &this->_bits, f);

Verifiquei os documentos e a maior parte do meu código vem do exemplo de exemplo de codificação / decodificação do site speex. Não tenho certeza do que estou perdendo aqui.

questionAnswers(3)

yourAnswerToTheQuestion