summaryrefslogtreecommitdiff
path: root/apps/codecs/libtremor/floor0.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libtremor/floor0.c')
-rw-r--r--apps/codecs/libtremor/floor0.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/apps/codecs/libtremor/floor0.c b/apps/codecs/libtremor/floor0.c
index cceb113a6b..9c890e6bad 100644
--- a/apps/codecs/libtremor/floor0.c
+++ b/apps/codecs/libtremor/floor0.c
@@ -74,7 +74,7 @@ static inline ogg_int32_t vorbis_coslook_i(long a){
74 int i=a>>COS_LOOKUP_I_SHIFT; 74 int i=a>>COS_LOOKUP_I_SHIFT;
75 int d=a&COS_LOOKUP_I_MASK; 75 int d=a&COS_LOOKUP_I_MASK;
76 return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>> 76 return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
77 COS_LOOKUP_I_SHIFT); 77 COS_LOOKUP_I_SHIFT);
78} 78}
79 79
80/* interpolated lookup based cos function */ 80/* interpolated lookup based cos function */
@@ -181,7 +181,7 @@ static void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
181 qi=((qi*qi)>>16); 181 qi=((qi*qi)>>16);
182 182
183 if(m&1){ 183 if(m&1){
184 qexp= qexp*2-28*((m+1)>>1)+m; 184 qexp= qexp*2-28*((m+1)>>1)+m;
185 pi*=(1<<14)-((wi*wi)>>14); 185 pi*=(1<<14)-((wi*wi)>>14);
186 qi+=pi>>14; 186 qi+=pi>>14;
187 }else{ 187 }else{
@@ -205,15 +205,15 @@ static void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
205 205
206 for(j=3;j<m;j+=2){ 206 for(j=3;j<m;j+=2){
207 if(!(shift=MLOOP_1[(pi|qi)>>25])) 207 if(!(shift=MLOOP_1[(pi|qi)>>25]))
208 if(!(shift=MLOOP_2[(pi|qi)>>19])) 208 if(!(shift=MLOOP_2[(pi|qi)>>19]))
209 shift=MLOOP_3[(pi|qi)>>16]; 209 shift=MLOOP_3[(pi|qi)>>16];
210 qi=(qi>>shift)*labs(ilsp[j-1]-wi); 210 qi=(qi>>shift)*labs(ilsp[j-1]-wi);
211 pi=(pi>>shift)*labs(ilsp[j]-wi); 211 pi=(pi>>shift)*labs(ilsp[j]-wi);
212 qexp+=shift; 212 qexp+=shift;
213 } 213 }
214 if(!(shift=MLOOP_1[(pi|qi)>>25])) 214 if(!(shift=MLOOP_1[(pi|qi)>>25]))
215 if(!(shift=MLOOP_2[(pi|qi)>>19])) 215 if(!(shift=MLOOP_2[(pi|qi)>>19]))
216 shift=MLOOP_3[(pi|qi)>>16]; 216 shift=MLOOP_3[(pi|qi)>>16];
217 217
218 /* pi,qi normalized collectively, both tracked using qexp */ 218 /* pi,qi normalized collectively, both tracked using qexp */
219 219
@@ -225,8 +225,8 @@ static void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
225 qexp+=shift; 225 qexp+=shift;
226 226
227 if(!(shift=MLOOP_1[(pi|qi)>>25])) 227 if(!(shift=MLOOP_1[(pi|qi)>>25]))
228 if(!(shift=MLOOP_2[(pi|qi)>>19])) 228 if(!(shift=MLOOP_2[(pi|qi)>>19]))
229 shift=MLOOP_3[(pi|qi)>>16]; 229 shift=MLOOP_3[(pi|qi)>>16];
230 230
231 pi>>=shift; 231 pi>>=shift;
232 qi>>=shift; 232 qi>>=shift;
@@ -243,7 +243,7 @@ static void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
243 /* even order filter; still symmetric */ 243 /* even order filter; still symmetric */
244 244
245 /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't 245 /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
246 worth tracking step by step */ 246 worth tracking step by step */
247 247
248 pi>>=shift; 248 pi>>=shift;
249 qi>>=shift; 249 qi>>=shift;
@@ -268,15 +268,15 @@ static void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
268 qi>>=1; qexp++; 268 qi>>=1; qexp++;
269 }else 269 }else
270 while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/ 270 while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
271 qi<<=1; qexp--; 271 qi<<=1; qexp--;
272 } 272 }
273 273
274#endif 274#endif
275 275
276 amp=vorbis_fromdBlook_i(ampi* /* n.4 */ 276 amp=vorbis_fromdBlook_i(ampi* /* n.4 */
277 vorbis_invsqlook_i(qi,qexp)- 277 vorbis_invsqlook_i(qi,qexp)-
278 /* m.8, m+n<=8 */ 278 /* m.8, m+n<=8 */
279 ampoffseti); /* 8.12[0] */ 279 ampoffseti); /* 8.12[0] */
280 280
281#ifdef _LOW_ACCURACY_ 281#ifdef _LOW_ACCURACY_
282 amp>>=9; 282 amp>>=9;
@@ -366,7 +366,7 @@ static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi
366 for(j=0;j<look->n;j++){ 366 for(j=0;j<look->n;j++){
367 367
368 int val=(look->ln* 368 int val=(look->ln*
369 ((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11; 369 ((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11;
370 370
371 if(val>=look->ln)val=look->ln-1; /* guard against the approximation */ 371 if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
372 look->linearmap[j]=val; 372 look->linearmap[j]=val;
@@ -398,10 +398,10 @@ static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
398 ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1)); 398 ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1));
399 399
400 for(j=0;j<look->m;j+=b->dim) 400 for(j=0;j<look->m;j+=b->dim)
401 if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim,-24)==-1)goto eop; 401 if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim,-24)==-1)goto eop;
402 for(j=0;j<look->m;){ 402 for(j=0;j<look->m;){
403 for(k=0;k<b->dim;k++,j++)lsp[j]+=last; 403 for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
404 last=lsp[j-1]; 404 last=lsp[j-1];
405 } 405 }
406 406
407 lsp[look->m]=amp; 407 lsp[look->m]=amp;
@@ -413,7 +413,7 @@ static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
413} 413}
414 414
415static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i, 415static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
416 void *memo,ogg_int32_t *out){ 416 void *memo,ogg_int32_t *out){
417 vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; 417 vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
418 vorbis_info_floor0 *info=look->vi; 418 vorbis_info_floor0 *info=look->vi;
419 (void)vb; 419 (void)vb;
@@ -424,7 +424,7 @@ static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
424 424
425 /* take the coefficients back to a spectral envelope curve */ 425 /* take the coefficients back to a spectral envelope curve */
426 vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln, 426 vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln,
427 lsp,look->m,amp,info->ampdB,look->lsp_look); 427 lsp,look->m,amp,info->ampdB,look->lsp_look);
428 return(1); 428 return(1);
429 } 429 }
430 memset(out,0,sizeof(*out)*look->n); 430 memset(out,0,sizeof(*out)*look->n);