[FFmpeg-devel] [PATCH v2 2/2] lavfi/vf_vpp_qsv: fix the time_base for outlink

Rogozhkin, Dmitry V dmitry.v.rogozhkin at intel.com
Fri Jun 11 20:50:53 EEST 2021


On Fri, 2021-06-11 at 10:19 +0800, Haihao Xiang wrote:
> Since commit 89ffcd1, the status pts of the output link is set to a
> value in the input link time base, not in the output link time base
> when
> EOF is reached. Usually this pst value is larger than the required
> one
> because the output link time base is more greater than the input link
> time base. When "-vf vpp_qsv,fps" is used, user has to wait a long
> time
> for the ending of the pipeline because fps filter output a huge
> number
> of frames until the wrong status pts is hit.
> 
> The issue can be triggered with the command below (use a clip with
> 1000
> frames in this case):
> 
> $> time ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.h265 -vf
> "vpp_qsv=w=1920:h=1080,fps=fps=30" -f null -
> ...
> [out_0_0 @ 0x564ccd27e020] 10000000 buffers queued in out_0_0,
> something
> may be wrong.
> frame=40119596 fps=88080 q=-0.0 Lsize=N/A time=371:28:39.96
> bitrate=N/A
> speed=2.94e+03x
> video:17238889kB audio:0kB subtitle:0kB other streams:0kB global
> headers:0kB muxing overhead: unknown
> 
> real    9m7.451s
> user    2m34.102s
> sys     0m39.734s
> 
> In order to avoid the above issue, the same time base for input and
> ouput links is used in this patch.
> 
> Fixes ticket #9286

This commit log looks good to me. Thank you for update. @maintainers:
please, help to review and merge.

> ---
> v2: update the commit log
> 
>  libavfilter/vf_vpp_qsv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
> index b9ab5c6490..74d1d51e7c 100644
> --- a/libavfilter/vf_vpp_qsv.c
> +++ b/libavfilter/vf_vpp_qsv.c
> @@ -303,7 +303,7 @@ static int config_output(AVFilterLink *outlink)
>      outlink->w          = vpp->out_width;
>      outlink->h          = vpp->out_height;
>      outlink->frame_rate = vpp->framerate;
> -    outlink->time_base  = av_inv_q(vpp->framerate);
> +    outlink->time_base  = inlink->time_base;
>  
>      param.filter_frame  = NULL;
>      param.num_ext_buf   = 0;


More information about the ffmpeg-devel mailing list