[MPlayer-cvslog] r36222 - in trunk/libvo: gl_common.c vo_gl.c
reimar
subversion at mplayerhq.hu
Sat May 4 17:20:44 CEST 2013
Author: reimar
Date: Sat May 4 17:20:43 2013
New Revision: 36222
Log:
Add hack to support strides with GLES.
Reuse existing feature to upload texture line by line.
Modified:
trunk/libvo/gl_common.c
trunk/libvo/vo_gl.c
Modified: trunk/libvo/gl_common.c
==============================================================================
--- trunk/libvo/gl_common.c Sat May 4 17:20:42 2013 (r36221)
+++ trunk/libvo/gl_common.c Sat May 4 17:20:43 2013 (r36222)
@@ -769,6 +769,7 @@ int glFmt2bpp(GLenum format, GLenum type
void glUploadTex(GLenum target, GLenum format, GLenum type,
const void *dataptr, int stride,
int x, int y, int w, int h, int slice) {
+ int bpp;
const uint8_t *data = dataptr;
int y_max = y + h;
if (w <= 0 || h <= 0) return;
@@ -782,9 +783,15 @@ void glUploadTex(GLenum target, GLenum f
format = l16_format;
if (l16_format == GL_LUMINANCE_ALPHA) type = GL_UNSIGNED_BYTE;
}
- // this is not always correct, but should work for MPlayer
- glAdjustAlignment(stride);
- mpglPixelStorei(GL_UNPACK_ROW_LENGTH, stride / glFmt2bpp(format, type));
+ bpp = glFmt2bpp(format, type);
+ if (!mpglBegin) {
+ // we have to copy line-by-line for GLES
+ if (stride != w*bpp) slice = 1;
+ } else {
+ // this is not always correct, but should work for MPlayer
+ glAdjustAlignment(stride);
+ mpglPixelStorei(GL_UNPACK_ROW_LENGTH, stride / bpp);
+ }
if (slice < 0) {
mpglPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
mpglTexImage2D(target, 0, GL_RGB, w, h, 0, format, type, data);
Modified: trunk/libvo/vo_gl.c
==============================================================================
--- trunk/libvo/vo_gl.c Sat May 4 17:20:42 2013 (r36221)
+++ trunk/libvo/vo_gl.c Sat May 4 17:20:43 2013 (r36222)
@@ -1185,13 +1185,8 @@ query_format(uint32_t format)
{
int depth;
int caps = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW |
- VFCAP_FLIP |
+ VFCAP_FLIP | VFCAP_ACCEPT_STRIDE |
VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
- // TODO: This assumes backend auto-detection was run
- // before this code.
- // In addition strides might not work with X11 GLES either.
- if (glctx.type != GLTYPE_EGL_ANDROID)
- caps |= VFCAP_ACCEPT_STRIDE;
if (use_osd)
caps |= VFCAP_OSD | VFCAP_EOSD | (scaled_osd ? 0 : VFCAP_EOSD_UNSCALED);
if (format == IMGFMT_RGB24 || format == IMGFMT_RGBA)
More information about the MPlayer-cvslog
mailing list