[vlc-devel] [PATCH 23/34] video output: prepare code to add conversion filter if vctx don't match

Steve Lhomme robux4 at ycbcr.xyz
Fri Nov 8 15:40:27 CET 2019


For now we don't enforce similar video context in video output as the chroma
differences should be sufficient to detect source changes. We can only enable
this check once all filters outputting GPU surfaces set the filter->vctx_out.
---
 src/misc/filter_chain.c         | 4 ++++
 src/video_output/video_output.c | 4 +++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index be6cd53d2ac..9a97b1de2e4 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -204,19 +204,23 @@ static filter_t *filter_chain_AppendInner( filter_chain_t *chain,
     filter_t *filter = &chained->filter;
 
     const es_format_t *fmt_in;
+    vlc_video_context *vctx_in;
     if( chain->last != NULL )
     {
         fmt_in = &chain->last->filter.fmt_out;
+        vctx_in = chain->last->filter.vctx_out;
     }
     else
     {
         fmt_in = &chain->fmt_in;
+        vctx_in = chain->vctx_in;
     }
 
     if( fmt_out == NULL )
         fmt_out = &chain->fmt_out;
 
     es_format_Copy( &filter->fmt_in, fmt_in );
+    filter->vctx_in = vctx_in;
     es_format_Copy( &filter->fmt_out, fmt_out );
     filter->b_allow_fmt_out_change = chain->b_allow_fmt_out_change;
     filter->p_cfg = cfg;
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 7919680188c..1758006e88c 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -850,7 +850,9 @@ static void ThreadChangeFilters(vout_thread_t *vout,
         vlc_array_clear(array);
     }
 
-    if (!es_format_IsSimilar(p_fmt_current, &fmt_target)) {
+    if (!es_format_IsSimilar(p_fmt_current, &fmt_target) /*||
+        !vlc_video_context_IsSimilar( vctx_current, vctx_target )*/)
+    {
         msg_Dbg(vout, "Adding a filter to compensate for format changes");
         if (filter_chain_AppendConverter(vout->p->filter.chain_interactive,
                                          &fmt_target) != 0) {
-- 
2.17.1



More information about the vlc-devel mailing list