/***************************************************************************** * ijksdl_fourcc.h ***************************************************************************** * * copyright (c) 2013 Zhang Rui * * This file is part of ijkPlayer. * * ijkPlayer is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * ijkPlayer is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with ijkPlayer; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef IJKSDL__IJKSDL_FOURCC_H #define IJKSDL__IJKSDL_FOURCC_H #include "ijksdl_stdinc.h" #include "ijksdl_endian.h" #if SDL_BYTEORDER == SDL_LIL_ENDIAN # define SDL_FOURCC(a, b, c, d) \ (((uint32_t)a) | (((uint32_t)b) << 8) | (((uint32_t)c) << 16) | (((uint32_t)d) << 24)) # define SDL_TWOCC(a, b) \ ((uint16_t)(a) | ((uint16_t)(b) << 8)) #else # define SDL_FOURCC(a, b, c, d) \ (((uint32_t)d) | (((uint32_t)c) << 8) | (((uint32_t)b) << 16) | (((uint32_t)a) << 24)) # define SDL_TWOCC( a, b ) \ ((uint16_t)(b) | ((uint16_t)(a) << 8)) #endif #if SDL_BYTEORDER == SDL_LIL_ENDIAN # define SDL_FOURCC(a, b, c, d) \ (((uint32_t)a) | (((uint32_t)b) << 8) | (((uint32_t)c) << 16) | (((uint32_t)d) << 24)) # define SDL_TWOCC(a, b) \ ((uint16_t)(a) | ((uint16_t)(b) << 8)) #else # define SDL_FOURCC(a, b, c, d) \ (((uint32_t)d) | (((uint32_t)c) << 8) | (((uint32_t)b) << 16) | (((uint32_t)a) << 24)) # define SDL_TWOCC( a, b ) \ ((uint16_t)(b) | ((uint16_t)(a) << 8)) #endif /*- * http://www.webartz.com/fourcc/indexyuv.htm * http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html * http://www.fourcc.org/yuv.php */ // YUV formats #define SDL_FCC_YV12 SDL_FOURCC('Y', 'V', '1', '2') /**< bpp=12, Planar mode: Y + V + U (3 planes) */ #define SDL_FCC_IYUV SDL_FOURCC('I', 'Y', 'U', 'V') /**< bpp=12, Planar mode: Y + U + V (3 planes) */ #define SDL_FCC_I420 SDL_FOURCC('I', '4', '2', '0') /**< bpp=12, Planar mode: Y + U + V (3 planes) */ #define SDL_FCC_YUV2 SDL_FOURCC('Y', 'U', 'V', '2') /**< bpp=16, Packed mode: Y0+U0+Y1+V0 (1 plane) */ #define SDL_FCC_UYVY SDL_FOURCC('U', 'Y', 'V', 'Y') /**< bpp=16, Packed mode: U0+Y0+V0+Y1 (1 plane) */ #define SDL_FCC_YVYU SDL_FOURCC('Y', 'V', 'Y', 'U') /**< bpp=16, Packed mode: Y0+V0+Y1+U0 (1 plane) */ // RGB formats #define SDL_FCC_RV16 SDL_FOURCC('R', 'V', '1', '6') /**< bpp=16, RGB565 */ #define SDL_FCC_RV32 SDL_FOURCC('R', 'V', '3', '2') /**< bpp=24, RGBX8888 */ // undefine #define SDL_FCC_UNDF SDL_FOURCC('U', 'N', 'D', 'F') /**< undefined */ #endif