Mercurial > mplayer.hg
annotate libswscale/swscale.h @ 25978:a8ff60976ccb
FLAT objects cannot have multiple sections, so using the L1 attributes breaks
linking. The FDPIC relocs also break for any other format. Thus check the
compiler environment and select the appropriate sections/relocs.
patch by Mike Frysinger, vapier.adi a gmail d com
author | diego |
---|---|
date | Sat, 16 Feb 2008 15:17:59 +0000 |
parents | fff1db0add79 |
children | 5168398f65b9 |
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 |
24772
fff1db0add79
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
23702
diff
changeset
|
21 #ifndef FFMPEG_SWSCALE_H |
fff1db0add79
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
23702
diff
changeset
|
22 #define FFMPEG_SWSCALE_H |
18861 | 23 |
24 /** | |
25 * @file swscale.h | |
23129 | 26 * @brief |
18861 | 27 * external api for the swscale stuff |
28 */ | |
29 | |
21870
cad3e015ddde
deprecate sws_scale_ordered(), as it now is a duplicate of sws_scale()
lucabe
parents:
21029
diff
changeset
|
30 #include "avutil.h" |
cad3e015ddde
deprecate sws_scale_ordered(), as it now is a duplicate of sws_scale()
lucabe
parents:
21029
diff
changeset
|
31 |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
32 #define AV_STRINGIFY(s) AV_TOSTRING(s) |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
33 #define AV_TOSTRING(s) #s |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
34 |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
35 #define LIBSWSCALE_VERSION_INT ((0<<16)+(5<<8)+0) |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
36 #define LIBSWSCALE_VERSION 0.5.0 |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
37 #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
|
38 |
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
39 #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
|
40 |
18861 | 41 /* 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
|
42 #define SWS_FAST_BILINEAR 1 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
43 #define SWS_BILINEAR 2 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
44 #define SWS_BICUBIC 4 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
45 #define SWS_X 8 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
46 #define SWS_POINT 0x10 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
47 #define SWS_AREA 0x20 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
48 #define SWS_BICUBLIN 0x40 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
49 #define SWS_GAUSS 0x80 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
50 #define SWS_SINC 0x100 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
51 #define SWS_LANCZOS 0x200 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
52 #define SWS_SPLINE 0x400 |
18861 | 53 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
54 #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
|
55 #define SWS_SRC_V_CHR_DROP_SHIFT 16 |
18861 | 56 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
57 #define SWS_PARAM_DEFAULT 123456 |
18861 | 58 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
59 #define SWS_PRINT_INFO 0x1000 |
18861 | 60 |
23536 | 61 //the following 3 flags are not completely implemented |
62 //internal chrominace subsampling info | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
63 #define SWS_FULL_CHR_H_INT 0x2000 |
18861 | 64 //input subsampling info |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
65 #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
|
66 #define SWS_DIRECT_BGR 0x8000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
67 #define SWS_ACCURATE_RND 0x40000 |
18861 | 68 |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
69 #define SWS_CPU_CAPS_MMX 0x80000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
70 #define SWS_CPU_CAPS_MMX2 0x20000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
71 #define SWS_CPU_CAPS_3DNOW 0x40000000 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
72 #define SWS_CPU_CAPS_ALTIVEC 0x10000000 |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23155
diff
changeset
|
73 #define SWS_CPU_CAPS_BFIN 0x01000000 |
18861 | 74 |
75 #define SWS_MAX_REDUCE_CUTOFF 0.002 | |
76 | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
77 #define SWS_CS_ITU709 1 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
78 #define SWS_CS_FCC 4 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
79 #define SWS_CS_ITU601 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
80 #define SWS_CS_ITU624 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
81 #define SWS_CS_SMPTE170M 5 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
82 #define SWS_CS_SMPTE240M 7 |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
83 #define SWS_CS_DEFAULT 5 |
18861 | 84 |
85 | |
86 | |
87 // when used for filters they must have an odd number of elements | |
88 // coeffs cannot be shared between vectors | |
89 typedef struct { | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
90 double *coeff; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
91 int length; |
18861 | 92 } SwsVector; |
93 | |
94 // vectors can be shared | |
95 typedef struct { | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
96 SwsVector *lumH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
97 SwsVector *lumV; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
98 SwsVector *chrH; |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
99 SwsVector *chrV; |
18861 | 100 } SwsFilter; |
101 | |
102 struct SwsContext; | |
103 | |
104 void sws_freeContext(struct SwsContext *swsContext); | |
105 | |
106 struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat, int flags, | |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
107 SwsFilter *srcFilter, SwsFilter *dstFilter, double *param); |
18861 | 108 int sws_scale(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
109 int srcSliceH, uint8_t* dst[], int dstStride[]); |
18861 | 110 int sws_scale_ordered(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
111 int srcSliceH, uint8_t* dst[], int dstStride[]) attribute_deprecated; |
18861 | 112 |
113 | |
114 int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation); | |
115 int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation); | |
116 SwsVector *sws_getGaussianVec(double variance, double quality); | |
117 SwsVector *sws_getConstVec(double c, int length); | |
118 SwsVector *sws_getIdentityVec(void); | |
119 void sws_scaleVec(SwsVector *a, double scalar); | |
120 void sws_normalizeVec(SwsVector *a, double height); | |
121 void sws_convVec(SwsVector *a, SwsVector *b); | |
122 void sws_addVec(SwsVector *a, SwsVector *b); | |
123 void sws_subVec(SwsVector *a, SwsVector *b); | |
124 void sws_shiftVec(SwsVector *a, int shift); | |
125 SwsVector *sws_cloneVec(SwsVector *a); | |
126 | |
127 void sws_printVec(SwsVector *a); | |
128 void sws_freeVec(SwsVector *a); | |
129 | |
23129 | 130 SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
131 float lumaSarpen, float chromaSharpen, |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
132 float chromaHShift, float chromaVShift, |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
133 int verbose); |
18861 | 134 void sws_freeFilter(SwsFilter *filter); |
135 | |
19661
7b24faac56fd
Add sws_getCachedContext(), which checks if context is valid or reallocs a new one instead.
gpoirier
parents:
19594
diff
changeset
|
136 struct SwsContext *sws_getCachedContext(struct SwsContext *context, |
23155
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
137 int srcW, int srcH, int srcFormat, |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
138 int dstW, int dstH, int dstFormat, int flags, |
1befc8d767cd
cosmetics attack, part II: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
139 SwsFilter *srcFilter, SwsFilter *dstFilter, double *param); |
19661
7b24faac56fd
Add sws_getCachedContext(), which checks if context is valid or reallocs a new one instead.
gpoirier
parents:
19594
diff
changeset
|
140 |
24772
fff1db0add79
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
23702
diff
changeset
|
141 #endif /* FFMPEG_SWSCALE_H */ |