[Mplayer-cvslog] CVS: main/libvo gl_common.c, NONE, 1.1 gl_common.h, NONE, 1.1 vo_gl.c, 1.53, 1.54 vo_gl2.c, 1.53, 1.54
Reimar Döffinger CVS
syncmail at mplayerhq.hu
Sun Oct 17 15:28:25 CEST 2004
CVS change done by Reimar Döffinger CVS
Update of /cvsroot/mplayer/main/libvo
In directory mail:/var2/tmp/cvs-serv15438/libvo
Modified Files:
vo_gl.c vo_gl2.c
Added Files:
gl_common.c gl_common.h
Log Message:
added gl_common for code used by both vo_gl.c and vo_gl2.c.
--- NEW FILE ---
#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);
}
--- NEW FILE ---
#ifndef __GL_COMMON_H__
#define __GL_COMMON_H__
#include <GL/gl.h>
void glAdjustAlignment(int stride);
#endif
Index: vo_gl.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_gl.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- vo_gl.c 10 Oct 2004 14:05:29 -0000 1.53
+++ vo_gl.c 17 Oct 2004 13:28:22 -0000 1.54
@@ -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);
- 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: vo_gl2.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_gl2.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- vo_gl2.c 6 Oct 2004 16:48:19 -0000 1.53
+++ vo_gl2.c 17 Oct 2004 13:28:22 -0000 1.54
@@ -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);
More information about the MPlayer-cvslog
mailing list