Mercurial > libpostproc.hg
comparison postprocess_internal.h @ 95:c24dab9bca80 libpostproc
cosmetics: Fix indentation to be 4 spaces and consistently place {}.
author | diego |
---|---|
date | Sat, 22 Mar 2008 15:46:34 +0000 |
parents | 13e4f6ebb206 |
children | e565483b1193 |
comparison
equal
deleted
inserted
replaced
94:094413c45b0f | 95:c24dab9bca80 |
---|---|
53 | 53 |
54 /// select between full y range (255-0) or standart one (234-16) | 54 /// select between full y range (255-0) or standart one (234-16) |
55 #define FULL_Y_RANGE 0x8000 // 32768 | 55 #define FULL_Y_RANGE 0x8000 // 32768 |
56 | 56 |
57 //Deinterlacing Filters | 57 //Deinterlacing Filters |
58 #define LINEAR_IPOL_DEINT_FILTER 0x10000 // 65536 | 58 #define LINEAR_IPOL_DEINT_FILTER 0x10000 // 65536 |
59 #define LINEAR_BLEND_DEINT_FILTER 0x20000 // 131072 | 59 #define LINEAR_BLEND_DEINT_FILTER 0x20000 // 131072 |
60 #define CUBIC_BLEND_DEINT_FILTER 0x8000 // (not implemented yet) | 60 #define CUBIC_BLEND_DEINT_FILTER 0x8000 // (not implemented yet) |
61 #define CUBIC_IPOL_DEINT_FILTER 0x40000 // 262144 | 61 #define CUBIC_IPOL_DEINT_FILTER 0x40000 // 262144 |
62 #define MEDIAN_DEINT_FILTER 0x80000 // 524288 | 62 #define MEDIAN_DEINT_FILTER 0x80000 // 524288 |
63 #define FFMPEG_DEINT_FILTER 0x400000 | 63 #define FFMPEG_DEINT_FILTER 0x400000 |
64 #define LOWPASS5_DEINT_FILTER 0x800000 | 64 #define LOWPASS5_DEINT_FILTER 0x800000 |
65 | 65 |
66 #define TEMP_NOISE_FILTER 0x100000 | 66 #define TEMP_NOISE_FILTER 0x100000 |
67 #define FORCE_QUANT 0x200000 | 67 #define FORCE_QUANT 0x200000 |
68 | 68 |
69 //use if you want a faster postprocessing code | 69 //use if you want a faster postprocessing code |
71 //obviously the -pp option on the command line has no effect except turning the here selected | 71 //obviously the -pp option on the command line has no effect except turning the here selected |
72 //filters on | 72 //filters on |
73 //#define COMPILE_TIME_MODE 0x77 | 73 //#define COMPILE_TIME_MODE 0x77 |
74 | 74 |
75 static inline int CLIP(int a){ | 75 static inline int CLIP(int a){ |
76 if(a&256) return ((a)>>31)^(-1); | 76 if(a&256) return ((a)>>31)^(-1); |
77 else return a; | 77 else return a; |
78 } | 78 } |
79 /** | 79 /** |
80 * Postprocessng filter. | 80 * Postprocessng filter. |
81 */ | 81 */ |
82 struct PPFilter{ | 82 struct PPFilter{ |
83 const char *shortName; | 83 const char *shortName; |
84 const char *longName; | 84 const char *longName; |
85 int chromDefault; ///< is chrominance filtering on by default if this filter is manually activated | 85 int chromDefault; ///< is chrominance filtering on by default if this filter is manually activated |
86 int minLumQuality; ///< minimum quality to turn luminance filtering on | 86 int minLumQuality; ///< minimum quality to turn luminance filtering on |
87 int minChromQuality; ///< minimum quality to turn chrominance filtering on | 87 int minChromQuality; ///< minimum quality to turn chrominance filtering on |
88 int mask; ///< Bitmask to turn this filter on | 88 int mask; ///< Bitmask to turn this filter on |
89 }; | 89 }; |
90 | 90 |
91 /** | 91 /** |
92 * Postprocessng mode. | 92 * Postprocessng mode. |
93 */ | 93 */ |
94 typedef struct PPMode{ | 94 typedef struct PPMode{ |
95 int lumMode; ///< acivates filters for luminance | 95 int lumMode; ///< acivates filters for luminance |
96 int chromMode; ///< acivates filters for chrominance | 96 int chromMode; ///< acivates filters for chrominance |
97 int error; ///< non zero on error | 97 int error; ///< non zero on error |
98 | 98 |
99 int minAllowedY; ///< for brigtness correction | 99 int minAllowedY; ///< for brigtness correction |
100 int maxAllowedY; ///< for brihtness correction | 100 int maxAllowedY; ///< for brihtness correction |
101 float maxClippedThreshold; ///< amount of "black" u r willing to loose to get a brightness corrected picture | 101 float maxClippedThreshold; ///< amount of "black" u r willing to loose to get a brightness corrected picture |
102 | 102 |
103 int maxTmpNoise[3]; ///< for Temporal Noise Reducing filter (Maximal sum of abs differences) | 103 int maxTmpNoise[3]; ///< for Temporal Noise Reducing filter (Maximal sum of abs differences) |
104 | 104 |
105 int baseDcDiff; | 105 int baseDcDiff; |
106 int flatnessThreshold; | 106 int flatnessThreshold; |
107 | 107 |
108 int forcedQuant; ///< quantizer if FORCE_QUANT is used | 108 int forcedQuant; ///< quantizer if FORCE_QUANT is used |
109 } PPMode; | 109 } PPMode; |
110 | 110 |
111 /** | 111 /** |
112 * postprocess context. | 112 * postprocess context. |
113 */ | 113 */ |
114 typedef struct PPContext{ | 114 typedef struct PPContext{ |
115 /** | 115 /** |
116 * info on struct for av_log | 116 * info on struct for av_log |
117 */ | 117 */ |
118 const AVClass *av_class; | 118 const AVClass *av_class; |
119 | 119 |
120 uint8_t *tempBlocks; ///<used for the horizontal code | 120 uint8_t *tempBlocks; ///<used for the horizontal code |
121 | 121 |
122 /** | 122 /** |
123 * luma histogram. | 123 * luma histogram. |
124 * we need 64bit here otherwise we'll going to have a problem | 124 * we need 64bit here otherwise we'll going to have a problem |
125 * after watching a black picture for 5 hours | 125 * after watching a black picture for 5 hours |
126 */ | 126 */ |
127 uint64_t *yHistogram; | 127 uint64_t *yHistogram; |
128 | 128 |
129 DECLARE_ALIGNED(8, uint64_t, packedYOffset); | 129 DECLARE_ALIGNED(8, uint64_t, packedYOffset); |
130 DECLARE_ALIGNED(8, uint64_t, packedYScale); | 130 DECLARE_ALIGNED(8, uint64_t, packedYScale); |
131 | 131 |
132 /** Temporal noise reducing buffers */ | 132 /** Temporal noise reducing buffers */ |
133 uint8_t *tempBlured[3]; | 133 uint8_t *tempBlured[3]; |
134 int32_t *tempBluredPast[3]; | 134 int32_t *tempBluredPast[3]; |
135 | 135 |
136 /** Temporary buffers for handling the last row(s) */ | 136 /** Temporary buffers for handling the last row(s) */ |
137 uint8_t *tempDst; | 137 uint8_t *tempDst; |
138 uint8_t *tempSrc; | 138 uint8_t *tempSrc; |
139 | 139 |
140 uint8_t *deintTemp; | 140 uint8_t *deintTemp; |
141 | 141 |
142 DECLARE_ALIGNED(8, uint64_t, pQPb); | 142 DECLARE_ALIGNED(8, uint64_t, pQPb); |
143 DECLARE_ALIGNED(8, uint64_t, pQPb2); | 143 DECLARE_ALIGNED(8, uint64_t, pQPb2); |
144 | 144 |
145 DECLARE_ALIGNED(8, uint64_t, mmxDcOffset[64]); | 145 DECLARE_ALIGNED(8, uint64_t, mmxDcOffset[64]); |
146 DECLARE_ALIGNED(8, uint64_t, mmxDcThreshold[64]); | 146 DECLARE_ALIGNED(8, uint64_t, mmxDcThreshold[64]); |
147 | 147 |
148 QP_STORE_T *stdQPTable; ///< used to fix MPEG2 style qscale | 148 QP_STORE_T *stdQPTable; ///< used to fix MPEG2 style qscale |
149 QP_STORE_T *nonBQPTable; | 149 QP_STORE_T *nonBQPTable; |
150 QP_STORE_T *forcedQPTable; | 150 QP_STORE_T *forcedQPTable; |
151 | 151 |
152 int QP; | 152 int QP; |
153 int nonBQP; | 153 int nonBQP; |
154 | 154 |
155 int frameNum; | 155 int frameNum; |
156 | 156 |
157 int cpuCaps; | 157 int cpuCaps; |
158 | 158 |
159 int qpStride; ///<size of qp buffers (needed to realloc them if needed) | 159 int qpStride; ///<size of qp buffers (needed to realloc them if needed) |
160 int stride; ///<size of some buffers (needed to realloc them if needed) | 160 int stride; ///<size of some buffers (needed to realloc them if needed) |
161 | 161 |
162 int hChromaSubSample; | 162 int hChromaSubSample; |
163 int vChromaSubSample; | 163 int vChromaSubSample; |
164 | 164 |
165 PPMode ppMode; | 165 PPMode ppMode; |
166 } PPContext; | 166 } PPContext; |
167 | 167 |
168 | 168 |
169 static inline void linecpy(void *dest, const void *src, int lines, int stride) | 169 static inline void linecpy(void *dest, const void *src, int lines, int stride) { |
170 { | 170 if (stride > 0) { |
171 if (stride > 0) { | 171 memcpy(dest, src, lines*stride); |
172 memcpy(dest, src, lines*stride); | 172 } else { |
173 } else { | 173 memcpy((uint8_t*)dest+(lines-1)*stride, (const uint8_t*)src+(lines-1)*stride, -lines*stride); |
174 memcpy((uint8_t*)dest+(lines-1)*stride, (const uint8_t*)src+(lines-1)*stride, -lines*stride); | 174 } |
175 } | |
176 } | 175 } |
177 | 176 |
178 #endif /* FFMPEG_POSTPROCESS_INTERNAL_H */ | 177 #endif /* FFMPEG_POSTPROCESS_INTERNAL_H */ |