Mercurial > mplayer.hg
annotate libswscale/swscale.h @ 32282:606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
instead of requireing being passed through function parameters. This also
makes sws work with AVOptions.
author | michael |
---|---|
date | Sun, 26 Sep 2010 19:33:57 +0000 |
parents | 2aa88c36f9fc |
children | d491698b1162 |
rev | line source |
---|---|
18861 | 1 /* |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19661
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:
19661
diff
changeset
|
3 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19661
diff
changeset
|
4 * This file is part of FFmpeg. |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19661
diff
changeset
|
5 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20094
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:
20094
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:
20094
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:
20094
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:
19661
diff
changeset
|
10 * |
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19661
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:
19661
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:
20094
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:
20094
diff
changeset
|
14 * Lesser General Public License for more details. |
20094
aca9e9783f67
Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents:
19661
diff
changeset
|
15 * |
21029
1f2ba24b4e47
Clarify that some of the non-SIMD code is now LGPLed.
lucabe
parents:
20094
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:
20094
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:
19661
diff
changeset
|
19 */ |
18861 | 20 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27460
diff
changeset
|
21 #ifndef SWSCALE_SWSCALE_H |
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27460
diff
changeset
|
22 #define SWSCALE_SWSCALE_H |
18861 | 23 |
24 /** | |
31008
23af929986ec
Remove explicit filename from Doxygen @file commands.
diego
parents:
30477
diff
changeset
|
25 * @file |
23129 | 26 * @brief |
18861 | 27 * external api for the swscale stuff |
28 */ | |
29 | |
26065 | 30 #include "libavutil/avutil.h" |
21870
cad3e015ddde
deprecate sws_scale_ordered(), as it now is a duplicate of sws_scale()
lucabe
parents:
21029
diff
changeset
|
31 |
26073 | 32 #define LIBSWSCALE_VERSION_MAJOR 0 |
31235
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
33 #define LIBSWSCALE_VERSION_MINOR 11 |
30194
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
34 #define LIBSWSCALE_VERSION_MICRO 0 |
26002 | 35 |
26073 | 36 #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ |
37 LIBSWSCALE_VERSION_MINOR, \ | |
38 LIBSWSCALE_VERSION_MICRO) | |
39 #define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \ | |
40 LIBSWSCALE_VERSION_MINOR, \ | |
41 LIBSWSCALE_VERSION_MICRO) | |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
42 #define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
43 |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
44 #define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION) |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
45 |
27460 | 46 /** |
31781 | 47 * Returns the LIBSWSCALE_VERSION_INT constant. |
27460 | 48 */ |
49 unsigned swscale_version(void); | |
50 | |
29890
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
51 /** |
31781 | 52 * Returns the libswscale build-time configuration. |
29890
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
53 */ |
30138 | 54 const char *swscale_configuration(void); |
29890
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
55 |
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
56 /** |
31781 | 57 * Returns the libswscale license. |
29890
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
58 */ |
30138 | 59 const char *swscale_license(void); |
29890
e8e1f8cc7c5b
Add functions to return library license and library configuration.
diego
parents:
29802
diff
changeset
|
60 |
18861 | 61 /* values for the flags, the stuff on the command line is different */ |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
62 #define SWS_FAST_BILINEAR 1 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
63 #define SWS_BILINEAR 2 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
64 #define SWS_BICUBIC 4 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
65 #define SWS_X 8 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
66 #define SWS_POINT 0x10 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
67 #define SWS_AREA 0x20 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
68 #define SWS_BICUBLIN 0x40 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
69 #define SWS_GAUSS 0x80 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
70 #define SWS_SINC 0x100 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
71 #define SWS_LANCZOS 0x200 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
72 #define SWS_SPLINE 0x400 |
18861 | 73 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
74 #define SWS_SRC_V_CHR_DROP_MASK 0x30000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
75 #define SWS_SRC_V_CHR_DROP_SHIFT 16 |
18861 | 76 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
77 #define SWS_PARAM_DEFAULT 123456 |
18861 | 78 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
79 #define SWS_PRINT_INFO 0x1000 |
18861 | 80 |
23536 | 81 //the following 3 flags are not completely implemented |
82 //internal chrominace subsampling info | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
83 #define SWS_FULL_CHR_H_INT 0x2000 |
18861 | 84 //input subsampling info |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
85 #define SWS_FULL_CHR_H_INP 0x4000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
86 #define SWS_DIRECT_BGR 0x8000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
87 #define SWS_ACCURATE_RND 0x40000 |
27560 | 88 #define SWS_BITEXACT 0x80000 |
18861 | 89 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
90 #define SWS_CPU_CAPS_MMX 0x80000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
91 #define SWS_CPU_CAPS_MMX2 0x20000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
92 #define SWS_CPU_CAPS_3DNOW 0x40000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
93 #define SWS_CPU_CAPS_ALTIVEC 0x10000000 |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23155
diff
changeset
|
94 #define SWS_CPU_CAPS_BFIN 0x01000000 |
31984 | 95 #define SWS_CPU_CAPS_SSE2 0x02000000 |
18861 | 96 |
97 #define SWS_MAX_REDUCE_CUTOFF 0.002 | |
98 | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
99 #define SWS_CS_ITU709 1 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
100 #define SWS_CS_FCC 4 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
101 #define SWS_CS_ITU601 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
102 #define SWS_CS_ITU624 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
103 #define SWS_CS_SMPTE170M 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
104 #define SWS_CS_SMPTE240M 7 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
105 #define SWS_CS_DEFAULT 5 |
18861 | 106 |
30471
ef00ce26e9b5
Add function to translate SWS_CS_* to coefficient array
conrad
parents:
30339
diff
changeset
|
107 /** |
31781 | 108 * Returns a pointer to yuv<->rgb coefficients for the given colorspace |
30477 | 109 * suitable for sws_setColorspaceDetails(). |
110 * | |
111 * @param colorspace One of the SWS_CS_* macros. If invalid, | |
112 * SWS_CS_DEFAULT is used. | |
30471
ef00ce26e9b5
Add function to translate SWS_CS_* to coefficient array
conrad
parents:
30339
diff
changeset
|
113 */ |
30476 | 114 const int *sws_getCoefficients(int colorspace); |
18861 | 115 |
116 | |
117 // when used for filters they must have an odd number of elements | |
118 // coeffs cannot be shared between vectors | |
119 typedef struct { | |
28477 | 120 double *coeff; ///< pointer to the list of coefficients |
121 int length; ///< number of coefficients in the vector | |
18861 | 122 } SwsVector; |
123 | |
124 // vectors can be shared | |
125 typedef struct { | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
126 SwsVector *lumH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
127 SwsVector *lumV; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
128 SwsVector *chrH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
129 SwsVector *chrV; |
18861 | 130 } SwsFilter; |
131 | |
132 struct SwsContext; | |
133 | |
29802 | 134 /** |
31781 | 135 * Returns a positive value if pix_fmt is a supported input format, 0 |
30194
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
136 * otherwise. |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
137 */ |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
138 int sws_isSupportedInput(enum PixelFormat pix_fmt); |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
139 |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
140 /** |
31781 | 141 * Returns a positive value if pix_fmt is a supported output format, 0 |
30194
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
142 * otherwise. |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
143 */ |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
144 int sws_isSupportedOutput(enum PixelFormat pix_fmt); |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
145 |
bd9db1814611
Implement sws_isSupportedInput() and sws_isSupportedOutput().
stefano
parents:
30138
diff
changeset
|
146 /** |
32282
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
147 * Alloctaes an empty SwsContext, this must be filled and passed to sws_init_context(). |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
148 * For filling see AVOptions, options.c and sws_setColorspaceDetails(). |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
149 */ |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
150 struct SwsContext *sws_alloc_context(void); |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
151 |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
152 /** |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
153 * Initializs the swscaler context sws_context. |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
154 */ |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
155 int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter); |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
156 |
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
157 /** |
31781 | 158 * Frees the swscaler context swsContext. |
159 * If swsContext is NULL, then does nothing. | |
29802 | 160 */ |
18861 | 161 void sws_freeContext(struct SwsContext *swsContext); |
162 | |
28500 | 163 /** |
31781 | 164 * Allocates and returns a SwsContext. You need it to perform |
28500 | 165 * scaling/conversion operations using sws_scale(). |
166 * | |
167 * @param srcW the width of the source image | |
168 * @param srcH the height of the source image | |
169 * @param srcFormat the source image format | |
170 * @param dstW the width of the destination image | |
171 * @param dstH the height of the destination image | |
172 * @param dstFormat the destination image format | |
173 * @param flags specify which algorithm and options to use for rescaling | |
174 * @return a pointer to an allocated context, or NULL in case of error | |
32282
606e4157cd4c
Split alloc and init of context so that parameters can be set in the context
michael
parents:
31984
diff
changeset
|
175 * @deprecated use sws_alloc_context() and sws_init_context() |
28500 | 176 */ |
29140
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
177 struct SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
178 int dstW, int dstH, enum PixelFormat dstFormat, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
179 int flags, SwsFilter *srcFilter, |
29246
8861e08033eb
Add const qualifier to param argument of sws_getContext() and
diego
parents:
29145
diff
changeset
|
180 SwsFilter *dstFilter, const double *param); |
28619 | 181 |
182 /** | |
31781 | 183 * Scales the image slice in srcSlice and puts the resulting scaled |
29309
037740689e99
Remove '\p' doxygen markup, as it should improve plain text doxy
stefano
parents:
29246
diff
changeset
|
184 * slice in the image in dst. A slice is a sequence of consecutive |
29762
bb26e1db5c90
Document slice ordering assumption done by sws_scale().
stefano
parents:
29623
diff
changeset
|
185 * rows in an image. |
bb26e1db5c90
Document slice ordering assumption done by sws_scale().
stefano
parents:
29623
diff
changeset
|
186 * |
bb26e1db5c90
Document slice ordering assumption done by sws_scale().
stefano
parents:
29623
diff
changeset
|
187 * Slices have to be provided in sequential order, either in |
bb26e1db5c90
Document slice ordering assumption done by sws_scale().
stefano
parents:
29623
diff
changeset
|
188 * top-bottom or bottom-top order. If slices are provided in |
bb26e1db5c90
Document slice ordering assumption done by sws_scale().
stefano
parents:
29623
diff
changeset
|
189 * non-sequential order the behavior of the function is undefined. |
28619 | 190 * |
191 * @param context the scaling context previously created with | |
192 * sws_getContext() | |
28620
77f2575e2a91
Rename the "src" parameter in the sws_scale() declaration to
stefano
parents:
28619
diff
changeset
|
193 * @param srcSlice the array containing the pointers to the planes of |
28619 | 194 * the source slice |
195 * @param srcStride the array containing the strides for each plane of | |
196 * the source image | |
197 * @param srcSliceY the position in the source image of the slice to | |
198 * process, that is the number (counted starting from | |
199 * zero) in the image of the first row of the slice | |
200 * @param srcSliceH the height of the source slice, that is the number | |
201 * of rows in the slice | |
202 * @param dst the array containing the pointers to the planes of | |
203 * the destination image | |
204 * @param dstStride the array containing the strides for each plane of | |
205 * the destination image | |
206 * @return the height of the output slice | |
207 */ | |
30339 | 208 int sws_scale(struct SwsContext *context, const uint8_t* const srcSlice[], const int srcStride[], |
209 int srcSliceY, int srcSliceH, uint8_t* const dst[], const int dstStride[]); | |
31135
5a55c39743d1
Add empty newline to separate function declarations, for better
stefano
parents:
31008
diff
changeset
|
210 |
28457
7d49f24cc18f
Drop the deprecated sws_scale_ordered() at the next major version
stefano
parents:
28456
diff
changeset
|
211 #if LIBSWSCALE_VERSION_MAJOR < 1 |
28486
423d3751bfd2
Add a @deprecated notice to swscale_get_ordered().
stefano
parents:
28477
diff
changeset
|
212 /** |
423d3751bfd2
Add a @deprecated notice to swscale_get_ordered().
stefano
parents:
28477
diff
changeset
|
213 * @deprecated Use sws_scale() instead. |
423d3751bfd2
Add a @deprecated notice to swscale_get_ordered().
stefano
parents:
28477
diff
changeset
|
214 */ |
30332
b4c3e12c9a08
Make const prototypes for input sources of sws_scale_* stricter.
benoit
parents:
30264
diff
changeset
|
215 int sws_scale_ordered(struct SwsContext *context, const uint8_t* const src[], |
29140
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
216 int srcStride[], int srcSliceY, int srcSliceH, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
217 uint8_t* dst[], int dstStride[]) attribute_deprecated; |
28457
7d49f24cc18f
Drop the deprecated sws_scale_ordered() at the next major version
stefano
parents:
28456
diff
changeset
|
218 #endif |
18861 | 219 |
29145
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
220 /** |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
221 * @param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
222 * @param fullRange if 1 then the luma range is 0..255 if 0 it is 16..235 |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
223 * @return -1 if not supported |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
224 */ |
29140
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
225 int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
226 int srcRange, const int table[4], int dstRange, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
227 int brightness, int contrast, int saturation); |
29145
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
228 |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
229 /** |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
230 * @return -1 if not supported |
af07ee7cae9c
Move sws_[gs]etColorspaceDetails() documentation from swscale.c to
stefano
parents:
29140
diff
changeset
|
231 */ |
29140
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
232 int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
233 int *srcRange, int **table, int *dstRange, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
234 int *brightness, int *contrast, int *saturation); |
28493
95cfbbaa4f03
Move sws_getGaussianVec() documentation from swscale.c to swscale.h.
stefano
parents:
28492
diff
changeset
|
235 |
95cfbbaa4f03
Move sws_getGaussianVec() documentation from swscale.c to swscale.h.
stefano
parents:
28492
diff
changeset
|
236 /** |
29494 | 237 * Allocates and returns an uninitialized vector with length coefficients. |
238 */ | |
239 SwsVector *sws_allocVec(int length); | |
240 | |
241 /** | |
31781 | 242 * Returns a normalized Gaussian curve used to filter stuff |
28493
95cfbbaa4f03
Move sws_getGaussianVec() documentation from swscale.c to swscale.h.
stefano
parents:
28492
diff
changeset
|
243 * quality=3 is high quality, lower is lower quality. |
95cfbbaa4f03
Move sws_getGaussianVec() documentation from swscale.c to swscale.h.
stefano
parents:
28492
diff
changeset
|
244 */ |
18861 | 245 SwsVector *sws_getGaussianVec(double variance, double quality); |
28489 | 246 |
247 /** | |
31781 | 248 * Allocates and returns a vector with length coefficients, all |
29309
037740689e99
Remove '\p' doxygen markup, as it should improve plain text doxy
stefano
parents:
29246
diff
changeset
|
249 * with the same value c. |
28489 | 250 */ |
18861 | 251 SwsVector *sws_getConstVec(double c, int length); |
28498 | 252 |
253 /** | |
31781 | 254 * Allocates and returns a vector with just one coefficient, with |
28498 | 255 * value 1.0. |
256 */ | |
18861 | 257 SwsVector *sws_getIdentityVec(void); |
28490 | 258 |
259 /** | |
31781 | 260 * Scales all the coefficients of a by the scalar value. |
28490 | 261 */ |
18861 | 262 void sws_scaleVec(SwsVector *a, double scalar); |
28530 | 263 |
264 /** | |
31781 | 265 * Scales all the coefficients of a so that their sum equals height. |
28530 | 266 */ |
18861 | 267 void sws_normalizeVec(SwsVector *a, double height); |
268 void sws_convVec(SwsVector *a, SwsVector *b); | |
269 void sws_addVec(SwsVector *a, SwsVector *b); | |
270 void sws_subVec(SwsVector *a, SwsVector *b); | |
271 void sws_shiftVec(SwsVector *a, int shift); | |
28492 | 272 |
273 /** | |
31781 | 274 * Allocates and returns a clone of the vector a, that is a vector |
29309
037740689e99
Remove '\p' doxygen markup, as it should improve plain text doxy
stefano
parents:
29246
diff
changeset
|
275 * with the same coefficients as a. |
28492 | 276 */ |
18861 | 277 SwsVector *sws_cloneVec(SwsVector *a); |
278 | |
28531
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
279 #if LIBSWSCALE_VERSION_MAJOR < 1 |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
280 /** |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
281 * @deprecated Use sws_printVec2() instead. |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
282 */ |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
283 attribute_deprecated void sws_printVec(SwsVector *a); |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
284 #endif |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
285 |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
286 /** |
31781 | 287 * Prints with av_log() a textual representation of the vector a |
29309
037740689e99
Remove '\p' doxygen markup, as it should improve plain text doxy
stefano
parents:
29246
diff
changeset
|
288 * if log_level <= av_log_level. |
28531
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
289 */ |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
290 void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level); |
a14b65e14dc9
Implement sws_printVec2() and deprecate sws_printVec().
stefano
parents:
28530
diff
changeset
|
291 |
18861 | 292 void sws_freeVec(SwsVector *a); |
293 | |
23129 | 294 SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, |
28455 | 295 float lumaSharpen, float chromaSharpen, |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
296 float chromaHShift, float chromaVShift, |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
297 int verbose); |
18861 | 298 void sws_freeFilter(SwsFilter *filter); |
299 | |
28488
01afb64ccf4a
Move documentation of sws_getCachedContext() from swscale.c to
stefano
parents:
28486
diff
changeset
|
300 /** |
31781 | 301 * Checks if context can be reused, otherwise reallocates a new |
28502
514300a59359
Apply misc fixes for sws_getCachedContext() documentation.
stefano
parents:
28501
diff
changeset
|
302 * one. |
28488
01afb64ccf4a
Move documentation of sws_getCachedContext() from swscale.c to
stefano
parents:
28486
diff
changeset
|
303 * |
31781 | 304 * If context is NULL, just calls sws_getContext() to get a new |
305 * context. Otherwise, checks if the parameters are the ones already | |
306 * saved in context. If that is the case, returns the current | |
307 * context. Otherwise, frees context and gets a new context with | |
28502
514300a59359
Apply misc fixes for sws_getCachedContext() documentation.
stefano
parents:
28501
diff
changeset
|
308 * the new parameters. |
514300a59359
Apply misc fixes for sws_getCachedContext() documentation.
stefano
parents:
28501
diff
changeset
|
309 * |
29309
037740689e99
Remove '\p' doxygen markup, as it should improve plain text doxy
stefano
parents:
29246
diff
changeset
|
310 * Be warned that srcFilter and dstFilter are not checked, they |
28502
514300a59359
Apply misc fixes for sws_getCachedContext() documentation.
stefano
parents:
28501
diff
changeset
|
311 * are assumed to remain the same. |
28488
01afb64ccf4a
Move documentation of sws_getCachedContext() from swscale.c to
stefano
parents:
28486
diff
changeset
|
312 */ |
19661
7b24faac56fd
Add sws_getCachedContext(), which checks if context is valid or reallocs a new one instead.
gpoirier
parents:
19594
diff
changeset
|
313 struct SwsContext *sws_getCachedContext(struct SwsContext *context, |
28456
2402abd3a2d5
Replace int type with enum PixelFormat for the dstFormat/srcFormat
stefano
parents:
28455
diff
changeset
|
314 int srcW, int srcH, enum PixelFormat srcFormat, |
29140
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
315 int dstW, int dstH, enum PixelFormat dstFormat, |
b322381cf5e1
whitespace cosmetics: Break some overly long lines.
diego
parents:
28665
diff
changeset
|
316 int flags, SwsFilter *srcFilter, |
29246
8861e08033eb
Add const qualifier to param argument of sws_getContext() and
diego
parents:
29145
diff
changeset
|
317 SwsFilter *dstFilter, const double *param); |
19661
7b24faac56fd
Add sws_getCachedContext(), which checks if context is valid or reallocs a new one instead.
gpoirier
parents:
19594
diff
changeset
|
318 |
31235
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
319 /** |
31781 | 320 * Converts an 8bit paletted frame into a frame with a color depth of 32-bits. |
31235
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
321 * |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
322 * The output frame will have the same packed format as the palette. |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
323 * |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
324 * @param src source frame buffer |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
325 * @param dst destination frame buffer |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
326 * @param num_pixels number of pixels to convert |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
327 * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
328 */ |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
329 void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
330 |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
331 /** |
31781 | 332 * Converts an 8bit paletted frame into a frame with a color depth of 24 bits. |
31235
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
333 * |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
334 * With the palette format "ABCD", the destination frame ends up with the format "ABC". |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
335 * |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
336 * @param src source frame buffer |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
337 * @param dst destination frame buffer |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
338 * @param num_pixels number of pixels to convert |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
339 * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
340 */ |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
341 void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
342 |
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31135
diff
changeset
|
343 |
27467
239a049163eb
Change header inclusion guard names in line with FFmpeg r15120.
stefano
parents:
27460
diff
changeset
|
344 #endif /* SWSCALE_SWSCALE_H */ |