Mercurial > mplayer.hg
annotate libswscale/swscale_internal.h @ 29465:45e78d49e493
Rename "funny" code to "mmx2 filter" code.
author | ramiro |
---|---|
date | Thu, 13 Aug 2009 18:28:17 +0000 |
parents | 2d985cc879c9 |
children | 947a942221c4 |
rev | line source |
---|---|
18861 | 1 /* |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
2 * Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at> |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
3 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
4 * This file is part of FFmpeg. |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
5 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
10 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
14 * Lesser General Public License for more details. |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
15 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20411
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
23702 | 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19872
diff
changeset
|
19 */ |
18861 | 20 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
21 #ifndef SWSCALE_SWSCALE_INTERNAL_H |
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
22 #define SWSCALE_SWSCALE_INTERNAL_H |
18861 | 23 |
25288
831fbe89f76b
Fix 'make checkheaders' on AltiVec-enabled systems.
diego
parents:
24772
diff
changeset
|
24 #include "config.h" |
831fbe89f76b
Fix 'make checkheaders' on AltiVec-enabled systems.
diego
parents:
24772
diff
changeset
|
25 |
28276 | 26 #if HAVE_ALTIVEC_H |
18861 | 27 #include <altivec.h> |
28 #endif | |
29 | |
26670
e6774798e913
Use full path for #includes from another directory.
diego
parents:
26178
diff
changeset
|
30 #include "libavutil/avutil.h" |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
31 |
27514 | 32 #define STR(s) AV_TOSTRING(s) //AV_STRINGIFY is too long |
27513 | 33 |
18861 | 34 #define MAX_FILTER_SIZE 256 |
35 | |
29214
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
36 #if ARCH_X86 |
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
37 #define VOFW 5120 |
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
38 #else |
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
39 #define VOFW 2048 // faster on PPC and not tested on others |
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
40 #endif |
a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
michael
parents:
29176
diff
changeset
|
41 |
26177 | 42 #define VOF (VOFW*2) |
26133
94cc4bac8cd0
Turn ancient V offset numerical constants into named ones.
michael
parents:
26028
diff
changeset
|
43 |
29397 | 44 #if HAVE_BIGENDIAN |
27490 | 45 #define ALT32_CORR (-1) |
46 #else | |
47 #define ALT32_CORR 1 | |
48 #endif | |
49 | |
28276 | 50 #if ARCH_X86_64 |
27513 | 51 # define APCK_PTR2 8 |
52 # define APCK_COEF 16 | |
53 # define APCK_SIZE 24 | |
54 #else | |
55 # define APCK_PTR2 4 | |
56 # define APCK_COEF 8 | |
57 # define APCK_SIZE 16 | |
58 #endif | |
59 | |
28318
6142aa6d6f38
Declare struct SwsContext before using it, fixes the checkheaders warning:
diego
parents:
28276
diff
changeset
|
60 struct SwsContext; |
6142aa6d6f38
Declare struct SwsContext before using it, fixes the checkheaders warning:
diego
parents:
28276
diff
changeset
|
61 |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
62 typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
63 int srcStride[], int srcSliceY, int srcSliceH, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
64 uint8_t* dst[], int dstStride[]); |
18861 | 65 |
27158 | 66 /* This struct should be aligned on at least a 32-byte boundary. */ |
18861 | 67 typedef struct SwsContext{ |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
68 /** |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
69 * info on struct for av_log |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
70 */ |
26178 | 71 const AVClass *av_class; |
21981 | 72 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
73 /** |
25457 | 74 * Note that src, dst, srcStride, dstStride will be copied in the |
75 * sws_scale() wrapper so they can be freely modified here. | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
76 */ |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
77 SwsFunc swScale; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
78 int srcW, srcH, dstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
79 int chrSrcW, chrSrcH, chrDstW, chrDstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
80 int lumXInc, chrXInc; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
81 int lumYInc, chrYInc; |
27695
9cf6c7c5c7cd
Change variable types from int to enum PixelFormat.
cehoyos
parents:
27567
diff
changeset
|
82 enum PixelFormat dstFormat, srcFormat; ///< format 4:2:0 type is always YV12 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
83 int origDstFormat, origSrcFormat; ///< format |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
84 int chrSrcHSubSample, chrSrcVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
85 int chrDstHSubSample, chrDstVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
86 int vChrDrop; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
87 int sliceDir; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
88 double param[2]; |
18861 | 89 |
27698 | 90 uint32_t pal_yuv[256]; |
91 uint32_t pal_rgb[256]; | |
92 | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
93 int16_t **lumPixBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
94 int16_t **chrPixBuf; |
28976 | 95 int16_t **alpPixBuf; |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
96 int16_t *hLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
97 int16_t *hLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
98 int16_t *hChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
99 int16_t *hChrFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
100 int16_t *vLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
101 int16_t *vLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
102 int16_t *vChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
103 int16_t *vChrFilterPos; |
18861 | 104 |
27158 | 105 uint8_t formatConvBuffer[VOF]; //FIXME dynamic allocation, but we have to change a lot of code for this to be useful |
18861 | 106 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
107 int hLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
108 int hChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
109 int vLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
110 int vChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
111 int vLumBufSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
112 int vChrBufSize; |
18861 | 113 |
29465 | 114 uint8_t *lumMmx2FilterCode; |
115 uint8_t *chrMmx2FilterCode; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
116 int32_t *lumMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
117 int32_t *chrMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
118 int16_t *lumMmx2Filter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
119 int16_t *chrMmx2Filter; |
18861 | 120 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
121 int canMMX2BeUsed; |
18861 | 122 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
123 int lastInLumBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
124 int lastInChrBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
125 int lumBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
126 int chrBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
127 int dstY; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
128 int flags; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
129 void * yuvTable; // pointer to the yuv->rgb table start so it can be freed() |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
130 uint8_t * table_rV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
131 uint8_t * table_gU[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
132 int table_gV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
133 uint8_t * table_bU[256]; |
18861 | 134 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
135 //Colorspace stuff |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
136 int contrast, brightness, saturation; // for sws_getColorspaceDetails |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
137 int srcColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
138 int dstColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
139 int srcRange, dstRange; |
27567
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
140 int yuv2rgb_y_offset; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
141 int yuv2rgb_y_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
142 int yuv2rgb_v2r_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
143 int yuv2rgb_v2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
144 int yuv2rgb_u2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
145 int yuv2rgb_u2b_coeff; |
18861 | 146 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
147 #define RED_DITHER "0*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
148 #define GREEN_DITHER "1*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
149 #define BLUE_DITHER "2*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
150 #define Y_COEFF "3*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
151 #define VR_COEFF "4*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
152 #define UB_COEFF "5*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
153 #define VG_COEFF "6*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
154 #define UG_COEFF "7*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
155 #define Y_OFFSET "8*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
156 #define U_OFFSET "9*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
157 #define V_OFFSET "10*8" |
18861 | 158 #define LUM_MMX_FILTER_OFFSET "11*8" |
159 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" | |
27158 | 160 #define DSTW_OFFSET "11*8+4*4*256*2" //do not change, it is hardcoded in the ASM |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
161 #define ESP_OFFSET "11*8+4*4*256*2+8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
162 #define VROUNDER_OFFSET "11*8+4*4*256*2+16" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
163 #define U_TEMP "11*8+4*4*256*2+24" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
164 #define V_TEMP "11*8+4*4*256*2+32" |
28976 | 165 #define Y_TEMP "11*8+4*4*256*2+40" |
166 #define ALP_MMX_FILTER_OFFSET "11*8+4*4*256*2+48" | |
19172
bae6c99a99cc
vertical scaler with accurate rounding, some people on doom9 can see +-1 errors
michael
parents:
19143
diff
changeset
|
167 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
168 DECLARE_ALIGNED(8, uint64_t, redDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
169 DECLARE_ALIGNED(8, uint64_t, greenDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
170 DECLARE_ALIGNED(8, uint64_t, blueDither); |
18861 | 171 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
172 DECLARE_ALIGNED(8, uint64_t, yCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
173 DECLARE_ALIGNED(8, uint64_t, vrCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
174 DECLARE_ALIGNED(8, uint64_t, ubCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
175 DECLARE_ALIGNED(8, uint64_t, vgCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
176 DECLARE_ALIGNED(8, uint64_t, ugCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
177 DECLARE_ALIGNED(8, uint64_t, yOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
178 DECLARE_ALIGNED(8, uint64_t, uOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
179 DECLARE_ALIGNED(8, uint64_t, vOffset); |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
180 int32_t lumMmxFilter[4*MAX_FILTER_SIZE]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
181 int32_t chrMmxFilter[4*MAX_FILTER_SIZE]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
182 int dstW; |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
183 DECLARE_ALIGNED(8, uint64_t, esp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
184 DECLARE_ALIGNED(8, uint64_t, vRounder); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
185 DECLARE_ALIGNED(8, uint64_t, u_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
186 DECLARE_ALIGNED(8, uint64_t, v_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
187 DECLARE_ALIGNED(8, uint64_t, y_temp); |
28976 | 188 int32_t alpMmxFilter[4*MAX_FILTER_SIZE]; |
18861 | 189 |
28276 | 190 #if HAVE_ALTIVEC |
18861 | 191 vector signed short CY; |
192 vector signed short CRV; | |
193 vector signed short CBU; | |
194 vector signed short CGU; | |
195 vector signed short CGV; | |
196 vector signed short OY; | |
197 vector unsigned short CSHIFT; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
198 vector signed short *vYCoeffsBank, *vCCoeffsBank; |
18861 | 199 #endif |
200 | |
28276 | 201 #if ARCH_BFIN |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
202 DECLARE_ALIGNED(4, uint32_t, oy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
203 DECLARE_ALIGNED(4, uint32_t, oc); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
204 DECLARE_ALIGNED(4, uint32_t, zero); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
205 DECLARE_ALIGNED(4, uint32_t, cy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
206 DECLARE_ALIGNED(4, uint32_t, crv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
207 DECLARE_ALIGNED(4, uint32_t, rmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
208 DECLARE_ALIGNED(4, uint32_t, cbu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
209 DECLARE_ALIGNED(4, uint32_t, bmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
210 DECLARE_ALIGNED(4, uint32_t, cgu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
211 DECLARE_ALIGNED(4, uint32_t, cgv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
212 DECLARE_ALIGNED(4, uint32_t, gmask); |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
213 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
214 |
28276 | 215 #if HAVE_VIS |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
216 DECLARE_ALIGNED(8, uint64_t, sparc_coeffs[10]); |
23805 | 217 #endif |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
218 |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
219 /* function pointers for swScale() */ |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
220 void (*yuv2nv12X )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
221 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
222 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
223 uint8_t *dest, uint8_t *uDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
224 int dstW, int chrDstW, int dstFormat); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
225 void (*yuv2yuv1 )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
226 const int16_t *lumSrc, const int16_t *chrSrc, const int16_t *alpSrc, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
227 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
228 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
229 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
230 void (*yuv2yuvX )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
231 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
232 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
233 const int16_t **alpSrc, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
234 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
235 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
236 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
237 void (*yuv2packed1)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
238 const uint16_t *buf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
239 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
240 const uint16_t *abuf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
241 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
242 int dstW, int uvalpha, int dstFormat, int flags, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
243 void (*yuv2packed2)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
244 const uint16_t *buf0, const uint16_t *buf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
245 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
246 const uint16_t *abuf0, const uint16_t *abuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
247 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
248 int dstW, int yalpha, int uvalpha, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
249 void (*yuv2packedX)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
250 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
251 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
252 const int16_t **alpSrc, uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
253 long dstW, long dstY); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
254 |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
255 void (*hyscale_internal)(uint8_t *dst, const uint8_t *src, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
256 long width, uint32_t *pal); |
29139
cd5d58b02153
Do not use abgrToA for both luma and alpha channel in hyscale.
sdrik
parents:
29134
diff
changeset
|
257 void (*hascale_internal)(uint8_t *dst, const uint8_t *src, |
cd5d58b02153
Do not use abgrToA for both luma and alpha channel in hyscale.
sdrik
parents:
29134
diff
changeset
|
258 long width, uint32_t *pal); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
259 void (*hcscale_internal)(uint8_t *dstU, uint8_t *dstV, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
260 const uint8_t *src1, const uint8_t *src2, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
261 long width, uint32_t *pal); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
262 void (*hyscale_fast)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
263 int16_t *dst, int dstWidth, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
264 const uint8_t *src, int srcW, int xInc); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
265 void (*hcscale_fast)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
266 int16_t *dst, int dstWidth, |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
267 const uint8_t *src1, const uint8_t *src2, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
268 int srcW, int xInc); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
269 |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
270 void (*hScale)(int16_t *dst, int dstW, const uint8_t *src, int srcW, |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
271 int xInc, const int16_t *filter, const int16_t *filterPos, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
272 long filterSize); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
273 |
18861 | 274 } SwsContext; |
275 //FIXME check init (where 0) | |
276 | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
277 SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c); |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
278 int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
279 int fullRange, int brightness, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
280 int contrast, int saturation); |
18861 | 281 |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
282 void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4], |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
283 int brightness, int contrast, int saturation); |
29028 | 284 SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c); |
285 SwsFunc ff_yuv2rgb_init_vis(SwsContext *c); | |
286 SwsFunc ff_yuv2rgb_init_mlib(SwsContext *c); | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
287 SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c); |
29028 | 288 SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c); |
29042 | 289 void ff_bfin_get_unscaled_swscale(SwsContext *c); |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
290 void ff_yuv2packedX_altivec(SwsContext *c, |
29239
882a1f5613e1
Add missing const qualifiers to AltiVec function parameters where appropriate.
diego
parents:
29214
diff
changeset
|
291 const int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, |
882a1f5613e1
Add missing const qualifiers to AltiVec function parameters where appropriate.
diego
parents:
29214
diff
changeset
|
292 const int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
293 uint8_t *dest, int dstW, int dstY); |
25291
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
294 |
29367 | 295 const char *sws_format_name(enum PixelFormat format); |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
296 |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
297 //FIXME replace this with something faster |
29174 | 298 #define is16BPS(x) ( \ |
299 (x)==PIX_FMT_GRAY16BE \ | |
300 || (x)==PIX_FMT_GRAY16LE \ | |
29275
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
301 || (x)==PIX_FMT_RGB48BE \ |
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
302 || (x)==PIX_FMT_RGB48LE \ |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
303 || (x)==PIX_FMT_YUV420PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
304 || (x)==PIX_FMT_YUV422PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
305 || (x)==PIX_FMT_YUV444PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
306 || (x)==PIX_FMT_YUV420PBE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
307 || (x)==PIX_FMT_YUV422PBE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
308 || (x)==PIX_FMT_YUV444PBE \ |
29174 | 309 ) |
29171 | 310 #define isBE(x) ((x)&1) |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
311 #define isPlanar8YUV(x) ( \ |
23278 | 312 (x)==PIX_FMT_YUV410P \ |
313 || (x)==PIX_FMT_YUV420P \ | |
28832 | 314 || (x)==PIX_FMT_YUVA420P \ |
23278 | 315 || (x)==PIX_FMT_YUV411P \ |
316 || (x)==PIX_FMT_YUV422P \ | |
317 || (x)==PIX_FMT_YUV444P \ | |
23791 | 318 || (x)==PIX_FMT_YUV440P \ |
23278 | 319 || (x)==PIX_FMT_NV12 \ |
320 || (x)==PIX_FMT_NV21 \ | |
321 ) | |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
322 #define isPlanarYUV(x) ( \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
323 isPlanar8YUV(x) \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
324 || (x)==PIX_FMT_YUV420PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
325 || (x)==PIX_FMT_YUV422PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
326 || (x)==PIX_FMT_YUV444PLE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
327 || (x)==PIX_FMT_YUV420PBE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
328 || (x)==PIX_FMT_YUV422PBE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
329 || (x)==PIX_FMT_YUV444PBE \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
330 ) |
23278 | 331 #define isYUV(x) ( \ |
332 (x)==PIX_FMT_UYVY422 \ | |
333 || (x)==PIX_FMT_YUYV422 \ | |
334 || isPlanarYUV(x) \ | |
335 ) | |
336 #define isGray(x) ( \ | |
337 (x)==PIX_FMT_GRAY8 \ | |
338 || (x)==PIX_FMT_GRAY16BE \ | |
339 || (x)==PIX_FMT_GRAY16LE \ | |
340 ) | |
341 #define isGray16(x) ( \ | |
342 (x)==PIX_FMT_GRAY16BE \ | |
343 || (x)==PIX_FMT_GRAY16LE \ | |
344 ) | |
345 #define isRGB(x) ( \ | |
29299
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
346 (x)==PIX_FMT_RGB48BE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
347 || (x)==PIX_FMT_RGB48LE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
348 || (x)==PIX_FMT_RGB32 \ |
27490 | 349 || (x)==PIX_FMT_RGB32_1 \ |
23278 | 350 || (x)==PIX_FMT_RGB24 \ |
351 || (x)==PIX_FMT_RGB565 \ | |
352 || (x)==PIX_FMT_RGB555 \ | |
353 || (x)==PIX_FMT_RGB8 \ | |
354 || (x)==PIX_FMT_RGB4 \ | |
355 || (x)==PIX_FMT_RGB4_BYTE \ | |
356 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
357 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 358 ) |
359 #define isBGR(x) ( \ | |
27488 | 360 (x)==PIX_FMT_BGR32 \ |
27490 | 361 || (x)==PIX_FMT_BGR32_1 \ |
23278 | 362 || (x)==PIX_FMT_BGR24 \ |
363 || (x)==PIX_FMT_BGR565 \ | |
364 || (x)==PIX_FMT_BGR555 \ | |
365 || (x)==PIX_FMT_BGR8 \ | |
366 || (x)==PIX_FMT_BGR4 \ | |
367 || (x)==PIX_FMT_BGR4_BYTE \ | |
368 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
369 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 370 ) |
28712
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
371 #define isALPHA(x) ( \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
372 (x)==PIX_FMT_BGR32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
373 || (x)==PIX_FMT_BGR32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
374 || (x)==PIX_FMT_RGB32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
375 || (x)==PIX_FMT_RGB32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
376 || (x)==PIX_FMT_YUVA420P \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
377 ) |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
378 |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
379 static inline int fmt_depth(int fmt) |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
380 { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
381 switch(fmt) { |
29274
9f1499cf3a68
Make SwScaler recognize RGB48 BE/LE colourspaces (not support though).
kostya
parents:
29239
diff
changeset
|
382 case PIX_FMT_RGB48BE: |
9f1499cf3a68
Make SwScaler recognize RGB48 BE/LE colourspaces (not support though).
kostya
parents:
29239
diff
changeset
|
383 case PIX_FMT_RGB48LE: |
9f1499cf3a68
Make SwScaler recognize RGB48 BE/LE colourspaces (not support though).
kostya
parents:
29239
diff
changeset
|
384 return 48; |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
385 case PIX_FMT_BGRA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
386 case PIX_FMT_ABGR: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
387 case PIX_FMT_RGBA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
388 case PIX_FMT_ARGB: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
389 return 32; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
390 case PIX_FMT_BGR24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
391 case PIX_FMT_RGB24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
392 return 24; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
393 case PIX_FMT_BGR565: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
394 case PIX_FMT_RGB565: |
20411 | 395 case PIX_FMT_GRAY16BE: |
396 case PIX_FMT_GRAY16LE: | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
397 return 16; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
398 case PIX_FMT_BGR555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
399 case PIX_FMT_RGB555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
400 return 15; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
401 case PIX_FMT_BGR8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
402 case PIX_FMT_RGB8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
403 return 8; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
404 case PIX_FMT_BGR4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
405 case PIX_FMT_RGB4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
406 case PIX_FMT_BGR4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
407 case PIX_FMT_RGB4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
408 return 4; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
409 case PIX_FMT_MONOBLACK: |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
410 case PIX_FMT_MONOWHITE: |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
411 return 1; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
412 default: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
413 return 0; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
414 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
415 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
416 |
28463
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
417 extern const uint64_t ff_dither4[2]; |
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
418 extern const uint64_t ff_dither8[2]; |
26028 | 419 |
27212
18fc658de355
Split AVOption/AVClass in a separate file. SoC Patch from Keiji Costantini
lu_zero
parents:
27158
diff
changeset
|
420 extern const AVClass sws_context_class; |
18fc658de355
Split AVOption/AVClass in a separate file. SoC Patch from Keiji Costantini
lu_zero
parents:
27158
diff
changeset
|
421 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
422 #endif /* SWSCALE_SWSCALE_INTERNAL_H */ |