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