Mercurial > mplayer.hg
comparison libmpcodecs/vf_noise.c @ 6964:f35d05c32dd1
film/average noise cleanup
remove unused vars/functions
avoid statics so multiple noise filters can be used
author | michael |
---|---|
date | Sun, 11 Aug 2002 09:52:23 +0000 |
parents | 76fee64d884a |
children | f8ea0af8edb0 |
comparison
equal
deleted
inserted
replaced
6963:76fee64d884a | 6964:f35d05c32dd1 |
---|---|
41 | 41 |
42 //===========================================================================// | 42 //===========================================================================// |
43 | 43 |
44 static inline void lineNoise_C(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift); | 44 static inline void lineNoise_C(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift); |
45 static inline void lineNoiseAvg_C(uint8_t *dst, uint8_t *src, int len, int8_t **shift); | 45 static inline void lineNoiseAvg_C(uint8_t *dst, uint8_t *src, int len, int8_t **shift); |
46 static inline void lineNoiseAvg_CX(uint8_t *dst, uint8_t *src, int len, int8_t **shift, int add); | |
47 | 46 |
48 static void (*lineNoise)(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift)= lineNoise_C; | 47 static void (*lineNoise)(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift)= lineNoise_C; |
49 static void (*lineNoiseAvg)(uint8_t *dst, uint8_t *src, int len, int8_t **shift)= lineNoiseAvg_C; | 48 static void (*lineNoiseAvg)(uint8_t *dst, uint8_t *src, int len, int8_t **shift)= lineNoiseAvg_C; |
50 | 49 |
51 typedef struct FilterParam{ | 50 typedef struct FilterParam{ |
54 int temporal; | 53 int temporal; |
55 int quality; | 54 int quality; |
56 int averaged; | 55 int averaged; |
57 int shiftptr; | 56 int shiftptr; |
58 int8_t *noise; | 57 int8_t *noise; |
58 int8_t *prev_shift[MAX_RES][3]; | |
59 }FilterParam; | 59 }FilterParam; |
60 | 60 |
61 struct vf_priv_s { | 61 struct vf_priv_s { |
62 FilterParam lumaParam; | 62 FilterParam lumaParam; |
63 FilterParam chromaParam; | 63 FilterParam chromaParam; |
64 mp_image_t *dmpi; | 64 mp_image_t *dmpi; |
65 unsigned int outfmt; | 65 unsigned int outfmt; |
66 }; | 66 }; |
67 | 67 |
68 static int nonTempRandShift[MAX_RES]= {-1}; | 68 static int nonTempRandShift[MAX_RES]= {-1}; |
69 static int8_t *prev_shift[MAX_RES][3]; | |
70 | 69 |
71 static int8_t *initNoise(FilterParam *fp){ | 70 static int8_t *initNoise(FilterParam *fp){ |
72 int strength= fp->strength; | 71 int strength= fp->strength; |
73 int uniform= fp->uniform; | 72 int uniform= fp->uniform; |
74 int averaged= fp->averaged; | 73 int averaged= fp->averaged; |
105 } | 104 } |
106 | 105 |
107 | 106 |
108 for (i = 0; i < MAX_RES; i++) | 107 for (i = 0; i < MAX_RES; i++) |
109 for (j = 0; j < 3; j++) | 108 for (j = 0; j < 3; j++) |
110 prev_shift[i][j] = noise + (rand()&(MAX_SHIFT-1)); | 109 fp->prev_shift[i][j] = noise + (rand()&(MAX_SHIFT-1)); |
111 | 110 |
112 if(nonTempRandShift[0]==-1){ | 111 if(nonTempRandShift[0]==-1){ |
113 for(i=0; i<MAX_RES; i++){ | 112 for(i=0; i<MAX_RES; i++){ |
114 nonTempRandShift[i]= rand()&(MAX_SHIFT-1); | 113 nonTempRandShift[i]= rand()&(MAX_SHIFT-1); |
115 } | 114 } |
192 } | 191 } |
193 | 192 |
194 /***************************************************************************/ | 193 /***************************************************************************/ |
195 | 194 |
196 static inline void lineNoiseAvg_C(uint8_t *dst, uint8_t *src, int len, int8_t **shift){ | 195 static inline void lineNoiseAvg_C(uint8_t *dst, uint8_t *src, int len, int8_t **shift){ |
197 int i, j, n, v; | 196 int i, j, n; |
198 | 197 |
199 for(i=0; i<len; i++) | 198 for(i=0; i<len; i++) |
200 { | 199 { |
201 for(j=0,n=0;j<3;j++) | 200 for(j=0,n=0;j<3;j++) |
202 n+=shift[j][i]; | 201 n+=shift[j][i]; |
233 if(fp->temporal) shift= rand()&(MAX_SHIFT -1); | 232 if(fp->temporal) shift= rand()&(MAX_SHIFT -1); |
234 else shift= nonTempRandShift[y]; | 233 else shift= nonTempRandShift[y]; |
235 | 234 |
236 if(fp->quality==0) shift&= ~7; | 235 if(fp->quality==0) shift&= ~7; |
237 if (fp->averaged) { | 236 if (fp->averaged) { |
238 lineNoiseAvg(dst, src, width, prev_shift[y]); | 237 lineNoiseAvg(dst, src, width, fp->prev_shift[y]); |
239 prev_shift[y][fp->shiftptr] = noise + shift; | 238 fp->prev_shift[y][fp->shiftptr] = noise + shift; |
240 } else { | 239 } else { |
241 lineNoise(dst, src, noise, width, shift); | 240 lineNoise(dst, src, noise, width, shift); |
242 } | 241 } |
243 dst+= dstStride; | 242 dst+= dstStride; |
244 src+= srcStride; | 243 src+= srcStride; |