James Almer: > 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 <jamr...@gmail.com> > --- > 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; >
Why is this attached to every frame instead of just the first one? If I read this correctly, it will be possible for there to be decoded_side_data propagated to the output, then in-stream side-data of the same type (not overridden) and in the next frame, the decoder adds the decoded_side_data again, presuming that the side data from the earlier frame was meant to be non-persistent. - 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".