Mercurial > mplayer.hg
changeset 13653:799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
author | reimar |
---|---|
date | Sun, 17 Oct 2004 13:28:22 +0000 |
parents | 3427a9f4b6e3 |
children | fe1282bdee25 |
files | configure libvo/gl_common.c libvo/gl_common.h libvo/vo_gl.c libvo/vo_gl2.c |
diffstat | 5 files changed, 41 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/configure Sat Oct 16 14:10:57 2004 +0000 +++ b/configure Sun Oct 17 13:28:22 2004 +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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libvo/gl_common.c Sun Oct 17 13:28:22 2004 +0000 @@ -0,0 +1,19 @@ +#include "gl_common.h" + +/** + * \brief adjusts the GL_UNPACK_ALGNMENT to fit the stride. + * \param stride number of bytes per line for which alignment should fit. + */ +void glAdjustAlignment(int stride) { + GLint gl_alignment; + if (stride % 8 == 0) + gl_alignment=8; + else if (stride % 4 == 0) + gl_alignment=4; + else if (stride % 2 == 0) + gl_alignment=2; + else + gl_alignment=1; + glPixelStorei (GL_UNPACK_ALIGNMENT, gl_alignment); +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libvo/gl_common.h Sun Oct 17 13:28:22 2004 +0000 @@ -0,0 +1,8 @@ +#ifndef __GL_COMMON_H__ +#define __GL_COMMON_H__ + +#include <GL/gl.h> + +void glAdjustAlignment(int stride); + +#endif
--- a/libvo/vo_gl.c Sat Oct 16 14:10:57 2004 +0000 +++ b/libvo/vo_gl.c Sun Oct 17 13:28:22 2004 +0000 @@ -21,6 +21,7 @@ #include <GL/gl.h> +#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); +#endif glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); -#endif + glAdjustAlignment(image_width * image_bytes); glBindTexture(GL_TEXTURE_2D, 0); free(clearTexture);
--- a/libvo/vo_gl2.c Sat Oct 16 14:10:57 2004 +0000 +++ b/libvo/vo_gl2.c Sun Oct 17 13:28:22 2004 +0000 @@ -31,6 +31,7 @@ #endif #include <errno.h> +#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);