comparison libaf/af_format.c @ 36384:e79bac50b920

Use correct types for constants. Otherwise the compiler might insert a conversion from float to double and back.
author reimar
date Sun, 20 Oct 2013 12:51:35 +0000
parents d206960484fe
children 3b1fb70800f4
comparison
equal deleted inserted replaced
36383:12b7f66d1a47 36384:e79bac50b920
489 float f; 489 float f;
490 register int i; 490 register int i;
491 switch(bps){ 491 switch(bps){
492 case(1): 492 case(1):
493 for(i=0;i<len;i++) 493 for(i=0;i<len;i++)
494 ((int8_t *)out)[i] = av_clip_int8(lrintf(128.0 * in[i])); 494 ((int8_t *)out)[i] = av_clip_int8(lrintf(128.0f * in[i]));
495 break; 495 break;
496 case(2): 496 case(2):
497 for(i=0;i<len;i++) 497 for(i=0;i<len;i++)
498 ((int16_t*)out)[i] = av_clip_int16(lrintf(32768.0 * in[i])); 498 ((int16_t*)out)[i] = av_clip_int16(lrintf(32768.0f * in[i]));
499 break; 499 break;
500 case(3): 500 case(3):
501 for(i=0;i<len;i++){ 501 for(i=0;i<len;i++){
502 f = in[i] * 8388608; 502 f = in[i] * 8388608.0f;
503 store24bit(out, i, av_clip(lrintf(f), -1*(1<<23), (1<<23)-1) << 8); 503 store24bit(out, i, av_clip(lrintf(f), -1*(1<<23), (1<<23)-1) << 8);
504 } 504 }
505 break; 505 break;
506 case(4): 506 case(4):
507 for(i=0;i<len;i++){ 507 for(i=0;i<len;i++){
508 f = in[i]; 508 f = in[i];
509 if (f <= -1.0) 509 if (f <= -1.0f)
510 ((int32_t*)out)[i] = INT_MIN; 510 ((int32_t*)out)[i] = INT_MIN;
511 else 511 else
512 if (f >= 1.0)//no need to use corrected constant, rounding won't cause overflow 512 if (f >= 1.0f)//no need to use corrected constant, rounding won't cause overflow
513 ((int32_t*)out)[i] = INT_MAX; 513 ((int32_t*)out)[i] = INT_MAX;
514 else 514 else
515 ((int32_t*)out)[i] = lrintf(f*2147483648.0); 515 ((int32_t*)out)[i] = lrintf(f*2147483648.0f);
516 516
517 } 517 }
518 break; 518 break;
519 } 519 }
520 } 520 }
523 { 523 {
524 register int i; 524 register int i;
525 switch(bps){ 525 switch(bps){
526 case(1): 526 case(1):
527 for(i=0;i<len;i++) 527 for(i=0;i<len;i++)
528 out[i]=(1.0/128.0)*((int8_t*)in)[i]; 528 out[i]=(1.0f/128.0f)*((int8_t*)in)[i];
529 break; 529 break;
530 case(2): 530 case(2):
531 for(i=0;i<len;i++) 531 for(i=0;i<len;i++)
532 out[i]=(1.0/32768.0)*((int16_t*)in)[i]; 532 out[i]=(1.0f/32768.0f)*((int16_t*)in)[i];
533 break; 533 break;
534 case(3): 534 case(3):
535 for(i=0;i<len;i++) 535 for(i=0;i<len;i++)
536 out[i]=(1.0/2147483648.0)*((int32_t)load24bit(in, i)); 536 out[i]=(1.0f/2147483648.0f)*((int32_t)load24bit(in, i));
537 break; 537 break;
538 case(4): 538 case(4):
539 for(i=0;i<len;i++) 539 for(i=0;i<len;i++)
540 out[i]=(1.0/2147483648.0)*((int32_t*)in)[i]; 540 out[i]=(1.0f/2147483648.0f)*((int32_t*)in)[i];
541 break; 541 break;
542 } 542 }
543 } 543 }