On Ma, 2024-11-25 at 11:18 +0800, fei.w.wang-at-intel....@ffmpeg.org wrote: > From: Fei Wang <fei.w.w...@intel.com> > > The changes to output frame props in query_frame overlapped since > 578ac59887. Move the copy frame props before the changes. > > Signed-off-by: Fei Wang <fei.w.w...@intel.com> > --- > libavfilter/qsvvpp.c | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c > index 0818ada117..67ae23b165 100644 > --- a/libavfilter/qsvvpp.c > +++ b/libavfilter/qsvvpp.c > @@ -471,7 +471,8 @@ static QSVFrame *submit_frame(QSVVPPContext *s, > AVFilterLink *inlink, AVFrame *p > } > > /* get the output surface */ > -static QSVFrame *query_frame(QSVVPPContext *s, AVFilterLink *outlink, const > AVFrame *in) > +static QSVFrame *query_frame(QSVVPPContext *s, AVFilterLink *outlink, const > AVFrame *in, > + const AVFrame *propref) > { > FilterLink *l = ff_filter_link(outlink); > AVFilterContext *ctx = outlink->src; > @@ -513,6 +514,15 @@ static QSVFrame *query_frame(QSVVPPContext *s, > AVFilterLink *outlink, const AVFr > return NULL; > } > > + if (propref) { > + ret = av_frame_copy_props(out_frame->frame, propref); > + if (ret < 0) { > + av_frame_free(&out_frame->frame); > + av_log(ctx, AV_LOG_ERROR, "Failed to copy metadata fields from > src to dst.\n"); > + return NULL; > + } > + } > + > if (l->frame_rate.num && l->frame_rate.den) > out_frame->frame->duration = av_rescale_q(1, av_inv_q(l->frame_rate), > outlink->time_base); > else > @@ -985,7 +995,7 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, AVFilterLink > *inlink, AVFrame *picr > } > > do { > - out_frame = query_frame(s, outlink, in_frame->frame); > + out_frame = query_frame(s, outlink, in_frame->frame, propref); > if (!out_frame) { > av_log(ctx, AV_LOG_ERROR, "Failed to query an output frame.\n"); > return AVERROR(ENOMEM); > @@ -1009,15 +1019,6 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, > AVFilterLink *inlink, AVFrame *picr > break; > } > > - if (propref) { > - ret1 = av_frame_copy_props(out_frame->frame, propref); > - if (ret1 < 0) { > - av_frame_free(&out_frame->frame); > - av_log(ctx, AV_LOG_ERROR, "Failed to copy metadata fields > from src to dst.\n"); > - return ret1; > - } > - } > - > out_frame->frame->pts = av_rescale_q(out_frame- > >surface.Data.TimeStamp, > default_tb, outlink->time_base);
LGTM, will apply Thanks Haihao > _______________________________________________ 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".