* xcommon.c: Functions common to the X11 and XVideo plugins
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: xcommon.c,v 1.31 2002/05/06 21:05:26 gbazin Exp $
+ * $Id: xcommon.c,v 1.32 2002/05/13 17:58:08 sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
*****************************************************************************/
static int vout_Create( vout_thread_t *p_vout )
{
- char *psz_display;
+ char * psz_display;
+#ifdef MODULE_NAME_IS_xvideo
+ char * psz_chroma;
+ u32 i_chroma = 0;
+ boolean_t b_chroma = 0;
+#endif
/* Allocate structure */
p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
p_vout->p_sys->i_screen = DefaultScreen( p_vout->p_sys->p_display );
#ifdef MODULE_NAME_IS_xvideo
+ psz_chroma = config_GetPszVariable( "xvideo-chroma" );
+ if( psz_chroma )
+ {
+ if( strlen( psz_chroma ) >= 4 )
+ {
+ i_chroma = (unsigned char)psz_chroma[0] << 0;
+ i_chroma |= (unsigned char)psz_chroma[1] << 8;
+ i_chroma |= (unsigned char)psz_chroma[2] << 16;
+ i_chroma |= (unsigned char)psz_chroma[3] << 24;
+
+ b_chroma = 1;
+ }
+
+ free( psz_chroma );
+ }
+
+ if( b_chroma )
+ {
+ intf_WarnMsg( 3, "vout info: forcing chroma 0x%.8x (%4.4s)",
+ i_chroma, (char*)&i_chroma );
+ }
+ else
+ {
+ i_chroma = p_vout->render.i_chroma;
+ }
+
/* Check that we have access to an XVideo port providing this chroma */
p_vout->p_sys->i_xvport = XVideoGetPort( p_vout->p_sys->p_display,
- p_vout->render.i_chroma,
+ i_chroma,
&p_vout->output.i_chroma );
if( p_vout->p_sys->i_xvport < 0 )
{
+ /* If a specific chroma format was requested, then we don't try to
+ * be cleverer than the user. He knows pretty well what he wants. */
+ if( b_chroma )
+ {
+ XCloseDisplay( p_vout->p_sys->p_display );
+ free( p_vout->p_sys );
+ return 1;
+ }
+
/* It failed, but it's not completely lost ! We try to open an
* XVideo port for an YUY2 picture. We'll need to do an YUV
* conversion, but at least it has got scaling. */
* xvideo.c : Xvideo plugin for vlc
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: xvideo.c,v 1.11 2002/04/23 14:16:20 sam Exp $
+ * $Id: xvideo.c,v 1.12 2002/05/13 17:58:08 sam Exp $
*
* Authors: Shane Harper <shanegh@optusnet.com.au>
* Vincent Seguin <seguin@via.ecp.fr>
"Specify the X11 hardware display you want to use.\nBy default vlc will " \
"use the value of the DISPLAY environment variable.")
+#define CHROMA_TEXT N_("XVimage chroma format")
+#define CHROMA_LONGTEXT N_( \
+ "Force the XVideo renderer to use a specific chroma format instead of " \
+ "trying to improve performances by using the most efficient one.")
+
MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_STRING ( "xvideo-display", NULL, NULL, DISPLAY_TEXT, DISPLAY_LONGTEXT )
ADD_INTEGER ( "xvideo-adaptor", -1, NULL, ADAPTOR_TEXT, ADAPTOR_LONGTEXT )
ADD_BOOL ( "xvideo-altfullscreen", NULL, ALT_FS_TEXT, ALT_FS_LONGTEXT )
+ADD_STRING ( "xvideo-chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT )
MODULE_CONFIG_STOP
MODULE_INIT_START