diff mbox series

[FFmpeg-devel] avfilter/buffersrc: stop passing AV_NOPTS_VALUE on EOF

Message ID CAPYw7P5UTmRMJdjx3WXcvtu_6hy7Os4opi4NXB34TvBfmHPGOQ@mail.gmail.com
State New
Headers show
Series [FFmpeg-devel] avfilter/buffersrc: stop passing AV_NOPTS_VALUE on EOF | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Paul B Mahol June 15, 2023, 3:17 p.m. UTC
Attached.

Comments

Niklas Haas June 15, 2023, 3:40 p.m. UTC | #1
On Thu, 15 Jun 2023 17:17:41 +0200 Paul B Mahol <onemda@gmail.com> wrote:
> Attached.
> From 88fbb2fbfd2bb7cb3474d54cb197ee42b1404532 Mon Sep 17 00:00:00 2001
> From: Paul B Mahol <onemda@gmail.com>
> Date: Thu, 15 Jun 2023 17:15:44 +0200
> Subject: [PATCH] avfilter/buffersrc: stop passing AV_NOPTS_VALUE on EOF
> 
> Signed-off-by: Paul B Mahol <onemda@gmail.com>
> ---
>  libavfilter/buffersrc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
> index 612541b803..ea50713701 100644
> --- a/libavfilter/buffersrc.c
> +++ b/libavfilter/buffersrc.c
> @@ -61,6 +61,7 @@ typedef struct BufferSourceContext {
>      AVChannelLayout ch_layout;
>  
>      int eof;
> +    int64_t last_pts;
>  } BufferSourceContext;
>  
>  #define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format, pts)\
> @@ -191,10 +192,12 @@ FF_ENABLE_DEPRECATION_WARNINGS
>      s->nb_failed_requests = 0;
>  
>      if (!frame)
> -        return av_buffersrc_close(ctx, AV_NOPTS_VALUE, flags);
> +        return av_buffersrc_close(ctx, s->last_pts, flags);
>      if (s->eof)
>          return AVERROR(EINVAL);
>  
> +    s->last_pts = frame->pts + frame->duration;
> +
>      refcounted = !!frame->buf[0];
>  
>      if (!(flags & AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT)) {
> -- 
> 2.39.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

Confirming that this fixes a bug I was encountering.
Paul B Mahol June 15, 2023, 8:27 p.m. UTC | #2
Will apply shortly.
diff mbox series

Patch

From 88fbb2fbfd2bb7cb3474d54cb197ee42b1404532 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Thu, 15 Jun 2023 17:15:44 +0200
Subject: [PATCH] avfilter/buffersrc: stop passing AV_NOPTS_VALUE on EOF

Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
 libavfilter/buffersrc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index 612541b803..ea50713701 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -61,6 +61,7 @@  typedef struct BufferSourceContext {
     AVChannelLayout ch_layout;
 
     int eof;
+    int64_t last_pts;
 } BufferSourceContext;
 
 #define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format, pts)\
@@ -191,10 +192,12 @@  FF_ENABLE_DEPRECATION_WARNINGS
     s->nb_failed_requests = 0;
 
     if (!frame)
-        return av_buffersrc_close(ctx, AV_NOPTS_VALUE, flags);
+        return av_buffersrc_close(ctx, s->last_pts, flags);
     if (s->eof)
         return AVERROR(EINVAL);
 
+    s->last_pts = frame->pts + frame->duration;
+
     refcounted = !!frame->buf[0];
 
     if (!(flags & AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT)) {
-- 
2.39.1