slouken@0: /* slouken@5535: Simple DirectMedia Layer slouken@8149: Copyright (C) 1997-2014 Sam Lantinga slouken@0: slouken@5535: This software is provided 'as-is', without any express or implied slouken@5535: warranty. In no event will the authors be held liable for any damages slouken@5535: arising from the use of this software. slouken@0: slouken@5535: Permission is granted to anyone to use this software for any purpose, slouken@5535: including commercial applications, and to alter it and redistribute it slouken@5535: freely, subject to the following restrictions: slouken@0: slouken@5535: 1. The origin of this software must not be misrepresented; you must not slouken@5535: claim that you wrote the original software. If you use this software slouken@5535: in a product, an acknowledgment in the product documentation would be slouken@5535: appreciated but is not required. slouken@5535: 2. Altered source versions must be plainly marked as such, and must not be slouken@5535: misrepresented as being the original software. slouken@5535: 3. This notice may not be removed or altered from any source distribution. slouken@0: */ icculus@8093: #include "../SDL_internal.h" slouken@0: slouken@0: #include "SDL_video.h" slouken@0: slouken@1895: /* This is the software implementation of the YUV texture support */ slouken@0: slouken@3257: struct SDL_SW_YUVTexture slouken@3257: { slouken@3257: Uint32 format; slouken@3257: Uint32 target_format; slouken@3257: int w, h; slouken@3257: Uint8 *pixels; slouken@3257: int *colortab; slouken@3257: Uint32 *rgb_2_pix; slouken@3257: void (*Display1X) (int *colortab, Uint32 * rgb_2_pix, slouken@3257: unsigned char *lum, unsigned char *cr, slouken@3257: unsigned char *cb, unsigned char *out, slouken@3257: int rows, int cols, int mod); slouken@3257: void (*Display2X) (int *colortab, Uint32 * rgb_2_pix, slouken@3257: unsigned char *lum, unsigned char *cr, slouken@3257: unsigned char *cb, unsigned char *out, slouken@3257: int rows, int cols, int mod); slouken@3257: slouken@3257: /* These are just so we don't have to allocate them separately */ slouken@3257: Uint16 pitches[3]; slouken@3257: Uint8 *planes[3]; slouken@3257: slouken@3257: /* This is a temporary surface in case we have to stretch copy */ slouken@3257: SDL_Surface *stretch; slouken@3257: SDL_Surface *display; slouken@3257: }; slouken@3257: slouken@1895: typedef struct SDL_SW_YUVTexture SDL_SW_YUVTexture; slouken@0: slouken@2781: SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(Uint32 format, int w, int h); slouken@1895: int SDL_SW_QueryYUVTexturePixels(SDL_SW_YUVTexture * swdata, void **pixels, slouken@1895: int *pitch); slouken@1895: int SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect, slouken@1895: const void *pixels, int pitch); slouken@7759: int SDL_SW_UpdateYUVTexturePlanar(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect, slouken@7759: const Uint8 *Yplane, int Ypitch, slouken@7759: const Uint8 *Uplane, int Upitch, slouken@7759: const Uint8 *Vplane, int Vpitch); slouken@1895: int SDL_SW_LockYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect, slouken@5156: void **pixels, int *pitch); slouken@1895: void SDL_SW_UnlockYUVTexture(SDL_SW_YUVTexture * swdata); slouken@1895: int SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect, slouken@1895: Uint32 target_format, int w, int h, void *pixels, slouken@1895: int pitch); slouken@1895: void SDL_SW_DestroyYUVTexture(SDL_SW_YUVTexture * swdata); slouken@0: slouken@1895: /* vi: set ts=4 sw=4 expandtab: */