[vlc-devel] commit: Enforce --no-overlay option in SDL video output. ( Antoine Cellerier )

git version control git at videolan.org
Mon Jun 2 18:59:08 CEST 2008


vlc | branch: master | Antoine Cellerier <dionoea at videolan.org> | Mon Jun  2 14:31:34 2008 +0200| [7f9999df31ecac9d34fcf98a6074776ab275b754]

Enforce --no-overlay option in SDL video output.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7f9999df31ecac9d34fcf98a6074776ab275b754
---

 modules/video_output/sdl.c |  127 ++++++++++++++++++++++++--------------------
 1 files changed, 69 insertions(+), 58 deletions(-)

diff --git a/modules/video_output/sdl.c b/modules/video_output/sdl.c
index b2b3bc1..152bfb9 100644
--- a/modules/video_output/sdl.c
+++ b/modules/video_output/sdl.c
@@ -162,6 +162,8 @@ static int Open ( vlc_object_t *p_this )
         return VLC_ENOMEM;
     }
 
+    memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) );
+
     /* Check if SDL video module has been initialized */
     if( SDL_WasInit( SDL_INIT_VIDEO ) != 0 )
     {
@@ -762,6 +764,8 @@ static int OpenDisplay( vout_thread_t *p_vout )
     char *psz_chroma = NULL;
     uint32_t i_chroma = 0;
 
+    bool b_overlay = config_GetInt( p_vout, "overlay" );
+
     /* Set main window's size */
 #if SDL_VERSION_ATLEAST(1,2,10)
     p_vout->p_sys->i_width = p_vout->b_fullscreen ? p_vout->p_sys->i_desktop_width :
@@ -813,75 +817,82 @@ static int OpenDisplay( vout_thread_t *p_vout )
         }
     }
 
-    /* Choose the chroma we will try first. */
-    do
+    if( b_overlay )
     {
-        if( !psz_chroma ) i_chroma = 0;
-        switch( i_chroma ? i_chroma : p_vout->render.i_chroma )
+        /* Choose the chroma we will try first. */
+        do
         {
-            case VLC_FOURCC('Y','U','Y','2'):
-            case VLC_FOURCC('Y','U','N','V'):
-                p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
-                i_sdl_chroma = SDL_YUY2_OVERLAY;
-                break;
-            case VLC_FOURCC('U','Y','V','Y'):
-            case VLC_FOURCC('U','Y','N','V'):
-            case VLC_FOURCC('Y','4','2','2'):
-                p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
-                i_sdl_chroma = SDL_UYVY_OVERLAY;
-                break;
-            case VLC_FOURCC('Y','V','Y','U'):
-                p_vout->output.i_chroma = VLC_FOURCC('Y','V','Y','U');
-                i_sdl_chroma = SDL_YVYU_OVERLAY;
-                break;
-            case VLC_FOURCC('Y','V','1','2'):
-            case VLC_FOURCC('I','4','2','0'):
-            case VLC_FOURCC('I','Y','U','V'):
-            default:
-                p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
-                i_sdl_chroma = SDL_YV12_OVERLAY;
-                break;
-        }
-        free( psz_chroma ); psz_chroma = NULL;
+            if( !psz_chroma ) i_chroma = 0;
+            switch( i_chroma ? i_chroma : p_vout->render.i_chroma )
+            {
+                case VLC_FOURCC('Y','U','Y','2'):
+                case VLC_FOURCC('Y','U','N','V'):
+                    p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+                    i_sdl_chroma = SDL_YUY2_OVERLAY;
+                    break;
+                case VLC_FOURCC('U','Y','V','Y'):
+                case VLC_FOURCC('U','Y','N','V'):
+                case VLC_FOURCC('Y','4','2','2'):
+                    p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+                    i_sdl_chroma = SDL_UYVY_OVERLAY;
+                    break;
+                case VLC_FOURCC('Y','V','Y','U'):
+                    p_vout->output.i_chroma = VLC_FOURCC('Y','V','Y','U');
+                    i_sdl_chroma = SDL_YVYU_OVERLAY;
+                    break;
+                case VLC_FOURCC('Y','V','1','2'):
+                case VLC_FOURCC('I','4','2','0'):
+                case VLC_FOURCC('I','Y','U','V'):
+                default:
+                    p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+                    i_sdl_chroma = SDL_YV12_OVERLAY;
+                    break;
+            }
+            free( psz_chroma ); psz_chroma = NULL;
 
-        p_vout->p_sys->p_overlay =
-            SDL_CreateYUVOverlay( 32, 32, i_sdl_chroma,
-                                  p_vout->p_sys->p_display );
-        /* FIXME: if the first overlay we find is software, don't stop,
-         * because we may find a hardware one later ... */
-    }
-    while( i_chroma && !p_vout->p_sys->p_overlay );
+            p_vout->p_sys->p_overlay =
+                SDL_CreateYUVOverlay( 32, 32, i_sdl_chroma,
+                                      p_vout->p_sys->p_display );
+            /* FIXME: if the first overlay we find is software, don't stop,
+             * because we may find a hardware one later ... */
+        }
+        while( i_chroma && !p_vout->p_sys->p_overlay );
 
 
-    /* If this best choice failed, fall back to other chromas */
-    if( p_vout->p_sys->p_overlay == NULL )
-    {
-        p_vout->output.i_chroma = VLC_FOURCC('I','Y','U','V');
-        p_vout->p_sys->p_overlay =
-            SDL_CreateYUVOverlay( 32, 32, SDL_IYUV_OVERLAY,
-                                  p_vout->p_sys->p_display );
-    }
+        /* If this best choice failed, fall back to other chromas */
+        if( p_vout->p_sys->p_overlay == NULL )
+        {
+            p_vout->output.i_chroma = VLC_FOURCC('I','Y','U','V');
+            p_vout->p_sys->p_overlay =
+                SDL_CreateYUVOverlay( 32, 32, SDL_IYUV_OVERLAY,
+                                      p_vout->p_sys->p_display );
+        }
 
-    if( p_vout->p_sys->p_overlay == NULL )
-    {
-        p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
-        p_vout->p_sys->p_overlay =
-            SDL_CreateYUVOverlay( 32, 32, SDL_YV12_OVERLAY,
-                                  p_vout->p_sys->p_display );
-    }
+        if( p_vout->p_sys->p_overlay == NULL )
+        {
+            p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+            p_vout->p_sys->p_overlay =
+                SDL_CreateYUVOverlay( 32, 32, SDL_YV12_OVERLAY,
+                                      p_vout->p_sys->p_display );
+        }
 
-    if( p_vout->p_sys->p_overlay == NULL )
-    {
-        p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
-        p_vout->p_sys->p_overlay =
-            SDL_CreateYUVOverlay( 32, 32, SDL_YUY2_OVERLAY,
-                                  p_vout->p_sys->p_display );
+        if( p_vout->p_sys->p_overlay == NULL )
+        {
+            p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+            p_vout->p_sys->p_overlay =
+                SDL_CreateYUVOverlay( 32, 32, SDL_YUY2_OVERLAY,
+                                      p_vout->p_sys->p_display );
+        }
     }
 
     if( p_vout->p_sys->p_overlay == NULL )
     {
-        msg_Warn( p_vout, "no SDL overlay for 0x%.8x (%4.4s)",
-                  p_vout->render.i_chroma, (char*)&p_vout->render.i_chroma );
+        if( b_overlay )
+            msg_Warn( p_vout, "no SDL overlay for 0x%.8x (%4.4s)",
+                      p_vout->render.i_chroma,
+                      (char*)&p_vout->render.i_chroma );
+        else
+            msg_Warn( p_vout, "SDL overlay disabled by the user" );
 
         switch( p_vout->p_sys->p_display->format->BitsPerPixel )
         {




More information about the vlc-devel mailing list