[Mplayer-cvslog] CVS: main/libvo video_out.c,1.76,1.77 video_out.h,1.52,1.53 vo_xmga.c,1.84,1.85 vo_xover.c,1.4,1.5 vo_xvidix.c,1.61,1.62

Alex Beregszaszi alex at mplayerhq.hu
Fri Oct 3 20:13:54 CEST 2003


Update of /cvsroot/mplayer/main/libvo
In directory mail:/var/tmp.root/cvs-serv23891/libvo

Modified Files:
	video_out.c video_out.h vo_xmga.c vo_xover.c vo_xvidix.c 
Log Message:
user settable colorkey

Index: video_out.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/video_out.c,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- video_out.c	2 Oct 2003 14:25:52 -0000	1.76
+++ video_out.c	3 Oct 2003 18:13:45 -0000	1.77
@@ -47,6 +47,8 @@
 char *vo_subdevice = NULL;
 int vo_directrendering=0;
 
+int vo_colorkey = 0x0000ff00; // default colorkey is green
+
 //
 // Externally visible list of all vo drivers
 //

Index: video_out.h
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/video_out.h,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- video_out.h	1 Sep 2003 18:24:27 -0000	1.52
+++ video_out.h	3 Oct 2003 18:13:45 -0000	1.53
@@ -211,6 +211,8 @@
 
 extern char *vo_subdevice;
 
+extern int vo_colorkey;
+
 #if defined(HAVE_FBDEV)||defined(HAVE_VESA) 
 
 typedef struct {

Index: vo_xmga.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xmga.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- vo_xmga.c	31 Aug 2003 12:57:27 -0000	1.84
+++ vo_xmga.c	3 Oct 2003 18:13:45 -0000	1.85
@@ -62,7 +62,7 @@
 
 static uint32_t               mDepth;
 static XWindowAttributes      attribs;
-static uint32_t               fgColor;
+static int colorkey;
 
 static uint32_t               mvHeight;
 static uint32_t               mvWidth;
@@ -81,7 +81,7 @@
 {
  XSetBackground( mDisplay,vo_gc,0 );
  XClearWindow( mDisplay,vo_window );
- XSetForeground( mDisplay,vo_gc,fgColor );
+ XSetForeground( mDisplay,vo_gc,colorkey );
  XFillRectangle( mDisplay,vo_window,vo_gc,drwX,drwY,drwWidth,(vo_fs?drwHeight - 1:drwHeight) );
  XFlush( mDisplay );
 }
@@ -112,6 +112,7 @@
  char                 * mTitle=(title == NULL) ? "XMGA render" : title;
  XVisualInfo            vinfo;
  unsigned long          xswamask;
+ int r, g, b;
 
  if(mga_init(width,height,format)) return -1; // ioctl errors?
 
@@ -129,14 +130,18 @@
  vo_dwidth=d_width; vo_dheight=d_height;
  vo_mouse_autohide=1;
 
+ r = (vo_colorkey & 0x00ff0000) >> 16;
+ g = (vo_colorkey & 0x0000ff00) >> 8;
+ b = vo_colorkey & 0x000000ff;
  switch ( vo_depthonscreen )
   {
-   case 32:
-   case 24: fgColor=0x00ff00ffL; break;
-   case 16: fgColor=0xf81fL; break;
-   case 15: fgColor=0x7c1fL; break;
+   case 32: colorkey = vo_colorkey; break;
+   case 24: colorkey = vo_colorkey & 0x00ffffff; break;
+   case 16: colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); break;
+   case 15: colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); break;
    default: mp_msg(MSGT_VO,MSGL_ERR,"Sorry, this (%d) color depth not supported.\n",vo_depthonscreen ); return -1;
   }
+  mp_msg(MSGT_VO, MSGL_INFO, "Using colorkey: %x\n", colorkey);
 
   inited=1;
 
@@ -208,9 +213,9 @@
  panscan_calc();
 
  mga_vid_config.colkey_on=1;
- mga_vid_config.colkey_red=255;
- mga_vid_config.colkey_green=0;
- mga_vid_config.colkey_blue=255;
+ mga_vid_config.colkey_red=r;
+ mga_vid_config.colkey_green=g;
+ mga_vid_config.colkey_blue=b;
 
  set_window();	// set up mga_vid_config.dest_width etc
 

Index: vo_xover.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xover.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- vo_xover.c	29 Aug 2003 21:42:51 -0000	1.4
+++ vo_xover.c	3 Oct 2003 18:13:45 -0000	1.5
@@ -53,8 +53,7 @@
 /* X11 related variables */
 /* Colorkey handling */
 static XGCValues mGCV;
-static uint32_t	fgColor;
-static uint32_t bgColor;
+static int colorkey;
 
 /* Image parameters */
 static uint32_t image_width;
@@ -188,9 +187,9 @@
   /* mDrawColorKey: */
 
   /* fill drawable with specified color */
-  XSetBackground( mDisplay,vo_gc,bgColor );
+  XSetBackground(mDisplay, vo_gc, 0L);
   XClearWindow( mDisplay,vo_window );
-  XSetForeground(mDisplay, vo_gc, fgColor);
+  XSetForeground(mDisplay, vo_gc, colorkey);
   XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth,
 		 (vo_fs ? drwHeight - 1 : drwHeight));
   /* flush, update drawable */
@@ -210,7 +209,7 @@
   XSetWindowAttributes xswa;
   unsigned long xswamask;
   XWindowAttributes attribs;
-  int window_depth;
+  int window_depth, r, g, b;
   mp_colorkey_t colork;
   char _title[255];
 
@@ -233,24 +232,28 @@
   window_width = d_width;
   window_height = d_height;
 
-  /* from xmga.c */
-  bgColor = 0x0L;
+  r = (vo_colorkey & 0x00ff0000) >> 16;
+  g = (vo_colorkey & 0x0000ff00) >> 8;
+  b = vo_colorkey & 0x000000ff;
   switch(vo_depthonscreen)
     {
     case 32:
+      colorkey = vo_colorkey;
+      break;
     case 24:
-      fgColor = 0x00ff00ffL;
+      colorkey = vo_colorkey & 0x00ffffff;
       break;
     case 16:
-      fgColor = 0xf81fL;
+      colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);
       break;
     case 15:
-      fgColor = 0x7c1fL;
+      colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3);
       break;
     default:
       mp_msg(MSGT_VO, MSGL_ERR, "Sorry, this (%d) color depth is not supported\n",
 	     vo_depthonscreen);
     }
+  mp_msg(MSGT_VO, MSGL_INFO, "Using colorkey: %x\n", colorkey);
 
   aspect(&d_width, &d_height, A_NOZOOM);
 
@@ -332,10 +335,10 @@
     mp_msg(MSGT_VO, MSGL_ERR, "xover: sub vo config failed\n");
     return 1;
   }
-  colork.x11 = fgColor;
-  colork.r = 255;
-  colork.g = 0;
-  colork.b = 255;
+  colork.x11 = colorkey;
+  colork.r = r;
+  colork.g = g;
+  colork.b = b;
   if(sub_vo->control(VOCTRL_XOVERLAY_SET_COLORKEY,&colork) != VO_TRUE)
     mp_msg(MSGT_VO, MSGL_WARN, "xover: set_colorkey failed\n");
 

Index: vo_xvidix.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xvidix.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- vo_xvidix.c	31 Aug 2003 18:33:02 -0000	1.61
+++ vo_xvidix.c	3 Oct 2003 18:13:45 -0000	1.62
@@ -53,8 +53,7 @@
 /* X11 related variables */
 /* Colorkey handling */
 static XGCValues mGCV;
-static uint32_t	fgColor;
-static uint32_t bgColor;
+static int colorkey;
 static vidix_grkey_t gr_key;
 
 /* VIDIX related */
@@ -198,9 +197,9 @@
     /* mDrawColorKey: */
 
     /* fill drawable with specified color */
-    XSetBackground( mDisplay,vo_gc,bgColor );
+    XSetBackground(mDisplay, vo_gc, 0L);
     XClearWindow( mDisplay,vo_window );
-    XSetForeground(mDisplay, vo_gc, fgColor);
+    XSetForeground(mDisplay, vo_gc, colorkey);
     XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth,
 	(vo_fs ? drwHeight - 1 : drwHeight));
     /* flush, update drawable */
@@ -220,7 +219,7 @@
     XSetWindowAttributes xswa;
     unsigned long xswamask;
     XWindowAttributes attribs;
-    int window_depth;
+    int window_depth, r, g, b;
 
     title = "MPlayer VIDIX X11 Overlay";
 
@@ -246,24 +245,28 @@
 //    if (vo_fs)
 //     { vo_old_width=d_width; vo_old_height=d_height; }
 
-    /* from xmga.c */
-    bgColor = 0x0L;
+    r = (vo_colorkey & 0x00ff0000) >> 16;
+    g = (vo_colorkey & 0x0000ff00) >> 8;
+    b = vo_colorkey & 0x000000ff;
     switch(vo_depthonscreen)
     {
 	case 32:
+	    colorkey = vo_colorkey;
+	    break;
 	case 24:
-	    fgColor = 0x00ff00ffL;
+	    colorkey = vo_colorkey & 0x00ffffff;
 	    break;
 	case 16:
-	    fgColor = 0xf81fL;
+	    colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);
 	    break;
 	case 15:
-	    fgColor = 0x7c1fL;
+	    colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3);
 	    break;
 	default:
 	    mp_msg(MSGT_VO, MSGL_ERR, "Sorry, this (%d) color depth is not supported\n",
 		vo_depthonscreen);
     }
+    mp_msg(MSGT_VO, MSGL_INFO, "Using colorkey: %x\n", colorkey);
 
     aspect(&d_width, &d_height, A_NOZOOM);
 
@@ -344,9 +347,9 @@
 	vidix_grkey_get(&gr_key);
 	gr_key.key_op = KEYS_PUT;
 	gr_key.ckey.op = CKEY_TRUE;
-	gr_key.ckey.red = 255;
-	gr_key.ckey.green = 0;
-	gr_key.ckey.blue = 255;
+	gr_key.ckey.red = r;
+	gr_key.ckey.green = g;
+	gr_key.ckey.blue = b;
 	vidix_grkey_set(&gr_key);
     }
 



More information about the MPlayer-cvslog mailing list