slouken@0: /* slouken@0: SDL - Simple DirectMedia Layer slouken@5262: Copyright (C) 1997-2011 Sam Lantinga slouken@0: slouken@0: This library is free software; you can redistribute it and/or slouken@1312: modify it under the terms of the GNU Lesser General Public slouken@0: License as published by the Free Software Foundation; either slouken@1312: version 2.1 of the License, or (at your option) any later version. slouken@0: slouken@0: This library is distributed in the hope that it will be useful, slouken@0: but WITHOUT ANY WARRANTY; without even the implied warranty of slouken@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU slouken@1312: Lesser General Public License for more details. slouken@0: slouken@1312: You should have received a copy of the GNU Lesser General Public slouken@1312: License along with this library; if not, write to the Free Software slouken@1312: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA slouken@0: slouken@0: Sam Lantinga slouken@252: slouken@libsdl.org slouken@0: */ slouken@1402: #include "SDL_config.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@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: */