text: /*****************************************************************************
   * ijksdl_fourcc.h
   *****************************************************************************
   *
   * copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
   *
   * 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_RV24    SDL_FOURCC('R', 'V', '2', '4')    /**< bpp=24, RGBX8888 */
  #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
  