static av_cold int opus_decode_close(AVCodecContext *avctx) { OpusContext *c = avctx->priv_data; int i; for (i = 0; i < c->nb_streams; i++) { OpusStreamContext *s = &c->streams[i]; ff_silk_free(&s->silk); ff_celt_free(&s->celt); av_freep(&s->out_dummy); s->out_dummy_allocated_size = 0; av_audio_fifo_free(s->celt_delay); swr_free(&s->swr); } av_freep(&c->streams); c->nb_streams = 0; av_freep(&c->channel_maps); return 0; }
static av_cold int opus_decode_close(AVCodecContext *avctx) { OpusContext *c = avctx->priv_data; int i; for (i = 0; i < c->nb_streams; i++) { OpusStreamContext *s = &c->streams[i]; ff_silk_free(&s->silk); ff_celt_free(&s->celt); av_freep(&s->out_dummy); s->out_dummy_allocated_size = 0; av_audio_fifo_free(s->celt_delay); #if CONFIG_SWRESAMPLE swr_free(&s->swr); #elif CONFIG_AVRESAMPLE avresample_free(&s->avr); #endif } av_freep(&c->streams); if (c->sync_buffers) { for (i = 0; i < c->nb_streams; i++) av_audio_fifo_free(c->sync_buffers[i]); } av_freep(&c->sync_buffers); av_freep(&c->decoded_samples); av_freep(&c->out); av_freep(&c->out_size); c->nb_streams = 0; av_freep(&c->channel_maps); av_freep(&c->fdsp); return 0; }