[vlc-devel] [PATCH v1 24/33] d3d11_surface: switch filters into push mode

Steve Lhomme robux4 at ycbcr.xyz
Fri Sep 25 16:47:00 CEST 2020


---
 modules/hw/d3d11/d3d11_filters.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/modules/hw/d3d11/d3d11_filters.c b/modules/hw/d3d11/d3d11_filters.c
index c5a1c680c18..8e1856ba631 100644
--- a/modules/hw/d3d11/d3d11_filters.c
+++ b/modules/hw/d3d11/d3d11_filters.c
@@ -211,7 +211,7 @@ static picture_t *AllocPicture( filter_t *p_filter )
     return D3D11_AllocPicture(VLC_OBJECT(p_filter), &p_filter->fmt_out.video, p_filter->vctx_out, cfg);
 }
 
-static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
+static int Filter(filter_t *p_filter, picture_t *p_pic, struct vlc_video_sink *sink)
 {
     filter_sys_t *p_sys = p_filter->p_sys;
 
@@ -219,14 +219,14 @@ static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
     if (FAILED( D3D11_Assert_ProcessorInput(p_filter, &p_sys->d3d_proc, p_src_sys) ))
     {
         picture_Release( p_pic );
-        return NULL;
+        return VLC_ENOOBJ;
     }
 
     picture_t *p_outpic = AllocPicture( p_filter );
     if( !p_outpic )
     {
         picture_Release( p_pic );
-        return NULL;
+        return VLC_ENOMEM;
     }
     picture_sys_d3d11_t *p_out_sys = ActiveD3D11PictureSys(p_outpic);
     if (unlikely(!p_out_sys))
@@ -234,7 +234,7 @@ static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
         /* the output filter configuration may have changed since the filter
          * was opened */
         picture_Release( p_pic );
-        return NULL;
+        return VLC_EGENERIC;
     }
 
     picture_CopyProperties( p_outpic, p_pic );
@@ -313,7 +313,7 @@ static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
     d3d11_device_unlock( p_sys->d3d_dev );
 
     picture_Release( p_pic );
-    return p_outpic;
+    return vlc_video_sink_PutPicture( sink, p_outpic);
 }
 
 static int AdjustCallback( vlc_object_t *p_this, char const *psz_var,
@@ -507,7 +507,7 @@ static int D3D11OpenAdjust(vlc_object_t *obj)
         }
     }
 
-    filter->pf_video_filter = Filter;
+    filter->pf_video_filter_into = Filter;
     filter->p_sys = sys;
     filter->vctx_out = vlc_video_context_Hold(filter->vctx_in);
     d3d11_device_unlock(sys->d3d_dev);
-- 
2.26.2



More information about the vlc-devel mailing list