[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