summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-05-09 00:16:46 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-05-09 00:16:46 +0000
commit6f28f44c8c48ec0de064fecfb3bf1c47950f1e3a (patch)
tree5af1a5ba6a87aa1d96133e8788397d7c3cef80f0 /libvo
parent668854c7dc587511add601df5e4fbc398b88db86 (diff)
downloadmpv-6f28f44c8c48ec0de064fecfb3bf1c47950f1e3a.tar.bz2
mpv-6f28f44c8c48ec0de064fecfb3bf1c47950f1e3a.tar.xz
Handle chroma texture size becoming 0, e.g. due to bad rounding.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31143 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/gl_common.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libvo/gl_common.c b/libvo/gl_common.c
index 2e2b04c920..87034ff7aa 100644
--- a/libvo/gl_common.c
+++ b/libvo/gl_common.c
@@ -528,8 +528,11 @@ void glCreateClearTex(GLenum target, GLenum fmt, GLenum format, GLenum type, GLi
int w, int h, unsigned char val) {
GLfloat fval = (GLfloat)val / 255.0;
GLfloat border[4] = {fval, fval, fval, fval};
- int stride = w * glFmt2bpp(format, type);
+ int stride;
char *init;
+ if (w == 0) w = 1;
+ if (h == 0) h = 1;
+ stride = w * glFmt2bpp(format, type);
if (!stride) return;
init = malloc(stride * h);
memset(init, val, stride * h);
@@ -1421,6 +1424,8 @@ int glAutodetectYUVConversion(void) {
void glSetupYUVConversion(gl_conversion_params_t *params) {
float uvcos = params->csp_params.saturation * cos(params->csp_params.hue);
float uvsin = params->csp_params.saturation * sin(params->csp_params.hue);
+ if (params->chrom_texw == 0) params->chrom_texw = 1;
+ if (params->chrom_texh == 0) params->chrom_texh = 1;
switch (YUV_CONVERSION(params->type)) {
case YUV_CONVERSION_COMBINERS:
glSetupYUVCombiners(uvcos, uvsin);