Mercurial > mplayer.hg
changeset 10359:772571c63d45
move xv_set_eq to x11_common
author | iive |
---|---|
date | Tue, 01 Jul 2003 21:37:20 +0000 |
parents | 03f84d95397a |
children | b79a4c15d081 |
files | libvo/vo_xv.c libvo/x11_common.c libvo/x11_common.h |
diffstat | 3 files changed, 145 insertions(+), 133 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_xv.c Tue Jul 01 19:23:08 2003 +0000 +++ b/libvo/vo_xv.c Tue Jul 01 21:37:20 2003 +0000 @@ -111,137 +111,6 @@ 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 @@ 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 @@ 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;
--- a/libvo/x11_common.c Tue Jul 01 19:23:08 2003 +0000 +++ b/libvo/x11_common.c Tue Jul 01 21:37:20 2003 +0000 @@ -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 @@ 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
--- a/libvo/x11_common.h Tue Jul 01 19:23:08 2003 +0000 +++ b/libvo/x11_common.h Tue Jul 01 21:37:20 2003 +0000 @@ -61,6 +61,11 @@ 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);