annotate postproc/postprocess.h @ 3127:59ac428ae68d

Disable problematic ffmpeg.so support by default and remove die on 2.2.x and older kernel, replacing it with more in depth info. (Kernel SSE check will disable SSE, if needed!)
author atmos4
date Mon, 26 Nov 2001 00:46:44 +0000
parents 08b833fb875a
children b2e24fec97bc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
1 /*
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
2 Copyright (C) 2001 Michael Niedermayer (michaelni@gmx.at)
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
3
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
6 the Free Software Foundation; either version 2 of the License, or
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
7 (at your option) any later version.
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
8
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
12 GNU General Public License for more details.
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
13
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
15 along with this program; if not, write to the Free Software
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
17 */
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
18
2186
491d4fc9b6f2 small changes for mplayer integration:
arpi
parents: 2179
diff changeset
19 // POSTPROCESS_H is defined by opendivx's postprocess.h
491d4fc9b6f2 small changes for mplayer integration:
arpi
parents: 2179
diff changeset
20 #ifndef NEWPOSTPROCESS_H
491d4fc9b6f2 small changes for mplayer integration:
arpi
parents: 2179
diff changeset
21 #define NEWPOSTPROCESS_H
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
22
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
23 #define BLOCK_SIZE 8
2159
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
24 #define TEMP_STRIDE 8
2203
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
25 //#define NUM_BLOCKS_AT_ONCE 16 //not used yet
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
26
2159
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
27 #define V_DEBLOCK 0x01
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
28 #define H_DEBLOCK 0x02
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
29 #define DERING 0x04
2168
21a8f158d19f bugfixes: last 3 lines not brightness/contrast corrected
michael
parents: 2159
diff changeset
30 #define LEVEL_FIX 0x08 /* Brightness & Contrast */
2159
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
31
2179
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
32 #define LUM_V_DEBLOCK V_DEBLOCK // 1
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
33 #define LUM_H_DEBLOCK H_DEBLOCK // 2
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
34 #define CHROM_V_DEBLOCK (V_DEBLOCK<<4) // 16
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
35 #define CHROM_H_DEBLOCK (H_DEBLOCK<<4) // 32
2474
2e9442544447 just a few "not implemented yet" removed
michael
parents: 2389
diff changeset
36 #define LUM_DERING DERING // 4
2e9442544447 just a few "not implemented yet" removed
michael
parents: 2389
diff changeset
37 #define CHROM_DERING (DERING<<4) // 64
2179
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
38 #define LUM_LEVEL_FIX LEVEL_FIX // 8
2203
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
39 #define CHROM_LEVEL_FIX (LEVEL_FIX<<4) // 128 (not implemented yet)
2159
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
40
2179
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
41 // Experimental vertical filters
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
42 #define V_RK1_FILTER 0x0100 // 256
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
43 #define V_X1_FILTER 0x0200 // 512
2159
795f3d022657 fixed a bug in the horizontal default filter
arpi
parents: 2158
diff changeset
44
2179
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
45 // Experimental horizontal filters
2474
2e9442544447 just a few "not implemented yet" removed
michael
parents: 2389
diff changeset
46 #define H_RK1_FILTER 0x1000 // 4096
2179
2d8d14b882cc fixed a rounding bug thing in the X1 Filter
michael
parents: 2169
diff changeset
47 #define H_X1_FILTER 0x2000 // 8192
2168
21a8f158d19f bugfixes: last 3 lines not brightness/contrast corrected
michael
parents: 2159
diff changeset
48
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
49 // select between full y range (255-0) or standart one (234-16)
2285
4840e356d0d3 fixed a bug in the tmp buffer
michael
parents: 2246
diff changeset
50 #define FULL_Y_RANGE 0x8000 // 32768
4840e356d0d3 fixed a bug in the tmp buffer
michael
parents: 2246
diff changeset
51
2203
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
52 //Deinterlacing Filters
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
53 #define LINEAR_IPOL_DEINT_FILTER 0x10000 // 65536
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
54 #define LINEAR_BLEND_DEINT_FILTER 0x20000 // 131072
2246
f7c1485b33be fixed the height%8!=0 bug
michael
parents: 2221
diff changeset
55 #define CUBIC_BLEND_DEINT_FILTER 0x8000 // (not implemented yet)
f7c1485b33be fixed the height%8!=0 bug
michael
parents: 2221
diff changeset
56 #define CUBIC_IPOL_DEINT_FILTER 0x40000 // 262144
2221
9fd911c931cd minor cleanups
michael
parents: 2203
diff changeset
57 #define MEDIAN_DEINT_FILTER 0x80000 // 524288
2203
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
58
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
59 #define TEMP_NOISE_FILTER 0x100000
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
60
2203
f90b6e259dc8 rewrote the horizontal lowpass filter to fix a bug which caused a blocky look
michael
parents: 2189
diff changeset
61
2189
82556b3a1228 Cleanup:
arpi
parents: 2186
diff changeset
62 #define GET_PP_QUALITY_MAX 6
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
63
2286
58b3f908201d added compiletime option to turn width%8==0 on
michael
parents: 2285
diff changeset
64 //must be defined if stride%8 != 0
2292
d57280ca1db9 PP_FUNNY_STRIDE disabled
arpi
parents: 2286
diff changeset
65 //#define PP_FUNNY_STRIDE
2286
58b3f908201d added compiletime option to turn width%8==0 on
michael
parents: 2285
diff changeset
66
2221
9fd911c931cd minor cleanups
michael
parents: 2203
diff changeset
67 //#define TIMING
9fd911c931cd minor cleanups
michael
parents: 2203
diff changeset
68 //#define MORE_TIMING
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
69
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
70 #define QP_STORE_T int
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
71
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
72 struct PPMode{
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
73 int lumMode; //acivates filters for luminance
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
74 int chromMode; //acivates filters for chrominance
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
75 int oldMode; // will be passed to odivx
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
76 int error; // non zero on error
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
77
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
78 int minAllowedY; // for brigtness correction
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
79 int maxAllowedY; // for brihtness correction
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
80
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
81 int maxTmpNoise[3]; // for Temporal Noise Reducing filter (Maximal sum of abs differences)
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
82 };
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
83
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
84 struct PPFilter{
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
85 char *shortName;
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
86 char *longName;
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
87 int chromDefault; // is chrominance filtering on by default if this filter is manually activated
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
88 int minLumQuality; // minimum quality to turn luminance filtering on
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
89 int minChromQuality; // minimum quality to turn chrominance filtering on
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
90 int mask; // Bitmask to turn this filter on
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
91 };
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
92
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
93 /* Obsolete, dont use it, use postprocess2() instead */
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
94 void postprocess(unsigned char * src[], int src_stride,
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
95 unsigned char * dst[], int dst_stride,
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
96 int horizontal_size, int vertical_size,
2186
491d4fc9b6f2 small changes for mplayer integration:
arpi
parents: 2179
diff changeset
97 QP_STORE_T *QP_store, int QP_stride, int mode);
2189
82556b3a1228 Cleanup:
arpi
parents: 2186
diff changeset
98
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
99 void postprocess2(unsigned char * src[], int src_stride,
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
100 unsigned char * dst[], int dst_stride,
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
101 int horizontal_size, int vertical_size,
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
102 QP_STORE_T *QP_store, int QP_stride, struct PPMode *mode);
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
103
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
104
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
105 /* Obsolete, dont use it, use getPpModeByNameAndQuality() instead */
2186
491d4fc9b6f2 small changes for mplayer integration:
arpi
parents: 2179
diff changeset
106 int getPpModeForQuality(int quality);
2189
82556b3a1228 Cleanup:
arpi
parents: 2186
diff changeset
107
2860
08b833fb875a temporal noise reducer in C (-pp 0x100000)
michael
parents: 2474
diff changeset
108 // name is the stuff after "-pp" on the command line
2389
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
109 struct PPMode getPpModeByNameAndQuality(char *name, int quality);
bd3f33e7dd26 auto brightness/ contrast bugfix
michael
parents: 2292
diff changeset
110
2158
508468a75be0 new postprocess code by Michael Niedermayer (michaelni@gmx.at)
arpi
parents:
diff changeset
111 #endif