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 */