Mercurial > mplayer.hg
annotate libswscale/swscale_internal.h @ 29834:ab492a250f35
Delete "auto-close" from configuration whose support has long been removed.
author | zuxy |
---|---|
date | Tue, 10 Nov 2009 11:51:22 +0000 |
parents | ff34398b14b1 |
children | 3b0026eb9c4d |
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. */ |
29481 | 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 |
29468
947a942221c4
MMX2 horizontal scaler: Determine code size at runtime.
ramiro
parents:
29465
diff
changeset
|
114 int lumMmx2FilterCodeSize; |
947a942221c4
MMX2 horizontal scaler: Determine code size at runtime.
ramiro
parents:
29465
diff
changeset
|
115 int chrMmx2FilterCodeSize; |
29465 | 116 uint8_t *lumMmx2FilterCode; |
117 uint8_t *chrMmx2FilterCode; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
118 int32_t *lumMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
119 int32_t *chrMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
120 int16_t *lumMmx2Filter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
121 int16_t *chrMmx2Filter; |
18861 | 122 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
123 int canMMX2BeUsed; |
18861 | 124 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
125 int lastInLumBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
126 int lastInChrBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
127 int lumBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
128 int chrBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
129 int dstY; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
130 int flags; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
131 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
|
132 uint8_t * table_rV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
133 uint8_t * table_gU[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
134 int table_gV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
135 uint8_t * table_bU[256]; |
18861 | 136 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
137 //Colorspace stuff |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
138 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
|
139 int srcColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
140 int dstColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
141 int srcRange, dstRange; |
27567
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
142 int yuv2rgb_y_offset; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
143 int yuv2rgb_y_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
144 int yuv2rgb_v2r_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
145 int yuv2rgb_v2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
146 int yuv2rgb_u2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
147 int yuv2rgb_u2b_coeff; |
18861 | 148 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
149 #define RED_DITHER "0*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
150 #define GREEN_DITHER "1*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
151 #define BLUE_DITHER "2*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
152 #define Y_COEFF "3*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
153 #define VR_COEFF "4*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
154 #define UB_COEFF "5*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
155 #define VG_COEFF "6*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
156 #define UG_COEFF "7*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
157 #define Y_OFFSET "8*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
158 #define U_OFFSET "9*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
159 #define V_OFFSET "10*8" |
18861 | 160 #define LUM_MMX_FILTER_OFFSET "11*8" |
161 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" | |
27158 | 162 #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
|
163 #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
|
164 #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
|
165 #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
|
166 #define V_TEMP "11*8+4*4*256*2+32" |
28976 | 167 #define Y_TEMP "11*8+4*4*256*2+40" |
168 #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
|
169 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
170 DECLARE_ALIGNED(8, uint64_t, redDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
171 DECLARE_ALIGNED(8, uint64_t, greenDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
172 DECLARE_ALIGNED(8, uint64_t, blueDither); |
18861 | 173 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
174 DECLARE_ALIGNED(8, uint64_t, yCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
175 DECLARE_ALIGNED(8, uint64_t, vrCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
176 DECLARE_ALIGNED(8, uint64_t, ubCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
177 DECLARE_ALIGNED(8, uint64_t, vgCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
178 DECLARE_ALIGNED(8, uint64_t, ugCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
179 DECLARE_ALIGNED(8, uint64_t, yOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
180 DECLARE_ALIGNED(8, uint64_t, uOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
181 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
|
182 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
|
183 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
|
184 int dstW; |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
185 DECLARE_ALIGNED(8, uint64_t, esp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
186 DECLARE_ALIGNED(8, uint64_t, vRounder); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
187 DECLARE_ALIGNED(8, uint64_t, u_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
188 DECLARE_ALIGNED(8, uint64_t, v_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
189 DECLARE_ALIGNED(8, uint64_t, y_temp); |
28976 | 190 int32_t alpMmxFilter[4*MAX_FILTER_SIZE]; |
18861 | 191 |
28276 | 192 #if HAVE_ALTIVEC |
18861 | 193 vector signed short CY; |
194 vector signed short CRV; | |
195 vector signed short CBU; | |
196 vector signed short CGU; | |
197 vector signed short CGV; | |
198 vector signed short OY; | |
199 vector unsigned short CSHIFT; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
200 vector signed short *vYCoeffsBank, *vCCoeffsBank; |
18861 | 201 #endif |
202 | |
28276 | 203 #if ARCH_BFIN |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
204 DECLARE_ALIGNED(4, uint32_t, oy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
205 DECLARE_ALIGNED(4, uint32_t, oc); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
206 DECLARE_ALIGNED(4, uint32_t, zero); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
207 DECLARE_ALIGNED(4, uint32_t, cy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
208 DECLARE_ALIGNED(4, uint32_t, crv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
209 DECLARE_ALIGNED(4, uint32_t, rmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
210 DECLARE_ALIGNED(4, uint32_t, cbu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
211 DECLARE_ALIGNED(4, uint32_t, bmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
212 DECLARE_ALIGNED(4, uint32_t, cgu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
213 DECLARE_ALIGNED(4, uint32_t, cgv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
214 DECLARE_ALIGNED(4, uint32_t, gmask); |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
215 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
216 |
28276 | 217 #if HAVE_VIS |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
218 DECLARE_ALIGNED(8, uint64_t, sparc_coeffs[10]); |
23805 | 219 #endif |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
220 |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
221 /* function pointers for swScale() */ |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
222 void (*yuv2nv12X )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
223 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
224 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
225 uint8_t *dest, uint8_t *uDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
226 int dstW, int chrDstW, int dstFormat); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
227 void (*yuv2yuv1 )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
228 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
|
229 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
230 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
231 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
232 void (*yuv2yuvX )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
233 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
234 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
235 const int16_t **alpSrc, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
236 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
237 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
238 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
239 void (*yuv2packed1)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
240 const uint16_t *buf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
241 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
242 const uint16_t *abuf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
243 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
244 int dstW, int uvalpha, int dstFormat, int flags, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
245 void (*yuv2packed2)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
246 const uint16_t *buf0, const uint16_t *buf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
247 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
248 const uint16_t *abuf0, const uint16_t *abuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
249 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
250 int dstW, int yalpha, int uvalpha, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
251 void (*yuv2packedX)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
252 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
253 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
254 const int16_t **alpSrc, uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
255 long dstW, long dstY); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
256 |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
257 void (*hyscale_internal)(uint8_t *dst, const uint8_t *src, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
258 long width, uint32_t *pal); |
29139
cd5d58b02153
Do not use abgrToA for both luma and alpha channel in hyscale.
sdrik
parents:
29134
diff
changeset
|
259 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
|
260 long width, uint32_t *pal); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
261 void (*hcscale_internal)(uint8_t *dstU, uint8_t *dstV, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
262 const uint8_t *src1, const uint8_t *src2, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
263 long width, uint32_t *pal); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
264 void (*hyscale_fast)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
265 int16_t *dst, int dstWidth, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
266 const uint8_t *src, int srcW, int xInc); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
267 void (*hcscale_fast)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
268 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
|
269 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
|
270 int srcW, int xInc); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
271 |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
272 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
|
273 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
|
274 long filterSize); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
275 |
18861 | 276 } SwsContext; |
277 //FIXME check init (where 0) | |
278 | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
279 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
|
280 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
|
281 int fullRange, int brightness, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
282 int contrast, int saturation); |
18861 | 283 |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
284 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
|
285 int brightness, int contrast, int saturation); |
29028 | 286 SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c); |
287 SwsFunc ff_yuv2rgb_init_vis(SwsContext *c); | |
288 SwsFunc ff_yuv2rgb_init_mlib(SwsContext *c); | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
289 SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c); |
29028 | 290 SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c); |
29042 | 291 void ff_bfin_get_unscaled_swscale(SwsContext *c); |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
292 void ff_yuv2packedX_altivec(SwsContext *c, |
29239
882a1f5613e1
Add missing const qualifiers to AltiVec function parameters where appropriate.
diego
parents:
29214
diff
changeset
|
293 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
|
294 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
|
295 uint8_t *dest, int dstW, int dstY); |
25291
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
296 |
29367 | 297 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
|
298 |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
299 //FIXME replace this with something faster |
29174 | 300 #define is16BPS(x) ( \ |
301 (x)==PIX_FMT_GRAY16BE \ | |
302 || (x)==PIX_FMT_GRAY16LE \ | |
29275
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
303 || (x)==PIX_FMT_RGB48BE \ |
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
304 || (x)==PIX_FMT_RGB48LE \ |
29608
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
305 || (x)==PIX_FMT_YUV420P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
306 || (x)==PIX_FMT_YUV422P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
307 || (x)==PIX_FMT_YUV444P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
308 || (x)==PIX_FMT_YUV420P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
309 || (x)==PIX_FMT_YUV422P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
310 || (x)==PIX_FMT_YUV444P16BE \ |
29174 | 311 ) |
29171 | 312 #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
|
313 #define isPlanar8YUV(x) ( \ |
23278 | 314 (x)==PIX_FMT_YUV410P \ |
315 || (x)==PIX_FMT_YUV420P \ | |
28832 | 316 || (x)==PIX_FMT_YUVA420P \ |
23278 | 317 || (x)==PIX_FMT_YUV411P \ |
318 || (x)==PIX_FMT_YUV422P \ | |
319 || (x)==PIX_FMT_YUV444P \ | |
23791 | 320 || (x)==PIX_FMT_YUV440P \ |
23278 | 321 || (x)==PIX_FMT_NV12 \ |
322 || (x)==PIX_FMT_NV21 \ | |
323 ) | |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
324 #define isPlanarYUV(x) ( \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
325 isPlanar8YUV(x) \ |
29608
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
326 || (x)==PIX_FMT_YUV420P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
327 || (x)==PIX_FMT_YUV422P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
328 || (x)==PIX_FMT_YUV444P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
329 || (x)==PIX_FMT_YUV420P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
330 || (x)==PIX_FMT_YUV422P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
331 || (x)==PIX_FMT_YUV444P16BE \ |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
332 ) |
23278 | 333 #define isYUV(x) ( \ |
334 (x)==PIX_FMT_UYVY422 \ | |
335 || (x)==PIX_FMT_YUYV422 \ | |
336 || isPlanarYUV(x) \ | |
337 ) | |
338 #define isGray(x) ( \ | |
339 (x)==PIX_FMT_GRAY8 \ | |
340 || (x)==PIX_FMT_GRAY16BE \ | |
341 || (x)==PIX_FMT_GRAY16LE \ | |
342 ) | |
343 #define isGray16(x) ( \ | |
344 (x)==PIX_FMT_GRAY16BE \ | |
345 || (x)==PIX_FMT_GRAY16LE \ | |
346 ) | |
347 #define isRGB(x) ( \ | |
29299
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
348 (x)==PIX_FMT_RGB48BE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
349 || (x)==PIX_FMT_RGB48LE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
350 || (x)==PIX_FMT_RGB32 \ |
27490 | 351 || (x)==PIX_FMT_RGB32_1 \ |
23278 | 352 || (x)==PIX_FMT_RGB24 \ |
353 || (x)==PIX_FMT_RGB565 \ | |
354 || (x)==PIX_FMT_RGB555 \ | |
355 || (x)==PIX_FMT_RGB8 \ | |
356 || (x)==PIX_FMT_RGB4 \ | |
357 || (x)==PIX_FMT_RGB4_BYTE \ | |
358 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
359 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 360 ) |
361 #define isBGR(x) ( \ | |
27488 | 362 (x)==PIX_FMT_BGR32 \ |
27490 | 363 || (x)==PIX_FMT_BGR32_1 \ |
23278 | 364 || (x)==PIX_FMT_BGR24 \ |
365 || (x)==PIX_FMT_BGR565 \ | |
366 || (x)==PIX_FMT_BGR555 \ | |
367 || (x)==PIX_FMT_BGR8 \ | |
368 || (x)==PIX_FMT_BGR4 \ | |
369 || (x)==PIX_FMT_BGR4_BYTE \ | |
370 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
371 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 372 ) |
28712
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
373 #define isALPHA(x) ( \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
374 (x)==PIX_FMT_BGR32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
375 || (x)==PIX_FMT_BGR32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
376 || (x)==PIX_FMT_RGB32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
377 || (x)==PIX_FMT_RGB32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
378 || (x)==PIX_FMT_YUVA420P \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
379 ) |
19872
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 static inline int fmt_depth(int fmt) |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
382 { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
383 switch(fmt) { |
29482 | 384 case PIX_FMT_RGB48BE: |
385 case PIX_FMT_RGB48LE: | |
386 return 48; | |
387 case PIX_FMT_BGRA: | |
388 case PIX_FMT_ABGR: | |
389 case PIX_FMT_RGBA: | |
390 case PIX_FMT_ARGB: | |
391 return 32; | |
392 case PIX_FMT_BGR24: | |
393 case PIX_FMT_RGB24: | |
394 return 24; | |
395 case PIX_FMT_BGR565: | |
396 case PIX_FMT_RGB565: | |
397 case PIX_FMT_GRAY16BE: | |
398 case PIX_FMT_GRAY16LE: | |
399 return 16; | |
400 case PIX_FMT_BGR555: | |
401 case PIX_FMT_RGB555: | |
402 return 15; | |
403 case PIX_FMT_BGR8: | |
404 case PIX_FMT_RGB8: | |
405 return 8; | |
406 case PIX_FMT_BGR4: | |
407 case PIX_FMT_RGB4: | |
408 case PIX_FMT_BGR4_BYTE: | |
409 case PIX_FMT_RGB4_BYTE: | |
410 return 4; | |
411 case PIX_FMT_MONOBLACK: | |
412 case PIX_FMT_MONOWHITE: | |
413 return 1; | |
414 default: | |
415 return 0; | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
416 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
417 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
418 |
28463
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
419 extern const uint64_t ff_dither4[2]; |
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
420 extern const uint64_t ff_dither8[2]; |
26028 | 421 |
27212
18fc658de355
Split AVOption/AVClass in a separate file. SoC Patch from Keiji Costantini
lu_zero
parents:
27158
diff
changeset
|
422 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
|
423 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
424 #endif /* SWSCALE_SWSCALE_INTERNAL_H */ |