ffmpeg | branch: master | Marvin Scholz <epira...@gmail.com> | Thu Jun 26 
23:49:06 2025 +0200| [7d384869751b45d4d057df67dde9050a82590a6e] | committer: 
Marvin Scholz

avcodec/vvc/refs: remove early return

The ret value is checked later on again, so this check
is redundant and would cause the frame to not be unrefd on
failure as well.

So remove this check and add one before av_frame_remove_side_data
to ensure it is not called with an invalid frame.

Fix CID 1648350

Reviewed-by: Frank Plowman <p...@frankplowman.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7d384869751b45d4d057df67dde9050a82590a6e
---

 libavcodec/vvc/refs.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c
index 79967b77d3..1840caa4ec 100644
--- a/libavcodec/vvc/refs.c
+++ b/libavcodec/vvc/refs.c
@@ -300,16 +300,15 @@ int ff_vvc_output_frame(VVCContext *s, VVCFrameContext 
*fc, AVFrame *out, const
                 frame->frame->flags |= AV_FRAME_FLAG_CORRUPT;
 
             ret = av_frame_ref(out, frame->needs_fg ? frame->frame_grain : 
frame->frame);
-            if (ret < 0)
-                return ret;
 
-            if (!(s->avctx->export_side_data & 
AV_CODEC_EXPORT_DATA_FILM_GRAIN))
+            if (!ret && !(s->avctx->export_side_data & 
AV_CODEC_EXPORT_DATA_FILM_GRAIN))
                 av_frame_remove_side_data(out, 
AV_FRAME_DATA_FILM_GRAIN_PARAMS);
 
             if (frame->flags & VVC_FRAME_FLAG_BUMPING)
                 ff_vvc_unref_frame(fc, frame, VVC_FRAME_FLAG_OUTPUT | 
VVC_FRAME_FLAG_BUMPING);
             else
                 ff_vvc_unref_frame(fc, frame, VVC_FRAME_FLAG_OUTPUT);
+
             if (ret < 0)
                 return ret;
 

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to