diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-08-22 23:03:51 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-08-22 23:03:51 +0000 |
commit | 4ae1571dda7f29737939a91445bef2885bd0ebea (patch) | |
tree | 68fb4755bab37729823af59c011f06333cabd1e2 /libvo/vo_fbdev.c | |
parent | 0e6edc2840af15cd9d175219521627bbc94454b2 (diff) | |
download | mpv-4ae1571dda7f29737939a91445bef2885bd0ebea.tar.bz2 mpv-4ae1571dda7f29737939a91445bef2885bd0ebea.tar.xz |
General Timing Formula algorithm from a scratch.
vo_vesa.c so now adjust the timing to highest possible refresh rate using
the monitor capabilities from a config file.
patch by Rudolf Marek <MAREKR2@cs.felk.cvut.cz>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7070 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/vo_fbdev.c')
-rw-r--r-- | libvo/vo_fbdev.c | 79 |
1 files changed, 8 insertions, 71 deletions
diff --git a/libvo/vo_fbdev.c b/libvo/vo_fbdev.c index d6e87a0655..876fe42e89 100644 --- a/libvo/vo_fbdev.c +++ b/libvo/vo_fbdev.c @@ -57,6 +57,14 @@ static signed int pre_init_err = -2; * fb.modes support * ******************************/ +extern char *monitor_hfreq_str; +extern char *monitor_vfreq_str; +extern char *monitor_dotclock_str; + +static range_t *monitor_hfreq = NULL; +static range_t *monitor_vfreq = NULL; +static range_t *monitor_dotclock = NULL; + typedef struct { char *name; uint32_t xres, yres, vxres, vyres, depth; @@ -396,18 +404,6 @@ static float vsf(fb_mode_t *m) //vertical scan frequency return hsf(m) / vtotal; } -typedef struct { - float min; - float max; -} range_t; - -static int in_range(range_t *r, float f) -{ - for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) - if (f >= r->min && f <= r->max) - return 1; - return 0; -} static int mode_works(fb_mode_t *m, range_t *hfreq, range_t *vfreq, range_t *dotclock) @@ -558,58 +554,6 @@ static void fb_mode2fb_vinfo(fb_mode_t *m, struct fb_var_screeninfo *v) v->vmode = m->vmode; } -static range_t *str2range(char *s) -{ - float tmp_min, tmp_max; - char *endptr = s; // to start the loop - range_t *r = NULL; - int i; - - if (!s) - return NULL; - for (i = 0; *endptr; i++) { - if (*s == ',') - goto out_err; - if (!(r = (range_t *) realloc(r, sizeof(*r) * (i + 2)))) { - printf("can't realloc 'r'\n"); - return NULL; - } - tmp_min = strtod(s, &endptr); - if (*endptr == 'k' || *endptr == 'K') { - tmp_min *= 1000.0; - endptr++; - } else if (*endptr == 'm' || *endptr == 'M') { - tmp_min *= 1000000.0; - endptr++; - } - if (*endptr == '-') { - tmp_max = strtod(endptr + 1, &endptr); - if (*endptr == 'k' || *endptr == 'K') { - tmp_max *= 1000.0; - endptr++; - } else if (*endptr == 'm' || *endptr == 'M') { - tmp_max *= 1000000.0; - endptr++; - } - if (*endptr != ',' && *endptr) - goto out_err; - } else if (*endptr == ',' || !*endptr) { - tmp_max = tmp_min; - } else - goto out_err; - r[i].min = tmp_min; - r[i].max = tmp_max; - if (r[i].min < 0 || r[i].max < 0) - goto out_err; - s = endptr + 1; - } - r[i].min = r[i].max = -1; - return r; -out_err: - if (r) - free(r); - return NULL; -} /****************************** * vo_fbdev * @@ -619,14 +563,7 @@ out_err: char *fb_dev_name = NULL; char *fb_mode_cfgfile = "/etc/fb.modes"; char *fb_mode_name = NULL; -char *monitor_hfreq_str = NULL; -char *monitor_vfreq_str = NULL; -char *monitor_dotclock_str = NULL; -/* fb.modes related variables */ -static range_t *monitor_hfreq = NULL; -static range_t *monitor_vfreq = NULL; -static range_t *monitor_dotclock = NULL; static fb_mode_t *fb_mode = NULL; /* vt related variables */ |