mirror of https://github.com/mpv-player/mpv
Allow specifying a custom (ppm) texture for texture unit 3
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16594 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d29c9ddf19
commit
e74494dd4d
|
@ -76,6 +76,8 @@ static GLuint fragprog;
|
||||||
static GLuint uvtexs[2];
|
static GLuint uvtexs[2];
|
||||||
static GLuint lookupTex;
|
static GLuint lookupTex;
|
||||||
static char *custom_prog;
|
static char *custom_prog;
|
||||||
|
static char *custom_tex;
|
||||||
|
static int custom_tlin;
|
||||||
|
|
||||||
static int int_pause;
|
static int int_pause;
|
||||||
static int eq_bri = 0;
|
static int eq_bri = 0;
|
||||||
|
@ -174,6 +176,26 @@ static void update_yuvconv() {
|
||||||
ProgramEnvParameter4f(GL_FRAGMENT_PROGRAM, 0,
|
ProgramEnvParameter4f(GL_FRAGMENT_PROGRAM, 0,
|
||||||
1.0 / texture_width, 1.0 / texture_height, 0, 0);
|
1.0 / texture_width, 1.0 / texture_height, 0, 0);
|
||||||
}
|
}
|
||||||
|
if (custom_tex) {
|
||||||
|
FILE *f = fopen(custom_tex, "r");
|
||||||
|
if (!f)
|
||||||
|
mp_msg(MSGT_VO, MSGL_WARN,
|
||||||
|
"[gl] Could not read customtex %s\n", custom_tex);
|
||||||
|
else {
|
||||||
|
int width, height, maxval;
|
||||||
|
ActiveTexture(GL_TEXTURE3);
|
||||||
|
if (glCreatePPMTex(GL_TEXTURE_2D, 3,
|
||||||
|
custom_tlin?GL_LINEAR:GL_NEAREST,
|
||||||
|
f, &width, &height, &maxval))
|
||||||
|
ProgramEnvParameter4f(GL_FRAGMENT_PROGRAM, 1,
|
||||||
|
1.0 / width, 1.0 / height, 1.0 / maxval, 0);
|
||||||
|
else
|
||||||
|
mp_msg(MSGT_VO, MSGL_WARN,
|
||||||
|
"[gl] Error parsing customtex %s\n", custom_tex);
|
||||||
|
fclose(f);
|
||||||
|
ActiveTexture(GL_TEXTURE0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -652,6 +674,8 @@ uninit(void)
|
||||||
releaseGlContext(&gl_vinfo, &gl_context);
|
releaseGlContext(&gl_vinfo, &gl_context);
|
||||||
if (custom_prog) free(custom_prog);
|
if (custom_prog) free(custom_prog);
|
||||||
custom_prog = NULL;
|
custom_prog = NULL;
|
||||||
|
if (custom_tex) free(custom_tex);
|
||||||
|
custom_tex = NULL;
|
||||||
#ifdef GL_WIN32
|
#ifdef GL_WIN32
|
||||||
vo_w32_uninit();
|
vo_w32_uninit();
|
||||||
#else
|
#else
|
||||||
|
@ -670,6 +694,8 @@ static opt_t subopts[] = {
|
||||||
{"glfinish", OPT_ARG_BOOL, &use_glFinish, NULL},
|
{"glfinish", OPT_ARG_BOOL, &use_glFinish, NULL},
|
||||||
{"swapinterval", OPT_ARG_INT, &swap_interval,NULL},
|
{"swapinterval", OPT_ARG_INT, &swap_interval,NULL},
|
||||||
{"customprog", OPT_ARG_MSTRZ,&custom_prog, NULL},
|
{"customprog", OPT_ARG_MSTRZ,&custom_prog, NULL},
|
||||||
|
{"customtex", OPT_ARG_MSTRZ,&custom_tex, NULL},
|
||||||
|
{"customtlin", OPT_ARG_BOOL, &custom_tlin, NULL},
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -686,6 +712,8 @@ static int preinit(const char *arg)
|
||||||
swap_interval = 1;
|
swap_interval = 1;
|
||||||
slice_height = 4;
|
slice_height = 4;
|
||||||
custom_prog = NULL;
|
custom_prog = NULL;
|
||||||
|
custom_tex = NULL;
|
||||||
|
custom_tlin = 1;
|
||||||
if (subopt_parse(arg, subopts) != 0) {
|
if (subopt_parse(arg, subopts) != 0) {
|
||||||
mp_msg(MSGT_VO, MSGL_FATAL,
|
mp_msg(MSGT_VO, MSGL_FATAL,
|
||||||
"\n-vo gl command line help:\n"
|
"\n-vo gl command line help:\n"
|
||||||
|
@ -719,6 +747,8 @@ static int preinit(const char *arg)
|
||||||
" use a custom YUV conversion program\n"
|
" use a custom YUV conversion program\n"
|
||||||
" customtex=<filename>\n"
|
" customtex=<filename>\n"
|
||||||
" use a custom YUV conversion lookup texture\n"
|
" use a custom YUV conversion lookup texture\n"
|
||||||
|
" nocustomtlin\n"
|
||||||
|
" use GL_NEAREST scaling for customtex texture\n"
|
||||||
"\n" );
|
"\n" );
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue