summaryrefslogtreecommitdiffstats
path: root/libvo/vo_fbdev.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-08-22 23:03:51 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-08-22 23:03:51 +0000
commit4ae1571dda7f29737939a91445bef2885bd0ebea (patch)
tree68fb4755bab37729823af59c011f06333cabd1e2 /libvo/vo_fbdev.c
parent0e6edc2840af15cd9d175219521627bbc94454b2 (diff)
downloadmpv-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.c79
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 */