From a078b2a474f9fe105444a0620de4cbaf63eece7b Mon Sep 17 00:00:00 2001 From: iive Date: Tue, 1 Jul 2003 21:37:20 +0000 Subject: move xv_set_eq to x11_common git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10360 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_xv.c | 135 +-------------------------------------------------- libvo/x11_common.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++ libvo/x11_common.h | 5 ++ 3 files changed, 145 insertions(+), 133 deletions(-) (limited to 'libvo') 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 #endif +#ifdef HAVE_XV +#include +#include +#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); -- cgit v1.2.3