<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">Hi all,</pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">I found the problem with vlc screen://.</pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class=""><br class=""></pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">The following patch shows what caused the problem. How RGB fallback is handled</pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">in interop_sw.c? Why interop_rgb_base_init doesn’t take account of fmt_in? Is</pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">this still work in progress?</pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class=""><br class=""></pre><pre style="font-variant-ligatures: normal; orphans: 2; widows: 2; overflow-wrap: break-word; white-space: pre-wrap;" class="">diff --git a/modules/video_output/opengl/interop.c b/modules/video_output/opengl/interop.c
index 96d548519e..6ded931189 100644
--- a/modules/video_output/opengl/interop.c
+++ b/modules/video_output/opengl/interop.c
@@ -321,6 +321,24 @@ interop_rgb_base_init(struct vlc_gl_interop *interop, GLenum tex_target,
             break;

         case VLC_CODEC_RGB32:
+            if (interop->fmt_in.i_rmask == 0x00ff0000
+                    && interop->fmt_in.i_gmask == 0x0000ff00
+                    && interop->fmt_in.i_bmask == 0x000000ff)
+            {
+                if (GetTexFormatSize(interop->vt, tex_target, GL_BGRA, GL_RGBA,
+                                     GL_UNSIGNED_BYTE) != 32)
+                    return VLC_EGENERIC;
+                interop->texs[0] = (struct vlc_gl_tex_cfg) {
+                    { 1, 1 }, { 1, 1 }, GL_RGBA, GL_BGRA, GL_UNSIGNED_BYTE
+                };
+            }
+            else
+            {
+                interop->texs[0] = (struct vlc_gl_tex_cfg) {
+                    { 1, 1 }, { 1, 1 }, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE
+                };
+            }
+            break;
         case VLC_CODEC_RGBA:
             interop->texs[0] = (struct vlc_gl_tex_cfg) {
                 { 1, 1 }, { 1, 1 }, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE</pre><div class=""><br class=""></div></div></body></html>