arm_colorconv.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * ARM assembly optimized color format conversion functions
  3.  * (YV12 -> YUY2, YV12 -> some custom YUV420 format used by
  4.  * Epson graphics chip in Nokia N800)
  5.  *
  6.  * Copyright (C) 2007 Siarhei Siamashka <ssvb@users.sourceforge.net>
  7.  *
  8.  * This library is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Lesser General Public License
  10.  * version 2.1 as published by the Free Software Foundation.
  11.  *
  12.  * This library is distributed in the hope that it will be useful, but
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with this library; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  20.  * 02110-1301 USA
  21.  */
  22. #ifndef __ARM_COLORCONV_H__
  23. #define __ARM_COLORCONV_H__
  24. #include <stdint.h>
  25. /**
  26.  * Convert a line of pixels from YV12 to YUY2 color format
  27.  * @param dst   - destination buffer for YUY2 pixel data, it should be 32-bit aligned
  28.  * @param src_y - pointer to Y plane
  29.  * @param src_u - pointer to U plane
  30.  * @param src_v - pointer to V plane
  31.  * @param w     - number of pixels to convert (should be multiple of 2)
  32.  */
  33. void yv12_to_yuy2_line_arm(uint32_t *dst, const uint16_t *src_y, const uint8_t *src_u, const uint8_t *src_v, int w);
  34. /**
  35.  * Convert a line of pixels from YV12 to YUV420 color format
  36.  * @param dst   - destination buffer for YUV420 pixel data, it should be at least 16-bit aligned
  37.  * @param src_y - pointer to Y plane
  38.  * @param src_c - pointer to chroma plane (U for even lines, V for odd lines)
  39.  * @param w     - number of pixels to convert (should be multiple of 4)
  40.  */
  41. void yv12_to_yuv420_line_arm(uint16_t *dst, const uint8_t *src_y, const uint8_t *src_c, int w);
  42. /**
  43.  * Convert a line of pixels from YV12 to YUV420 color format
  44.  * @param dst   - destination buffer for YUV420 pixel data, it should be at least 16-bit aligned
  45.  * @param src_y - pointer to Y plane
  46.  * @param src_c - pointer to chroma plane (U for even lines, V for odd lines)
  47.  * @param w     - number of pixels to convert (should be multiple of 4)
  48.  */
  49. void yv12_to_yuv420_line_armv5(uint16_t *dst, const uint8_t *src_y, const uint8_t *src_c, int w);
  50. /**
  51.  * Convert a line of pixels from YV12 to YUV420 color format
  52.  * @param dst   - destination buffer for YUV420 pixel data, it should be at least 16-bit aligned
  53.  * @param src_y - pointer to Y plane, it should be 16-bit aligned
  54.  * @param src_c - pointer to chroma plane (U for even lines, V for odd lines)
  55.  * @param w     - number of pixels to convert (should be multiple of 4)
  56.  */
  57. void yv12_to_yuv420_line_armv6(uint16_t *dst, const uint16_t *src_y, const uint8_t *src_c, int w);
  58. #endif