annotate libswscale/swscale.h @ 25317:7f3cb5408f28

Fixed VIDIX color bug that was introduced when Radeon VIDIX driver was synchronized with vidix.sf.net. The red color was saturating. Corrected value fixes the issue and restore the color to the level it used to have before synchronization. Meaning of the value remains unknow but was retrieved from register's value of a Radeon 9000 card, so it may need further testing. Patch by Guillaume Lecerf (foxcore at gmail dot com)
author ben
date Mon, 10 Dec 2007 19:27:46 +0000
parents fff1db0add79
children 5168398f65b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
5159b5f8784e license header consistency cosmetics
diego
parents: 23536
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
23
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
24 /**
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
25 * @file swscale.h
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21870
diff changeset
26 * @brief
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
27 * external api for the swscale stuff
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
28 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
60
23536
ab4c0bba8f22 misc spelling fixes
diego
parents: 23304
diff changeset
61 //the following 3 flags are not completely implemented
ab4c0bba8f22 misc spelling fixes
diego
parents: 23304
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
74
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
75 #define SWS_MAX_REDUCE_CUTOFF 0.002
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
84
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
85
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
86
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
87 // when used for filters they must have an odd number of elements
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
88 // coeffs cannot be shared between vectors
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
92 } SwsVector;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
93
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
94 // vectors can be shared
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
100 } SwsFilter;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
101
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
102 struct SwsContext;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
103
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
104 void sws_freeContext(struct SwsContext *swsContext);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
105
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
112
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
113
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
115 int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
116 SwsVector *sws_getGaussianVec(double variance, double quality);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
117 SwsVector *sws_getConstVec(double c, int length);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
118 SwsVector *sws_getIdentityVec(void);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
119 void sws_scaleVec(SwsVector *a, double scalar);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
120 void sws_normalizeVec(SwsVector *a, double height);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
121 void sws_convVec(SwsVector *a, SwsVector *b);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
122 void sws_addVec(SwsVector *a, SwsVector *b);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
123 void sws_subVec(SwsVector *a, SwsVector *b);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
124 void sws_shiftVec(SwsVector *a, int shift);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
125 SwsVector *sws_cloneVec(SwsVector *a);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
126
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
127 void sws_printVec(SwsVector *a);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
128 void sws_freeVec(SwsVector *a);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
129
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21870
diff changeset
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
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
134 void sws_freeFilter(SwsFilter *filter);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
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 */