# HG changeset patch # User Sam Lantinga # Date 1159056246 0 # Node ID 4d11f2ae75825514cfbe06bcdc294690e5b110b3 # Parent 571c75f3d093d5ede24527aa72e761db96e2624c Fixed bug #276 PlanarPixmapInfoYUV420 is a big endian structure. Fix contributed by Jean-Charles BERTIN diff -r 571c75f3d093 -r 4d11f2ae7582 src/video/quartz/SDL_QuartzYUV.m --- 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;