stop using lround() for now

This commit is contained in:
Josh Coalson
2007-02-09 16:12:20 +00:00
parent 8a95ba64c1
commit 715e63cb5f

View File

@@ -196,16 +196,16 @@ int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order,
FLAC__int32 q; FLAC__int32 q;
for(i = 0; i < order; i++) { for(i = 0; i < order; i++) {
error += lp_coeff[i] * (1 << *shift); error += lp_coeff[i] * (1 << *shift);
#if defined _MSC_VER #if 1 /* unfortunately lround() is C99 */
if(error >= 0.0) if(error >= 0.0)
q = (FLAC__int32)(error + 0.5); q = (FLAC__int32)(error + 0.5);
else else
q = (FLAC__int32)(error - 0.5); q = (FLAC__int32)(error - 0.5);
#else #else
q = lround(error); /* round() is also suitable */ q = lround(error);
#endif #endif
#ifdef FLAC__OVERFLOW_DETECT #ifdef FLAC__OVERFLOW_DETECT
if(q > qmax+1) /* we expect q==qmax+1 occasionally due to lround() */ if(q > qmax+1) /* we expect q==qmax+1 occasionally due to rounding */
fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]); fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]);
else if(q < qmin) else if(q < qmin)
fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]); fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]);
@@ -231,16 +231,16 @@ int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order,
#endif #endif
for(i = 0; i < order; i++) { for(i = 0; i < order; i++) {
error += lp_coeff[i] / (1 << nshift); error += lp_coeff[i] / (1 << nshift);
#if defined _MSC_VER #if 1 /* unfortunately lround() is C99 */
if(error >= 0.0) if(error >= 0.0)
q = (FLAC__int32)(error + 0.5); q = (FLAC__int32)(error + 0.5);
else else
q = (FLAC__int32)(error - 0.5); q = (FLAC__int32)(error - 0.5);
#else #else
q = lround(error); /* round() is also suitable */ q = lround(error);
#endif #endif
#ifdef FLAC__OVERFLOW_DETECT #ifdef FLAC__OVERFLOW_DETECT
if(q > qmax+1) /* we expect q==qmax+1 occasionally due to lround() */ if(q > qmax+1) /* we expect q==qmax+1 occasionally due to rounding */
fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]); fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]);
else if(q < qmin) else if(q < qmin)
fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]); fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]);