annotate libswscale/rgb2rgb.h @ 25317:7f3cb5408f28

Fixed VIDIX color bug that was introduced when Radeon VIDIX driver was synchronized with vidix.sf.net. The red color was saturating. Corrected value fixes the issue and restore the color to the level it used to have before synchronization. Meaning of the value remains unknow but was retrieved from register's value of a Radeon 9000 card, so it may need further testing. Patch by Guillaume Lecerf (foxcore at gmail dot com)
author ben
date Mon, 10 Dec 2007 19:27:46 +0000
parents e2cd504bcd70
children 65b8334df960
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
1 /*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
2 * rgb2rgb.h, Software RGB to RGB convertor
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
3 * pluralize by Software PAL8 to RGB convertor
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
4 * Software YUV to YUV convertor
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
5 * Software YUV to RGB convertor
19766
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
6 * Written by Nick Kurshev.
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
7 * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
8 *
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19766
diff changeset
9 * This file is part of FFmpeg.
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19766
diff changeset
10 *
21029
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
11 * FFmpeg is free software; you can redistribute it and/or
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
12 * modify it under the terms of the GNU Lesser General Public
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
13 * License as published by the Free Software Foundation; either
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
14 * version 2.1 of the License, or (at your option) any later version.
19766
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
15 *
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19766
diff changeset
16 * FFmpeg is distributed in the hope that it will be useful,
19766
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21029
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
19 * Lesser General Public License for more details.
19766
cb40a93756af Add proper GPL headers.
diego
parents: 18875
diff changeset
20 *
21029
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
21 * You should have received a copy of the GNU Lesser General Public
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20094
diff changeset
22 * License along with FFmpeg; if not, write to the Free Software
23702
5159b5f8784e license header consistency cosmetics
diego
parents: 23681
diff changeset
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
24 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
25
24772
fff1db0add79 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 23702
diff changeset
26 #ifndef FFMPEG_RGB2RGB_H
fff1db0add79 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 23702
diff changeset
27 #define FFMPEG_RGB2RGB_H
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
28
23681
605ae92c644e Fix 'make checkheaders'.
diego
parents: 23680
diff changeset
29 #include <inttypes.h>
605ae92c644e Fix 'make checkheaders'.
diego
parents: 23680
diff changeset
30
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
31 /* A full collection of rgb to rgb(bgr) convertors */
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
32 extern void (*rgb24to32) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
33 extern void (*rgb24to16) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
34 extern void (*rgb24to15) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
35 extern void (*rgb32to24) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
36 extern void (*rgb32to16) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
37 extern void (*rgb32to15) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
38 extern void (*rgb15to16) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
39 extern void (*rgb15to24) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
40 extern void (*rgb15to32) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
41 extern void (*rgb16to15) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
42 extern void (*rgb16to24) (const uint8_t *src, uint8_t *dst, long src_size);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
43 extern void (*rgb16to32) (const uint8_t *src, uint8_t *dst, long src_size);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
44 extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
45 extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
46 extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
47 extern void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
48 extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
49 extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
50
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
51 extern void rgb24tobgr32(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
52 extern void rgb32tobgr24(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
53 extern void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
54 extern void rgb16tobgr24(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
55 extern void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
56 extern void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
57 extern void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
58 extern void rgb15tobgr24(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
59 extern void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
60 extern void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size);
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
61 extern void rgb8tobgr8 (const uint8_t *src, uint8_t *dst, long src_size);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
62
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
63
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
64 extern void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
65 extern void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
66 extern void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
67 extern void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
68 extern void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
69 extern void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
70 extern void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
71 extern void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
72
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
73 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
74 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
75 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
76 * problem for anyone then tell me, and ill fix it)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
77 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
78 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
79 //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
80
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
81 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
82 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
83 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
84 * problem for anyone then tell me, and ill fix it)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
85 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
86 extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
87 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
88 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
89
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
90 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
91 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
92 * width should be a multiple of 16
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
93 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
94 extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
95 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
96 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
97
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
98 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
99 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
100 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
101 * problem for anyone then tell me, and ill fix it)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
102 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
103 extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
104 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
105 long lumStride, long chromStride, long srcStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
106
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
107 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
108 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
109 * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
110 * problem for anyone then tell me, and ill fix it)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
111 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
112 extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
113 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
114 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
115
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
116 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
117 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
118 * height should be a multiple of 2 and width should be a multiple of 2 (if this is a
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
119 * problem for anyone then tell me, and ill fix it)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
120 * chrominance data is only taken from every secound line others are ignored FIXME write HQ version
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
121 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
122 extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
123 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
124 long lumStride, long chromStride, long srcStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
125 extern void (*planar2x)(const uint8_t *src, uint8_t *dst, long width, long height,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
126 long srcStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
127
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
128 extern void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
129 long width, long height, long src1Stride,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
130 long src2Stride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
131
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
132 extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
133 uint8_t *dst1, uint8_t *dst2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
134 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
135 long srcStride1, long srcStride2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
136 long dstStride1, long dstStride2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
137
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
138 extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3,
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
139 uint8_t *dst,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
140 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
141 long srcStride1, long srcStride2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
142 long srcStride3, long dstStride);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21029
diff changeset
143
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
144 void sws_rgb2rgb_init(int flags);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
145
24773
e2cd504bcd70 1l: Update wrong #endif comment.
diego
parents: 24772
diff changeset
146 #endif /* FFMPEG_RGB2RGB_H */