Mercurial > mplayer.hg
annotate libswscale/swscale_internal.h @ 30353:3c131287a33e
Reindent.
author | reimar |
---|---|
date | Sat, 23 Jan 2010 10:54:03 +0000 |
parents | 4d50825554ee |
children | 8c479cb29c7a |
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 |
30264
1032ff2e83f1
Const correctness for src pointer. Remove all constness related warnings in
zuxy
parents:
30056
diff
changeset
|
62 typedef int (*SwsFunc)(struct SwsContext *context, const uint8_t* src[], |
29134
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; |
30286 | 78 int srcW; ///< Width of source luma/alpha planes. |
79 int srcH; ///< Height of source luma/alpha planes. | |
80 int dstH; ///< Height of destination luma/alpha planes. | |
81 int chrSrcW; ///< Width of source chroma planes. | |
82 int chrSrcH; ///< Height of source chroma planes. | |
83 int chrDstW; ///< Width of destination chroma planes. | |
84 int chrDstH; ///< Height of destination chroma planes. | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
85 int lumXInc, chrXInc; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
86 int lumYInc, chrYInc; |
30286 | 87 enum PixelFormat dstFormat; ///< Destination pixel format. |
88 enum PixelFormat srcFormat; ///< Source pixel format. | |
30338 | 89 int chrSrcHSubSample; ///< Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in source image. |
90 int chrSrcVSubSample; ///< Binary logarithm of vertical subsampling factor between luma/alpha and chroma planes in source image. | |
91 int chrDstHSubSample; ///< Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in destination image. | |
92 int chrDstVSubSample; ///< Binary logarithm of vertical subsampling factor between luma/alpha and chroma planes in destination image. | |
93 int vChrDrop; ///< Binary logarithm of extra vertical subsampling factor in source image chroma planes specified by user. | |
94 int sliceDir; ///< Direction that slices are fed to the scaler (1 = top-to-bottom, -1 = bottom-to-top). | |
30286 | 95 double param[2]; ///< Input parameters for scaling algorithms that need them. |
18861 | 96 |
27698 | 97 uint32_t pal_yuv[256]; |
98 uint32_t pal_rgb[256]; | |
99 | |
30338 | 100 /** |
101 * @name Scaled horizontal lines ring buffer. | |
102 * The horizontal scaler keeps just enough scaled lines in a ring buffer | |
103 * so they may be passed to the vertical scaler. The pointers to the | |
104 * allocated buffers for each line are duplicated in sequence in the ring | |
105 * buffer to simplify indexing and avoid wrapping around between lines | |
106 * inside the vertical scaler code. The wrapping is done before the | |
107 * vertical scaler is called. | |
108 */ | |
109 //@{ | |
110 int16_t **lumPixBuf; ///< Ring buffer for scaled horizontal luma plane lines to be fed to the vertical scaler. | |
111 int16_t **chrPixBuf; ///< Ring buffer for scaled horizontal chroma plane lines to be fed to the vertical scaler. | |
112 int16_t **alpPixBuf; ///< Ring buffer for scaled horizontal alpha plane lines to be fed to the vertical scaler. | |
113 int vLumBufSize; ///< Number of vertical luma/alpha lines allocated in the ring buffer. | |
114 int vChrBufSize; ///< Number of vertical chroma lines allocated in the ring buffer. | |
115 int lastInLumBuf; ///< Last scaled horizontal luma/alpha line from source in the ring buffer. | |
116 int lastInChrBuf; ///< Last scaled horizontal chroma line from source in the ring buffer. | |
117 int lumBufIndex; ///< Index in ring buffer of the last scaled horizontal luma/alpha line from source. | |
118 int chrBufIndex; ///< Index in ring buffer of the last scaled horizontal chroma line from source. | |
119 //@} | |
18861 | 120 |
27158 | 121 uint8_t formatConvBuffer[VOF]; //FIXME dynamic allocation, but we have to change a lot of code for this to be useful |
18861 | 122 |
30338 | 123 /** |
124 * @name Horizontal and vertical filters. | |
125 * To better understand the following fields, here is a pseudo-code of | |
126 * their usage in filtering a horizontal line: | |
127 * @code | |
128 * for (i = 0; i < width; i++) { | |
129 * dst[i] = 0; | |
130 * for (j = 0; j < filterSize; j++) | |
131 * dst[i] += src[ filterPos[i] + j ] * filter[ filterSize * i + j ]; | |
132 * dst[i] >>= FRAC_BITS; // The actual implementation is fixed-point. | |
133 * } | |
134 * @endcode | |
135 */ | |
136 //@{ | |
137 int16_t *hLumFilter; ///< Array of horizontal filter coefficients for luma/alpha planes. | |
138 int16_t *hChrFilter; ///< Array of horizontal filter coefficients for chroma planes. | |
139 int16_t *vLumFilter; ///< Array of vertical filter coefficients for luma/alpha planes. | |
140 int16_t *vChrFilter; ///< Array of vertical filter coefficients for chroma planes. | |
141 int16_t *hLumFilterPos; ///< Array of horizontal filter starting positions for each dst[i] for luma/alpha planes. | |
142 int16_t *hChrFilterPos; ///< Array of horizontal filter starting positions for each dst[i] for chroma planes. | |
143 int16_t *vLumFilterPos; ///< Array of vertical filter starting positions for each dst[i] for luma/alpha planes. | |
144 int16_t *vChrFilterPos; ///< Array of vertical filter starting positions for each dst[i] for chroma planes. | |
145 int hLumFilterSize; ///< Horizontal filter size for luma/alpha pixels. | |
146 int hChrFilterSize; ///< Horizontal filter size for chroma pixels. | |
147 int vLumFilterSize; ///< Vertical filter size for luma/alpha pixels. | |
148 int vChrFilterSize; ///< Vertical filter size for chroma pixels. | |
149 //@} | |
18861 | 150 |
30286 | 151 int lumMmx2FilterCodeSize; ///< Runtime-generated MMX2 horizontal fast bilinear scaler code size for luma/alpha planes. |
152 int chrMmx2FilterCodeSize; ///< Runtime-generated MMX2 horizontal fast bilinear scaler code size for chroma planes. | |
153 uint8_t *lumMmx2FilterCode; ///< Runtime-generated MMX2 horizontal fast bilinear scaler code for luma/alpha planes. | |
154 uint8_t *chrMmx2FilterCode; ///< Runtime-generated MMX2 horizontal fast bilinear scaler code for chroma planes. | |
18861 | 155 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
156 int canMMX2BeUsed; |
18861 | 157 |
30286 | 158 int dstY; ///< Last destination vertical line output from last slice. |
159 int flags; ///< Flags passed by the user to select scaler algorithm, optimizations, subsampling, etc... | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
160 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
|
161 uint8_t * table_rV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
162 uint8_t * table_gU[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
163 int table_gV[256]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
164 uint8_t * table_bU[256]; |
18861 | 165 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
166 //Colorspace stuff |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
167 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
|
168 int srcColorspaceTable[4]; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
169 int dstColorspaceTable[4]; |
30286 | 170 int srcRange; ///< 0 = MPG YUV range, 1 = JPG YUV range (source image). |
171 int dstRange; ///< 0 = MPG YUV range, 1 = JPG YUV range (destination image). | |
27567
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
172 int yuv2rgb_y_offset; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
173 int yuv2rgb_y_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
174 int yuv2rgb_v2r_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
175 int yuv2rgb_v2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
176 int yuv2rgb_u2g_coeff; |
203ac2c7f613
Rename yuv2rgb variables to avoid name clashes with the ones used by bfin asm.
michael
parents:
27554
diff
changeset
|
177 int yuv2rgb_u2b_coeff; |
18861 | 178 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
179 #define RED_DITHER "0*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
180 #define GREEN_DITHER "1*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
181 #define BLUE_DITHER "2*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
182 #define Y_COEFF "3*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
183 #define VR_COEFF "4*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
184 #define UB_COEFF "5*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
185 #define VG_COEFF "6*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
186 #define UG_COEFF "7*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
187 #define Y_OFFSET "8*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
188 #define U_OFFSET "9*8" |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
22914
diff
changeset
|
189 #define V_OFFSET "10*8" |
18861 | 190 #define LUM_MMX_FILTER_OFFSET "11*8" |
191 #define CHR_MMX_FILTER_OFFSET "11*8+4*4*256" | |
27158 | 192 #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
|
193 #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
|
194 #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
|
195 #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
|
196 #define V_TEMP "11*8+4*4*256*2+32" |
28976 | 197 #define Y_TEMP "11*8+4*4*256*2+40" |
198 #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
|
199 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
200 DECLARE_ALIGNED(8, uint64_t, redDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
201 DECLARE_ALIGNED(8, uint64_t, greenDither); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
202 DECLARE_ALIGNED(8, uint64_t, blueDither); |
18861 | 203 |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
204 DECLARE_ALIGNED(8, uint64_t, yCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
205 DECLARE_ALIGNED(8, uint64_t, vrCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
206 DECLARE_ALIGNED(8, uint64_t, ubCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
207 DECLARE_ALIGNED(8, uint64_t, vgCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
208 DECLARE_ALIGNED(8, uint64_t, ugCoeff); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
209 DECLARE_ALIGNED(8, uint64_t, yOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
210 DECLARE_ALIGNED(8, uint64_t, uOffset); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
211 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
|
212 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
|
213 int32_t chrMmxFilter[4*MAX_FILTER_SIZE]; |
30338 | 214 int dstW; ///< Width of destination luma/alpha planes. |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
215 DECLARE_ALIGNED(8, uint64_t, esp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
216 DECLARE_ALIGNED(8, uint64_t, vRounder); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
217 DECLARE_ALIGNED(8, uint64_t, u_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
218 DECLARE_ALIGNED(8, uint64_t, v_temp); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
219 DECLARE_ALIGNED(8, uint64_t, y_temp); |
28976 | 220 int32_t alpMmxFilter[4*MAX_FILTER_SIZE]; |
18861 | 221 |
28276 | 222 #if HAVE_ALTIVEC |
30045 | 223 vector signed short CY; |
224 vector signed short CRV; | |
225 vector signed short CBU; | |
226 vector signed short CGU; | |
227 vector signed short CGV; | |
228 vector signed short OY; | |
229 vector unsigned short CSHIFT; | |
230 vector signed short *vYCoeffsBank, *vCCoeffsBank; | |
18861 | 231 #endif |
232 | |
28276 | 233 #if ARCH_BFIN |
29306
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
234 DECLARE_ALIGNED(4, uint32_t, oy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
235 DECLARE_ALIGNED(4, uint32_t, oc); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
236 DECLARE_ALIGNED(4, uint32_t, zero); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
237 DECLARE_ALIGNED(4, uint32_t, cy); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
238 DECLARE_ALIGNED(4, uint32_t, crv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
239 DECLARE_ALIGNED(4, uint32_t, rmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
240 DECLARE_ALIGNED(4, uint32_t, cbu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
241 DECLARE_ALIGNED(4, uint32_t, bmask); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
242 DECLARE_ALIGNED(4, uint32_t, cgu); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
243 DECLARE_ALIGNED(4, uint32_t, cgv); |
116ed5c6c367
Use DECLARE_ALIGNED macro instead of gcc __attribute__.
ramiro
parents:
29299
diff
changeset
|
244 DECLARE_ALIGNED(4, uint32_t, gmask); |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
245 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
246 |
28276 | 247 #if HAVE_VIS |
30343
4d50825554ee
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
30338
diff
changeset
|
248 DECLARE_ALIGNED(8, uint64_t, sparc_coeffs)[10]; |
23805 | 249 #endif |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23278
diff
changeset
|
250 |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
251 /* function pointers for swScale() */ |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
252 void (*yuv2nv12X )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
253 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
254 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
255 uint8_t *dest, uint8_t *uDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
256 int dstW, int chrDstW, int dstFormat); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
257 void (*yuv2yuv1 )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
258 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
|
259 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
260 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
261 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
262 void (*yuv2yuvX )(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
263 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
264 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
265 const int16_t **alpSrc, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
266 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
267 uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
268 long dstW, long chrDstW); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
269 void (*yuv2packed1)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
270 const uint16_t *buf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
271 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
272 const uint16_t *abuf0, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
273 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
274 int dstW, int uvalpha, int dstFormat, int flags, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
275 void (*yuv2packed2)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
276 const uint16_t *buf0, const uint16_t *buf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
277 const uint16_t *uvbuf0, const uint16_t *uvbuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
278 const uint16_t *abuf0, const uint16_t *abuf1, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
279 uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
280 int dstW, int yalpha, int uvalpha, int y); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
281 void (*yuv2packedX)(struct SwsContext *c, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
282 const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
283 const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
284 const int16_t **alpSrc, uint8_t *dest, |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
285 long dstW, long dstY); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
286 |
30055
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
287 void (*lumToYV12)(uint8_t *dst, const uint8_t *src, |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
288 long width, uint32_t *pal); ///< Unscaled conversion of luma plane to YV12 for horizontal scaler. |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
289 void (*alpToYV12)(uint8_t *dst, const uint8_t *src, |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
290 long width, uint32_t *pal); ///< Unscaled conversion of alpha plane to YV12 for horizontal scaler. |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
291 void (*chrToYV12)(uint8_t *dstU, uint8_t *dstV, |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
292 const uint8_t *src1, const uint8_t *src2, |
4c712237a601
Rename function pointers used to convert from the input pixel format to the
ramiro
parents:
30054
diff
changeset
|
293 long width, uint32_t *pal); ///< Unscaled conversion of chroma planes to YV12 for horizontal scaler. |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
294 void (*hyscale_fast)(struct SwsContext *c, |
30056
ec5ad3da76a9
Move fast bilinear scaler code to the existing h[yc]scale_fast() functions.
ramiro
parents:
30055
diff
changeset
|
295 int16_t *dst, long dstWidth, |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
296 const uint8_t *src, int srcW, int xInc); |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
297 void (*hcscale_fast)(struct SwsContext *c, |
30056
ec5ad3da76a9
Move fast bilinear scaler code to the existing h[yc]scale_fast() functions.
ramiro
parents:
30055
diff
changeset
|
298 int16_t *dst, long dstWidth, |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
299 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
|
300 int srcW, int xInc); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
301 |
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
302 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
|
303 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
|
304 long filterSize); |
29105
9502a8895e77
swscale: Use function pointers for swScale functions.
ramiro
parents:
29042
diff
changeset
|
305 |
30040
79adcc3e4e83
Set horizontal scaler's range conversion in context in sws_init_swScale().
ramiro
parents:
30039
diff
changeset
|
306 void (*lumConvertRange)(uint16_t *dst, int width); ///< Color range conversion function for luma plane if needed. |
79adcc3e4e83
Set horizontal scaler's range conversion in context in sws_init_swScale().
ramiro
parents:
30039
diff
changeset
|
307 void (*chrConvertRange)(uint16_t *dst, int width); ///< Color range conversion function for chroma planes if needed. |
79adcc3e4e83
Set horizontal scaler's range conversion in context in sws_init_swScale().
ramiro
parents:
30039
diff
changeset
|
308 |
30039
3b0026eb9c4d
Set horizontal scaler's src offsets in context in sws_init_swScale().
ramiro
parents:
29608
diff
changeset
|
309 int lumSrcOffset; ///< Offset given to luma src pointers passed to horizontal input functions. |
3b0026eb9c4d
Set horizontal scaler's src offsets in context in sws_init_swScale().
ramiro
parents:
29608
diff
changeset
|
310 int chrSrcOffset; ///< Offset given to chroma src pointers passed to horizontal input functions. |
3b0026eb9c4d
Set horizontal scaler's src offsets in context in sws_init_swScale().
ramiro
parents:
29608
diff
changeset
|
311 int alpSrcOffset; ///< Offset given to alpha src pointers passed to horizontal input functions. |
3b0026eb9c4d
Set horizontal scaler's src offsets in context in sws_init_swScale().
ramiro
parents:
29608
diff
changeset
|
312 |
30054
67e244d32f1c
Check if chroma horizontal scaler is needed in sws_init_swScale().
ramiro
parents:
30053
diff
changeset
|
313 int needs_hcscale; ///< Set if there are chroma planes to be converted. |
67e244d32f1c
Check if chroma horizontal scaler is needed in sws_init_swScale().
ramiro
parents:
30053
diff
changeset
|
314 |
18861 | 315 } SwsContext; |
316 //FIXME check init (where 0) | |
317 | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
318 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
|
319 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
|
320 int fullRange, int brightness, |
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
321 int contrast, int saturation); |
18861 | 322 |
29134
ede1c13e8865
whitespace cosmetics: Reindent a few lines and break a few excessively long lines.
diego
parents:
29105
diff
changeset
|
323 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
|
324 int brightness, int contrast, int saturation); |
29028 | 325 SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c); |
326 SwsFunc ff_yuv2rgb_init_vis(SwsContext *c); | |
327 SwsFunc ff_yuv2rgb_init_mlib(SwsContext *c); | |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
328 SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c); |
29028 | 329 SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c); |
29042 | 330 void ff_bfin_get_unscaled_swscale(SwsContext *c); |
28953
1e56ea9937ce
Consistently use ff_ prefixes for internal symbols.
diego
parents:
28832
diff
changeset
|
331 void ff_yuv2packedX_altivec(SwsContext *c, |
29239
882a1f5613e1
Add missing const qualifiers to AltiVec function parameters where appropriate.
diego
parents:
29214
diff
changeset
|
332 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
|
333 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
|
334 uint8_t *dest, int dstW, int dstY); |
25291
c48b33da31d3
Add missing declarations for AltiVec functions, fixes the warnings:
diego
parents:
25288
diff
changeset
|
335 |
29367 | 336 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
|
337 |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
338 //FIXME replace this with something faster |
29174 | 339 #define is16BPS(x) ( \ |
340 (x)==PIX_FMT_GRAY16BE \ | |
341 || (x)==PIX_FMT_GRAY16LE \ | |
29275
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
342 || (x)==PIX_FMT_RGB48BE \ |
bc48593c663e
Let SwScaler know that RGB48 BE/LE is 16-bits per component format.
kostya
parents:
29274
diff
changeset
|
343 || (x)==PIX_FMT_RGB48LE \ |
29608
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
344 || (x)==PIX_FMT_YUV420P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
345 || (x)==PIX_FMT_YUV422P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
346 || (x)==PIX_FMT_YUV444P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
347 || (x)==PIX_FMT_YUV420P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
348 || (x)==PIX_FMT_YUV422P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
349 || (x)==PIX_FMT_YUV444P16BE \ |
29174 | 350 ) |
29171 | 351 #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
|
352 #define isPlanar8YUV(x) ( \ |
23278 | 353 (x)==PIX_FMT_YUV410P \ |
354 || (x)==PIX_FMT_YUV420P \ | |
28832 | 355 || (x)==PIX_FMT_YUVA420P \ |
23278 | 356 || (x)==PIX_FMT_YUV411P \ |
357 || (x)==PIX_FMT_YUV422P \ | |
358 || (x)==PIX_FMT_YUV444P \ | |
23791 | 359 || (x)==PIX_FMT_YUV440P \ |
23278 | 360 || (x)==PIX_FMT_NV12 \ |
361 || (x)==PIX_FMT_NV21 \ | |
362 ) | |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
363 #define isPlanarYUV(x) ( \ |
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
364 isPlanar8YUV(x) \ |
29608
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
365 || (x)==PIX_FMT_YUV420P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
366 || (x)==PIX_FMT_YUV422P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
367 || (x)==PIX_FMT_YUV444P16LE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
368 || (x)==PIX_FMT_YUV420P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
369 || (x)==PIX_FMT_YUV422P16BE \ |
ff34398b14b1
Make 16bit YUV formats compatible with NE avcodec_get_pix_fmt().
ramiro
parents:
29482
diff
changeset
|
370 || (x)==PIX_FMT_YUV444P16BE \ |
29176
d18426e37f13
Planar 16bit 420 422 444 YUV support (output is only supported in some
michael
parents:
29174
diff
changeset
|
371 ) |
23278 | 372 #define isYUV(x) ( \ |
373 (x)==PIX_FMT_UYVY422 \ | |
374 || (x)==PIX_FMT_YUYV422 \ | |
375 || isPlanarYUV(x) \ | |
376 ) | |
377 #define isGray(x) ( \ | |
378 (x)==PIX_FMT_GRAY8 \ | |
379 || (x)==PIX_FMT_GRAY16BE \ | |
380 || (x)==PIX_FMT_GRAY16LE \ | |
381 ) | |
382 #define isGray16(x) ( \ | |
383 (x)==PIX_FMT_GRAY16BE \ | |
384 || (x)==PIX_FMT_GRAY16LE \ | |
385 ) | |
386 #define isRGB(x) ( \ | |
29299
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
387 (x)==PIX_FMT_RGB48BE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
388 || (x)==PIX_FMT_RGB48LE \ |
24954ec81529
Partial (low bits ignored, no direct transcoding into other RGB formats) support
kostya
parents:
29275
diff
changeset
|
389 || (x)==PIX_FMT_RGB32 \ |
27490 | 390 || (x)==PIX_FMT_RGB32_1 \ |
23278 | 391 || (x)==PIX_FMT_RGB24 \ |
392 || (x)==PIX_FMT_RGB565 \ | |
393 || (x)==PIX_FMT_RGB555 \ | |
394 || (x)==PIX_FMT_RGB8 \ | |
395 || (x)==PIX_FMT_RGB4 \ | |
396 || (x)==PIX_FMT_RGB4_BYTE \ | |
397 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
398 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 399 ) |
400 #define isBGR(x) ( \ | |
27488 | 401 (x)==PIX_FMT_BGR32 \ |
27490 | 402 || (x)==PIX_FMT_BGR32_1 \ |
23278 | 403 || (x)==PIX_FMT_BGR24 \ |
404 || (x)==PIX_FMT_BGR565 \ | |
405 || (x)==PIX_FMT_BGR555 \ | |
406 || (x)==PIX_FMT_BGR8 \ | |
407 || (x)==PIX_FMT_BGR4 \ | |
408 || (x)==PIX_FMT_BGR4_BYTE \ | |
409 || (x)==PIX_FMT_MONOBLACK \ | |
27554
021a1889cc26
Add support for PIX_FMT_MONOWHITE as output format.
michael
parents:
27551
diff
changeset
|
410 || (x)==PIX_FMT_MONOWHITE \ |
23278 | 411 ) |
28712
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
412 #define isALPHA(x) ( \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
413 (x)==PIX_FMT_BGR32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
414 || (x)==PIX_FMT_BGR32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
415 || (x)==PIX_FMT_RGB32 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
416 || (x)==PIX_FMT_RGB32_1 \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
417 || (x)==PIX_FMT_YUVA420P \ |
108abf7064d3
Add an isALPHA macro to check if pixel format has alpha channel
sdrik
parents:
28463
diff
changeset
|
418 ) |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
419 |
30291
6719a8bcc039
Prefer enum PixelFormat to int as the parameter type of
stefano
parents:
30286
diff
changeset
|
420 static inline int fmt_depth(enum PixelFormat fmt) |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
421 { |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
422 switch(fmt) { |
29482 | 423 case PIX_FMT_RGB48BE: |
424 case PIX_FMT_RGB48LE: | |
425 return 48; | |
426 case PIX_FMT_BGRA: | |
427 case PIX_FMT_ABGR: | |
428 case PIX_FMT_RGBA: | |
429 case PIX_FMT_ARGB: | |
430 return 32; | |
431 case PIX_FMT_BGR24: | |
432 case PIX_FMT_RGB24: | |
433 return 24; | |
434 case PIX_FMT_BGR565: | |
435 case PIX_FMT_RGB565: | |
436 case PIX_FMT_GRAY16BE: | |
437 case PIX_FMT_GRAY16LE: | |
438 return 16; | |
439 case PIX_FMT_BGR555: | |
440 case PIX_FMT_RGB555: | |
441 return 15; | |
442 case PIX_FMT_BGR8: | |
443 case PIX_FMT_RGB8: | |
444 return 8; | |
445 case PIX_FMT_BGR4: | |
446 case PIX_FMT_RGB4: | |
447 case PIX_FMT_BGR4_BYTE: | |
448 case PIX_FMT_RGB4_BYTE: | |
449 return 4; | |
450 case PIX_FMT_MONOBLACK: | |
451 case PIX_FMT_MONOWHITE: | |
452 return 1; | |
453 default: | |
454 return 0; | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
455 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
456 } |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19594
diff
changeset
|
457 |
28463
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
458 extern const uint64_t ff_dither4[2]; |
4f01aa9c448f
Drop DECLARE_ALIGNED from extern declarations. It creates trouble when
diego
parents:
28461
diff
changeset
|
459 extern const uint64_t ff_dither8[2]; |
26028 | 460 |
27212
18fc658de355
Split AVOption/AVClass in a separate file. SoC Patch from Keiji Costantini
lu_zero
parents:
27158
diff
changeset
|
461 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
|
462 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27212
diff
changeset
|
463 #endif /* SWSCALE_SWSCALE_INTERNAL_H */ |