annotate postproc/swscale.h @ 16805:50fb26acbcba

processing audio is sometimes essential for a/v sync, so 1000l to whoever made rawvideo muxer disable audio!! with this patch, audio is processed but simply thrown away by the muxer. various 'error' conditions in rawvideo muxer are removed to make it work. feel free to re-add them if they can be done without breaking anything, but do not use printf !!!! btw old behavior can be obtained by manually specifying -nosound.
author rfelker
date Wed, 19 Oct 2005 05:44:27 +0000
parents 6bd869a18d2c
children 401b440a6d76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4295
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
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
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
3
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
4 This program is free software; you can redistribute it and/or modify
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
5 it under the terms of the GNU General Public License as published by
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
6 the Free Software Foundation; either version 2 of the License, or
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
7 (at your option) any later version.
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
8
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
9 This program is distributed in the hope that it will be useful,
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
12 GNU General Public License for more details.
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
13
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
14 You should have received a copy of the GNU General Public License
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
15 along with this program; if not, write to the Free Software
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
67c56df76a44 copyright(swscaler) = GPL
michael
parents: 4294
diff changeset
17 */
3272
7e4399d1eb65 horizontal up/downscale linear & cubic
michael
parents: 3209
diff changeset
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
5059143aa020 -sws 6 (luma bicubic & chroma bilinear)
michael
parents: 6578
diff changeset
39 #define SWS_BICUBLIN 0x40
6637
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
40 #define SWS_GAUSS 0x80
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
41 #define SWS_SINC 0x100
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
42 #define SWS_LANCZOS 0x200
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
43 #define SWS_SPLINE 0x400
4467
9512d6832b38 YUY2, BGR24, BGR32 input support (no mmx yet)
michael
parents: 4419
diff changeset
44
6637
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
45 #define SWS_SRC_V_CHR_DROP_MASK 0x30000
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
46 #define SWS_SRC_V_CHR_DROP_SHIFT 16
6540
5b3cace64e9d 100l (non mmx versions didnt compile)
michael
parents: 6517
diff changeset
47
13373
6bd869a18d2c passing an array or double precission parameters for the scaling function, instead of missusing a few bits of the flags
michael
parents: 12017
diff changeset
48 #define SWS_PARAM_DEFAULT 123456
6637
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
49
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
50 #define SWS_PRINT_INFO 0x1000
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
51
f47f12ba3b88 more scaling algos
michael
parents: 6580
diff changeset
52 //the following 3 flags are not completly implemented
4467
9512d6832b38 YUY2, BGR24, BGR32 input support (no mmx yet)
michael
parents: 4419
diff changeset
53 //internal chrominace subsamling info
6541
michael
parents: 6540
diff changeset
54 #define SWS_FULL_CHR_H_INT 0x2000
4467
9512d6832b38 YUY2, BGR24, BGR32 input support (no mmx yet)
michael
parents: 4419
diff changeset
55 //input subsampling info
6541
michael
parents: 6540
diff changeset
56 #define SWS_FULL_CHR_H_INP 0x4000
michael
parents: 6540
diff changeset
57 #define SWS_DIRECT_BGR 0x8000
4467
9512d6832b38 YUY2, BGR24, BGR32 input support (no mmx yet)
michael
parents: 4419
diff changeset
58
9975
3914afe5c0a7 removing sws - global verbose var dependancy
michael
parents: 9697
diff changeset
59 #define SWS_CPU_CAPS_MMX 0x80000000
3914afe5c0a7 removing sws - global verbose var dependancy
michael
parents: 9697
diff changeset
60 #define SWS_CPU_CAPS_MMX2 0x20000000
3914afe5c0a7 removing sws - global verbose var dependancy
michael
parents: 9697
diff changeset
61 #define SWS_CPU_CAPS_3DNOW 0x40000000
12017
21e5cb258a95 AltiVec support in postproc/ + altivec optimizations for yuv2yuvX patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
michael
parents: 9985
diff changeset
62 #define SWS_CPU_CAPS_ALTIVEC 0x10000000
9975
3914afe5c0a7 removing sws - global verbose var dependancy
michael
parents: 9697
diff changeset
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
0d86fe21b281 cleanup
michael
parents: 6637
diff changeset
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
fd9311c3fa42 header for swscale.c
arpi
parents:
diff changeset
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,
13373
6bd869a18d2c passing an array or double precission parameters for the scaling function, instead of missusing a few bits of the flags
michael
parents: 12017
diff changeset
96 SwsFilter *srcFilter, SwsFilter *dstFilter, double *param);
9494
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
5025150738eb 10000l (YUV vs. YVU swscale fix/cleanup)
michael
parents: 9494
diff changeset
99 int sws_scale_ordered(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY,
5025150738eb 10000l (YUV vs. YVU swscale fix/cleanup)
michael
parents: 9494
diff changeset
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