mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
stop using lround() for now
This commit is contained in:
@@ -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]);
|
||||||
|
|||||||
Reference in New Issue
Block a user