Mercurial > mplayer.hg
annotate libswscale/swscale_internal.h @ 28789:a0ce88ba2557
Combine adjacent overlapping, translucent glyph borders and shadows to
avoid luminance build-up, which looks ugly.
The resulting, modified bitmaps are stored in separate bitmap cache.
author | greg |
---|---|
date | Thu, 05 Mar 2009 20:47:33 +0000 |
parents | 108abf7064d3 |
children | 9ab5447ba67a |
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 | |
26133
94cc4bac8cd0
Turn ancient V offset numerical constants into named ones.
michael
parents:
26028
diff
changeset
|
36 #define VOFW 2048 |
26177 | 37 #define VOF (VOFW*2) |
26133
94cc4bac8cd0
Turn ancient V offset numerical constants into named ones.
michael
parents:
26028
diff
changeset
|
38 |
27490 | 39 #ifdef WORDS_BIGENDIAN |
40 #define ALT32_CORR (-1) | |
41 #else | |
42 #define ALT32_CORR 1 | |
43 #endif | |
44 | |
28276 | 45 #if ARCH_X86_64 |
27513 | 46 # define APCK_PTR2 8 |
47 # define APCK_COEF 16 | |
48 # define APCK_SIZE 24 | |
49 #else | |
50 # define APCK_PTR2 4 | |
51 # define APCK_COEF 8 | |
52 # define APCK_SIZE 16 | |
53 #endif | |
54 | |
28318
6142aa6d6f38
Declare struct SwsContext before using it, fixes the checkheaders warning:
diego
parents:
28276
diff
changeset
|
55 struct SwsContext; |
6142aa6d6f38
Declare struct SwsContext before using it, fixes the checkheaders warning:
diego
parents:
28276
diff
changeset
|
56 |
18861 | 57 typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
58 int srcSliceH, uint8_t* dst[], int dstStride[]); | |
59 | |
27158 | 60 /* This struct should be aligned on at least a 32-byte boundary. */ |
18861 | 61 typedef struct SwsContext{ |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
62 /** |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
63 * info on struct for av_log |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
64 */ |
26178 | 65 const AVClass *av_class; |
21981 | 66 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
67 /** |
25457 | 68 * Note that src, dst, srcStride, dstStride will be copied in the |
69 * 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
|
70 */ |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
71 SwsFunc swScale; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
72 int srcW, srcH, dstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
73 int chrSrcW, chrSrcH, chrDstW, chrDstH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
74 int lumXInc, chrXInc; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
75 int lumYInc, chrYInc; |
27695
9cf6c7c5c7cd
Change variable types from int to enum PixelFormat.
cehoyos
parents:
27567
diff
changeset
|
76 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
|
77 int origDstFormat, origSrcFormat; ///< format |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
78 int chrSrcHSubSample, chrSrcVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
79 int chrIntHSubSample, chrIntVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
80 int chrDstHSubSample, chrDstVSubSample; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
81 int vChrDrop; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
82 int sliceDir; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
83 double param[2]; |
18861 | 84 |
27698 | 85 uint32_t pal_yuv[256]; |
86 uint32_t pal_rgb[256]; | |
87 | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
88 int16_t **lumPixBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
89 int16_t **chrPixBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
90 int16_t *hLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
91 int16_t *hLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
92 int16_t *hChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
93 int16_t *hChrFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
94 int16_t *vLumFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
95 int16_t *vLumFilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
96 int16_t *vChrFilter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
97 int16_t *vChrFilterPos; |
18861 | 98 |
27158 | 99 uint8_t formatConvBuffer[VOF]; //FIXME dynamic allocation, but we have to change a lot of code for this to be useful |
18861 | 100 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
101 int hLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
102 int hChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
103 int vLumFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
104 int vChrFilterSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
105 int vLumBufSize; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
106 int vChrBufSize; |
18861 | 107 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
108 uint8_t *funnyYCode; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
109 uint8_t *funnyUVCode; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
110 int32_t *lumMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
111 int32_t *chrMmx2FilterPos; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
112 int16_t *lumMmx2Filter; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
113 int16_t *chrMmx2Filter; |
18861 | 114 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
115 int canMMX2BeUsed; |
18861 | 116 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
117 int lastInLumBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
118 int lastInChrBuf; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
119 int lumBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
120 int chrBufIndex; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
121 int dstY; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
122 int flags; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
123 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
|
124 uint8_t * table_rV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
125 uint8_t * table_gU[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
126 int table_gV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
127 uint8_t * table_bU[256]; |
18861 | 128 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
129 //Colorspace stuff |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
130 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
|
131 int srcColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
132 int dstColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
133 int srcRange, dstRange; |
27567
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
134 int yuv2rgb_y_offset; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
135 int yuv2rgb_y_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
136 int yuv2rgb_v2r_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
137 int yuv2rgb_v2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
138 int yuv2rgb_u2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
139 int yuv2rgb_u2b_coeff; |
18861 | 140 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
141 #define RED_DITHER "0*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
142 #define GREEN_DITHER "1*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
143 #define BLUE_DITHER "2*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
144 #define Y_COEFF "3*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
145 #define VR_COEFF "4*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
146 #define UB_COEFF "5*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
147 #define VG_COEFF "6*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
148 #define UG_COEFF "7*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
149 #define Y_OFFSET "8*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
150 #define U_OFFSET "9*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
151 #define V_OFFSET "10*8" |
18861 | 152 #define LUM_MMX_FILTER_OFFSET "11*8" |
153 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" | |
27158 | 154 #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
|
155 #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
|
156 #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
|
157 #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
|
158 #define V_TEMP "11*8+4*4*256*2+32" |
19172
bae6c99a99cc
vertical scaler with accurate rounding, some people on doom9 can see +-1 errors
michael
parents:
19143
diff
changeset
|
159 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
160 uint64_t redDither __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
161 uint64_t greenDither __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
162 uint64_t blueDither __attribute__((aligned(8))); |
18861 | 163 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
164 uint64_t yCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
165 uint64_t vrCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
166 uint64_t ubCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
167 uint64_t vgCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
168 uint64_t ugCoeff __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
169 uint64_t yOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
170 uint64_t uOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
171 uint64_t vOffset __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
172 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
|
173 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
|
174 int dstW; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
175 uint64_t esp __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
176 uint64_t vRounder __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
177 uint64_t u_temp __attribute__((aligned(8))); |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
178 uint64_t v_temp __attribute__((aligned(8))); |
18861 | 179 |
28276 | 180 #if HAVE_ALTIVEC |
18861 | 181 |
182 vector signed short CY; | |
183 vector signed short CRV; | |
184 vector signed short CBU; | |
185 vector signed short CGU; | |
186 vector signed short CGV; | |
187 vector signed short OY; | |
188 vector unsigned short CSHIFT; | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
189 vector signed short *vYCoeffsBank, *vCCoeffsBank; |
18861 | 190 |
191 #endif | |
192 | |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
193 |
28276 | 194 #if ARCH_BFIN |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
195 uint32_t oy __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
196 uint32_t oc __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
197 uint32_t zero __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
198 uint32_t cy __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
199 uint32_t crv __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
200 uint32_t rmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
201 uint32_t cbu __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
202 uint32_t bmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
203 uint32_t cgu __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
204 uint32_t cgv __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
205 uint32_t gmask __attribute__((aligned(4))); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
206 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
207 |
28276 | 208 #if HAVE_VIS |
23805 | 209 uint64_t sparc_coeffs[10] __attribute__((aligned(8))); |
210 #endif | |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
211 |
18861 | 212 } SwsContext; |
213 //FIXME check init (where 0) | |
214 | |
28461 | 215 SwsFunc sws_yuv2rgb_get_func_ptr (SwsContext *c); |
216 int sws_yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation); | |
18861 | 217 |
28461 | 218 void sws_yuv2rgb_altivec_init_tables (SwsContext *c, const int inv_table[4],int brightness,int contrast, int saturation); |
219 SwsFunc sws_yuv2rgb_init_altivec (SwsContext *c); | |
25291
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
220 void altivec_yuv2packedX (SwsContext *c, |
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
221 int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, |
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
222 int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, |
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
223 uint8_t *dest, int dstW, int dstY); |
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
224 |
26151
5884743208b6
change sws_format_name to return const char*, supress many warnings
bcoudurier
parents:
26133
diff
changeset
|
225 const char *sws_format_name(int format); |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
226 |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
227 //FIXME replace this with something faster |
23278 | 228 #define isPlanarYUV(x) ( \ |
229 (x)==PIX_FMT_YUV410P \ | |
230 || (x)==PIX_FMT_YUV420P \ | |
231 || (x)==PIX_FMT_YUV411P \ | |
232 || (x)==PIX_FMT_YUV422P \ | |
233 || (x)==PIX_FMT_YUV444P \ | |
23791 | 234 || (x)==PIX_FMT_YUV440P \ |
23278 | 235 || (x)==PIX_FMT_NV12 \ |
236 || (x)==PIX_FMT_NV21 \ | |
237 ) | |
238 #define isYUV(x) ( \ | |
239 (x)==PIX_FMT_UYVY422 \ | |
240 || (x)==PIX_FMT_YUYV422 \ | |
241 || isPlanarYUV(x) \ | |
242 ) | |
243 #define isGray(x) ( \ | |
244 (x)==PIX_FMT_GRAY8 \ | |
245 || (x)==PIX_FMT_GRAY16BE \ | |
246 || (x)==PIX_FMT_GRAY16LE \ | |
247 ) | |
248 #define isGray16(x) ( \ | |
249 (x)==PIX_FMT_GRAY16BE \ | |
250 || (x)==PIX_FMT_GRAY16LE \ | |
251 ) | |
252 #define isRGB(x) ( \ | |
27488 | 253 (x)==PIX_FMT_RGB32 \ |
27490 | 254 || (x)==PIX_FMT_RGB32_1 \ |
23278 | 255 || (x)==PIX_FMT_RGB24 \ |
256 || (x)==PIX_FMT_RGB565 \ | |
257 || (x)==PIX_FMT_RGB555 \ | |
258 || (x)==PIX_FMT_RGB8 \ | |
259 || (x)==PIX_FMT_RGB4 \ | |
260 || (x)==PIX_FMT_RGB4_BYTE \ | |
261 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
262 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 263 ) |
264 #define isBGR(x) ( \ | |
27488 | 265 (x)==PIX_FMT_BGR32 \ |
27490 | 266 || (x)==PIX_FMT_BGR32_1 \ |
23278 | 267 || (x)==PIX_FMT_BGR24 \ |
268 || (x)==PIX_FMT_BGR565 \ | |
269 || (x)==PIX_FMT_BGR555 \ | |
270 || (x)==PIX_FMT_BGR8 \ | |
271 || (x)==PIX_FMT_BGR4 \ | |
272 || (x)==PIX_FMT_BGR4_BYTE \ | |
273 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
274 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 275 ) |
28712
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
276 #define isALPHA(x) ( \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
277 (x)==PIX_FMT_BGR32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
278 || (x)==PIX_FMT_BGR32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
279 || (x)==PIX_FMT_RGB32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
280 || (x)==PIX_FMT_RGB32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
281 || (x)==PIX_FMT_YUVA420P \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
282 ) |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
283 |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
284 static inline int fmt_depth(int fmt) |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
285 { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
286 switch(fmt) { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
287 case PIX_FMT_BGRA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
288 case PIX_FMT_ABGR: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
289 case PIX_FMT_RGBA: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
290 case PIX_FMT_ARGB: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
291 return 32; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
292 case PIX_FMT_BGR24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
293 case PIX_FMT_RGB24: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
294 return 24; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
295 case PIX_FMT_BGR565: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
296 case PIX_FMT_RGB565: |
20411 | 297 case PIX_FMT_GRAY16BE: |
298 case PIX_FMT_GRAY16LE: | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
299 return 16; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
300 case PIX_FMT_BGR555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
301 case PIX_FMT_RGB555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
302 return 15; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
303 case PIX_FMT_BGR8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
304 case PIX_FMT_RGB8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
305 return 8; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
306 case PIX_FMT_BGR4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
307 case PIX_FMT_RGB4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
308 case PIX_FMT_BGR4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
309 case PIX_FMT_RGB4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
310 return 4; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
311 case PIX_FMT_MONOBLACK: |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
312 case PIX_FMT_MONOWHITE: |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
313 return 1; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
314 default: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
315 return 0; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
316 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
317 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
318 |
28463
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
319 extern const uint64_t ff_dither4[2]; |
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
320 extern const uint64_t ff_dither8[2]; |
26028 | 321 |
27212
18fc658de355
Split AVOption/AVClass in a separate file. SoC Patch from Keiji Costantini
lu_zero
parents:
27158
diff
changeset
|
322 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
|
323 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
324 #endif /* SWSCALE_SWSCALE_INTERNAL_H */ |