annotate libswscale/rgb2rgb.c @ 25661:293aeec83153

Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" with an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions.
author reimar
date Sat, 12 Jan 2008 14:05:46 +0000
parents 5159b5f8784e
children 06bf0eb70a55
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.c, 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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
6 * Written by Nick Kurshev.
19703
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
7 * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
8 *
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19703
diff changeset
9 * This file is part of FFmpeg.
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19703
diff changeset
10 *
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19703
diff changeset
11 * FFmpeg is free software; you can redistribute it and/or modify
19703
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
12 * it under the terms of the GNU General Public License as published by
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
14 * (at your option) any later version.
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
15 *
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19703
diff changeset
16 * FFmpeg is distributed in the hope that it will be useful,
19703
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
19 * GNU General Public License for more details.
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
20 *
ad7f49a1ba95 Add official GPL header to make license explicit as discussed on ffmpeg-devel.
diego
parents: 19361
diff changeset
21 * You should have received a copy of the GNU General Public License
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 19703
diff changeset
22 * along with FFmpeg; if not, write to the Free Software
23702
5159b5f8784e license header consistency cosmetics
diego
parents: 23382
diff changeset
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
24 *
21029
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20576
diff changeset
25 * the C code (not assembly, mmx, ...) of this file can be used
1f2ba24b4e47 Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents: 20576
diff changeset
26 * under the LGPL license too
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
27 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
28 #include <inttypes.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
29 #include "config.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
30 #include "rgb2rgb.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
31 #include "swscale.h"
19143
c4dac777b44c Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents: 18861
diff changeset
32 #include "swscale_internal.h"
c4dac777b44c Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents: 18861
diff changeset
33 #include "x86_cpu.h"
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
34 #include "bswap.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
35
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
36 #define FAST_BGR2YV12 // use 7 bit coeffs instead of 15bit
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
37
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
38 void (*rgb24to32)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
39 void (*rgb24to16)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
40 void (*rgb24to15)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
41 void (*rgb32to24)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
42 void (*rgb32to16)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
43 void (*rgb32to15)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
44 void (*rgb15to16)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
45 void (*rgb15to24)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
46 void (*rgb15to32)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
47 void (*rgb16to15)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
48 void (*rgb16to24)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
49 void (*rgb16to32)(const uint8_t *src,uint8_t *dst,long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
50 //void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
51 void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
52 void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
53 void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
54 void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
55 //void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
56 void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
57 void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
58
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
59 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
60 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
61 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
62 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
63 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
64 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
65 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
66 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
67 long lumStride, long chromStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
68 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
69 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
70 long lumStride, long chromStride, long srcStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
71 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
72 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
73 long lumStride, long chromStride, long srcStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
74 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
75 long srcStride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
76 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
77 long width, long height, long src1Stride,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
78 long src2Stride, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
79 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
80 uint8_t *dst1, uint8_t *dst2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
81 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
82 long srcStride1, long srcStride2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
83 long dstStride1, long dstStride2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
84 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
85 uint8_t *dst,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
86 long width, long height,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
87 long srcStride1, long srcStride2,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
88 long srcStride3, long dstStride);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
89
21683
befebdb3ebaa Allow to compile swscale's non-SIMD code under the LGPL license.
lucabe
parents: 21029
diff changeset
90 #if defined(ARCH_X86) && defined(CONFIG_GPL)
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
91 static const uint64_t mmx_null __attribute__((aligned(8))) = 0x0000000000000000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
92 static const uint64_t mmx_one __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
93 static const uint64_t mask32b attribute_used __attribute__((aligned(8))) = 0x000000FF000000FFULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
94 static const uint64_t mask32g attribute_used __attribute__((aligned(8))) = 0x0000FF000000FF00ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
95 static const uint64_t mask32r attribute_used __attribute__((aligned(8))) = 0x00FF000000FF0000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
96 static const uint64_t mask32 __attribute__((aligned(8))) = 0x00FFFFFF00FFFFFFULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
97 static const uint64_t mask3216br __attribute__((aligned(8))) = 0x00F800F800F800F8ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
98 static const uint64_t mask3216g __attribute__((aligned(8))) = 0x0000FC000000FC00ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
99 static const uint64_t mask3215g __attribute__((aligned(8))) = 0x0000F8000000F800ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
100 static const uint64_t mul3216 __attribute__((aligned(8))) = 0x2000000420000004ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
101 static const uint64_t mul3215 __attribute__((aligned(8))) = 0x2000000820000008ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
102 static const uint64_t mask24b attribute_used __attribute__((aligned(8))) = 0x00FF0000FF0000FFULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
103 static const uint64_t mask24g attribute_used __attribute__((aligned(8))) = 0xFF0000FF0000FF00ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
104 static const uint64_t mask24r attribute_used __attribute__((aligned(8))) = 0x0000FF0000FF0000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
105 static const uint64_t mask24l __attribute__((aligned(8))) = 0x0000000000FFFFFFULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
106 static const uint64_t mask24h __attribute__((aligned(8))) = 0x0000FFFFFF000000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
107 static const uint64_t mask24hh __attribute__((aligned(8))) = 0xffff000000000000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
108 static const uint64_t mask24hhh __attribute__((aligned(8))) = 0xffffffff00000000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
109 static const uint64_t mask24hhhh __attribute__((aligned(8))) = 0xffffffffffff0000ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
110 static const uint64_t mask15b __attribute__((aligned(8))) = 0x001F001F001F001FULL; /* 00000000 00011111 xxB */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
111 static const uint64_t mask15rg __attribute__((aligned(8))) = 0x7FE07FE07FE07FE0ULL; /* 01111111 11100000 RGx */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
112 static const uint64_t mask15s __attribute__((aligned(8))) = 0xFFE0FFE0FFE0FFE0ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
113 static const uint64_t mask15g __attribute__((aligned(8))) = 0x03E003E003E003E0ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
114 static const uint64_t mask15r __attribute__((aligned(8))) = 0x7C007C007C007C00ULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
115 #define mask16b mask15b
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
116 static const uint64_t mask16g __attribute__((aligned(8))) = 0x07E007E007E007E0ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
117 static const uint64_t mask16r __attribute__((aligned(8))) = 0xF800F800F800F800ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
118 static const uint64_t red_16mask __attribute__((aligned(8))) = 0x0000f8000000f800ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
119 static const uint64_t green_16mask __attribute__((aligned(8))) = 0x000007e0000007e0ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
120 static const uint64_t blue_16mask __attribute__((aligned(8))) = 0x0000001f0000001fULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
121 static const uint64_t red_15mask __attribute__((aligned(8))) = 0x00007c0000007c00ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
122 static const uint64_t green_15mask __attribute__((aligned(8))) = 0x000003e0000003e0ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
123 static const uint64_t blue_15mask __attribute__((aligned(8))) = 0x0000001f0000001fULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
124
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
125 #ifdef FAST_BGR2YV12
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
126 static const uint64_t bgr2YCoeff attribute_used __attribute__((aligned(8))) = 0x000000210041000DULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
127 static const uint64_t bgr2UCoeff attribute_used __attribute__((aligned(8))) = 0x0000FFEEFFDC0038ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
128 static const uint64_t bgr2VCoeff attribute_used __attribute__((aligned(8))) = 0x00000038FFD2FFF8ULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
129 #else
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
130 static const uint64_t bgr2YCoeff attribute_used __attribute__((aligned(8))) = 0x000020E540830C8BULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
131 static const uint64_t bgr2UCoeff attribute_used __attribute__((aligned(8))) = 0x0000ED0FDAC23831ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
132 static const uint64_t bgr2VCoeff attribute_used __attribute__((aligned(8))) = 0x00003831D0E6F6EAULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
133 #endif
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
134 static const uint64_t bgr2YOffset attribute_used __attribute__((aligned(8))) = 0x1010101010101010ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
135 static const uint64_t bgr2UVOffset attribute_used __attribute__((aligned(8))) = 0x8080808080808080ULL;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
136 static const uint64_t w1111 attribute_used __attribute__((aligned(8))) = 0x0001000100010001ULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
137
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
138 #if 0
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
139 static volatile uint64_t __attribute__((aligned(8))) b5Dither;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
140 static volatile uint64_t __attribute__((aligned(8))) g5Dither;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
141 static volatile uint64_t __attribute__((aligned(8))) g6Dither;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
142 static volatile uint64_t __attribute__((aligned(8))) r5Dither;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
143
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
144 static uint64_t __attribute__((aligned(8))) dither4[2]={
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
145 0x0103010301030103LL,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
146 0x0200020002000200LL,};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
147
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
148 static uint64_t __attribute__((aligned(8))) dither8[2]={
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
149 0x0602060206020602LL,
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
150 0x0004000400040004LL,};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
151 #endif
20576
9e7c80f126d6 Use common define for x86_32 and x86_64.
diego
parents: 20094
diff changeset
152 #endif /* defined(ARCH_X86) */
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
153
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
154 #define RGB2YUV_SHIFT 8
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
155 #define BY ((int)( 0.098*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
156 #define BV ((int)(-0.071*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
157 #define BU ((int)( 0.439*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
158 #define GY ((int)( 0.504*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
159 #define GV ((int)(-0.368*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
160 #define GU ((int)(-0.291*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
161 #define RY ((int)( 0.257*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
162 #define RV ((int)( 0.439*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
163 #define RU ((int)(-0.148*(1<<RGB2YUV_SHIFT)+0.5))
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
164
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
165 //Note: we have C, MMX, MMX2, 3DNOW version therse no 3DNOW+MMX2 one
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
166 //Plain C versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
167 #undef HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
168 #undef HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
169 #undef HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
170 #undef HAVE_SSE2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
171 #define RENAME(a) a ## _C
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
172 #include "rgb2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
173
21683
befebdb3ebaa Allow to compile swscale's non-SIMD code under the LGPL license.
lucabe
parents: 21029
diff changeset
174 #if defined(ARCH_X86) && defined(CONFIG_GPL)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
175
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
176 //MMX versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
177 #undef RENAME
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
178 #define HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
179 #undef HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
180 #undef HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
181 #undef HAVE_SSE2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
182 #define RENAME(a) a ## _MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
183 #include "rgb2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
184
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
185 //MMX2 versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
186 #undef RENAME
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
187 #define HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
188 #define HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
189 #undef HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
190 #undef HAVE_SSE2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
191 #define RENAME(a) a ## _MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
192 #include "rgb2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
193
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
194 //3DNOW versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
195 #undef RENAME
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
196 #define HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
197 #undef HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
198 #define HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
199 #undef HAVE_SSE2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
200 #define RENAME(a) a ## _3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
201 #include "rgb2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
202
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
203 #endif //ARCH_X86 || ARCH_X86_64
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
204
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
205 /*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
206 rgb15->rgb16 Original by Strepto/Astral
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
207 ported to gcc & bugfixed : A'rpi
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
208 MMX2, 3DNOW optimization by Nick Kurshev
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
209 32bit c version, and and&add trick by Michael Niedermayer
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
210 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
211
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
212 void sws_rgb2rgb_init(int flags){
21683
befebdb3ebaa Allow to compile swscale's non-SIMD code under the LGPL license.
lucabe
parents: 21029
diff changeset
213 #if (defined(HAVE_MMX2) || defined(HAVE_3DNOW) || defined(HAVE_MMX)) && defined(CONFIG_GPL)
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
214 if (flags & SWS_CPU_CAPS_MMX2)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
215 rgb2rgb_init_MMX2();
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
216 else if (flags & SWS_CPU_CAPS_3DNOW)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
217 rgb2rgb_init_3DNOW();
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
218 else if (flags & SWS_CPU_CAPS_MMX)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
219 rgb2rgb_init_MMX();
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
220 else
19333
4f5e2e0529b1 Do not assemble MMX, MMX2 or 3DNOW code unconditionally on X86 and X86_64.
diego
parents: 19206
diff changeset
221 #endif /* defined(HAVE_MMX2) || defined(HAVE_3DNOW) || defined(HAVE_MMX) */
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
222 rgb2rgb_init_C();
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
223 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
224
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
225 /**
21874
9338a0782bc3 cosmetics: typo pallete --> palette
diego
parents: 21683
diff changeset
226 * Palette is assumed to contain BGR32.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
227 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
228 void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
229 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
230 long i;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
231
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
232 /*
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
233 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
234 ((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
235 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
236
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
237 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
238 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
239 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
240 dst[3]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
241 dst[2]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
242 dst[1]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
243 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
244 //FIXME slow?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
245 dst[0]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
246 dst[1]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
247 dst[2]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
248 //dst[3]= 0; /* do we need this cleansing? */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
249 #endif
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
250 dst+= 4;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
251 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
252 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
253
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
254 void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
255 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
256 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
257 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
258 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
259 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
260 dst[3]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
261 dst[2]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
262 dst[1]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
263 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
264 //FIXME slow?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
265 dst[0]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
266 dst[1]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
267 dst[2]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
268 //dst[3]= 0; /* do we need this cleansing? */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
269 #endif
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
270
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
271 dst+= 4;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
272 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
273 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
274
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
275 /**
21874
9338a0782bc3 cosmetics: typo pallete --> palette
diego
parents: 21683
diff changeset
276 * Palette is assumed to contain BGR32.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
277 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
278 void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
279 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
280 long i;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
281 /*
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
282 writes 1 byte o much and might cause alignment issues on some architectures?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
283 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
284 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
285 */
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
286 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
287 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
288 //FIXME slow?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
289 dst[0]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
290 dst[1]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
291 dst[2]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
292 dst+= 3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
293 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
294 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
295
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
296 void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
297 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
298 long i;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
299 /*
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
300 writes 1 byte o much and might cause alignment issues on some architectures?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
301 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
302 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
303 */
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
304 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
305 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
306 //FIXME slow?
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
307 dst[0]= palette[ src[i]*4+0 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
308 dst[1]= palette[ src[i]*4+1 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
309 dst[2]= palette[ src[i]*4+2 ];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
310 dst+= 3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
311 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
312 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
313
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
314 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
315 * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
316 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
317 void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
318 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
319 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
320 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
321 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
322 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
323 void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
324 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
325 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
326 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
327 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
328 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
329
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
330 /**
21874
9338a0782bc3 cosmetics: typo pallete --> palette
diego
parents: 21683
diff changeset
331 * Palette is assumed to contain BGR15, see rgb32to15 to convert the palette.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
332 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
333 void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
334 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
335 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
336 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
337 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
338 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
339 void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
340 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
341 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
342 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
343 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
344 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
345
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
346 void rgb32tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
347 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
348 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
349 long num_pixels = src_size >> 2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
350 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
351 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
352 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
353 /* RGB32 (= A,B,G,R) -> BGR24 (= B,G,R) */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
354 dst[3*i + 0] = src[4*i + 1];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
355 dst[3*i + 1] = src[4*i + 2];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
356 dst[3*i + 2] = src[4*i + 3];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
357 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
358 dst[3*i + 0] = src[4*i + 2];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
359 dst[3*i + 1] = src[4*i + 1];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
360 dst[3*i + 2] = src[4*i + 0];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
361 #endif
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
362 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
363 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
364
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
365 void rgb24tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
366 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
367 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
368 for (i=0; 3*i<src_size; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
369 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
370 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
371 /* RGB24 (= R,G,B) -> BGR32 (= A,R,G,B) */
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
372 dst[4*i + 0] = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
373 dst[4*i + 1] = src[3*i + 0];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
374 dst[4*i + 2] = src[3*i + 1];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
375 dst[4*i + 3] = src[3*i + 2];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
376 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
377 dst[4*i + 0] = src[3*i + 2];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
378 dst[4*i + 1] = src[3*i + 1];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
379 dst[4*i + 2] = src[3*i + 0];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
380 dst[4*i + 3] = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
381 #endif
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
382 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
383 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
384
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
385 void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
386 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
387 const uint16_t *end;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
388 uint8_t *d = (uint8_t *)dst;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
389 const uint16_t *s = (uint16_t *)src;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
390 end = s + src_size/2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
391 while (s < end)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
392 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
393 register uint16_t bgr;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
394 bgr = *s++;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
395 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
396 *d++ = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
397 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
398 *d++ = (bgr&0x7E0)>>3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
399 *d++ = (bgr&0xF800)>>8;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
400 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
401 *d++ = (bgr&0xF800)>>8;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
402 *d++ = (bgr&0x7E0)>>3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
403 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
404 *d++ = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
405 #endif
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
406 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
407 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
408
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
409 void rgb16tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
410 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
411 const uint16_t *end;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
412 uint8_t *d = (uint8_t *)dst;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
413 const uint16_t *s = (const uint16_t *)src;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
414 end = s + src_size/2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
415 while (s < end)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
416 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
417 register uint16_t bgr;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
418 bgr = *s++;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
419 *d++ = (bgr&0xF800)>>8;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
420 *d++ = (bgr&0x7E0)>>3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
421 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
422 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
423 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
424
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
425 void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
426 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
427 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
428 long num_pixels = src_size >> 1;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
429
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
430 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
431 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
432 unsigned b,g,r;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
433 register uint16_t rgb;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
434 rgb = src[2*i];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
435 r = rgb&0x1F;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
436 g = (rgb&0x7E0)>>5;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
437 b = (rgb&0xF800)>>11;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
438 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
439 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
440 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
441
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
442 void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
443 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
444 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
445 long num_pixels = src_size >> 1;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
446
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
447 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
448 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
449 unsigned b,g,r;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
450 register uint16_t rgb;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
451 rgb = src[2*i];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
452 r = rgb&0x1F;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
453 g = (rgb&0x7E0)>>5;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
454 b = (rgb&0xF800)>>11;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
455 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
456 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
457 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
458
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
459 void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
460 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
461 const uint16_t *end;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
462 uint8_t *d = (uint8_t *)dst;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
463 const uint16_t *s = (const uint16_t *)src;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
464 end = s + src_size/2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
465 while (s < end)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
466 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
467 register uint16_t bgr;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
468 bgr = *s++;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
469 #ifdef WORDS_BIGENDIAN
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
470 *d++ = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
471 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
472 *d++ = (bgr&0x3E0)>>2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
473 *d++ = (bgr&0x7C00)>>7;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
474 #else
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
475 *d++ = (bgr&0x7C00)>>7;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
476 *d++ = (bgr&0x3E0)>>2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
477 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
478 *d++ = 0;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
479 #endif
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
480 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
481 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
482
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
483 void rgb15tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
484 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
485 const uint16_t *end;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
486 uint8_t *d = (uint8_t *)dst;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
487 const uint16_t *s = (uint16_t *)src;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
488 end = s + src_size/2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
489 while (s < end)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
490 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
491 register uint16_t bgr;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
492 bgr = *s++;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
493 *d++ = (bgr&0x7C00)>>7;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
494 *d++ = (bgr&0x3E0)>>2;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
495 *d++ = (bgr&0x1F)<<3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
496 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
497 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
498
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
499 void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
500 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
501 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
502 long num_pixels = src_size >> 1;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
503
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
504 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
505 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
506 unsigned b,g,r;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
507 register uint16_t rgb;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
508 rgb = src[2*i];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
509 r = rgb&0x1F;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
510 g = (rgb&0x3E0)>>5;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
511 b = (rgb&0x7C00)>>10;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
512 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
513 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
514 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
515
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
516 void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
517 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
518 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
519 long num_pixels = src_size >> 1;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 23003
diff changeset
520
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
521 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
522 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
523 unsigned b,g,r;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
524 register uint16_t rgb;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
525 rgb = src[2*i];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
526 r = rgb&0x1F;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
527 g = (rgb&0x3E0)>>5;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
528 b = (rgb&0x7C00)>>10;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
529 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
530 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
531 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
532
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
533 void rgb8tobgr8(const uint8_t *src, uint8_t *dst, long src_size)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
534 {
23140
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
535 long i;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
536 long num_pixels = src_size;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
537 for (i=0; i<num_pixels; i++)
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
538 {
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
539 unsigned b,g,r;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
540 register uint8_t rgb;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
541 rgb = src[i];
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
542 r = (rgb&0x07);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
543 g = (rgb&0x38)>>3;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
544 b = (rgb&0xC0)>>6;
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
545 dst[i] = ((b<<1)&0x07) | ((g&0x07)<<3) | ((r&0x03)<<6);
4d3870361b73 cosmetics attack, part I: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
546 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
547 }