vlc | branch: master | Steve Lhomme <[email protected]> | Tue Oct 13 09:30:47 
2020 +0200| [cb342c8172816a1d4b921506747ebc485f54425b] | committer: Steve Lhomme

fps: implement Flush callback

A Flush is normally done before seeking. We should not keep the date of the
previous pictures in this case and restart from scratch.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cb342c8172816a1d4b921506747ebc485f54425b
---

 modules/video_filter/fps.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/modules/video_filter/fps.c b/modules/video_filter/fps.c
index d244d65bb1..369a020df3 100644
--- a/modules/video_filter/fps.c
+++ b/modules/video_filter/fps.c
@@ -130,11 +130,21 @@ static picture_t *Filter( filter_t *p_filter, picture_t 
*p_picture)
     return last_pic;
 }
 
-static void Close( filter_t *p_filter )
+static void Flush( filter_t *p_filter )
 {
     filter_sys_t *p_sys = p_filter->p_sys;
+    date_Init( &p_sys->next_output_pts,
+               p_filter->fmt_out.video.i_frame_rate, 
p_filter->fmt_out.video.i_frame_rate_base );
     if( p_sys->p_previous_pic )
+    {
         picture_Release( p_sys->p_previous_pic );
+        p_sys->p_previous_pic = NULL;
+    }
+}
+
+static void Close( filter_t *p_filter )
+{
+    Flush( p_filter );
     if( p_filter->vctx_out )
         vlc_video_context_Release( p_filter->vctx_out );
 }
@@ -142,6 +152,7 @@ static void Close( filter_t *p_filter )
 static const struct vlc_filter_operations filter_ops =
 {
     .filter_video = Filter, .close = Close,
+    .flush = Flush,
 };
 
 static int Open( filter_t *p_filter )

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to