summaryrefslogtreecommitdiffstats
path: root/libvo/gl_common.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-04-04 16:56:30 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-04-04 16:56:30 +0000
commitb8a7ed8a79ed6d9c911bc2be082f86bf2d92c48d (patch)
tree19dd7fb39e56dc13f5d81f01c726160fdc7d382d /libvo/gl_common.c
parentad26195a80a3325969d479b5e6bea308e64cf844 (diff)
downloadmpv-b8a7ed8a79ed6d9c911bc2be082f86bf2d92c48d.tar.bz2
mpv-b8a7ed8a79ed6d9c911bc2be082f86bf2d92c48d.tar.xz
Factor out the YUV->RGB conversion auto-selection and also
enable auto-selection of ATI fragment shaders since they should do accurate conversions now. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31006 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/gl_common.c')
-rw-r--r--libvo/gl_common.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libvo/gl_common.c b/libvo/gl_common.c
index 07593989ae..e8b66e1ccc 100644
--- a/libvo/gl_common.c
+++ b/libvo/gl_common.c
@@ -1380,6 +1380,20 @@ static void glSetupYUVFragprog(gl_conversion_params_t *params) {
}
/**
+ * \brief detect the best YUV->RGB conversion method available
+ */
+int glAutodetectYUVConversion(void) {
+ const char *extensions = mpglGetString(GL_EXTENSIONS);
+ if (strstr(extensions, "GL_ARB_fragment_program"))
+ return YUV_CONVERSION_FRAGMENT;
+ if (strstr(extensions, "GL_ATI_text_fragment_shader"))
+ return YUV_CONVERSION_TEXT_FRAGMENT;
+ if (strstr(extensions, "GL_ATI_fragment_shader"))
+ return YUV_CONVERSION_COMBINERS_ATI;
+ return YUV_CONVERSION_NONE;
+}
+
+/**
* \brief setup YUV->RGB conversion
* \param parms struct containing parameters like conversion and scaler type,
* brightness, ...