Mercurial > mplayer.hg
annotate postproc/swscale.h @ 11330:a974c00c779d
Removed temporary .cpp file used during the Matroska test. Updated the libebml and libmatroska requirements to at least v0.6.0 for both. There have been changes in the lacing code, and users WILL come and complain why mplayer, linked against older versions, will have issues playing newer files.
author | mosu |
---|---|
date | Thu, 30 Oct 2003 14:57:06 +0000 |
parents | 3d8b145a5470 |
children | 21e5cb258a95 |
rev | line source |
---|---|
4295 | 1 /* |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
2 Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at> |
4295 | 3 |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 2 of the License, or | |
7 (at your option) any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program; if not, write to the Free Software | |
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 */ | |
3272 | 18 |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
19 #ifndef SWSCALE_H |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
20 #define SWSCALE_H |
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
21 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
22 /** |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
23 * @file swscale.h |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
24 * @brief |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
25 * external api for the swscale stuff |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
26 */ |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
27 |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
28 #ifdef __cplusplus |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
29 extern "C" { |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
30 #endif |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
31 |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
32 /* values for the flags, the stuff on the command line is different */ |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
33 #define SWS_FAST_BILINEAR 1 |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
34 #define SWS_BILINEAR 2 |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
35 #define SWS_BICUBIC 4 |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
36 #define SWS_X 8 |
4401
8d00348d0d6b
nearest neighbor / sdl emulation ;) scaling (-sws 4)
michael
parents:
4297
diff
changeset
|
37 #define SWS_POINT 0x10 |
4402
67abbf501b02
area averageing scaling support (-sws 5) (is identical to bilinear for upscale)
michael
parents:
4401
diff
changeset
|
38 #define SWS_AREA 0x20 |
6580 | 39 #define SWS_BICUBLIN 0x40 |
6637 | 40 #define SWS_GAUSS 0x80 |
41 #define SWS_SINC 0x100 | |
42 #define SWS_LANCZOS 0x200 | |
43 #define SWS_SPLINE 0x400 | |
4467 | 44 |
6637 | 45 #define SWS_SRC_V_CHR_DROP_MASK 0x30000 |
46 #define SWS_SRC_V_CHR_DROP_SHIFT 16 | |
6540 | 47 |
6637 | 48 #define SWS_PARAM_MASK 0x3FC0000 |
49 #define SWS_PARAM_SHIFT 18 | |
50 | |
51 #define SWS_PRINT_INFO 0x1000 | |
52 | |
53 //the following 3 flags are not completly implemented | |
4467 | 54 //internal chrominace subsamling info |
6541 | 55 #define SWS_FULL_CHR_H_INT 0x2000 |
4467 | 56 //input subsampling info |
6541 | 57 #define SWS_FULL_CHR_H_INP 0x4000 |
58 #define SWS_DIRECT_BGR 0x8000 | |
4467 | 59 |
9975 | 60 #define SWS_CPU_CAPS_MMX 0x80000000 |
61 #define SWS_CPU_CAPS_MMX2 0x20000000 | |
62 #define SWS_CPU_CAPS_3DNOW 0x40000000 | |
63 | |
4290
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
64 #define SWS_MAX_REDUCE_CUTOFF 0.002 |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
65 |
9416
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
66 #define SWS_CS_ITU709 1 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
67 #define SWS_CS_FCC 4 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
68 #define SWS_CS_ITU601 5 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
69 #define SWS_CS_ITU624 5 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
70 #define SWS_CS_SMPTE170M 5 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
71 #define SWS_CS_SMPTE240M 7 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
72 #define SWS_CS_DEFAULT 5 |
83fe90af3e16
brightness / saturation / contrast / different yuv colorspace support for some yuv2rgb converters (many converters still ignore it)
michael
parents:
9414
diff
changeset
|
73 |
9413 | 74 |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
75 |
4290
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
76 // when used for filters they must have an odd number of elements |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
77 // coeffs cannot be shared between vectors |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
78 typedef struct { |
4290
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
79 double *coeff; |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
80 int length; |
4290
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
81 } SwsVector; |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
82 |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
83 // vectors can be shared |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
84 typedef struct { |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
85 SwsVector *lumH; |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
86 SwsVector *lumV; |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
87 SwsVector *chrH; |
1f8ceb12284d
general convolution filtering of the source picture
michael
parents:
4276
diff
changeset
|
88 SwsVector *chrV; |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
89 } SwsFilter; |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
90 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
91 struct SwsContext; |
2217 | 92 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
93 void sws_freeContext(struct SwsContext *swsContext); |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
94 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
95 struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat, int flags, |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
96 SwsFilter *srcFilter, SwsFilter *dstFilter); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
97 int sws_scale(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
98 int srcSliceH, uint8_t* dst[], int dstStride[]); |
9697 | 99 int sws_scale_ordered(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY, |
100 int srcSliceH, uint8_t* dst[], int dstStride[]); | |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
101 |
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
102 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
103 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); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
104 int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
105 SwsVector *sws_getGaussianVec(double variance, double quality); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
106 SwsVector *sws_getConstVec(double c, int length); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
107 SwsVector *sws_getIdentityVec(void); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
108 void sws_scaleVec(SwsVector *a, double scalar); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
109 void sws_normalizeVec(SwsVector *a, double height); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
110 void sws_convVec(SwsVector *a, SwsVector *b); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
111 void sws_addVec(SwsVector *a, SwsVector *b); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
112 void sws_subVec(SwsVector *a, SwsVector *b); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
113 void sws_shiftVec(SwsVector *a, int shift); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
114 SwsVector *sws_cloneVec(SwsVector *a); |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
115 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
116 void sws_printVec(SwsVector *a); |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
117 void sws_freeVec(SwsVector *a); |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
118 |
9985
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
119 SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, |
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
120 float lumaSarpen, float chromaSharpen, |
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
121 float chromaHShift, float chromaVShift, |
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
122 int verbose); |
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
123 void sws_freeFilter(SwsFilter *filter); |
3d8b145a5470
moving getFilter stuff back (vf_scale.c -> swscale.c)
michael
parents:
9975
diff
changeset
|
124 |
9494
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
125 #ifdef __cplusplus |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
126 } |
543ab3909b78
sws_ prefix, more seperation between internal & external swscaler API
michael
parents:
9476
diff
changeset
|
127 #endif |
4276
9199d15cb4e0
removed global vars so that multiple swscalers can be used
michael
parents:
3344
diff
changeset
|
128 |
9476
eff727517e6b
yuv2rgb brightness/contrast/saturation/different colorspaces support finished
michael
parents:
9416
diff
changeset
|
129 #endif |