mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
stream_encoder.c : Improve fix for arithmetic overflow.
Only use the 32 bit accumulator if the input data is 16 bits or less.
This commit is contained in:
@@ -3772,7 +3772,7 @@ void precompute_partition_info_sums_(
|
|||||||
#if defined(FLAC__CPU_IA32) && !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
|
#if defined(FLAC__CPU_IA32) && !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
|
||||||
/* slightly pessimistic but still catches all common cases */
|
/* slightly pessimistic but still catches all common cases */
|
||||||
/* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */
|
/* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */
|
||||||
if(bps < 24 && FLAC__bitmath_ilog2(default_partition_samples) + bps < 32) {
|
if(bps <= 16) {
|
||||||
precompute_partition_info_sums_32bit_asm_ia32_(residual, abs_residual_partition_sums, residual_samples + predictor_order, predictor_order, min_partition_order, max_partition_order);
|
precompute_partition_info_sums_32bit_asm_ia32_(residual, abs_residual_partition_sums, residual_samples + predictor_order, predictor_order, min_partition_order, max_partition_order);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3783,7 +3783,7 @@ void precompute_partition_info_sums_(
|
|||||||
unsigned partition, residual_sample, end = (unsigned)(-(int)predictor_order);
|
unsigned partition, residual_sample, end = (unsigned)(-(int)predictor_order);
|
||||||
/* slightly pessimistic but still catches all common cases */
|
/* slightly pessimistic but still catches all common cases */
|
||||||
/* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */
|
/* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */
|
||||||
if(bps < 24 && FLAC__bitmath_ilog2(default_partition_samples) + bps < 32) {
|
if(bps <= 16) {
|
||||||
FLAC__uint32 abs_residual_partition_sum;
|
FLAC__uint32 abs_residual_partition_sum;
|
||||||
|
|
||||||
for(partition = residual_sample = 0; partition < partitions; partition++) {
|
for(partition = residual_sample = 0; partition < partitions; partition++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user