Audio: SRC: Fix HiFi2 SRC off-by-one frame issue

This patch fixes the FIR compute off-by-one frame bug. The fix
is similar as for generic C except that HiFi2 pointers
arithmetic is in bytes.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This commit is contained in:
Seppo Ingalsuo 2022-10-20 13:55:17 +03:00 committed by Kai Vehmanen
parent e76b92bf18
commit 82bdd0f9f0
1 changed files with 2 additions and 4 deletions

View File

@ -323,8 +323,7 @@ void src_polyphase_stage_cir(struct src_stage_prm *s)
const int blk_out_words = nch * cfg->num_of_subfilters;
const int sz = sizeof(int32_t);
const int n_sz = -sizeof(int32_t);
const int rewind_sz = sz * (nch * (cfg->blk_in
+ (cfg->num_of_subfilters - 1) * cfg->idm) - nch);
const int rewind_sz = sz * nch * (cfg->blk_in + (cfg->num_of_subfilters - 1) * cfg->idm);
const int nch_x_idm_sz = -nch * cfg->idm * sizeof(int32_t);
const int taps_div_4 = cfg->subfilter_length >> 2;
int32_t *x_rptr = (int32_t *)s->x_rptr;
@ -449,8 +448,7 @@ void src_polyphase_stage_cir_s16(struct src_stage_prm *s)
const int blk_out_words = nch * cfg->num_of_subfilters;
const int sz = sizeof(int32_t);
const int n_sz = -sizeof(int32_t);
const int rewind_sz = sz * (nch * (cfg->blk_in
+ (cfg->num_of_subfilters - 1) * cfg->idm) - nch);
const int rewind_sz = sz * nch * (cfg->blk_in + (cfg->num_of_subfilters - 1) * cfg->idm);
const int nch_x_idm_sz = -nch * cfg->idm * sizeof(int32_t);
const int taps_div_4 = cfg->subfilter_length >> 2;
int16_t *x_rptr = (int16_t *)s->x_rptr;