annotate ffmpeg/libswscale/rgb2rgb.h @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents f445c3017523
children
rev   line source
yading@11 1 /*
yading@11 2 * software RGB to RGB converter
yading@11 3 * pluralize by Software PAL8 to RGB converter
yading@11 4 * Software YUV to YUV converter
yading@11 5 * Software YUV to RGB converter
yading@11 6 * Written by Nick Kurshev.
yading@11 7 * YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
yading@11 8 *
yading@11 9 * This file is part of FFmpeg.
yading@11 10 *
yading@11 11 * FFmpeg is free software; you can redistribute it and/or
yading@11 12 * modify it under the terms of the GNU Lesser General Public
yading@11 13 * License as published by the Free Software Foundation; either
yading@11 14 * version 2.1 of the License, or (at your option) any later version.
yading@11 15 *
yading@11 16 * FFmpeg is distributed in the hope that it will be useful,
yading@11 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
yading@11 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
yading@11 19 * Lesser General Public License for more details.
yading@11 20 *
yading@11 21 * You should have received a copy of the GNU Lesser General Public
yading@11 22 * License along with FFmpeg; if not, write to the Free Software
yading@11 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
yading@11 24 */
yading@11 25
yading@11 26 #ifndef SWSCALE_RGB2RGB_H
yading@11 27 #define SWSCALE_RGB2RGB_H
yading@11 28
yading@11 29 #include <inttypes.h>
yading@11 30
yading@11 31 #include "libswscale/swscale.h"
yading@11 32 #include "libavutil/avutil.h"
yading@11 33
yading@11 34 /* A full collection of RGB to RGB(BGR) converters */
yading@11 35 extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 36 extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 37 extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 38 extern void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 39 extern void (*rgb32to16)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 40 extern void (*rgb32to15)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 41 extern void (*rgb15to16)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 42 extern void (*rgb15tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 43 extern void (*rgb15to32)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 44 extern void (*rgb16to15)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 45 extern void (*rgb16tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 46 extern void (*rgb16to32)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 47 extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 48 extern void (*rgb24to16)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 49 extern void (*rgb24to15)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 50 extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 51 extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 52
yading@11 53 extern void (*shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 54
yading@11 55 void rgb64tobgr48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 56 void rgb64tobgr48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 57 void rgb48tobgr48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 58 void rgb48tobgr48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 59 void rgb64to48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 60 void rgb64to48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 61 void rgb24to32(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 62 void rgb32to24(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 63 void rgb16tobgr32(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 64 void rgb16to24(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 65 void rgb16tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 66 void rgb16tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 67 void rgb15tobgr32(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 68 void rgb15to24(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 69 void rgb15tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 70 void rgb15tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 71 void rgb12tobgr12(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 72 void rgb12to15(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 73
yading@11 74 void shuffle_bytes_0321(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 75 void shuffle_bytes_1230(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 76 void shuffle_bytes_3012(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 77 void shuffle_bytes_3210(const uint8_t *src, uint8_t *dst, int src_size);
yading@11 78
yading@11 79 void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
yading@11 80 uint8_t *vdst, int width, int height, int lumStride,
yading@11 81 int chromStride, int srcStride, int32_t *rgb2yuv);
yading@11 82
yading@11 83 /**
yading@11 84 * Height should be a multiple of 2 and width should be a multiple of 16.
yading@11 85 * (If this is a problem for anyone then tell me, and I will fix it.)
yading@11 86 */
yading@11 87 extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
yading@11 88 int width, int height,
yading@11 89 int lumStride, int chromStride, int dstStride);
yading@11 90
yading@11 91 /**
yading@11 92 * Width should be a multiple of 16.
yading@11 93 */
yading@11 94 extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
yading@11 95 int width, int height,
yading@11 96 int lumStride, int chromStride, int dstStride);
yading@11 97
yading@11 98 /**
yading@11 99 * Height should be a multiple of 2 and width should be a multiple of 16.
yading@11 100 * (If this is a problem for anyone then tell me, and I will fix it.)
yading@11 101 */
yading@11 102 extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
yading@11 103 int width, int height,
yading@11 104 int lumStride, int chromStride, int srcStride);
yading@11 105
yading@11 106 /**
yading@11 107 * Height should be a multiple of 2 and width should be a multiple of 16.
yading@11 108 * (If this is a problem for anyone then tell me, and I will fix it.)
yading@11 109 */
yading@11 110 extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
yading@11 111 int width, int height,
yading@11 112 int lumStride, int chromStride, int dstStride);
yading@11 113
yading@11 114 /**
yading@11 115 * Width should be a multiple of 16.
yading@11 116 */
yading@11 117 extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
yading@11 118 int width, int height,
yading@11 119 int lumStride, int chromStride, int dstStride);
yading@11 120
yading@11 121 /**
yading@11 122 * Height should be a multiple of 2 and width should be a multiple of 2.
yading@11 123 * (If this is a problem for anyone then tell me, and I will fix it.)
yading@11 124 * Chrominance data is only taken from every second line, others are ignored.
yading@11 125 * FIXME: Write high quality version.
yading@11 126 */
yading@11 127 extern void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
yading@11 128 int width, int height,
yading@11 129 int lumStride, int chromStride, int srcStride,
yading@11 130 int32_t *rgb2yuv);
yading@11 131 extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height,
yading@11 132 int srcStride, int dstStride);
yading@11 133
yading@11 134 extern void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst,
yading@11 135 int width, int height, int src1Stride,
yading@11 136 int src2Stride, int dstStride);
yading@11 137
yading@11 138 extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2,
yading@11 139 uint8_t *dst1, uint8_t *dst2,
yading@11 140 int width, int height,
yading@11 141 int srcStride1, int srcStride2,
yading@11 142 int dstStride1, int dstStride2);
yading@11 143
yading@11 144 extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3,
yading@11 145 uint8_t *dst,
yading@11 146 int width, int height,
yading@11 147 int srcStride1, int srcStride2,
yading@11 148 int srcStride3, int dstStride);
yading@11 149
yading@11 150 extern void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
yading@11 151 int width, int height,
yading@11 152 int lumStride, int chromStride, int srcStride);
yading@11 153 extern void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
yading@11 154 int width, int height,
yading@11 155 int lumStride, int chromStride, int srcStride);
yading@11 156 extern void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
yading@11 157 int width, int height,
yading@11 158 int lumStride, int chromStride, int srcStride);
yading@11 159 extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
yading@11 160 int width, int height,
yading@11 161 int lumStride, int chromStride, int srcStride);
yading@11 162
yading@11 163 void sws_rgb2rgb_init(void);
yading@11 164
yading@11 165 void rgb2rgb_init_x86(void);
yading@11 166
yading@11 167 #endif /* SWSCALE_RGB2RGB_H */