Re: [FFmpeg-devel] [PATCH 1/2] avcodec/proresenc_kostya: Cleanup generically after init failure
Andreas Rheinhardt: > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/proresenc_kostya.c | 14 -- > 1 file changed, 4 insertions(+), 10 deletions(-) > > diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c > index 85651fce2a..08a874dd4e 100644 > --- a/libavcodec/proresenc_kostya.c > +++ b/libavcodec/proresenc_kostya.c > @@ -1274,25 +1274,19 @@ static av_cold int encode_init(AVCodecContext *avctx) > } > > ctx->slice_q = av_malloc(ctx->slices_per_picture * > sizeof(*ctx->slice_q)); > -if (!ctx->slice_q) { > -encode_close(avctx); > +if (!ctx->slice_q) > return AVERROR(ENOMEM); > -} > > ctx->tdata = av_mallocz(avctx->thread_count * sizeof(*ctx->tdata)); > -if (!ctx->tdata) { > -encode_close(avctx); > +if (!ctx->tdata) > return AVERROR(ENOMEM); > -} > > for (j = 0; j < avctx->thread_count; j++) { > ctx->tdata[j].nodes = av_malloc((ctx->slices_width + 1) > * TRELLIS_WIDTH > * sizeof(*ctx->tdata->nodes)); > -if (!ctx->tdata[j].nodes) { > -encode_close(avctx); > +if (!ctx->tdata[j].nodes) > return AVERROR(ENOMEM); > -} > for (i = min_quant; i < max_quant + 2; i++) { > ctx->tdata[j].nodes[i].prev_node = -1; > ctx->tdata[j].nodes[i].bits = 0; > @@ -1415,5 +1409,5 @@ const AVCodec ff_prores_ks_encoder = { >}, > .priv_class = _class, > .profiles = NULL_IF_CONFIG_SMALL(ff_prores_profiles), > -.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, > +.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | > FF_CODEC_CAP_INIT_CLEANUP, > }; Will apply this patchset later tonight unless there are objections. - Andreas ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-devel] [PATCH 1/2] avcodec/proresenc_kostya: Cleanup generically after init failure
Signed-off-by: Andreas Rheinhardt --- libavcodec/proresenc_kostya.c | 14 -- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c index 85651fce2a..08a874dd4e 100644 --- a/libavcodec/proresenc_kostya.c +++ b/libavcodec/proresenc_kostya.c @@ -1274,25 +1274,19 @@ static av_cold int encode_init(AVCodecContext *avctx) } ctx->slice_q = av_malloc(ctx->slices_per_picture * sizeof(*ctx->slice_q)); -if (!ctx->slice_q) { -encode_close(avctx); +if (!ctx->slice_q) return AVERROR(ENOMEM); -} ctx->tdata = av_mallocz(avctx->thread_count * sizeof(*ctx->tdata)); -if (!ctx->tdata) { -encode_close(avctx); +if (!ctx->tdata) return AVERROR(ENOMEM); -} for (j = 0; j < avctx->thread_count; j++) { ctx->tdata[j].nodes = av_malloc((ctx->slices_width + 1) * TRELLIS_WIDTH * sizeof(*ctx->tdata->nodes)); -if (!ctx->tdata[j].nodes) { -encode_close(avctx); +if (!ctx->tdata[j].nodes) return AVERROR(ENOMEM); -} for (i = min_quant; i < max_quant + 2; i++) { ctx->tdata[j].nodes[i].prev_node = -1; ctx->tdata[j].nodes[i].bits = 0; @@ -1415,5 +1409,5 @@ const AVCodec ff_prores_ks_encoder = { }, .priv_class = _class, .profiles = NULL_IF_CONFIG_SMALL(ff_prores_profiles), -.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, +.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; -- 2.32.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".