Commit | Line | Data |
---|---|---|
fcfbc150 | 1 | /* |
b234ae81 | 2 | * |
b238eb2e | 3 | * rgb2rgb.h, Software RGB to RGB convertor |
6611aa83 NK |
4 | * pluralize by Software PAL8 to RGB convertor |
5 | * Software YUV to YUV convertor | |
6 | * Software YUV to RGB convertor | |
2111440a DB |
7 | * Written by Nick Kurshev. |
8 | * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at) | |
9 | * | |
d026b45e DB |
10 | * This file is part of FFmpeg. |
11 | * | |
807e0c66 LA |
12 | * FFmpeg is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Lesser General Public | |
14 | * License as published by the Free Software Foundation; either | |
15 | * version 2.1 of the License, or (at your option) any later version. | |
2111440a | 16 | * |
d026b45e | 17 | * FFmpeg is distributed in the hope that it will be useful, |
2111440a | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
807e0c66 LA |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Lesser General Public License for more details. | |
2111440a | 21 | * |
807e0c66 LA |
22 | * You should have received a copy of the GNU Lesser General Public |
23 | * License along with FFmpeg; if not, write to the Free Software | |
2111440a | 24 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
b234ae81 NK |
25 | */ |
26 | ||
27 | #ifndef RGB2RGB_INCLUDED | |
28 | #define RGB2RGB_INCLUDED | |
29 | ||
3f418551 | 30 | // Note: do not fix the dependence on stdio.h |
b9ebf325 | 31 | |
ac4d0aea | 32 | /* A full collection of rgb to rgb(bgr) convertors */ |
7f526efd RD |
33 | extern void (*rgb24to32)(const uint8_t *src,uint8_t *dst,long src_size); |
34 | extern void (*rgb24to16)(const uint8_t *src,uint8_t *dst,long src_size); | |
35 | extern void (*rgb24to15)(const uint8_t *src,uint8_t *dst,long src_size); | |
36 | extern void (*rgb32to24)(const uint8_t *src,uint8_t *dst,long src_size); | |
37 | extern void (*rgb32to16)(const uint8_t *src,uint8_t *dst,long src_size); | |
38 | extern void (*rgb32to15)(const uint8_t *src,uint8_t *dst,long src_size); | |
39 | extern void (*rgb15to16)(const uint8_t *src,uint8_t *dst,long src_size); | |
40 | extern void (*rgb15to24)(const uint8_t *src,uint8_t *dst,long src_size); | |
41 | extern void (*rgb15to32)(const uint8_t *src,uint8_t *dst,long src_size); | |
42 | extern void (*rgb16to15)(const uint8_t *src,uint8_t *dst,long src_size); | |
43 | extern void (*rgb16to24)(const uint8_t *src,uint8_t *dst,long src_size); | |
44 | extern void (*rgb16to32)(const uint8_t *src,uint8_t *dst,long src_size); | |
45 | extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); | |
46 | extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size); | |
47 | extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); | |
48 | extern void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, long src_size); | |
49 | extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size); | |
50 | extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); | |
51 | ||
52 | extern void rgb24tobgr32(const uint8_t *src, uint8_t *dst, long src_size); | |
53 | extern void rgb32tobgr24(const uint8_t *src, uint8_t *dst, long src_size); | |
54 | extern void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size); | |
55 | extern void rgb16tobgr24(const uint8_t *src, uint8_t *dst, long src_size); | |
56 | extern void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size); | |
57 | extern void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size); | |
58 | extern void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size); | |
59 | extern void rgb15tobgr24(const uint8_t *src, uint8_t *dst, long src_size); | |
60 | extern void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size); | |
61 | extern void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size); | |
62 | extern void rgb8tobgr8(const uint8_t *src, uint8_t *dst, long src_size); | |
63 | ||
64 | ||
65 | extern void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
66 | extern void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
67 | extern void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
68 | extern void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
69 | extern void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
70 | extern void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
71 | extern void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
72 | extern void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); | |
996e1a7c | 73 | |
700490a4 MN |
74 | /** |
75 | * | |
76 | * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
77 | * problem for anyone then tell me, and ill fix it) | |
78 | * chrominance data is only taken from every secound line others are ignored FIXME write HQ version | |
79 | */ | |
80 | //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
81 | ||
82 | /** | |
83 | * | |
84 | * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
85 | * problem for anyone then tell me, and ill fix it) | |
86 | */ | |
87 | extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
7f526efd RD |
88 | long width, long height, |
89 | long lumStride, long chromStride, long dstStride); | |
700490a4 MN |
90 | |
91 | /** | |
92 | * | |
93 | * width should be a multiple of 16 | |
94 | */ | |
95 | extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
7f526efd RD |
96 | long width, long height, |
97 | long lumStride, long chromStride, long dstStride); | |
700490a4 MN |
98 | |
99 | /** | |
100 | * | |
101 | * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |
102 | * problem for anyone then tell me, and ill fix it) | |
103 | */ | |
104 | extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
7f526efd RD |
105 | long width, long height, |
106 | long lumStride, long chromStride, long srcStride); | |
700490a4 MN |
107 | |
108 | /** | |
109 | * | |
2549c2bc MN |
110 | * height should be a multiple of 2 and width should be a multiple of 16 (if this is a |
111 | * problem for anyone then tell me, and ill fix it) | |
112 | */ | |
113 | extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, | |
7f526efd RD |
114 | long width, long height, |
115 | long lumStride, long chromStride, long dstStride); | |
2549c2bc MN |
116 | |
117 | /** | |
118 | * | |
700490a4 MN |
119 | * height should be a multiple of 2 and width should be a multiple of 2 (if this is a |
120 | * problem for anyone then tell me, and ill fix it) | |
121 | * chrominance data is only taken from every secound line others are ignored FIXME write HQ version | |
122 | */ | |
123 | extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |
7f526efd RD |
124 | long width, long height, |
125 | long lumStride, long chromStride, long srcStride); | |
126 | extern void (*planar2x)(const uint8_t *src, uint8_t *dst, long width, long height, | |
127 | long srcStride, long dstStride); | |
d9d58d17 | 128 | |
700490a4 | 129 | extern void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst, |
7f526efd RD |
130 | long width, long height, long src1Stride, |
131 | long src2Stride, long dstStride); | |
ac4d0aea | 132 | |
700490a4 | 133 | extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2, |
ac4d0aea | 134 | uint8_t *dst1, uint8_t *dst2, |
7f526efd RD |
135 | long width, long height, |
136 | long srcStride1, long srcStride2, | |
137 | long dstStride1, long dstStride2); | |
ac4d0aea | 138 | |
700490a4 | 139 | extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, |
ac4d0aea | 140 | uint8_t *dst, |
7f526efd RD |
141 | long width, long height, |
142 | long srcStride1, long srcStride2, | |
143 | long srcStride3, long dstStride); | |
6a4970ab | 144 | |
35ca9454 MN |
145 | void sws_rgb2rgb_init(int flags); |
146 | ||
b234ae81 | 147 | #endif |