Fixed bug #276
PlanarPixmapInfoYUV420 is a big endian structure. Fix contributed by Jean-Charles BERTIN --HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402106
This commit is contained in:
parent
0b9d71091e
commit
6a16eb68dc
1 changed files with 8 additions and 6 deletions
|
@ -274,6 +274,8 @@ SDL_Overlay* QZ_CreateYUVOverlay (_THIS, int width, int height,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fix: jc.bertin@free.fr
|
||||||
|
PlanarPixmapInfoYUV420 is a big-endian struct */
|
||||||
yuv_pixmap = (PlanarPixmapInfoYUV420*)
|
yuv_pixmap = (PlanarPixmapInfoYUV420*)
|
||||||
SDL_malloc (sizeof(PlanarPixmapInfoYUV420) +
|
SDL_malloc (sizeof(PlanarPixmapInfoYUV420) +
|
||||||
(width * height * 2));
|
(width * height * 2));
|
||||||
|
@ -291,20 +293,20 @@ SDL_Overlay* QZ_CreateYUVOverlay (_THIS, int width, int height,
|
||||||
/* CHECK_ALIGN(pixels[0]); */
|
/* CHECK_ALIGN(pixels[0]); */
|
||||||
|
|
||||||
pitches[0] = width;
|
pitches[0] = width;
|
||||||
yuv_pixmap->componentInfoY.offset = offset;
|
yuv_pixmap->componentInfoY.offset = EndianS32_NtoB(offset);
|
||||||
yuv_pixmap->componentInfoY.rowBytes = width;
|
yuv_pixmap->componentInfoY.rowBytes = EndianU32_NtoB(width);
|
||||||
|
|
||||||
offset += width * height;
|
offset += width * height;
|
||||||
pixels[plane2] = (Uint8*)yuv_pixmap + offset;
|
pixels[plane2] = (Uint8*)yuv_pixmap + offset;
|
||||||
pitches[plane2] = width / 2;
|
pitches[plane2] = width / 2;
|
||||||
yuv_pixmap->componentInfoCb.offset = offset;
|
yuv_pixmap->componentInfoCb.offset = EndianS32_NtoB(offset);
|
||||||
yuv_pixmap->componentInfoCb.rowBytes = width / 2;
|
yuv_pixmap->componentInfoCb.rowBytes = EndianU32_NtoB(width / 2);
|
||||||
|
|
||||||
offset += (width * height / 4);
|
offset += (width * height / 4);
|
||||||
pixels[plane3] = (Uint8*)yuv_pixmap + offset;
|
pixels[plane3] = (Uint8*)yuv_pixmap + offset;
|
||||||
pitches[plane3] = width / 2;
|
pitches[plane3] = width / 2;
|
||||||
yuv_pixmap->componentInfoCr.offset = offset;
|
yuv_pixmap->componentInfoCr.offset = EndianS32_NtoB(offset);
|
||||||
yuv_pixmap->componentInfoCr.rowBytes = width / 2;
|
yuv_pixmap->componentInfoCr.rowBytes = EndianU32_NtoB(width / 2);
|
||||||
|
|
||||||
overlay->pixels = pixels;
|
overlay->pixels = pixels;
|
||||||
overlay->pitches = pitches;
|
overlay->pitches = pitches;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue