ffmpeg / libswscale / rgb2rgb.h @ db46be01
History | View | Annotate | Download (8.6 KB)
1 | fcfbc150 | Michael Niedermayer | /*
|
---|---|---|---|
2 | 8a322796 | Diego Biurrun | * software RGB to RGB converter
|
3 | * pluralize by Software PAL8 to RGB converter
|
||
4 | * Software YUV to YUV converter
|
||
5 | * Software YUV to RGB converter
|
||
6 | 2111440a | Diego Biurrun | * Written by Nick Kurshev.
|
7 | 2b991422 | Reinhard Tartler | * YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
|
8 | 2111440a | Diego Biurrun | *
|
9 | 2912e87a | Mans Rullgard | * This file is part of Libav.
|
10 | d026b45e | Diego Biurrun | *
|
11 | 2912e87a | Mans Rullgard | * Libav is free software; you can redistribute it and/or
|
12 | 807e0c66 | Luca Abeni | * modify it under the terms of the GNU Lesser General Public
|
13 | * License as published by the Free Software Foundation; either
|
||
14 | * version 2.1 of the License, or (at your option) any later version.
|
||
15 | 2111440a | Diego Biurrun | *
|
16 | 2912e87a | Mans Rullgard | * Libav is distributed in the hope that it will be useful,
|
17 | 2111440a | Diego Biurrun | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
18 | 807e0c66 | Luca Abeni | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
19 | * Lesser General Public License for more details.
|
||
20 | 2111440a | Diego Biurrun | *
|
21 | 807e0c66 | Luca Abeni | * You should have received a copy of the GNU Lesser General Public
|
22 | 2912e87a | Mans Rullgard | * License along with Libav; if not, write to the Free Software
|
23 | b19bcbaa | Diego Biurrun | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
24 | b234ae81 | Nick Kurshev | */
|
25 | |||
26 | 0eaf5235 | Stefano Sabatini | #ifndef SWSCALE_RGB2RGB_H
|
27 | #define SWSCALE_RGB2RGB_H
|
||
28 | b234ae81 | Nick Kurshev | |
29 | 064cd7a8 | Diego Biurrun | #include <inttypes.h> |
30 | |||
31 | 2b991422 | Reinhard Tartler | #include "libswscale/swscale.h" |
32 | #include "libavutil/avutil.h" |
||
33 | |||
34 | 8a322796 | Diego Biurrun | /* A full collection of RGB to RGB(BGR) converters */
|
35 | 6107059c | Michael Niedermayer | extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long src_size); |
36 | extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size); |
||
37 | extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); |
||
38 | extern void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); |
||
39 | 6e42e6c4 | Diego Biurrun | extern void (*rgb32to16) (const uint8_t *src, uint8_t *dst, long src_size); |
40 | extern void (*rgb32to15) (const uint8_t *src, uint8_t *dst, long src_size); |
||
41 | extern void (*rgb15to16) (const uint8_t *src, uint8_t *dst, long src_size); |
||
42 | 6107059c | Michael Niedermayer | extern void (*rgb15tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); |
43 | 6e42e6c4 | Diego Biurrun | extern void (*rgb15to32) (const uint8_t *src, uint8_t *dst, long src_size); |
44 | extern void (*rgb16to15) (const uint8_t *src, uint8_t *dst, long src_size); |
||
45 | 6107059c | Michael Niedermayer | extern void (*rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); |
46 | 6e42e6c4 | Diego Biurrun | extern void (*rgb16to32) (const uint8_t *src, uint8_t *dst, long src_size); |
47 | 7f526efd | Reimar Döffinger | extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); |
48 | 6107059c | Michael Niedermayer | extern void (*rgb24to16) (const uint8_t *src, uint8_t *dst, long src_size); |
49 | extern void (*rgb24to15) (const uint8_t *src, uint8_t *dst, long src_size); |
||
50 | a51125b5 | Ramiro Polla | extern void (*shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, long src_size); |
51 | 7f526efd | Reimar Döffinger | extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size); |
52 | extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); |
||
53 | |||
54 | 37692458 | Diego Biurrun | void rgb24to32 (const uint8_t *src, uint8_t *dst, long src_size); |
55 | void rgb32to24 (const uint8_t *src, uint8_t *dst, long src_size); |
||
56 | void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size); |
||
57 | void rgb16to24 (const uint8_t *src, uint8_t *dst, long src_size); |
||
58 | void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size); |
||
59 | void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size); |
||
60 | void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size); |
||
61 | void rgb15to24 (const uint8_t *src, uint8_t *dst, long src_size); |
||
62 | void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size); |
||
63 | void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size); |
||
64 | void bgr8torgb8 (const uint8_t *src, uint8_t *dst, long src_size); |
||
65 | 7f526efd | Reimar Döffinger | |
66 | 82e5f86b | Stefano Sabatini | void shuffle_bytes_0321(const uint8_t *src, uint8_t *dst, long src_size); |
67 | void shuffle_bytes_1230(const uint8_t *src, uint8_t *dst, long src_size); |
||
68 | void shuffle_bytes_3012(const uint8_t *src, uint8_t *dst, long src_size); |
||
69 | void shuffle_bytes_3210(const uint8_t *src, uint8_t *dst, long src_size); |
||
70 | 7f526efd | Reimar Döffinger | |
71 | 2b991422 | Reinhard Tartler | #if LIBSWSCALE_VERSION_MAJOR < 1 |
72 | /* deprecated, use the public versions in swscale.h */
|
||
73 | attribute_deprecated void palette8topacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
||
74 | attribute_deprecated void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
||
75 | |||
76 | /* totally deprecated, please fix code that uses this */
|
||
77 | attribute_deprecated void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
||
78 | attribute_deprecated void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
||
79 | #endif
|
||
80 | 996e1a7c | Nick Kurshev | |
81 | 700490a4 | Michael Niedermayer | /**
|
82 | 8a322796 | Diego Biurrun | * Height should be a multiple of 2 and width should be a multiple of 16.
|
83 | * (If this is a problem for anyone then tell me, and I will fix it.)
|
||
84 | * Chrominance data is only taken from every second line, others are ignored.
|
||
85 | 58f0ec5f | Diego Biurrun | * FIXME: Write high quality version.
|
86 | 700490a4 | Michael Niedermayer | */
|
87 | //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
|
||
88 | |||
89 | /**
|
||
90 | 8a322796 | Diego Biurrun | * Height should be a multiple of 2 and width should be a multiple of 16.
|
91 | * (If this is a problem for anyone then tell me, and I will fix it.)
|
||
92 | 700490a4 | Michael Niedermayer | */
|
93 | extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, |
||
94 | 6e42e6c4 | Diego Biurrun | long width, long height, |
95 | long lumStride, long chromStride, long dstStride); |
||
96 | 700490a4 | Michael Niedermayer | |
97 | /**
|
||
98 | 8a322796 | Diego Biurrun | * Width should be a multiple of 16.
|
99 | 700490a4 | Michael Niedermayer | */
|
100 | extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, |
||
101 | 6e42e6c4 | Diego Biurrun | long width, long height, |
102 | long lumStride, long chromStride, long dstStride); |
||
103 | 700490a4 | Michael Niedermayer | |
104 | /**
|
||
105 | 8a322796 | Diego Biurrun | * Height should be a multiple of 2 and width should be a multiple of 16.
|
106 | * (If this is a problem for anyone then tell me, and I will fix it.)
|
||
107 | 700490a4 | Michael Niedermayer | */
|
108 | extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, |
||
109 | 6e42e6c4 | Diego Biurrun | long width, long height, |
110 | long lumStride, long chromStride, long srcStride); |
||
111 | 700490a4 | Michael Niedermayer | |
112 | /**
|
||
113 | 8a322796 | Diego Biurrun | * Height should be a multiple of 2 and width should be a multiple of 16.
|
114 | * (If this is a problem for anyone then tell me, and I will fix it.)
|
||
115 | 2549c2bc | Michael Niedermayer | */
|
116 | extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, |
||
117 | 6e42e6c4 | Diego Biurrun | long width, long height, |
118 | long lumStride, long chromStride, long dstStride); |
||
119 | 2549c2bc | Michael Niedermayer | |
120 | /**
|
||
121 | 58f0ec5f | Diego Biurrun | * Width should be a multiple of 16.
|
122 | a6100f39 | Baptiste Coudurier | */
|
123 | extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, |
||
124 | long width, long height, |
||
125 | long lumStride, long chromStride, long dstStride); |
||
126 | |||
127 | /**
|
||
128 | 8a322796 | Diego Biurrun | * Height should be a multiple of 2 and width should be a multiple of 2.
|
129 | * (If this is a problem for anyone then tell me, and I will fix it.)
|
||
130 | * Chrominance data is only taken from every second line, others are ignored.
|
||
131 | 58f0ec5f | Diego Biurrun | * FIXME: Write high quality version.
|
132 | 700490a4 | Michael Niedermayer | */
|
133 | extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, |
||
134 | 6e42e6c4 | Diego Biurrun | long width, long height, |
135 | long lumStride, long chromStride, long srcStride); |
||
136 | 7f526efd | Reimar Döffinger | extern void (*planar2x)(const uint8_t *src, uint8_t *dst, long width, long height, |
137 | 6e42e6c4 | Diego Biurrun | long srcStride, long dstStride); |
138 | d9d58d17 | Michael Niedermayer | |
139 | a959e247 | Zuxy Meng | extern void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, |
140 | 6e42e6c4 | Diego Biurrun | long width, long height, long src1Stride, |
141 | long src2Stride, long dstStride); |
||
142 | ac4d0aea | Michael Niedermayer | |
143 | 700490a4 | Michael Niedermayer | extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2, |
144 | 6e42e6c4 | Diego Biurrun | uint8_t *dst1, uint8_t *dst2, |
145 | long width, long height, |
||
146 | long srcStride1, long srcStride2, |
||
147 | long dstStride1, long dstStride2); |
||
148 | ac4d0aea | Michael Niedermayer | |
149 | 700490a4 | Michael Niedermayer | extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, |
150 | 6e42e6c4 | Diego Biurrun | uint8_t *dst, |
151 | long width, long height, |
||
152 | long srcStride1, long srcStride2, |
||
153 | long srcStride3, long dstStride); |
||
154 | 6a4970ab | Diego Biurrun | |
155 | 0411072e | Michael Niedermayer | |
156 | extern void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, |
||
157 | 9b734d44 | Ramiro Polla | long width, long height, |
158 | long lumStride, long chromStride, long srcStride); |
||
159 | 0411072e | Michael Niedermayer | extern void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, |
160 | 9b734d44 | Ramiro Polla | long width, long height, |
161 | long lumStride, long chromStride, long srcStride); |
||
162 | 0411072e | Michael Niedermayer | extern void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, |
163 | 9b734d44 | Ramiro Polla | long width, long height, |
164 | long lumStride, long chromStride, long srcStride); |
||
165 | 0411072e | Michael Niedermayer | extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, |
166 | 9b734d44 | Ramiro Polla | long width, long height, |
167 | long lumStride, long chromStride, long srcStride); |
||
168 | 0411072e | Michael Niedermayer | |
169 | 35ca9454 | Michael Niedermayer | void sws_rgb2rgb_init(int flags); |
170 | |||
171 | 0eaf5235 | Stefano Sabatini | #endif /* SWSCALE_RGB2RGB_H */ |