Fix off by one error in fix_28_t
This commit is contained in:
parent
1e6896f918
commit
b120a7c397
|
@ -32,11 +32,12 @@ static inline fix3_28_t norm_fix3_28_from_s16sample(int16_t a) {
|
||||||
/* So, we're using a Q3.28 fixed point system here, and we want the incoming
|
/* So, we're using a Q3.28 fixed point system here, and we want the incoming
|
||||||
audio signal to be represented as a number between -1 and 1. To do this,
|
audio signal to be represented as a number between -1 and 1. To do this,
|
||||||
we need the 16-bit value to map to the 28-bit right-of-decimal field in
|
we need the 16-bit value to map to the 28-bit right-of-decimal field in
|
||||||
our fixed point number. 28-16 = 12, so we shift the incoming value by
|
our fixed point number. The 16 bit samples are siged, so bit 15 needs to
|
||||||
|
be positioned at bit 28. 28-15 = 13, so we shift the incoming value by
|
||||||
that much to covert it to the desired Q3.28 format and do the normalization
|
that much to covert it to the desired Q3.28 format and do the normalization
|
||||||
all in one go.
|
all in one go.
|
||||||
*/
|
*/
|
||||||
return (fix3_28_t)a << 12;
|
return (fix3_28_t)a << 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Convert fixed point samples into signed integer. Used to convert
|
/// @brief Convert fixed point samples into signed integer. Used to convert
|
||||||
|
@ -69,9 +70,9 @@ static inline int16_t norm_fix3_28_to_s16sample(fix3_28_t a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* When we converted the USB audio sample to a fixed point number, we applied
|
/* When we converted the USB audio sample to a fixed point number, we applied
|
||||||
a normalization, or a gain of 1/65536. To convert it back, we can undo that
|
a normalization, or a gain of 1/32767. To convert it back, we can undo that
|
||||||
by shifting it back by the same amount we shifted it in the first place. */
|
by shifting it back by the same amount we shifted it in the first place. */
|
||||||
return (a >> 12);
|
return (a >> 13);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline fix3_28_t fix3_28_from_flt(float a) {
|
static inline fix3_28_t fix3_28_from_flt(float a) {
|
||||||
|
|
|
@ -194,7 +194,7 @@ void __no_inline_not_in_flash_func(core1_entry)() {
|
||||||
x_f16 = bqf_transform(x_f16, &bqf_filters_right[j],
|
x_f16 = bqf_transform(x_f16, &bqf_filters_right[j],
|
||||||
&bqf_filters_mem_right[j]);
|
&bqf_filters_mem_right[j]);
|
||||||
|
|
||||||
out[i] = (int16_t) norm_fix3_28_to_s16sample(x_f16);
|
out[i] = (int32_t) norm_fix3_28_to_s16sample(x_f16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue