Fixes a bug in the init() functions where were weren't zeroing the entire state

This commit is contained in:
Jean-Marc Valin 2011-05-19 17:25:48 -04:00
parent 103302b375
commit baed21dc9d
2 changed files with 4 additions and 6 deletions

View file

@ -65,16 +65,15 @@ OpusDecoder *opus_decoder_init(OpusDecoder *st, int Fs, int channels)
{ {
void *silk_dec; void *silk_dec;
CELTDecoder *celt_dec; CELTDecoder *celt_dec;
int ret, silkDecSizeBytes, celtDecSizeBytes; int ret, silkDecSizeBytes;
memset(st, 0, sizeof(OpusDecoder)); memset(st, 0, opus_decoder_get_size(channels));
/* Initialize SILK encoder */ /* Initialize SILK encoder */
ret = silk_Get_Decoder_Size( &silkDecSizeBytes ); ret = silk_Get_Decoder_Size( &silkDecSizeBytes );
if( ret ) { if( ret ) {
return NULL; return NULL;
} }
silkDecSizeBytes = align(silkDecSizeBytes); silkDecSizeBytes = align(silkDecSizeBytes);
celtDecSizeBytes = celt_decoder_get_size(channels);
st->silk_dec_offset = align(sizeof(OpusDecoder)); st->silk_dec_offset = align(sizeof(OpusDecoder));
st->celt_dec_offset = st->silk_dec_offset+silkDecSizeBytes; st->celt_dec_offset = st->silk_dec_offset+silkDecSizeBytes;
silk_dec = (char*)st+st->silk_dec_offset; silk_dec = (char*)st+st->silk_dec_offset;

View file

@ -80,15 +80,14 @@ OpusEncoder *opus_encoder_init(OpusEncoder* st, int Fs, int channels)
void *silk_enc; void *silk_enc;
CELTEncoder *celt_enc; CELTEncoder *celt_enc;
int err; int err;
int ret, silkEncSizeBytes, celtEncSizeBytes; int ret, silkEncSizeBytes;
memset(st, 0, sizeof(OpusEncoder)); memset(st, 0, opus_encoder_get_size(channels));
/* Create SILK encoder */ /* Create SILK encoder */
ret = silk_Get_Encoder_Size( &silkEncSizeBytes ); ret = silk_Get_Encoder_Size( &silkEncSizeBytes );
if( ret ) if( ret )
return NULL; return NULL;
silkEncSizeBytes = align(silkEncSizeBytes); silkEncSizeBytes = align(silkEncSizeBytes);
celtEncSizeBytes = celt_encoder_get_size(channels);
st->silk_enc_offset = align(sizeof(OpusEncoder)); st->silk_enc_offset = align(sizeof(OpusEncoder));
st->celt_enc_offset = st->silk_enc_offset+silkEncSizeBytes; st->celt_enc_offset = st->silk_enc_offset+silkEncSizeBytes;
silk_enc = (char*)st+st->silk_enc_offset; silk_enc = (char*)st+st->silk_enc_offset;