summaryrefslogtreecommitdiff
path: root/apps/codecs/libmusepack/synth_filter.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libmusepack/synth_filter.c')
-rw-r--r--apps/codecs/libmusepack/synth_filter.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/apps/codecs/libmusepack/synth_filter.c b/apps/codecs/libmusepack/synth_filter.c
index 7d83c752e7..fb956fbff4 100644
--- a/apps/codecs/libmusepack/synth_filter.c
+++ b/apps/codecs/libmusepack/synth_filter.c
@@ -115,8 +115,8 @@ static const MPC_SAMPLE_FORMAT Di_opt [512] ICONST_ATTR = {
115 115
116#undef D 116#undef D
117 117
118// needed to prevent from internal overflow in calculate_V 118// needed to prevent from internal overflow in calculate_V (see below)
119#define OVERFLOW_FIX 1 119#define OVERFLOW_FIX 2
120 120
121// V-coefficients were expanded (<<) by V_COEFFICIENT_EXPAND 121// V-coefficients were expanded (<<) by V_COEFFICIENT_EXPAND
122#define V_COEFFICIENT_EXPAND 27 122#define V_COEFFICIENT_EXPAND 27
@@ -128,6 +128,7 @@ static const MPC_SAMPLE_FORMAT Di_opt [512] ICONST_ATTR = {
128 #define MPC_MULTIPLY_V(sample, vcoef) ( MPC_SHR_RND(sample, 12) * vcoef ) 128 #define MPC_MULTIPLY_V(sample, vcoef) ( MPC_SHR_RND(sample, 12) * vcoef )
129 129
130 // pre- and postscale are used to avoid internal overflow in synthesis calculation 130 // pre- and postscale are used to avoid internal overflow in synthesis calculation
131 // samples are s15.0, v-coefs are 4.12 -> internal format is s19.12
131 #define MPC_MULTIPLY_V_PRESCALE(sample, vcoef) ( MPC_SHR_RND(sample, (12+OVERFLOW_FIX)) * vcoef ) 132 #define MPC_MULTIPLY_V_PRESCALE(sample, vcoef) ( MPC_SHR_RND(sample, (12+OVERFLOW_FIX)) * vcoef )
132 #define MPC_MULTIPLY_V_POSTSCALE(sample, vcoef) ( MPC_SHR_RND(sample, (12-OVERFLOW_FIX)) * vcoef ) 133 #define MPC_MULTIPLY_V_POSTSCALE(sample, vcoef) ( MPC_SHR_RND(sample, (12-OVERFLOW_FIX)) * vcoef )
133 #define MPC_V_POSTSCALE(sample) (sample<<OVERFLOW_FIX) 134 #define MPC_V_POSTSCALE(sample) (sample<<OVERFLOW_FIX)
@@ -141,6 +142,7 @@ static const MPC_SAMPLE_FORMAT Di_opt [512] ICONST_ATTR = {
141 #define MPC_MULTIPLY_V(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND) ) 142 #define MPC_MULTIPLY_V(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND) )
142 143
143 // pre- and postscale are used to avoid internal overflow in synthesis calculation 144 // pre- and postscale are used to avoid internal overflow in synthesis calculation
145 // samples are s15.14, v-coefs are 4.27 -> internal format is s19.12
144 #define MPC_MULTIPLY_V_PRESCALE(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND-OVERFLOW_FIX) ) 146 #define MPC_MULTIPLY_V_PRESCALE(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND-OVERFLOW_FIX) )
145 #define MPC_MULTIPLY_V_POSTSCALE(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND+OVERFLOW_FIX) ) 147 #define MPC_MULTIPLY_V_POSTSCALE(sample, vcoef) ( (MPC_MULTIPLY_FRACT(sample, vcoef)) << (32-V_COEFFICIENT_EXPAND+OVERFLOW_FIX) )
146 #define MPC_V_POSTSCALE(sample) (sample<<OVERFLOW_FIX) 148 #define MPC_V_POSTSCALE(sample) (sample<<OVERFLOW_FIX)