void opus_fft_free(const kiss_fft_state *cfg) { if (cfg) { opus_free((opus_int16*)cfg->bitrev); if (cfg->shift < 0) opus_free((kiss_twiddle_cpx*)cfg->twiddles); opus_free((kiss_fft_state*)cfg); } }
OpusDecoder *opus_decoder_create(opus_int32 Fs, int channels, int *error) { int ret; OpusDecoder *st; if ((Fs!=48000&&Fs!=24000&&Fs!=16000&&Fs!=12000&&Fs!=8000) || (channels!=1&&channels!=2)) { if (error) *error = OPUS_BAD_ARG; return NULL; } st = (OpusDecoder *)opus_alloc(opus_decoder_get_size(channels)); if (st == NULL) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } ret = opus_decoder_init(st, Fs, channels); if (error) *error = ret; if (ret != OPUS_OK) { opus_free(st); st = NULL; } return st; }
OpusMSDecoder *opus_multistream_decoder_create( opus_int32 Fs, int channels, int streams, int coupled_streams, const unsigned char *mapping, int *error ) { int ret; OpusMSDecoder *st; if ((channels>255) || (channels<1) || (coupled_streams>streams) || (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0)) { if (error) *error = OPUS_BAD_ARG; return NULL; } st = (OpusMSDecoder *)opus_alloc(opus_multistream_decoder_get_size(streams, coupled_streams)); if (st==NULL) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } ret = opus_multistream_decoder_init(st, Fs, channels, streams, coupled_streams, mapping); if (error) *error = ret; if (ret != OPUS_OK) { opus_free(st); st = NULL; } return st; }
OpusMSEncoder *opus_multistream_encoder_create( opus_int32 Fs, int channels, int streams, int coupled_streams, const unsigned char *mapping, int application, int *error ) { int ret; OpusMSEncoder *st = (OpusMSEncoder *)opus_alloc(opus_multistream_encoder_get_size(streams, coupled_streams)); if (st==NULL) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } ret = opus_multistream_encoder_init(st, Fs, channels, streams, coupled_streams, mapping, application); if (ret != OPUS_OK) { opus_free(st); st = NULL; } if (error) *error = ret; return st; }
OpusProjectionDecoder *opus_projection_decoder_create( opus_int32 Fs, int channels, int streams, int coupled_streams, unsigned char *demixing_matrix, opus_int32 demixing_matrix_size, int *error) { int size; int ret; OpusProjectionDecoder *st; /* Allocate space for the projection decoder. */ size = opus_projection_decoder_get_size(channels, streams, coupled_streams); if (!size) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } st = (OpusProjectionDecoder *)opus_alloc(size); if (!st) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } /* Initialize projection decoder with provided settings. */ ret = opus_projection_decoder_init(st, Fs, channels, streams, coupled_streams, demixing_matrix, demixing_matrix_size); if (ret != OPUS_OK) { opus_free(st); st = NULL; } if (error) *error = ret; return st; }
OpusMSEncoder *opus_multistream_surround_encoder_create( opus_int32 Fs, int channels, int mapping_family, int *streams, int *coupled_streams, unsigned char *mapping, int application, int *error ) { int ret; opus_int32 size; OpusMSEncoder *st; if ((channels>255) || (channels<1)) { if (error) *error = OPUS_BAD_ARG; return NULL; } size = opus_multistream_surround_encoder_get_size(channels, mapping_family); if (!size) { if (error) *error = OPUS_UNIMPLEMENTED; return NULL; } st = (OpusMSEncoder *)opus_alloc(size); if (st==NULL) { if (error) *error = OPUS_ALLOC_FAIL; return NULL; } ret = opus_multistream_surround_encoder_init(st, Fs, channels, mapping_family, streams, coupled_streams, mapping, application); if (ret != OPUS_OK) { opus_free(st); st = NULL; } if (error) *error = ret; return st; }
void opus_custom_decoder_destroy(CELTDecoder *st) { opus_free(st); }
void opus_decoder_destroy(OpusDecoder *st) { opus_free(st); }
void opus_multistream_decoder_destroy(OpusMSDecoder *st) { opus_free(st); }
void opus_repacketizer_destroy(OpusRepacketizer *rp) { opus_free(rp); }
void opus_multistream_encoder_destroy(OpusMSEncoder *st) { opus_free(st); }
void opus_projection_decoder_destroy(OpusProjectionDecoder *st) { opus_free(st); }