[vlc-devel] [PATCH v2 01/20] filter: add a drain callback for video filters

Steve Lhomme robux4 at ycbcr.xyz
Wed Oct 14 14:39:01 CEST 2020


Calls to filter a picture should be proceeded by a drain call to make sure
there is no picture left from the last picture filtered.

Filters calling vlc_picture_chain_AppendChain() should implement a drain of
their extra pictures instead.
---
 include/vlc_filter.h | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/include/vlc_filter.h b/include/vlc_filter.h
index 9d5e3541a44..e625d44dc62 100644
--- a/include/vlc_filter.h
+++ b/include/vlc_filter.h
@@ -107,9 +107,11 @@ struct vlc_filter_operations
 
     union
     {
-        /* TODO: video filter drain */
         /** Drain (audio filter) */
         block_t *(*drain_audio)(filter_t *);
+
+        /** Video Drain (formerly video filter(NULL)) */
+        picture_t *(*drain_video)(filter_t *);
     };
 
     /** Flush
@@ -270,6 +272,16 @@ static inline picture_t *filter_NewPicture( filter_t *p_filter )
     return pic;
 }
 
+/**
+ * This function will drain, then flush a video filter.
+ */
+static inline picture_t *filter_DrainVideo( filter_t *p_filter )
+{
+    if( p_filter->ops->drain_video )
+        return p_filter->ops->drain_video( p_filter );
+    return NULL;
+}
+
 /**
  * Flush a filter
  *
-- 
2.26.2



More information about the vlc-devel mailing list