Commit 370b44cd authored by Justin Ruggles's avatar Justin Ruggles

nellymoserenc: improve error checking in encode_init()

parent 333506c3
...@@ -127,10 +127,24 @@ static void apply_mdct(NellyMoserEncodeContext *s) ...@@ -127,10 +127,24 @@ static void apply_mdct(NellyMoserEncodeContext *s)
s->mdct_ctx.mdct_calc(&s->mdct_ctx, s->mdct_out + NELLY_BUF_LEN, s->buf[s->bufsel] + NELLY_BUF_LEN); s->mdct_ctx.mdct_calc(&s->mdct_ctx, s->mdct_out + NELLY_BUF_LEN, s->buf[s->bufsel] + NELLY_BUF_LEN);
} }
static av_cold int encode_end(AVCodecContext *avctx)
{
NellyMoserEncodeContext *s = avctx->priv_data;
ff_mdct_end(&s->mdct_ctx);
if (s->avctx->trellis) {
av_free(s->opt);
av_free(s->path);
}
return 0;
}
static av_cold int encode_init(AVCodecContext *avctx) static av_cold int encode_init(AVCodecContext *avctx)
{ {
NellyMoserEncodeContext *s = avctx->priv_data; NellyMoserEncodeContext *s = avctx->priv_data;
int i; int i, ret;
if (avctx->channels != 1) { if (avctx->channels != 1) {
av_log(avctx, AV_LOG_ERROR, "Nellymoser supports only 1 channel\n"); av_log(avctx, AV_LOG_ERROR, "Nellymoser supports only 1 channel\n");
...@@ -147,7 +161,8 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -147,7 +161,8 @@ static av_cold int encode_init(AVCodecContext *avctx)
avctx->frame_size = NELLY_SAMPLES; avctx->frame_size = NELLY_SAMPLES;
s->avctx = avctx; s->avctx = avctx;
ff_mdct_init(&s->mdct_ctx, 8, 0, 32768.0); if ((ret = ff_mdct_init(&s->mdct_ctx, 8, 0, 32768.0)) < 0)
goto error;
ff_dsputil_init(&s->dsp, avctx); ff_dsputil_init(&s->dsp, avctx);
/* Generate overlap window */ /* Generate overlap window */
...@@ -158,23 +173,16 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -158,23 +173,16 @@ static av_cold int encode_init(AVCodecContext *avctx)
if (s->avctx->trellis) { if (s->avctx->trellis) {
s->opt = av_malloc(NELLY_BANDS * OPT_SIZE * sizeof(float )); s->opt = av_malloc(NELLY_BANDS * OPT_SIZE * sizeof(float ));
s->path = av_malloc(NELLY_BANDS * OPT_SIZE * sizeof(uint8_t)); s->path = av_malloc(NELLY_BANDS * OPT_SIZE * sizeof(uint8_t));
if (!s->opt || !s->path) {
ret = AVERROR(ENOMEM);
goto error;
}
} }
return 0; return 0;
} error:
encode_end(avctx);
static av_cold int encode_end(AVCodecContext *avctx) return ret;
{
NellyMoserEncodeContext *s = avctx->priv_data;
ff_mdct_end(&s->mdct_ctx);
if (s->avctx->trellis) {
av_free(s->opt);
av_free(s->path);
}
return 0;
} }
#define find_best(val, table, LUT, LUT_add, LUT_size) \ #define find_best(val, table, LUT, LUT_add, LUT_size) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment