[FFmpeg-devel] [PATCH 5/5] ffmpeg: send EOF pts to filters.
Thomas Mundt
tmundt75 at gmail.com
Wed Oct 4 03:36:10 EEST 2017
Hi Nicolas,
2017-09-07 10:59 GMT+02:00 Nicolas George <george at nsup.org>:
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
> ffmpeg.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/ffmpeg.c b/ffmpeg.c
> index b95addd277..1d248bc269 100644
> --- a/ffmpeg.c
> +++ b/ffmpeg.c
> @@ -2223,14 +2223,14 @@ static int ifilter_send_frame(InputFilter
> *ifilter, AVFrame *frame)
> return 0;
> }
>
> -static int ifilter_send_eof(InputFilter *ifilter)
> +static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
> {
> int i, j, ret;
>
> ifilter->eof = 1;
>
> if (ifilter->filter) {
> - ret = av_buffersrc_add_frame_flags(ifilter->filter, NULL,
> AV_BUFFERSRC_FLAG_PUSH);
> + ret = av_buffersrc_close(ifilter->filter, pts,
> AV_BUFFERSRC_FLAG_PUSH);
> if (ret < 0)
> return ret;
> } else {
> @@ -2581,8 +2581,12 @@ out:
> static int send_filter_eof(InputStream *ist)
> {
> int i, ret;
> + /* TODO keep pts also in stream time base to avoid converting back */
> + int64_t pts = av_rescale_q_rnd(ist->pts, AV_TIME_BASE_Q,
> ist->st->time_base,
> + AV_ROUND_NEAR_INF |
> AV_ROUND_PASS_MINMAX);
> +
> for (i = 0; i < ist->nb_filters; i++) {
> - ret = ifilter_send_eof(ist->filters[i]);
> + ret = ifilter_send_eof(ist->filters[i], pts);
> if (ret < 0)
> return ret;
> }
>
The sended pts always seems to refer to the input time base.
When a filter changes the time base, the EOF pts becomes wrong for
subsequent filters in the chain.
E.g. when using vf_fps behind vf_yadif=1 with interlaced input, the sended
EOF pts is only half of the expected pts.
I tried to find a solution, but without success.
Do you have an idea?
Regards,
Thomas
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Virenfrei.
www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
More information about the ffmpeg-devel
mailing list