summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authoriive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-01 21:37:20 +0000
committeriive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-01 21:37:20 +0000
commita078b2a474f9fe105444a0620de4cbaf63eece7b (patch)
treee6db0a0a01d0e4ae7c6e7265371d10996ccb6df9 /libvo
parent5bd84cbaaf4bf291e422a659474f4635c5504615 (diff)
downloadmpv-a078b2a474f9fe105444a0620de4cbaf63eece7b.tar.bz2
mpv-a078b2a474f9fe105444a0620de4cbaf63eece7b.tar.xz
move xv_set_eq to x11_common
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10360 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/vo_xv.c135
-rw-r--r--libvo/x11_common.c138
-rw-r--r--libvo/x11_common.h5
3 files changed, 145 insertions, 133 deletions
diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c
index 101cfdf9de..2c05e67895 100644
--- a/libvo/vo_xv.c
+++ b/libvo/vo_xv.c
@@ -111,137 +111,6 @@ static void draw_alpha_uyvy(int x0,int y0, int w,int h, unsigned char* src, unsi
static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
}
-static int xv_set_eq(char *name, int value)
-{
- XvAttribute *attributes;
- int howmany, xv_atom;
-
- mp_dbg(MSGT_VO, MSGL_V, "xv_set_eq called! (%s, %d)\n", name, value);
-
- /* get available attributes */
- attributes = XvQueryPortAttributes(mDisplay, xv_port, &howmany);
- for (i = 0; i < howmany && attributes; i++)
- if (attributes[i].flags & XvSettable)
- {
- xv_atom = XInternAtom(mDisplay, attributes[i].name, True);
-/* since we have SET_DEFAULTS first in our list, we can check if it's available
- then trigger it if it's ok so that the other values are at default upon query */
- if (xv_atom != None)
- {
- int hue = 0,port_value,port_min,port_max;
-
- if(!strcmp(attributes[i].name,"XV_BRIGHTNESS") &&
- (!strcasecmp(name, "brightness")))
- port_value = value;
- else
- if(!strcmp(attributes[i].name,"XV_CONTRAST") &&
- (!strcasecmp(name, "contrast")))
- port_value = value;
- else
- if(!strcmp(attributes[i].name,"XV_SATURATION") &&
- (!strcasecmp(name, "saturation")))
- port_value = value;
- else
- if(!strcmp(attributes[i].name,"XV_HUE") &&
- (!strcasecmp(name, "hue")))
- { port_value = value; hue=1; }
- else
- /* Note: since 22.01.2002 GATOS supports these attrs for radeons (NK) */
- if(!strcmp(attributes[i].name,"XV_RED_INTENSITY") &&
- (!strcasecmp(name, "red_intensity")))
- port_value = value;
- else
- if(!strcmp(attributes[i].name,"XV_GREEN_INTENSITY") &&
- (!strcasecmp(name, "green_intensity")))
- port_value = value;
- else
- if(!strcmp(attributes[i].name,"XV_BLUE_INTENSITY") &&
- (!strcasecmp(name, "blue_intensity")))
- port_value = value;
- else continue;
-
- port_min = attributes[i].min_value;
- port_max = attributes[i].max_value;
-
- /* nvidia hue workaround */
- if ( hue && port_min == 0 && port_max == 360 ){
- port_value = (port_value>=0) ? (port_value-100) : (port_value+100);
- }
-
- // -100 -> min
- // 0 -> (max+min)/2
- // +100 -> max
- port_value = (port_value+100)*(port_max-port_min)/200+port_min;
- XvSetPortAttribute(mDisplay, xv_port, xv_atom, port_value);
- return(VO_TRUE);
- }
- }
- return(VO_FALSE);
-}
-
-static int xv_get_eq(char *name, int *value)
-{
- XvAttribute *attributes;
- int howmany, xv_atom;
-
- /* get available attributes */
- attributes = XvQueryPortAttributes(mDisplay, xv_port, &howmany);
- for (i = 0; i < howmany && attributes; i++)
- if (attributes[i].flags & XvGettable)
- {
- xv_atom = XInternAtom(mDisplay, attributes[i].name, True);
-/* since we have SET_DEFAULTS first in our list, we can check if it's available
- then trigger it if it's ok so that the other values are at default upon query */
- if (xv_atom != None)
- {
- int val, port_value=0, port_min, port_max;
-
- XvGetPortAttribute(mDisplay, xv_port, xv_atom, &port_value);
-
- port_min = attributes[i].min_value;
- port_max = attributes[i].max_value;
- val=(port_value-port_min)*200/(port_max-port_min)-100;
-
- if(!strcmp(attributes[i].name,"XV_BRIGHTNESS") &&
- (!strcasecmp(name, "brightness")))
- *value = val;
- else
- if(!strcmp(attributes[i].name,"XV_CONTRAST") &&
- (!strcasecmp(name, "contrast")))
- *value = val;
- else
- if(!strcmp(attributes[i].name,"XV_SATURATION") &&
- (!strcasecmp(name, "saturation")))
- *value = val;
- else
- if(!strcmp(attributes[i].name,"XV_HUE") &&
- (!strcasecmp(name, "hue"))){
- /* nasty nvidia detect */
- if (port_min == 0 && port_max == 360)
- *value = (val>=0) ? (val-100) : (val+100);
- else
- *value = val;
- } else
- /* Note: since 22.01.2002 GATOS supports these attrs for radeons (NK) */
- if(!strcmp(attributes[i].name,"XV_RED_INTENSITY") &&
- (!strcasecmp(name, "red_intensity")))
- *value = val;
- else
- if(!strcmp(attributes[i].name,"XV_GREEN_INTENSITY") &&
- (!strcasecmp(name, "green_intensity")))
- *value = val;
- else
- if(!strcmp(attributes[i].name,"XV_BLUE_INTENSITY") &&
- (!strcasecmp(name, "blue_intensity")))
- *value = val;
- else continue;
-
- mp_dbg(MSGT_VO, MSGL_V, "xv_get_eq called! (%s, %d)\n", name, *value);
- return(VO_TRUE);
- }
- }
- return(VO_FALSE);
-}
static void deallocate_xvimage(int foo);
@@ -833,7 +702,7 @@ static uint32_t control(uint32_t request, void *data, ...)
value = va_arg(ap, int);
va_end(ap);
- return(xv_set_eq(data, value));
+ return(vo_xv_set_eq(xv_port, data, value));
}
case VOCTRL_GET_EQUALIZER:
{
@@ -844,7 +713,7 @@ static uint32_t control(uint32_t request, void *data, ...)
value = va_arg(ap, int*);
va_end(ap);
- return(xv_get_eq(data, value));
+ return(vo_xv_get_eq(xv_port, data, value));
}
}
return VO_NOTIMPL;
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 682d295290..330a0e3c60 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -36,6 +36,11 @@
#include <X11/XF86keysym.h>
#endif
+#ifdef HAVE_XV
+#include <X11/extensions/Xv.h>
+#include <X11/extensions/Xvlib.h>
+#endif
+
#include "../input/input.h"
#include "../input/mouse.h"
@@ -1390,5 +1395,138 @@ uint32_t vo_x11_get_equalizer(char *name, int *value)
else return VO_NOTIMPL;
return VO_TRUE;
}
+#ifdef HAVE_XV
+int vo_xv_set_eq(uint32_t xv_port, char *name, int value)
+{
+ XvAttribute *attributes;
+ int i,howmany, xv_atom;
+
+ mp_dbg(MSGT_VO, MSGL_V, "xv_set_eq called! (%s, %d)\n", name, value);
+
+ /* get available attributes */
+ attributes = XvQueryPortAttributes(mDisplay, xv_port, &howmany);
+ for (i = 0; i < howmany && attributes; i++)
+ if (attributes[i].flags & XvSettable)
+ {
+ xv_atom = XInternAtom(mDisplay, attributes[i].name, True);
+/* since we have SET_DEFAULTS first in our list, we can check if it's available
+ then trigger it if it's ok so that the other values are at default upon query */
+ if (xv_atom != None)
+ {
+ int hue = 0,port_value,port_min,port_max;
+
+ if(!strcmp(attributes[i].name,"XV_BRIGHTNESS") &&
+ (!strcasecmp(name, "brightness")))
+ port_value = value;
+ else
+ if(!strcmp(attributes[i].name,"XV_CONTRAST") &&
+ (!strcasecmp(name, "contrast")))
+ port_value = value;
+ else
+ if(!strcmp(attributes[i].name,"XV_SATURATION") &&
+ (!strcasecmp(name, "saturation")))
+ port_value = value;
+ else
+ if(!strcmp(attributes[i].name,"XV_HUE") &&
+ (!strcasecmp(name, "hue")))
+ { port_value = value; hue=1; }
+ else
+ /* Note: since 22.01.2002 GATOS supports these attrs for radeons (NK) */
+ if(!strcmp(attributes[i].name,"XV_RED_INTENSITY") &&
+ (!strcasecmp(name, "red_intensity")))
+ port_value = value;
+ else
+ if(!strcmp(attributes[i].name,"XV_GREEN_INTENSITY") &&
+ (!strcasecmp(name, "green_intensity")))
+ port_value = value;
+ else
+ if(!strcmp(attributes[i].name,"XV_BLUE_INTENSITY") &&
+ (!strcasecmp(name, "blue_intensity")))
+ port_value = value;
+ else continue;
+
+ port_min = attributes[i].min_value;
+ port_max = attributes[i].max_value;
+
+ /* nvidia hue workaround */
+ if ( hue && port_min == 0 && port_max == 360 ){
+ port_value = (port_value>=0) ? (port_value-100) : (port_value+100);
+ }
+
+ // -100 -> min
+ // 0 -> (max+min)/2
+ // +100 -> max
+ port_value = (port_value+100)*(port_max-port_min)/200+port_min;
+ XvSetPortAttribute(mDisplay, xv_port, xv_atom, port_value);
+ return(VO_TRUE);
+ }
+ }
+ return(VO_FALSE);
+}
+int vo_xv_get_eq(uint32_t xv_port, char *name, int *value)
+{
+
+ XvAttribute *attributes;
+ int i,howmany, xv_atom;
+
+ /* get available attributes */
+ attributes = XvQueryPortAttributes(mDisplay, xv_port, &howmany);
+ for (i = 0; i < howmany && attributes; i++)
+ if (attributes[i].flags & XvGettable)
+ {
+ xv_atom = XInternAtom(mDisplay, attributes[i].name, True);
+/* since we have SET_DEFAULTS first in our list, we can check if it's available
+ then trigger it if it's ok so that the other values are at default upon query */
+ if (xv_atom != None)
+ {
+ int val, port_value=0, port_min, port_max;
+
+ XvGetPortAttribute(mDisplay, xv_port, xv_atom, &port_value);
+
+ port_min = attributes[i].min_value;
+ port_max = attributes[i].max_value;
+ val=(port_value-port_min)*200/(port_max-port_min)-100;
+
+ if(!strcmp(attributes[i].name,"XV_BRIGHTNESS") &&
+ (!strcasecmp(name, "brightness")))
+ *value = val;
+ else
+ if(!strcmp(attributes[i].name,"XV_CONTRAST") &&
+ (!strcasecmp(name, "contrast")))
+ *value = val;
+ else
+ if(!strcmp(attributes[i].name,"XV_SATURATION") &&
+ (!strcasecmp(name, "saturation")))
+ *value = val;
+ else
+ if(!strcmp(attributes[i].name,"XV_HUE") &&
+ (!strcasecmp(name, "hue"))){
+ /* nasty nvidia detect */
+ if (port_min == 0 && port_max == 360)
+ *value = (val>=0) ? (val-100) : (val+100);
+ else
+ *value = val;
+ } else
+ /* Note: since 22.01.2002 GATOS supports these attrs for radeons (NK) */
+ if(!strcmp(attributes[i].name,"XV_RED_INTENSITY") &&
+ (!strcasecmp(name, "red_intensity")))
+ *value = val;
+ else
+ if(!strcmp(attributes[i].name,"XV_GREEN_INTENSITY") &&
+ (!strcasecmp(name, "green_intensity")))
+ *value = val;
+ else
+ if(!strcmp(attributes[i].name,"XV_BLUE_INTENSITY") &&
+ (!strcasecmp(name, "blue_intensity")))
+ *value = val;
+ else continue;
+
+ mp_dbg(MSGT_VO, MSGL_V, "xv_get_eq called! (%s, %d)\n", name, *value);
+ return(VO_TRUE);
+ }
+ }
+ return(VO_FALSE);
+}
+#endif
diff --git a/libvo/x11_common.h b/libvo/x11_common.h
index d89526912d..f0f3efde11 100644
--- a/libvo/x11_common.h
+++ b/libvo/x11_common.h
@@ -61,6 +61,11 @@ extern Window vo_window;
extern GC vo_gc;
extern XSizeHints vo_hint;
+#ifdef HAVE_XV
+extern int vo_xv_set_eq(uint32_t xv_port, char * name, int value);
+extern int vo_xv_get_eq(uint32_t xv_port, char * name, int *value);
+#endif
+
#ifdef HAVE_NEW_GUI
extern void vo_setwindow( Window w,GC g );
extern void vo_x11_putkey(int key);