[FFmpeg-cvslog] avcodec/decode: inject missing global side data to output frames

James Almer git at videolan.org
Mon Mar 3 23:16:43 EET 2025


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Wed Feb 26 13:34:57 2025 -0300| [603334e86fe9ec2a4c6a1c55e8c6134bc3f080eb] | committer: James Almer

avcodec/decode: inject missing global side data to output frames

ff_decode_frame_props() injects global side data passed by the caller (Usually
coming from the container) but ignores the global side data the decoder
gathered from the bitstream itself.
This commit amends this.

Signed-off-by: James Almer <jamrial at gmail.com>

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

 libavcodec/decode.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index cac7e620d2..c5a577f4f1 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1570,6 +1570,15 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
     if (ret < 0)
         return ret;
 
+    for (int i = 0; i < avctx->nb_decoded_side_data; i++) {
+        const AVFrameSideData *src = avctx->decoded_side_data[i];
+        if (av_frame_get_side_data(frame, src->type))
+            continue;
+        ret = av_frame_side_data_clone(&frame->side_data, &frame->nb_side_data, src, 0);
+        if (ret < 0)
+            return ret;
+    }
+
     if (!(ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) {
         const AVPacket *pkt = avctx->internal->last_pkt_props;
 



More information about the ffmpeg-cvslog mailing list