Index: configure =================================================================== RCS file: /cvsroot/mplayer/main/configure,v retrieving revision 1.919 diff -u -r1.919 configure --- configure 12 Oct 2004 21:00:32 -0000 1.919 +++ configure 13 Oct 2004 16:49:57 -0000 @@ -3526,9 +3526,9 @@ _def_gl='#define HAVE_GL 1' if test "$_gl_win32" = yes ; then _def_gl_win32='#define GL_WIN32 1' - _vosrc="$_vosrc vo_gl2.c w32_common.c" + _vosrc="$_vosrc vo_gl2.c w32_common.c gl_common.c" else - _vosrc="$_vosrc vo_gl.c vo_gl2.c" + _vosrc="$_vosrc vo_gl.c vo_gl2.c gl_common.c" fi _vomodules="opengl $_vomodules" else Index: libvo/vo_gl.c =================================================================== RCS file: /cvsroot/mplayer/main/libvo/vo_gl.c,v retrieving revision 1.53 diff -u -r1.53 vo_gl.c --- libvo/vo_gl.c 10 Oct 2004 14:05:29 -0000 1.53 +++ libvo/vo_gl.c 13 Oct 2004 16:50:03 -0000 @@ -21,6 +21,7 @@ #include +#include "gl_common.h" #include "x11_common.h" #include "aspect.h" @@ -180,7 +181,6 @@ XSizeHints hint; XVisualInfo *vinfo; XEvent xev; - GLint gl_alignment; // XGCValues xgcv; @@ -280,15 +280,7 @@ glEnable(GL_TEXTURE_2D); // set alignment as default is 4 which will break some files - if ((image_width * image_bytes) % 8 == 0) - gl_alignment=8; - else if ((image_width * image_bytes) % 4 == 0) - gl_alignment=4; - else if ((image_width * image_bytes) % 2 == 0) - gl_alignment=2; - else - gl_alignment=1; - glPixelStorei (GL_UNPACK_ALIGNMENT, gl_alignment); + glAdjustAlignment(image_width * image_bytes); mp_msg(MSGT_VO, MSGL_V, "[gl] Creating %dx%d texture...\n",texture_width,texture_height); @@ -330,7 +322,8 @@ unsigned char *src, unsigned char *srca, int stride) { - int sx = 1, sy = 1; + // initialize to 8 to avoid special-casing on alignment + int sx = 8, sy = 8; GLfloat xcov, ycov; char *clearTexture; while (sx < w) sx *= 2; @@ -346,16 +339,16 @@ memset(clearTexture, 0, sx * sy); // create Textures for OSD part + glAdjustAlignment(stride); + glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); glGenTextures(1, &osdtex[osdtexCnt]); glBindTexture(GL_TEXTURE_2D, osdtex[osdtexCnt]); glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, sx, sy, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, clearTexture); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_LUMINANCE, GL_UNSIGNED_BYTE, src); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); #ifndef FAST_OSD glGenTextures(1, &osdatex[osdtexCnt]); @@ -364,11 +357,11 @@ GL_LUMINANCE, GL_UNSIGNED_BYTE, clearTexture); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, srca); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); #endif + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glAdjustAlignment(image_width * image_bytes); glBindTexture(GL_TEXTURE_2D, 0); free(clearTexture); Index: libvo/vo_gl2.c =================================================================== RCS file: /cvsroot/mplayer/main/libvo/vo_gl2.c,v retrieving revision 1.53 diff -u -r1.53 vo_gl2.c --- libvo/vo_gl2.c 6 Oct 2004 16:48:19 -0000 1.53 +++ libvo/vo_gl2.c 13 Oct 2004 16:50:06 -0000 @@ -31,6 +31,7 @@ #endif #include +#include "gl_common.h" #ifdef GL_WIN32 #include "w32_common.h" #else @@ -96,7 +97,6 @@ static char * gl_bitmap_format_s; static GLint gl_bitmap_type; static char * gl_bitmap_type_s; -static int gl_alignment; static int isGL12 = GL_FALSE; static int gl_bilinear=1; @@ -821,16 +821,7 @@ * may give a little speed up for a kinda burst read .. * Also, the default of 4 will break some files. */ - if( (image_width*image_bytes)%8 == 0 ) - gl_alignment=8; - else if( (image_width*image_bytes)%4 == 0 ) - gl_alignment=4; - else if( (image_width*image_bytes)%2 == 0 ) - gl_alignment=2; - else - gl_alignment=1; - - glPixelStorei (GL_UNPACK_ALIGNMENT, gl_alignment); + glAdjustAlignment(image_width*image_bytes); glEnable (GL_TEXTURE_2D); @@ -842,9 +833,9 @@ free (ImageData); ImageData = NULL; - mp_msg(MSGT_VO, MSGL_V, "[gl2] Using image_bpp=%d, image_bytes=%d, isBGR=%d, \n\tgl_bitmap_format=%s, gl_bitmap_type=%s, \n\tgl_alignment=%d, rgb_size=%d (%d,%d,%d), a_sz=%d, \n\tgl_internal_format=%s\n", + mp_msg(MSGT_VO, MSGL_V, "[gl2] Using image_bpp=%d, image_bytes=%d, isBGR=%d, \n\tgl_bitmap_format=%s, gl_bitmap_type=%s, \n\trgb_size=%d (%d,%d,%d), a_sz=%d, \n\tgl_internal_format=%s\n", image_bpp, image_bytes, image_mode==MODE_BGR, - gl_bitmap_format_s, gl_bitmap_type_s, gl_alignment, + gl_bitmap_format_s, gl_bitmap_type_s, rgb_sz, r_sz, g_sz, b_sz, a_sz, gl_internal_format_s); resize(&d_width, &d_height);