annotate libswscale/yuv2rgb.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 965e0c3565bf
children 2356fe5b7596
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
1 /*
23760
diego
parents: 23732
diff changeset
2 * yuv2rgb.c, Software YUV to RGB converter
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
3 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
4 * Copyright (C) 1999, Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
5 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
6 * Functions broken out from display_x11.c and several new modes
23732
0396f6a6d0d1 ISO8859-1 --> UTF-8
diego
parents: 23701
diff changeset
7 * added by HÃ¥kan Hjort <d95hjort@dtek.chalmers.se>
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
8 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
9 * 15 & 16 bpp support by Franck Sicard <Franck.Sicard@solsoft.fr>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
10 *
23701
2c8b8b4e63c8 Group all copyright and author notices together.
diego
parents: 23488
diff changeset
11 * MMX/MMX2 template stuff (needed for fast movntq support),
2c8b8b4e63c8 Group all copyright and author notices together.
diego
parents: 23488
diff changeset
12 * 1,4,8bpp support and context / deglobalize stuff
2c8b8b4e63c8 Group all copyright and author notices together.
diego
parents: 23488
diff changeset
13 * by Michael Niedermayer (michaelni@gmx.at)
2c8b8b4e63c8 Group all copyright and author notices together.
diego
parents: 23488
diff changeset
14 *
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
15 * This file is part of mpeg2dec, a free MPEG-2 video decoder
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
16 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
17 * mpeg2dec is free software; you can redistribute it and/or modify
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
18 * it under the terms of the GNU General Public License as published by
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
19 * the Free Software Foundation; either version 2, or (at your option)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
20 * any later version.
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
21 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
22 * mpeg2dec is distributed in the hope that it will be useful,
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
25 * GNU General Public License for more details.
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
26 *
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
27 * You should have received a copy of the GNU General Public License
21976
8aac0a59f9c7 Fix license headers and FSF postal address.
diego
parents: 21759
diff changeset
28 * along with mpeg2dec; if not, write to the Free Software
8aac0a59f9c7 Fix license headers and FSF postal address.
diego
parents: 21759
diff changeset
29 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
30 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
31
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
32 #include <stdio.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
33 #include <stdlib.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
34 #include <inttypes.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
35 #include <assert.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
36
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
37 #include "config.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
38 #include "rgb2rgb.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
39 #include "swscale.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
40 #include "swscale_internal.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
41
23805
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
42 #ifdef HAVE_VIS
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
43 #include "yuv2rgb_vis.c"
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
44 #endif
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
45
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
46 #ifdef HAVE_MLIB
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
47 #include "yuv2rgb_mlib.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
48 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
49
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
50 #define DITHER1XBPP // only for mmx
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
51
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
52 const uint8_t __attribute__((aligned(8))) dither_2x2_4[2][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
53 { 1, 3, 1, 3, 1, 3, 1, 3, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
54 { 2, 0, 2, 0, 2, 0, 2, 0, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
55 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
56
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
57 const uint8_t __attribute__((aligned(8))) dither_2x2_8[2][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
58 { 6, 2, 6, 2, 6, 2, 6, 2, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
59 { 0, 4, 0, 4, 0, 4, 0, 4, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
60 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
61
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
62 const uint8_t __attribute__((aligned(8))) dither_8x8_32[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
63 { 17, 9, 23, 15, 16, 8, 22, 14, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
64 { 5, 29, 3, 27, 4, 28, 2, 26, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
65 { 21, 13, 19, 11, 20, 12, 18, 10, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
66 { 0, 24, 6, 30, 1, 25, 7, 31, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
67 { 16, 8, 22, 14, 17, 9, 23, 15, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
68 { 4, 28, 2, 26, 5, 29, 3, 27, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
69 { 20, 12, 18, 10, 21, 13, 19, 11, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
70 { 1, 25, 7, 31, 0, 24, 6, 30, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
71 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
72
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
73 #if 0
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
74 const uint8_t __attribute__((aligned(8))) dither_8x8_64[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
75 { 0, 48, 12, 60, 3, 51, 15, 63, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
76 { 32, 16, 44, 28, 35, 19, 47, 31, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
77 { 8, 56, 4, 52, 11, 59, 7, 55, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
78 { 40, 24, 36, 20, 43, 27, 39, 23, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
79 { 2, 50, 14, 62, 1, 49, 13, 61, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
80 { 34, 18, 46, 30, 33, 17, 45, 29, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
81 { 10, 58, 6, 54, 9, 57, 5, 53, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
82 { 42, 26, 38, 22, 41, 25, 37, 21, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
83 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
84 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
85
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
86 const uint8_t __attribute__((aligned(8))) dither_8x8_73[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
87 { 0, 55, 14, 68, 3, 58, 17, 72, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
88 { 37, 18, 50, 32, 40, 22, 54, 35, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
89 { 9, 64, 5, 59, 13, 67, 8, 63, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
90 { 46, 27, 41, 23, 49, 31, 44, 26, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
91 { 2, 57, 16, 71, 1, 56, 15, 70, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
92 { 39, 21, 52, 34, 38, 19, 51, 33, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
93 { 11, 66, 7, 62, 10, 65, 6, 60, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
94 { 48, 30, 43, 25, 47, 29, 42, 24, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
95 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
96
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
97 #if 0
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
98 const uint8_t __attribute__((aligned(8))) dither_8x8_128[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
99 { 68, 36, 92, 60, 66, 34, 90, 58, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
100 { 20, 116, 12, 108, 18, 114, 10, 106, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
101 { 84, 52, 76, 44, 82, 50, 74, 42, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
102 { 0, 96, 24, 120, 6, 102, 30, 126, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
103 { 64, 32, 88, 56, 70, 38, 94, 62, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
104 { 16, 112, 8, 104, 22, 118, 14, 110, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
105 { 80, 48, 72, 40, 86, 54, 78, 46, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
106 { 4, 100, 28, 124, 2, 98, 26, 122, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
107 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
108 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
109
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
110 #if 1
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
111 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
112 {117, 62, 158, 103, 113, 58, 155, 100, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
113 { 34, 199, 21, 186, 31, 196, 17, 182, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
114 {144, 89, 131, 76, 141, 86, 127, 72, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
115 { 0, 165, 41, 206, 10, 175, 52, 217, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
116 {110, 55, 151, 96, 120, 65, 162, 107, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
117 { 28, 193, 14, 179, 38, 203, 24, 189, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
118 {138, 83, 124, 69, 148, 93, 134, 79, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
119 { 7, 172, 48, 213, 3, 168, 45, 210, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
120 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
121 #elif 1
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
122 // tries to correct a gamma of 1.5
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
123 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
124 { 0, 143, 18, 200, 2, 156, 25, 215, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
125 { 78, 28, 125, 64, 89, 36, 138, 74, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
126 { 10, 180, 3, 161, 16, 195, 8, 175, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
127 {109, 51, 93, 38, 121, 60, 105, 47, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
128 { 1, 152, 23, 210, 0, 147, 20, 205, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
129 { 85, 33, 134, 71, 81, 30, 130, 67, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
130 { 14, 190, 6, 171, 12, 185, 5, 166, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
131 {117, 57, 101, 44, 113, 54, 97, 41, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
132 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
133 #elif 1
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
134 // tries to correct a gamma of 2.0
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
135 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
136 { 0, 124, 8, 193, 0, 140, 12, 213, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
137 { 55, 14, 104, 42, 66, 19, 119, 52, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
138 { 3, 168, 1, 145, 6, 187, 3, 162, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
139 { 86, 31, 70, 21, 99, 39, 82, 28, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
140 { 0, 134, 11, 206, 0, 129, 9, 200, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
141 { 62, 17, 114, 48, 58, 16, 109, 45, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
142 { 5, 181, 2, 157, 4, 175, 1, 151, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
143 { 95, 36, 78, 26, 90, 34, 74, 24, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
144 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
145 #else
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
146 // tries to correct a gamma of 2.5
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
147 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
148 { 0, 107, 3, 187, 0, 125, 6, 212, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
149 { 39, 7, 86, 28, 49, 11, 102, 36, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
150 { 1, 158, 0, 131, 3, 180, 1, 151, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
151 { 68, 19, 52, 12, 81, 25, 64, 17, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
152 { 0, 119, 5, 203, 0, 113, 4, 195, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
153 { 45, 9, 96, 33, 42, 8, 91, 30, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
154 { 2, 172, 1, 144, 2, 165, 0, 137, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
155 { 77, 23, 60, 15, 72, 21, 56, 14, },
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
156 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
157 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
158
19333
4f5e2e0529b1 Do not assemble MMX, MMX2 or 3DNOW code unconditionally on X86 and X86_64.
diego
parents: 19206
diff changeset
159 #ifdef HAVE_MMX
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
160
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
161 /* hope these constant values are cache line aligned */
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
162 static uint64_t attribute_used __attribute__((aligned(8))) mmx_00ffw = 0x00ff00ff00ff00ffULL;
20018
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
163 static uint64_t attribute_used __attribute__((aligned(8))) mmx_redmask = 0xf8f8f8f8f8f8f8f8ULL;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
164 static uint64_t attribute_used __attribute__((aligned(8))) mmx_grnmask = 0xfcfcfcfcfcfcfcfcULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
165
20018
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
166 static uint64_t attribute_used __attribute__((aligned(8))) M24A= 0x00FF0000FF0000FFULL;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
167 static uint64_t attribute_used __attribute__((aligned(8))) M24B= 0xFF0000FF0000FF00ULL;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
168 static uint64_t attribute_used __attribute__((aligned(8))) M24C= 0x0000FF0000FF0000ULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
169
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
170 // the volatile is required because gcc otherwise optimizes some writes away not knowing that these
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
171 // are read in the asm block
20018
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
172 static volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
173 static volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
174 static volatile uint64_t attribute_used __attribute__((aligned(8))) g6Dither;
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
175 static volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
176
20018
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
177 static uint64_t __attribute__((aligned(8))) dither4[2]={
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
178 0x0103010301030103LL,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
179 0x0200020002000200LL,};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
180
20018
aa6cb6610d74 make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents: 19872
diff changeset
181 static uint64_t __attribute__((aligned(8))) dither8[2]={
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
182 0x0602060206020602LL,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
183 0x0004000400040004LL,};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
184
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
185 #undef HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
186
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
187 //MMX versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
188 #undef RENAME
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
189 #define HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
190 #undef HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
191 #undef HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
192 #define RENAME(a) a ## _MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
193 #include "yuv2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
194
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
195 //MMX2 versions
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
196 #undef RENAME
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
197 #define HAVE_MMX
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
198 #define HAVE_MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
199 #undef HAVE_3DNOW
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
200 #define RENAME(a) a ## _MMX2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
201 #include "yuv2rgb_template.c"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
202
20576
9e7c80f126d6 Use common define for x86_32 and x86_64.
diego
parents: 20018
diff changeset
203 #endif /* defined(ARCH_X86) */
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
204
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
205 const int32_t Inverse_Table_6_9[8][4] = {
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
206 {117504, 138453, 13954, 34903}, /* no sequence_display_extension */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
207 {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
208 {104597, 132201, 25675, 53279}, /* unspecified */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
209 {104597, 132201, 25675, 53279}, /* reserved */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
210 {104448, 132798, 24759, 53109}, /* FCC */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
211 {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
212 {104597, 132201, 25675, 53279}, /* SMPTE 170M */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
213 {117579, 136230, 16907, 35559} /* SMPTE 240M (1987) */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
214 };
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
215
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
216 #define RGB(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
217 U = pu[i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
218 V = pv[i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
219 r = (void *)c->table_rV[V]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
220 g = (void *)(c->table_gU[U] + c->table_gV[V]); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
221 b = (void *)c->table_bU[U];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
222
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
223 #define DST1(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
224 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
225 dst_1[2*i] = r[Y] + g[Y] + b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
226 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
227 dst_1[2*i+1] = r[Y] + g[Y] + b[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
228
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
229 #define DST2(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
230 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
231 dst_2[2*i] = r[Y] + g[Y] + b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
232 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
233 dst_2[2*i+1] = r[Y] + g[Y] + b[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
234
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
235 #define DST1RGB(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
236 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
237 dst_1[6*i] = r[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
238 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
239 dst_1[6*i+3] = r[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = b[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
240
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
241 #define DST2RGB(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
242 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
243 dst_2[6*i] = r[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
244 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
245 dst_2[6*i+3] = r[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = b[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
246
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
247 #define DST1BGR(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
248 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
249 dst_1[6*i] = b[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = r[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
250 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
251 dst_1[6*i+3] = b[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = r[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
252
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
253 #define DST2BGR(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
254 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
255 dst_2[6*i] = b[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = r[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
256 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
257 dst_2[6*i+3] = b[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = r[Y];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
258
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
259 #define PROLOG(func_name, dst_type) \
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
260 static int func_name(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
261 int srcSliceH, uint8_t* dst[], int dstStride[]){\
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
262 int y;\
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
263 \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
264 if (c->srcFormat == PIX_FMT_YUV422P){\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
265 srcStride[1] *= 2;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
266 srcStride[2] *= 2;\
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
267 }\
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
268 for (y=0; y<srcSliceH; y+=2){\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
269 dst_type *dst_1= (dst_type*)(dst[0] + (y+srcSliceY )*dstStride[0]);\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
270 dst_type *dst_2= (dst_type*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);\
23400
16cce5d6ff9f rename attribute_unused to av_unused as it is declared in common.h
benoit
parents: 23289
diff changeset
271 dst_type av_unused *r, *b;\
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
272 dst_type *g;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
273 uint8_t *py_1= src[0] + y*srcStride[0];\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
274 uint8_t *py_2= py_1 + srcStride[0];\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
275 uint8_t *pu= src[1] + (y>>1)*srcStride[1];\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
276 uint8_t *pv= src[2] + (y>>1)*srcStride[2];\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
277 unsigned int h_size= c->dstW>>3;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
278 while (h_size--) {\
23400
16cce5d6ff9f rename attribute_unused to av_unused as it is declared in common.h
benoit
parents: 23289
diff changeset
279 int av_unused U, V;\
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
280 int Y;\
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
281
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
282 #define EPILOG1(dst_delta)\
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
283 pu += 4;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
284 pv += 4;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
285 py_1 += 8;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
286 py_2 += 8;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
287 dst_1 += dst_delta;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
288 dst_2 += dst_delta;\
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
289 }\
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
290 if (c->dstW & 4) {\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
291 int av_unused U, V;\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
292 int Y;\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
293
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
294 #define EPILOG2()\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
295 }\
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
296 }\
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
297 return srcSliceH;\
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
298 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
299
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
300 #define EPILOG(dst_delta)\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
301 EPILOG1(dst_delta)\
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
302 EPILOG2()
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
303
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
304 PROLOG(yuv2rgb_c_32, uint32_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
305 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
306 DST1(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
307 DST2(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
308
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
309 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
310 DST2(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
311 DST1(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
312
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
313 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
314 DST1(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
315 DST2(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
316
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
317 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
318 DST2(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
319 DST1(3);
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
320 EPILOG1(8)
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
321 RGB(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
322 DST1(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
323 DST2(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
324
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
325 RGB(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
326 DST2(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
327 DST1(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
328 EPILOG2()
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
329
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
330 PROLOG(yuv2rgb_c_24_rgb, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
331 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
332 DST1RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
333 DST2RGB(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
334
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
335 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
336 DST2RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
337 DST1RGB(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
338
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
339 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
340 DST1RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
341 DST2RGB(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
342
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
343 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
344 DST2RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
345 DST1RGB(3);
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
346 EPILOG1(24)
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
347 RGB(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
348 DST1RGB(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
349 DST2RGB(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
350
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
351 RGB(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
352 DST2RGB(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
353 DST1RGB(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
354 EPILOG2()
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
355
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
356 // only trivial mods from yuv2rgb_c_24_rgb
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
357 PROLOG(yuv2rgb_c_24_bgr, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
358 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
359 DST1BGR(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
360 DST2BGR(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
361
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
362 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
363 DST2BGR(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
364 DST1BGR(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
365
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
366 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
367 DST1BGR(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
368 DST2BGR(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
369
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
370 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
371 DST2BGR(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
372 DST1BGR(3);
23488
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
373 EPILOG1(24)
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
374 RGB(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
375 DST1BGR(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
376 DST2BGR(0);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
377
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
378 RGB(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
379 DST2BGR(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
380 DST1BGR(1);
63bc8943a1ad Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents: 23400
diff changeset
381 EPILOG2()
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
382
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
383 // This is exactly the same code as yuv2rgb_c_32 except for the types of
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
384 // r, g, b, dst_1, dst_2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
385 PROLOG(yuv2rgb_c_16, uint16_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
386 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
387 DST1(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
388 DST2(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
389
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
390 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
391 DST2(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
392 DST1(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
393
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
394 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
395 DST1(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
396 DST2(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
397
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
398 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
399 DST2(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
400 DST1(3);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
401 EPILOG(8)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
402
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
403 // This is exactly the same code as yuv2rgb_c_32 except for the types of
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
404 // r, g, b, dst_1, dst_2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
405 PROLOG(yuv2rgb_c_8, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
406 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
407 DST1(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
408 DST2(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
409
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
410 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
411 DST2(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
412 DST1(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
413
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
414 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
415 DST1(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
416 DST2(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
417
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
418 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
419 DST2(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
420 DST1(3);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
421 EPILOG(8)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
422
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
423 // r, g, b, dst_1, dst_2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
424 PROLOG(yuv2rgb_c_8_ordered_dither, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
425 const uint8_t *d32= dither_8x8_32[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
426 const uint8_t *d64= dither_8x8_73[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
427 #define DST1bpp8(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
428 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
429 dst_1[2*i] = r[Y+d32[0+o]] + g[Y+d32[0+o]] + b[Y+d64[0+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
430 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
431 dst_1[2*i+1] = r[Y+d32[1+o]] + g[Y+d32[1+o]] + b[Y+d64[1+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
432
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
433 #define DST2bpp8(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
434 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
435 dst_2[2*i] = r[Y+d32[8+o]] + g[Y+d32[8+o]] + b[Y+d64[8+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
436 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
437 dst_2[2*i+1] = r[Y+d32[9+o]] + g[Y+d32[9+o]] + b[Y+d64[9+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
438
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
439
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
440 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
441 DST1bpp8(0,0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
442 DST2bpp8(0,0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
443
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
444 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
445 DST2bpp8(1,2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
446 DST1bpp8(1,2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
447
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
448 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
449 DST1bpp8(2,4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
450 DST2bpp8(2,4);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
451
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
452 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
453 DST2bpp8(3,6);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
454 DST1bpp8(3,6);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
455 EPILOG(8)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
456
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
457
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
458 // This is exactly the same code as yuv2rgb_c_32 except for the types of
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
459 // r, g, b, dst_1, dst_2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
460 PROLOG(yuv2rgb_c_4, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
461 int acc;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
462 #define DST1_4(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
463 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
464 acc = r[Y] + g[Y] + b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
465 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
466 acc |= (r[Y] + g[Y] + b[Y])<<4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
467 dst_1[i] = acc;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
468
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
469 #define DST2_4(i) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
470 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
471 acc = r[Y] + g[Y] + b[Y]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
472 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
473 acc |= (r[Y] + g[Y] + b[Y])<<4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
474 dst_2[i] = acc;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 22695
diff changeset
475
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
476 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
477 DST1_4(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
478 DST2_4(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
479
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
480 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
481 DST2_4(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
482 DST1_4(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
483
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
484 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
485 DST1_4(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
486 DST2_4(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
487
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
488 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
489 DST2_4(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
490 DST1_4(3);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
491 EPILOG(4)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
492
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
493 PROLOG(yuv2rgb_c_4_ordered_dither, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
494 const uint8_t *d64= dither_8x8_73[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
495 const uint8_t *d128=dither_8x8_220[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
496 int acc;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
497
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
498 #define DST1bpp4(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
499 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
500 acc = r[Y+d128[0+o]] + g[Y+d64[0+o]] + b[Y+d128[0+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
501 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
502 acc |= (r[Y+d128[1+o]] + g[Y+d64[1+o]] + b[Y+d128[1+o]])<<4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
503 dst_1[i]= acc;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
504
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
505 #define DST2bpp4(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
506 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
507 acc = r[Y+d128[8+o]] + g[Y+d64[8+o]] + b[Y+d128[8+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
508 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
509 acc |= (r[Y+d128[9+o]] + g[Y+d64[9+o]] + b[Y+d128[9+o]])<<4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
510 dst_2[i]= acc;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
511
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
512
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
513 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
514 DST1bpp4(0,0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
515 DST2bpp4(0,0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
516
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
517 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
518 DST2bpp4(1,2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
519 DST1bpp4(1,2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
520
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
521 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
522 DST1bpp4(2,4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
523 DST2bpp4(2,4);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
524
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
525 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
526 DST2bpp4(3,6);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
527 DST1bpp4(3,6);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
528 EPILOG(4)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
529
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
530 // This is exactly the same code as yuv2rgb_c_32 except for the types of
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
531 // r, g, b, dst_1, dst_2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
532 PROLOG(yuv2rgb_c_4b, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
533 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
534 DST1(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
535 DST2(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
536
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
537 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
538 DST2(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
539 DST1(1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
540
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
541 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
542 DST1(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
543 DST2(2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
544
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
545 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
546 DST2(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
547 DST1(3);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
548 EPILOG(8)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
549
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
550 PROLOG(yuv2rgb_c_4b_ordered_dither, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
551 const uint8_t *d64= dither_8x8_73[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
552 const uint8_t *d128=dither_8x8_220[y&7];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
553
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
554 #define DST1bpp4b(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
555 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
556 dst_1[2*i] = r[Y+d128[0+o]] + g[Y+d64[0+o]] + b[Y+d128[0+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
557 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
558 dst_1[2*i+1] = r[Y+d128[1+o]] + g[Y+d64[1+o]] + b[Y+d128[1+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
559
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
560 #define DST2bpp4b(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
561 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
562 dst_2[2*i] = r[Y+d128[8+o]] + g[Y+d64[8+o]] + b[Y+d128[8+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
563 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
564 dst_2[2*i+1] = r[Y+d128[9+o]] + g[Y+d64[9+o]] + b[Y+d128[9+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
565
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
566
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
567 RGB(0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
568 DST1bpp4b(0,0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
569 DST2bpp4b(0,0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
570
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
571 RGB(1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
572 DST2bpp4b(1,2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
573 DST1bpp4b(1,2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
574
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
575 RGB(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
576 DST1bpp4b(2,4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
577 DST2bpp4b(2,4);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
578
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
579 RGB(3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
580 DST2bpp4b(3,6);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
581 DST1bpp4b(3,6);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
582 EPILOG(8)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
583
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
584 PROLOG(yuv2rgb_c_1_ordered_dither, uint8_t)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
585 const uint8_t *d128=dither_8x8_220[y&7];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
586 char out_1=0, out_2=0;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
587 g= c->table_gU[128] + c->table_gV[128];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
588
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
589 #define DST1bpp1(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
590 Y = py_1[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
591 out_1+= out_1 + g[Y+d128[0+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
592 Y = py_1[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
593 out_1+= out_1 + g[Y+d128[1+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
594
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
595 #define DST2bpp1(i,o) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
596 Y = py_2[2*i]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
597 out_2+= out_2 + g[Y+d128[8+o]]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
598 Y = py_2[2*i+1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
599 out_2+= out_2 + g[Y+d128[9+o]];
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
600
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
601 DST1bpp1(0,0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
602 DST2bpp1(0,0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
603
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
604 DST2bpp1(1,2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
605 DST1bpp1(1,2);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
606
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
607 DST1bpp1(2,4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
608 DST2bpp1(2,4);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
609
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
610 DST2bpp1(3,6);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
611 DST1bpp1(3,6);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 22695
diff changeset
612
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
613 dst_1[0]= out_1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
614 dst_2[0]= out_2;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
615 EPILOG(1)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
616
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
617 SwsFunc yuv2rgb_get_func_ptr (SwsContext *c)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
618 {
19333
4f5e2e0529b1 Do not assemble MMX, MMX2 or 3DNOW code unconditionally on X86 and X86_64.
diego
parents: 19206
diff changeset
619 #if defined(HAVE_MMX2) || defined(HAVE_MMX)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
620 if (c->flags & SWS_CPU_CAPS_MMX2){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
621 switch(c->dstFormat){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
622 case PIX_FMT_RGB32: return yuv420_rgb32_MMX2;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
623 case PIX_FMT_BGR24: return yuv420_rgb24_MMX2;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
624 case PIX_FMT_BGR565: return yuv420_rgb16_MMX2;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
625 case PIX_FMT_BGR555: return yuv420_rgb15_MMX2;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
626 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
627 }
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
628 if (c->flags & SWS_CPU_CAPS_MMX){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
629 switch(c->dstFormat){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
630 case PIX_FMT_RGB32: return yuv420_rgb32_MMX;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
631 case PIX_FMT_BGR24: return yuv420_rgb24_MMX;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
632 case PIX_FMT_BGR565: return yuv420_rgb16_MMX;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
633 case PIX_FMT_BGR555: return yuv420_rgb15_MMX;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
634 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
635 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
636 #endif
23805
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
637 #ifdef HAVE_VIS
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
638 {
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
639 SwsFunc t= yuv2rgb_init_vis(c);
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
640 if (t) return t;
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
641 }
3c6db57870ea UltraSPARC VIS yuv2rgb
benoit
parents: 23771
diff changeset
642 #endif
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
643 #ifdef HAVE_MLIB
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
644 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
645 SwsFunc t= yuv2rgb_init_mlib(c);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
646 if (t) return t;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
647 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
648 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
649 #ifdef HAVE_ALTIVEC
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
650 if (c->flags & SWS_CPU_CAPS_ALTIVEC)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
651 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
652 SwsFunc t = yuv2rgb_init_altivec(c);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
653 if (t) return t;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
654 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
655 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
656
24607
965e0c3565bf Revert wrong ARCH_BFIN --> HAVE_BFIN change.
diego
parents: 24289
diff changeset
657 #ifdef ARCH_BFIN
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
658 if (c->flags & SWS_CPU_CAPS_BFIN)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
659 {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
660 SwsFunc t = ff_bfin_yuv2rgb_get_func_ptr (c);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
661 if (t) return t;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
662 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
663 #endif
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents: 23157
diff changeset
664
21981
a14ddab18acd Pass a context to av_log(), when possible
lucabe
parents: 21976
diff changeset
665 av_log(c, AV_LOG_WARNING, "No accelerated colorspace conversion found\n");
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
666
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
667 switch(c->dstFormat){
19872
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
668 case PIX_FMT_BGR32:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
669 case PIX_FMT_RGB32: return yuv2rgb_c_32;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
670 case PIX_FMT_RGB24: return yuv2rgb_c_24_rgb;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
671 case PIX_FMT_BGR24: return yuv2rgb_c_24_bgr;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
672 case PIX_FMT_RGB565:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
673 case PIX_FMT_BGR565:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
674 case PIX_FMT_RGB555:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
675 case PIX_FMT_BGR555: return yuv2rgb_c_16;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
676 case PIX_FMT_RGB8:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
677 case PIX_FMT_BGR8: return yuv2rgb_c_8_ordered_dither;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
678 case PIX_FMT_RGB4:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
679 case PIX_FMT_BGR4: return yuv2rgb_c_4_ordered_dither;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
680 case PIX_FMT_RGB4_BYTE:
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
681 case PIX_FMT_BGR4_BYTE: return yuv2rgb_c_4b_ordered_dither;
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
682 case PIX_FMT_MONOBLACK: return yuv2rgb_c_1_ordered_dither;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
683 default:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
684 assert(0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
685 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
686 return NULL;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
687 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
688
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
689 static int div_round (int dividend, int divisor)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
690 {
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
691 if (dividend > 0)
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
692 return (dividend + (divisor>>1)) / divisor;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
693 else
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
694 return -((-dividend + (divisor>>1)) / divisor);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
695 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
696
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
697 int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation)
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 22695
diff changeset
698 {
19872
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
699 const int isRgb = isBGR(c->dstFormat);
8e50cba9fe03 Remove the dependency of libswscale on img_format.h
lucabe
parents: 19431
diff changeset
700 const int bpp = fmt_depth(c->dstFormat);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
701 int i;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
702 uint8_t table_Y[1024];
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
703 uint32_t *table_32 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
704 uint16_t *table_16 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
705 uint8_t *table_8 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
706 uint8_t *table_332 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
707 uint8_t *table_121 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
708 uint8_t *table_1 = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
709 int entry_size = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
710 void *table_r = 0, *table_g = 0, *table_b = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
711 void *table_start;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
712
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
713 int64_t crv = inv_table[0];
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
714 int64_t cbu = inv_table[1];
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
715 int64_t cgu = -inv_table[2];
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
716 int64_t cgv = -inv_table[3];
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
717 int64_t cy = 1<<16;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
718 int64_t oy = 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
719
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
720 //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv);
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
721 if (!fullRange){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
722 cy= (cy*255) / 219;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
723 oy= 16<<16;
22695
f37a3ef2685e fix full range (jpeg yuv) chroma
michael
parents: 21981
diff changeset
724 }else{
f37a3ef2685e fix full range (jpeg yuv) chroma
michael
parents: 21981
diff changeset
725 crv= (crv*224) / 255;
f37a3ef2685e fix full range (jpeg yuv) chroma
michael
parents: 21981
diff changeset
726 cbu= (cbu*224) / 255;
f37a3ef2685e fix full range (jpeg yuv) chroma
michael
parents: 21981
diff changeset
727 cgu= (cgu*224) / 255;
f37a3ef2685e fix full range (jpeg yuv) chroma
michael
parents: 21981
diff changeset
728 cgv= (cgv*224) / 255;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
729 }
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 22695
diff changeset
730
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
731 cy = (cy *contrast )>>16;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
732 crv= (crv*contrast * saturation)>>32;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
733 cbu= (cbu*contrast * saturation)>>32;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
734 cgu= (cgu*contrast * saturation)>>32;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
735 cgv= (cgv*contrast * saturation)>>32;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
736 //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
737 oy -= 256*brightness;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
738
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
739 for (i = 0; i < 1024; i++) {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
740 int j;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
741
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
742 j= (cy*(((i - 384)<<16) - oy) + (1<<31))>>32;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
743 j = (j < 0) ? 0 : ((j > 255) ? 255 : j);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
744 table_Y[i] = j;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
745 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
746
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
747 switch (bpp) {
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
748 case 32:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
749 table_start= table_32 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint32_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
750
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
751 entry_size = sizeof (uint32_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
752 table_r = table_32 + 197;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
753 table_b = table_32 + 197 + 685;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
754 table_g = table_32 + 197 + 2*682;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
755
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
756 for (i = -197; i < 256+197; i++)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
757 ((uint32_t *)table_r)[i] = table_Y[i+384] << (isRgb ? 16 : 0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
758 for (i = -132; i < 256+132; i++)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
759 ((uint32_t *)table_g)[i] = table_Y[i+384] << 8;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
760 for (i = -232; i < 256+232; i++)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
761 ((uint32_t *)table_b)[i] = table_Y[i+384] << (isRgb ? 0 : 16);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
762 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
763
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
764 case 24:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
765 table_start= table_8 = av_malloc ((256 + 2*232) * sizeof (uint8_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
766
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
767 entry_size = sizeof (uint8_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
768 table_r = table_g = table_b = table_8 + 232;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
769
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
770 for (i = -232; i < 256+232; i++)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
771 ((uint8_t * )table_b)[i] = table_Y[i+384];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
772 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
773
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
774 case 15:
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
775 case 16:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
776 table_start= table_16 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint16_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
777
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
778 entry_size = sizeof (uint16_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
779 table_r = table_16 + 197;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
780 table_b = table_16 + 197 + 685;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
781 table_g = table_16 + 197 + 2*682;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
782
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
783 for (i = -197; i < 256+197; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
784 int j = table_Y[i+384] >> 3;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
785
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
786 if (isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
787 j <<= ((bpp==16) ? 11 : 10);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
788
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
789 ((uint16_t *)table_r)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
790 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
791 for (i = -132; i < 256+132; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
792 int j = table_Y[i+384] >> ((bpp==16) ? 2 : 3);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
793
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
794 ((uint16_t *)table_g)[i] = j << 5;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
795 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
796 for (i = -232; i < 256+232; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
797 int j = table_Y[i+384] >> 3;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
798
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
799 if (!isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
800 j <<= ((bpp==16) ? 11 : 10);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
801
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
802 ((uint16_t *)table_b)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
803 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
804 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
805
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
806 case 8:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
807 table_start= table_332 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint8_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
808
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
809 entry_size = sizeof (uint8_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
810 table_r = table_332 + 197;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
811 table_b = table_332 + 197 + 685;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
812 table_g = table_332 + 197 + 2*682;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
813
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
814 for (i = -197; i < 256+197; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
815 int j = (table_Y[i+384 - 16] + 18)/36;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
816
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
817 if (isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
818 j <<= 5;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
819
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
820 ((uint8_t *)table_r)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
821 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
822 for (i = -132; i < 256+132; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
823 int j = (table_Y[i+384 - 16] + 18)/36;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
824
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
825 if (!isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
826 j <<= 1;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
827
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
828 ((uint8_t *)table_g)[i] = j << 2;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
829 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
830 for (i = -232; i < 256+232; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
831 int j = (table_Y[i+384 - 37] + 43)/85;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
832
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
833 if (!isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
834 j <<= 6;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
835
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
836 ((uint8_t *)table_b)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
837 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
838 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
839 case 4:
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
840 case 4|128:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
841 table_start= table_121 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint8_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
842
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
843 entry_size = sizeof (uint8_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
844 table_r = table_121 + 197;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
845 table_b = table_121 + 197 + 685;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
846 table_g = table_121 + 197 + 2*682;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
847
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
848 for (i = -197; i < 256+197; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
849 int j = table_Y[i+384 - 110] >> 7;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
850
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
851 if (isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
852 j <<= 3;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
853
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
854 ((uint8_t *)table_r)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
855 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
856 for (i = -132; i < 256+132; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
857 int j = (table_Y[i+384 - 37]+ 43)/85;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
858
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
859 ((uint8_t *)table_g)[i] = j << 1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
860 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
861 for (i = -232; i < 256+232; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
862 int j =table_Y[i+384 - 110] >> 7;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
863
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
864 if (!isRgb)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
865 j <<= 3;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
866
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
867 ((uint8_t *)table_b)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
868 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
869 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
870
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
871 case 1:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
872 table_start= table_1 = av_malloc (256*2 * sizeof (uint8_t));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
873
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
874 entry_size = sizeof (uint8_t);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
875 table_g = table_1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
876 table_r = table_b = NULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
877
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
878 for (i = 0; i < 256+256; i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
879 int j = table_Y[i + 384 - 110]>>7;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
880
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
881 ((uint8_t *)table_g)[i] = j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
882 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
883 break;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
884
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
885 default:
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
886 table_start= NULL;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
887 av_log(c, AV_LOG_ERROR, "%ibpp not supported by yuv2rgb\n", bpp);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
888 //free mem?
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
889 return -1;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
890 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
891
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
892 for (i = 0; i < 256; i++) {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
893 c->table_rV[i] = (uint8_t *)table_r + entry_size * div_round (crv * (i-128), 76309);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
894 c->table_gU[i] = (uint8_t *)table_g + entry_size * div_round (cgu * (i-128), 76309);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
895 c->table_gV[i] = entry_size * div_round (cgv * (i-128), 76309);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
896 c->table_bU[i] = (uint8_t *)table_b + entry_size * div_round (cbu * (i-128), 76309);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
897 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
898
19143
c4dac777b44c Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents: 18861
diff changeset
899 av_free(c->yuvTable);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
900 c->yuvTable= table_start;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
901 return 0;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
902 }