aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2024-02-17 21:50:01 +0100
committerAnton Khirnov <anton@khirnov.net>2024-03-08 07:37:56 +0100
commit62f40d0e3856954a6b2bc20dc70bea52e57c31ad (patch)
treef45a31748094e2c38618c4f1230e4442595d83d8 /libavcodec
parentb9565db9a0a14b3fcfaf645be8363849a4583473 (diff)
downloadffmpeg-62f40d0e3856954a6b2bc20dc70bea52e57c31ad.tar.gz
avcodec/libjxldec: respect side data preference
Also fixes a memory leak where the side data was previously not properly cleaned up on OOM. Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/libjxldec.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/libavcodec/libjxldec.c b/libavcodec/libjxldec.c
index b830eee784..d57a27418f 100644
--- a/libavcodec/libjxldec.c
+++ b/libavcodec/libjxldec.c
@@ -483,11 +483,9 @@ static int libjxl_receive_frame(AVCodecContext *avctx, AVFrame *frame)
/* full image is one frame, even if animated */
av_log(avctx, AV_LOG_DEBUG, "FULL_IMAGE event emitted\n");
if (ctx->iccp) {
- AVFrameSideData *sd = av_frame_new_side_data_from_buf(ctx->frame, AV_FRAME_DATA_ICC_PROFILE, ctx->iccp);
- if (!sd)
- return AVERROR(ENOMEM);
- /* ownership is transfered, and it is not ref-ed */
- ctx->iccp = NULL;
+ ret = ff_frame_new_side_data_from_buf(avctx, ctx->frame, AV_FRAME_DATA_ICC_PROFILE, &ctx->iccp, NULL);
+ if (ret < 0)
+ return ret;
}
if (ctx->basic_info.have_animation) {
ctx->frame->pts = av_rescale_q(ctx->accumulated_pts, ctx->anim_timebase, avctx->pkt_timebase);