comparison ra144.c @ 6807:c19ef48adf18 libavcodec

Do not copy tables to a context var, use them directly
author vitor
date Thu, 15 May 2008 18:36:12 +0000
parents e4be053e7d9b
children c5ecf570f1b1
comparison
equal deleted inserted replaced
6806:e4be053e7d9b 6807:c19ef48adf18
46 46
47 unsigned int buffer[5]; 47 unsigned int buffer[5];
48 unsigned short int buffer_2[148]; 48 unsigned short int buffer_2[148];
49 49
50 unsigned short *sptr; 50 unsigned short *sptr;
51
52 signed short wavtable1[2304];
53 unsigned short wavtable2[2304];
54 } Real144_internal; 51 } Real144_internal;
55 52
56 static int ra144_decode_init(AVCodecContext * avctx) 53 static int ra144_decode_init(AVCodecContext * avctx)
57 { 54 {
58 Real144_internal *glob = avctx->priv_data; 55 Real144_internal *glob = avctx->priv_data;
59 56
60 glob->swapbuf1 = glob->swapbuffers[0]; 57 glob->swapbuf1 = glob->swapbuffers[0];
61 glob->swapbuf2 = glob->swapbuffers[1]; 58 glob->swapbuf2 = glob->swapbuffers[1];
62 glob->swapbuf1alt = glob->swapbuffers[2]; 59 glob->swapbuf1alt = glob->swapbuffers[2];
63 glob->swapbuf2alt = glob->swapbuffers[3]; 60 glob->swapbuf2alt = glob->swapbuffers[3];
64
65 memcpy(glob->wavtable1, wavtable1, sizeof(wavtable1));
66 memcpy(glob->wavtable2, wavtable2, sizeof(wavtable2));
67 61
68 return 0; 62 return 0;
69 } 63 }
70 64
71 static void final(Real144_internal *glob, short *i1, short *i2, void *out, int *statbuf, int len); 65 static void final(Real144_internal *glob, short *i1, short *i2, void *out, int *statbuf, int len);
181 175
182 /* multiply/add wavetable */ 176 /* multiply/add wavetable */
183 static void add_wav(Real144_internal *glob, int n, int f, int m1, int m2, 177 static void add_wav(Real144_internal *glob, int n, int f, int m1, int m2,
184 int m3, short *s1, short *s2, short *s3, short *dest) 178 int m3, short *s1, short *s2, short *s3, short *dest)
185 { 179 {
186 int a, b, c; 180 int a, b, c, i;
187 short *ptr, *ptr2; 181 const short *ptr, *ptr2;
188 182
189 ptr = glob->wavtable1 + n * 9; 183 ptr = wavtable1 + n * 9;
190 ptr2 = glob->wavtable2 + n * 9; 184 ptr2 = wavtable2 + n * 9;
191 185
192 if (f != 0) 186 if (f != 0)
193 a = ((*ptr) * m1) >> ((*ptr2) + 1); 187 a = ((*ptr) * m1) >> ((*ptr2) + 1);
194 else 188 else
195 a = 0; 189 a = 0;
198 ptr2++; 192 ptr2++;
199 b = ((*ptr) * m2) >> ((*ptr2) + 1); 193 b = ((*ptr) * m2) >> ((*ptr2) + 1);
200 ptr++; 194 ptr++;
201 ptr2++; 195 ptr2++;
202 c = ((*ptr) * m3) >> ((*ptr2) + 1); 196 c = ((*ptr) * m3) >> ((*ptr2) + 1);
203 ptr2 = (ptr = dest) + BLOCKSIZE;
204 197
205 if (f != 0) 198 if (f != 0)
206 while (ptr < ptr2) 199 for (i=0; i < BLOCKSIZE; i++)
207 *(ptr++) = ((*(s1++)) * a + (*(s2++)) * b + (*(s3++)) * c) >> 12; 200 dest[i] = ((*(s1++)) * a + (*(s2++)) * b + (*(s3++)) * c) >> 12;
208 else 201 else
209 while (ptr < ptr2) 202 for (i=0; i < BLOCKSIZE; i++)
210 *(ptr++) = ((*(s2++)) * b + (*(s3++)) * c) >> 12; 203 dest[i] = ((*(s2++)) * b + (*(s3++)) * c) >> 12;
211 } 204 }
212 205
213 206
214 static void final(Real144_internal *glob, short *i1, short *i2, void *out, 207 static void final(Real144_internal *glob, short *i1, short *i2, void *out,
215 int *statbuf, int len) 208 int *statbuf, int len)