[vlc-devel] [PATCH 1/3] splitter: force splitters to sw chroma

Victorien Le Couviour--Tuffet victorien.lecouviour.tuffet at gmail.com
Wed Aug 2 16:37:12 CEST 2017


Fixes #18537.
---
 src/misc/filter.c          |  4 ++++
 src/video_output/display.c | 14 ++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/src/misc/filter.c b/src/misc/filter.c
index 071e374ba4..7596f8734f 100644
--- a/src/misc/filter.c
+++ b/src/misc/filter.c
@@ -190,6 +190,10 @@ video_splitter_t *video_splitter_New( vlc_object_t *p_this,
         return NULL;
 
     video_format_Copy( &p_splitter->fmt, p_fmt );
+    vlc_chroma_description_t const *p_chroma =
+        vlc_fourcc_GetChromaDescription(p_splitter->fmt.i_chroma);
+    if (!p_chroma || !p_chroma->plane_count)
+        p_splitter->fmt.i_chroma = VLC_CODEC_I420;
 
     /* */
     p_splitter->p_module = module_need( p_splitter, "video splitter", psz_name, true );
diff --git a/src/video_output/display.c b/src/video_output/display.c
index 220ae3866b..39da0ed105 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -1544,6 +1544,20 @@ vout_display_t *vout_NewSplitter(vout_thread_t *vout,
         video_splitter_Delete(splitter);
         return NULL;
     }
+
+    vlc_chroma_description_t const *p_chroma =
+        vlc_fourcc_GetChromaDescription(wrapper->fmt.i_chroma);
+    if (!p_chroma || !p_chroma->plane_count)
+    {
+        wrapper->fmt.i_chroma = VLC_CODEC_I420;
+        if (VoutDisplayResetRender(wrapper))
+        {
+            free(wrapper->owner.sys);
+            vout_display_Delete(wrapper);
+            return NULL;
+        }
+    }
+
     vout_display_sys_t *sys = malloc(sizeof(*sys));
     if (!sys)
         abort();
-- 
2.13.1



More information about the vlc-devel mailing list