Mercurial > sdl-ios-xcode
changeset 3871:4d11f2ae7582 SDL-1.2
Fixed bug #276
PlanarPixmapInfoYUV420 is a big endian structure.
Fix contributed by Jean-Charles BERTIN
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 24 Sep 2006 00:04:06 +0000 |
parents | 571c75f3d093 |
children | be84332e761e |
files | src/video/quartz/SDL_QuartzYUV.m |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/quartz/SDL_QuartzYUV.m Sat Sep 23 23:15:34 2006 +0000 +++ b/src/video/quartz/SDL_QuartzYUV.m Sun Sep 24 00:04:06 2006 +0000 @@ -274,6 +274,8 @@ return NULL; } + /* Fix: jc.bertin@free.fr + PlanarPixmapInfoYUV420 is a big-endian struct */ yuv_pixmap = (PlanarPixmapInfoYUV420*) SDL_malloc (sizeof(PlanarPixmapInfoYUV420) + (width * height * 2)); @@ -291,20 +293,20 @@ /* CHECK_ALIGN(pixels[0]); */ pitches[0] = width; - yuv_pixmap->componentInfoY.offset = offset; - yuv_pixmap->componentInfoY.rowBytes = width; + yuv_pixmap->componentInfoY.offset = EndianS32_NtoB(offset); + yuv_pixmap->componentInfoY.rowBytes = EndianU32_NtoB(width); offset += width * height; pixels[plane2] = (Uint8*)yuv_pixmap + offset; pitches[plane2] = width / 2; - yuv_pixmap->componentInfoCb.offset = offset; - yuv_pixmap->componentInfoCb.rowBytes = width / 2; + yuv_pixmap->componentInfoCb.offset = EndianS32_NtoB(offset); + yuv_pixmap->componentInfoCb.rowBytes = EndianU32_NtoB(width / 2); offset += (width * height / 4); pixels[plane3] = (Uint8*)yuv_pixmap + offset; pitches[plane3] = width / 2; - yuv_pixmap->componentInfoCr.offset = offset; - yuv_pixmap->componentInfoCr.rowBytes = width / 2; + yuv_pixmap->componentInfoCr.offset = EndianS32_NtoB(offset); + yuv_pixmap->componentInfoCr.rowBytes = EndianU32_NtoB(width / 2); overlay->pixels = pixels; overlay->pitches = pitches;