On Mon, 2021-12-13 at 09:40 +0000, Chen, Wenbin wrote: > > > -----Original Message----- > > > From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of > > > > Wenbin Chen > > > Sent: Friday, December 10, 2021 3:22 AM > > > To: ffmpeg-devel@ffmpeg.org > > > Cc: Wenbin Chen <wenbin.c...@intel.com> > > > Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_overlay_qsv: Use format of > > > first input to set output format for overlay_qsv > > > > > > overlay_qsv hard coded to use nv12 as output format. Now use the format > > > of the first input to set output format. Now the following command > > > works: > > > > > > ffmpeg -hwaccel qsv -c:v hevc_qsv -i input_p010.265 -hwaccel qsv -c:v > > > hevc_qsv \ > > > -i input2_p010.265 -filter_complex > > > > "[0:v][1:v]overlay_qsv=x=0:y=0:alpha=255, > > > \ > > > hwdownload,format=p010le" -f rawvideo -y output_p010.yuv > > > > > > Signed-off-by: Wenbin Chen <wenbin.c...@intel.com> > > > --- > > > libavfilter/vf_overlay_qsv.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/libavfilter/vf_overlay_qsv.c b/libavfilter/vf_overlay_qsv.c > > > index 7e76b39aa9..d947a1faa1 100644 > > > --- a/libavfilter/vf_overlay_qsv.c > > > +++ b/libavfilter/vf_overlay_qsv.c > > > @@ -276,6 +276,7 @@ static int config_output(AVFilterLink *outlink) > > > int ret; > > > > > > av_log(ctx, AV_LOG_DEBUG, "Output is of %s.\n", > > > av_get_pix_fmt_name(outlink->format)); > > > + vpp->qsv_param.out_sw_format = in0->format; > > > if ((in0->format == AV_PIX_FMT_QSV && in1->format != > > > > AV_PIX_FMT_QSV) || > > > (in0->format != AV_PIX_FMT_QSV && in1->format == > > > > AV_PIX_FMT_QSV)) { > > > av_log(ctx, AV_LOG_ERROR, "Mixing hardware and software pixel > > > formats is not supported.\n"); > > > @@ -288,6 +289,7 @@ static int config_output(AVFilterLink *outlink) > > > av_log(ctx, AV_LOG_ERROR, "Inputs with different underlying > > > QSV > > > devices are forbidden.\n"); > > > return AVERROR(EINVAL); > > > } > > > + vpp->qsv_param.out_sw_format = hw_frame0->sw_format; > > > } > > > > > > outlink->w = vpp->var_values[VAR_MW]; > > > -- > > > > When you're already looking at that area: > > > > Do you have any idea why it sets the output time_base to the reciprocal > > input0 framerate? > > I think it should rather set it to the same as the input0 time_base. > > > > https://github.com/FFmpeg/FFmpeg/blob/4f44a218e53cd92e64ba10a935bc > > 1e7583c3e218/libavfilter/vf_overlay_qsv.c#L293-L296 > > > > What do you think? (also @Haihao) > > > > Thanks, > > softworkz > > I have no idea why it is set to the reciprocal input0 framerate. > I agree with you. I think it should be set to in0->time_base. > I tried and changing to "in0->time_base" also works fine.
Maybe the code was copied from other files. As soon as the PTS of the frames passing through the output link uses the output time_base as unit, I think this code may work too except the precision of the output time_base. The PTS of the output frame from overlay_qsv uses the output time_base as unit: https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_overlay_qsv.c#L314-L315 I may submit a patch to set the output time_base to the input0 time_base if you are thinking this is better. 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".